From 52579b4316f02580e66070c3b91cd3c93c18ce13 Mon Sep 17 00:00:00 2001 From: zhangrengao Date: Tue, 23 Aug 2022 19:00:58 +0800 Subject: [PATCH] Revert "fix clean webpack of incre compile" Signed-off-by: zhangrengao This reverts commit a0ae23f36289e4e6c9f74ba744cdce6a7582cdfb. Change-Id: Ice093d4ed74ffb0e93f7ee5f6553cfab14d524f7 --- compiler/src/gen_abc.ts | 12 +++- compiler/src/gen_abc_plugin.ts | 111 ++++++++------------------------- compiler/src/utils.ts | 18 ------ 3 files changed, 34 insertions(+), 107 deletions(-) diff --git a/compiler/src/gen_abc.ts b/compiler/src/gen_abc.ts index b4df1ce..2c4be9d 100644 --- a/compiler/src/gen_abc.ts +++ b/compiler/src/gen_abc.ts @@ -26,9 +26,7 @@ function js2abcByWorkers(jsonInput: string, cmd: string): Promise { const inputPaths = JSON.parse(jsonInput); for (let i = 0; i < inputPaths.length; ++i) { const input = inputPaths[i].path; - const cacheOutputPath: string = inputPaths[i].cacheOutputPath; - const cacheAbcFilePath: string = cacheOutputPath.replace(/\_.js$/, ".abc"); - const singleCmd: any = `${cmd} "${cacheOutputPath}" -o "${cacheAbcFilePath}" --source-file "${input}"`; + const singleCmd = `${cmd} "${input}"`; logger.debug('gen abc cmd is: ', singleCmd, ' ,file size is:', inputPaths[i].size, ' byte'); try { childProcess.execSync(singleCmd); @@ -36,6 +34,14 @@ function js2abcByWorkers(jsonInput: string, cmd: string): Promise { logger.error(red, `ETS:ERROR Failed to convert file ${input} to abc `, reset); return; } + + const abcFile: string = input.replace(/\.js$/, '.abc'); + if (fs.existsSync(abcFile)) { + const abcFileNew: string = abcFile.replace(/_.abc$/, '.abc'); + fs.renameSync(abcFile, abcFileNew); + } else { + logger.error(red, `ETS:ERROR ${abcFile} is lost`, reset); + } } } diff --git a/compiler/src/gen_abc_plugin.ts b/compiler/src/gen_abc_plugin.ts index 32582a2..26bc3e3 100644 --- a/compiler/src/gen_abc_plugin.ts +++ b/compiler/src/gen_abc_plugin.ts @@ -19,13 +19,7 @@ import cluster from 'cluster'; import process from 'process'; import Compiler from 'webpack/lib/Compiler'; import { logger } from './compile_info'; -import { - toUnixPath, - toHashData, - compareNodeVersion, - removeDir -} from './utils'; -import { NODE_MODULES } from './pre_define'; +import { toUnixPath, toHashData } from './utils'; const firstFileEXT: string = '_.js'; const genAbcScript = 'gen_abc.js'; @@ -38,8 +32,7 @@ let nodeJs: string; interface File { path: string, - size: number, - cacheOutputPath: string + size: number } const intermediateJsBundle: Array = []; let fileterIntermediateJsBundle: Array = []; @@ -72,14 +65,7 @@ export class GenAbcPlugin { } } - if (!checkNodeModules()) { - return; - } - - removeDir(output); - compiler.hooks.emit.tap('GenAbcPlugin', (compilation) => { - buildPathInfo = output; Object.keys(compilation.assets).forEach(key => { // choose *.js if (output && path.extname(key) === '.js') { @@ -98,25 +84,14 @@ export class GenAbcPlugin { } function writeFileSync(inputString: string, output: string, jsBundleFile: string): void { - let parent: string = path.join(output, '..'); + const parent: string = path.join(output, '..'); if (!(fs.existsSync(parent) && fs.statSync(parent).isDirectory())) { mkDir(parent); } - const sufStr: string = output.replace(buildPathInfo, ''); - let cacheOutputPath: string = ""; - if (process.env.cachePath) { - cacheOutputPath = path.join(process.env.cachePath, "temporary", sufStr); - } else { - cacheOutputPath = output; - } - parent = path.join(cacheOutputPath, '..'); - if (!(fs.existsSync(parent) && fs.statSync(parent).isDirectory())) { - mkDir(parent); - } - fs.writeFileSync(cacheOutputPath, inputString); - if (fs.existsSync(cacheOutputPath)) { - const fileSize: any = fs.statSync(cacheOutputPath).size; - intermediateJsBundle.push({path: output, size: fileSize, cacheOutputPath: cacheOutputPath}); + fs.writeFileSync(output, inputString); + if (fs.existsSync(output)) { + const fileSize = fs.statSync(output).size; + intermediateJsBundle.push({path: output, size: fileSize}); } else { logger.error(red, `ETS:ERROR Failed to convert file ${jsBundleFile} to bin. ${output} is lost`, reset); } @@ -185,7 +160,8 @@ function invokeWorkersToGenAbc() { const cmdPrefix: string = `${nodeJs} --expose-gc "${js2abc}" ${param} `; const clusterNewApiVersion = 16; - const useNewApi = compareNodeVersion(clusterNewApiVersion); + const currentNodeVersion = parseInt(process.version.split('.')[0]); + const useNewApi = currentNodeVersion >= clusterNewApiVersion; if (useNewApi && cluster.isPrimary || !useNewApi && cluster.isMaster) { if (useNewApi) { @@ -234,23 +210,17 @@ function filterIntermediateJsBundleByHashJson(buildPath: string, inputPaths: Fil for (let i = 0; i < inputPaths.length; ++i) { const input = inputPaths[i].path; const abcPath = input.replace(/_.js$/, '.abc'); - const cacheOutputPath: string = inputPaths[i].cacheOutputPath; - const cacheAbcFilePath: string = cacheOutputPath.replace(/\_.js$/, '.abc'); - if (!fs.existsSync(cacheOutputPath)) { - logger.error(red, `ETS:ERROR ${cacheOutputPath} is lost`, reset); + if (!fs.existsSync(input)) { + logger.error(red, `ETS:ERROR ${input} is lost`, reset); continue; } - if (fs.existsSync(cacheAbcFilePath)) { - const hashInputContentData: any = toHashData(cacheOutputPath); - const hashAbcContentData: any = toHashData(cacheAbcFilePath); - if (jsonObject[cacheOutputPath] === hashInputContentData && jsonObject[cacheAbcFilePath] === hashAbcContentData) { - updateJsonObject[cacheOutputPath] = hashInputContentData; - updateJsonObject[cacheAbcFilePath] = hashAbcContentData; - let parent: string = path.join(abcPath, '..'); - if (!(fs.existsSync(parent) && fs.statSync(parent).isDirectory())) { - mkDir(parent); - } - fs.copyFileSync(cacheAbcFilePath, abcPath); + if (fs.existsSync(abcPath)) { + const hashInputContentData = toHashData(input); + const hashAbcContentData = toHashData(abcPath); + if (jsonObject[input] === hashInputContentData && jsonObject[abcPath] === hashAbcContentData) { + updateJsonObject[input] = hashInputContentData; + updateJsonObject[abcPath] = hashAbcContentData; + fs.unlinkSync(input); } else { fileterIntermediateJsBundle.push(inputPaths[i]); } @@ -267,29 +237,15 @@ function writeHashJson() { for (let i = 0; i < fileterIntermediateJsBundle.length; ++i) { const input = fileterIntermediateJsBundle[i].path; const abcPath = input.replace(/_.js$/, '.abc'); - const cacheOutputPath: string = fileterIntermediateJsBundle[i].cacheOutputPath; - const cacheAbcFilePath: string = cacheOutputPath.replace(/\_.js$/, '.abc'); - if (!fs.existsSync(cacheOutputPath) || !fs.existsSync(cacheAbcFilePath)) { - logger.error(red, `ETS:ERROR ${cacheOutputPath} is lost`, reset); + if (!fs.existsSync(input) || !fs.existsSync(abcPath)) { + logger.error(red, `ETS:ERROR ${input} is lost`, reset); continue; } - const hashInputContentData: any = toHashData(cacheOutputPath); - const hashAbcContentData: any = toHashData(cacheAbcFilePath); - hashJsonObject[cacheOutputPath] = hashInputContentData; - hashJsonObject[cacheAbcFilePath] = hashAbcContentData; - } - for (let i = 0; i < intermediateJsBundle.length; ++i) { - const abcFile: string = intermediateJsBundle[i].path.replace(/\_.js$/, ".abc"); - const cacheAbcFilePath: string = intermediateJsBundle[i].cacheOutputPath.replace(/\_.js$/, ".abc"); - if (!fs.existsSync(cacheAbcFilePath)) { - logger.error(red, `ETS:ERROR ${cacheAbcFilePath} is lost`, reset); - break; - } - let parent: string = path.join(abcFile, '..'); - if (!(fs.existsSync(parent) && fs.statSync(parent).isDirectory())) { - mkDir(parent); - } - fs.copyFileSync(cacheAbcFilePath, abcFile); + const hashInputContentData = toHashData(input); + const hashAbcContentData = toHashData(abcPath); + hashJsonObject[input] = hashInputContentData; + hashJsonObject[abcPath] = hashAbcContentData; + fs.unlinkSync(input); } const hashFilePath = genHashJsonPath(buildPathInfo); if (hashFilePath.length === 0) { @@ -319,20 +275,3 @@ function genHashJsonPath(buildPath: string) { return ''; } } - -function checkNodeModules() { - let arkEntryPath: string = path.join(arkDir, 'build'); - if (isWin) { - arkEntryPath = path.join(arkDir, 'build-win'); - } else if (isMac) { - arkEntryPath = path.join(arkDir, 'build-mac'); - } - let nodeModulesPath: string = path.join(arkEntryPath, NODE_MODULES); - if (!(fs.existsSync(nodeModulesPath) && fs.statSync(nodeModulesPath).isDirectory())) { - logger.error(red, `ERROR: node_modules for ark compiler not found. - Please make sure switch to non-root user before runing "npm install" for safity requirements and try re-run "npm install" under ${arkEntryPath}`, reset); - return false; - } - - return true; -} diff --git a/compiler/src/utils.ts b/compiler/src/utils.ts index d1912a6..97e0a2f 100644 --- a/compiler/src/utils.ts +++ b/compiler/src/utils.ts @@ -234,21 +234,3 @@ export function writeFileSync(filePath: string, content: string): void { fs.writeFileSync(filePath, content); } -export function compareNodeVersion(nodeVersion: number = 16): boolean { - const currentNodeVersion: number = parseInt(process.versions.node.split('.')[0]); - if (currentNodeVersion >= nodeVersion) { - return true; - } - - return false; -} - -export function removeDir(dirName: string): void { - if (fs.existsSync(dirName)) { - if (compareNodeVersion()) { - fs.rmSync(dirName, { recursive: true}); - } else { - fs.rmdirSync(dirName, { recursive: true}); - } - } -} \ No newline at end of file