electron/script/gen-libc++-filenames.js
trop[bot] df6ad9c970
chore: bump chromium to 140.0.7327.0 (38-x-y) (#47930)
* chore: bump chromium in DEPS to 140.0.7324.0

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>

* chore: bump chromium in DEPS to 140.0.7325.0

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>

* chore: remove @dsanders11's unused include patch CL: https://chromium-review.googlesource.com/c/chromium/src/+/6782507

Co-authored-by: Samuel Maddock <smaddock@slack-corp.com>

* fix: apply keychain patch to new apple subdir CL: https://chromium-review.googlesource.com/c/chromium/src/+/6736212

Co-authored-by: Samuel Maddock <smaddock@slack-corp.com>

* chore: update chromium patches

Co-authored-by: Samuel Maddock <smaddock@slack-corp.com>

* chore: update other patches

Co-authored-by: Samuel Maddock <smaddock@slack-corp.com>

* chore: bump chromium in DEPS to 140.0.7327.0

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>

* fix: mistake in reapplied patch

Co-authored-by: Samuel Maddock <smaddock@slack-corp.com>

* fixup! fix: apply keychain patch to new apple subdir CL: https://chromium-review.googlesource.com/c/chromium/src/+/6736212

Co-authored-by: Samuel Maddock <smaddock@slack-corp.com>

* chore: update patches

Co-authored-by: Samuel Maddock <smaddock@slack-corp.com>

* fix: remove OnPrivateNetworkAccessPermissionRequired override CL: https://chromium-review.googlesource.com/c/chromium/src/+/6769208

Co-authored-by: Samuel Maddock <smaddock@slack-corp.com>

* fix: update colorSpace property to use new unified value CL: https://chromium-review.googlesource.com/c/chromium/src/+/6795085

Co-authored-by: Samuel Maddock <smaddock@slack-corp.com>

* fix: include OverlayWindowLiveCaptionButton CL: https://chromium-review.googlesource.com/c/chromium/src/+/6787420

Co-authored-by: Samuel Maddock <smaddock@slack-corp.com>

* fixup! fix: apply keychain patch to new apple subdir CL: https://chromium-review.googlesource.com/c/chromium/src/+/6736212

Co-authored-by: Samuel Maddock <smaddock@slack-corp.com>

* fix: format chromium_src/BUILD.gn CL: https://chromium-review.googlesource.com/c/chromium/src/+/6787427

Co-authored-by: Samuel Maddock <smaddock@slack-corp.com>

* fix: format BUILD.gn CL: https://chromium-review.googlesource.com/c/chromium/src/+/6787427

Co-authored-by: Samuel Maddock <smaddock@slack-corp.com>

* chore: include script/ in logged path

Co-authored-by: Samuel Maddock <smaddock@slack-corp.com>

* fix: update filenames.libcxx.gni CL: https://chromium-review.googlesource.com/c/chromium/src/+/6787279

Co-authored-by: Samuel Maddock <smaddock@slack-corp.com>

* chore: update patches

---------

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Samuel Maddock <smaddock@slack-corp.com>
Co-authored-by: clavin <clavin@electronjs.org>
2025-08-05 21:45:37 -04:00

79 lines
2.6 KiB
JavaScript

const chalk = require('chalk');
const fs = require('node:fs');
const path = require('node:path');
const check = process.argv.includes('--check');
function findAllHeaders (basePath) {
const allFiles = fs.readdirSync(basePath);
allFiles.sort();
const toReturn = [];
for (const file of allFiles) {
const absPath = path.resolve(basePath, file);
if (fs.statSync(absPath).isDirectory()) {
toReturn.push(...findAllHeaders(absPath));
} else {
toReturn.push(absPath);
}
}
return toReturn;
}
const diff = (array1, array2) => {
const set1 = new Set(array1);
const set2 = new Set(array2);
const added = array1.filter(item => !set2.has(item));
const removed = array2.filter(item => !set1.has(item));
console.log(chalk.white.bgGreen.bold('Files Added:'));
added.forEach(item => console.log(chalk.green.bold(`+ ${item}`)));
console.log(chalk.white.bgRed.bold('Files Removed:'));
removed.forEach(item => console.log(chalk.red.bold(`- ${item}`)));
};
const parseHeaders = (name, content) => {
const pattern = new RegExp(`${name}_headers\\s*=\\s*\\[(.*?)\\]`, 's');
const headers = content.match(pattern);
if (!headers) return [];
return headers[1].split(',')
.map(item => item.trim().replace(/"/g, ''))
.filter(item => item.length > 0);
};
for (const folder of ['libc++', 'libc++abi']) {
const prettyName = folder.replace(/\+/g, 'x');
const libcxxIncludeDir = path.resolve(__dirname, '..', '..', 'third_party', folder, 'src', 'include');
const gclientPath = `third_party/${folder}/src/include`;
const headers = findAllHeaders(libcxxIncludeDir).map(absPath => path.relative(path.resolve(__dirname, '../..', gclientPath), absPath).replaceAll('\\', '/'));
const newHeaders = headers.map(f => `//${path.posix.join(gclientPath, f)}`);
const content = `${prettyName}_headers = [
${newHeaders.map(h => `"${h}"`).join(',\n ')},
]
${prettyName}_licenses = [ "//third_party/${folder}/src/LICENSE.TXT" ]
`;
const file = `filenames.${prettyName}.gni`;
const filenamesPath = path.resolve(__dirname, '..', file);
if (check) {
const currentContent = fs.readFileSync(filenamesPath, 'utf8');
if (currentContent !== content) {
const currentHeaders = parseHeaders(prettyName, currentContent);
console.error(chalk.bold(`${file} contents are not up to date:\n`));
diff(currentHeaders, newHeaders);
console.error(chalk.bold(`\nRun node script/gen-libc++-filenames.js to regenerate ${file}`));
process.exit(1);
}
} else {
console.log(filenamesPath);
fs.writeFileSync(filenamesPath, content);
}
}