Skip to content

Commit 4974993

Browse files
committed
feat: pin and verify source sha256 across all 16 package families
Roll out the source-integrity pin (added for tiff) to every package that builds from a downloaded tarball: 15 more families now carry a sha256 next to getURL, verified byte-for-byte at build time by downloadAndExtractFile.verifyIntegrity. So a hijacked mirror or a re-tagged upstream can no longer feed arbitrary C++ into any package's compile. - scripts/pin-source-hash.js: downloads a package's pinned-version tarball and writes its sha256 into build.mjs. Run it after bumping nativeVersion (a bump without re-pinning fails the build on hash mismatch). - scripts/check-source-hashes.js + 'pnpm run check:sources': gate that every source-building package pins a sha256, so a new package or version bump can't slip through unpinned. Wired into 'pnpm run check'.
1 parent 7108ff2 commit 4974993

18 files changed

Lines changed: 155 additions & 1 deletion

File tree

cppjs-packages/cppjs-package-curl/cppjs-package-curl/build.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ const platformBuild = {
88
};
99

1010
export default {
11+
sha256: 'fc5819cad3f9f5482669adcdc49a782c15f36d2a0715b395b06d9173593d2dc0', // curl-8.20.0.tar.gz
1112
getURL: (version) => `https://curl.se/download/curl-${version}.tar.gz`,
1213
buildType: 'cmake',
1314
getBuildParams: (target, depPaths) => [

cppjs-packages/cppjs-package-expat/cppjs-package-expat/build.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
export default {
2+
sha256: 'a52eb72108be160e190b5cafa5bba8663f1313f2013e26060d1c18e26e31067b', // expat-2.8.1.tar.gz
23
getURL: (version) => `https://github.com/libexpat/libexpat/releases/download/R_${version.replaceAll('.', '_')}/expat-${version}.tar.gz`,
34
buildType: 'cmake',
45
getBuildParams: () => [

cppjs-packages/cppjs-package-gdal/cppjs-package-gdal/build.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ const platformCmake = {
66
const ifDep = (dep, params) => (dep ? params(dep) : []);
77

88
export default {
9+
sha256: 'e04e9813bd215b56753d5554330c53be25f3df2d7ed7e6413a19e6b66751c675', // gdal-3.13.1.tar.gz
910
getURL: (version) => `https://github.com/OSGeo/gdal/releases/download/v${version}/gdal-${version}.tar.gz`,
1011
copyToSource: { 'assets/gdal_empty_file.cpp': 'gcore/gdal_empty_file.cpp' },
1112
replaceList: [

cppjs-packages/cppjs-package-geos/cppjs-package-geos/build.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
export default {
2+
sha256: '3c20919cda9a505db07b5216baa980bacdaa0702da715b43f176fb07eff7e716', // geos-3.14.1.tar.bz2
23
getURL: (version) => `https://download.osgeo.org/geos/geos-${version}.tar.bz2`,
34
buildType: 'cmake',
45
getBuildParams: (target) => [

cppjs-packages/cppjs-package-geotiff/cppjs-package-geotiff/build.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ const platformExtraLibs = {
1515
const ifDep = (dep, params) => (dep ? params(dep) : []);
1616

1717
export default {
18+
sha256: 'c598d04fdf2ba25c4352844dafa81dde3f7fd968daa7ad131228cd91e9d3dc47', // libgeotiff-1.7.4.tar.gz
1819
getURL: (version) => `https://download.osgeo.org/geotiff/libgeotiff/libgeotiff-${version}.tar.gz`,
1920
buildType: 'configure',
2021
getBuildParams: (target, depPaths) => [

cppjs-packages/cppjs-package-iconv/cppjs-package-iconv/build.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ const platformBuild = {
77
};
88

99
export default {
10+
sha256: '88dd96a8c0464eca144fc791ae60cd31cd8ee78321e67397e25fc095c4a19aa6', // libiconv-1.19.tar.gz
1011
getURL: (version) => `https://ftp.gnu.org/pub/gnu/libiconv/libiconv-${version}.tar.gz`,
1112
buildType: 'configure',
1213
getBuildParams: (target) => [

cppjs-packages/cppjs-package-jpegturbo/cppjs-package-jpegturbo/build.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
export default {
2+
sha256: 'ecae8008e2cc9ade2f2c1bb9d5e6d4fb73e7c433866a056bd82980741571a022', // libjpeg-turbo-3.1.4.1.tar.gz
23
getURL: (version) => `https://github.com/libjpeg-turbo/libjpeg-turbo/releases/download/${version}/libjpeg-turbo-${version}.tar.gz`,
34
buildType: 'cmake',
45
getBuildParams: (target) => {
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
export default {
2+
sha256: 'f05b24d2368becab9144873878655bb718910631550d4f786262378c16ab94a7', // v4.1.0.tar.gz
23
getURL: (version) => `https://github.com/Esri/lerc/archive/refs/tags/v${version}.tar.gz`,
34
buildType: 'cmake',
45
};

cppjs-packages/cppjs-package-openssl/cppjs-package-openssl/build.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
const CONFIGURE_FLAGS = ['--cross-compile-prefix=', 'cc', 'no-apps', 'no-docs', 'no-tests', 'no-shared', 'threads'];
22

33
export default {
4+
sha256: '2db3f3a0d6ea4b59e1f094ace2c8cd536dffb87cdc39084c5afa1e6f7f37dd09', // openssl-4.0.1.tar.gz
45
getURL: (version) => `https://github.com/openssl/openssl/releases/download/openssl-${version}/openssl-${version}.tar.gz`,
56
buildType: 'configure',
67
getBuildParams: () => [...CONFIGURE_FLAGS],

cppjs-packages/cppjs-package-proj/cppjs-package-proj/build.mjs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
const ifDep = (dep, params) => (dep ? params(dep) : []);
22

33
export default {
4+
sha256: 'af5b731c145c1d13c4e3b4eeb7d167e94e845e440f71e3496b4ed8dae0291960', // proj-9.8.1.tar.gz
45
getURL: (version) => `https://download.osgeo.org/proj/proj-${version}.tar.gz`,
56
buildType: 'cmake',
67
getBuildParams: (target, depPaths) => [

0 commit comments

Comments
 (0)