affine: update build scrpit to sync format with yarn-berry.fetchYarnBerryDeps (#438960)

This commit is contained in:
Sandro
2025-11-24 13:30:38 +00:00
committed by GitHub
+21 -6
View File
@@ -32,6 +32,16 @@ let
yarn-berry = yarn-berry_4.override { inherit nodejs; };
productName = if buildType != "stable" then "AFFiNE-${buildType}" else "AFFiNE";
binName = lib.toLower productName;
electron-dist-zip = stdenvNoCC.mkDerivation {
pname = "electron-dist-zip";
version = electron.version;
src = electron.dist;
nativeBuildInputs = [ zip ];
buildPhase = ''
zip --recurse-paths - . > $out
'';
dontInstall = true;
};
in
stdenv.mkDerivation (finalAttrs: {
pname = binName;
@@ -48,6 +58,8 @@ stdenv.mkDerivation (finalAttrs: {
inherit (finalAttrs) pname version src;
hash = "sha256-tdg0Ti+QWsIx64+WV0fPoyE/t3GlsUxXzU9qFHYfpt0=";
};
# keep yarnOfflineCache same output style with offlineCache = yarn-berry.fetchYarnBerryDeps { inherit (finalAttrs) src missingHashes; hash = "" };
yarnOfflineCache = stdenvNoCC.mkDerivation {
name = "yarn-offline-cache";
inherit (finalAttrs) src;
@@ -79,19 +91,22 @@ stdenv.mkDerivation (finalAttrs: {
''
runHook preBuild
mkdir -p $out
mkdir -p $out/cache
yarn config set enableTelemetry false
yarn config set cacheFolder $out
yarn config set cacheFolder $out/cache
yarn config set enableGlobalCache false
yarn config set supportedArchitectures --json '${supportedArchitectures}'
yarn install --immutable --mode=skip-build
cp yarn.lock $out/yarn.lock
runHook postBuild
'';
dontInstall = true;
outputHashMode = "recursive";
outputHash = "sha256-wMfjlxHs1pS8QEnIgn9IZTNShKkLeVVpGFkZ2ICtiNA=";
outputHash = "sha256-iULgio5zpmJhKofkUxA98Ze7Qy+kRfbbi5oEHYw5vzY=";
};
buildInputs = lib.optionals hostPlatform.isDarwin [
@@ -133,6 +148,7 @@ stdenv.mkDerivation (finalAttrs: {
echo "$BACKEND_SERVER_PACKAGE_JSON" > packages/backend/server/package.json
'';
# FIXME: use `yarn config set cacheFolder $offlineCache/cache`
configurePhase = ''
runHook preConfigure
@@ -144,14 +160,13 @@ stdenv.mkDerivation (finalAttrs: {
# yarn config
yarn config set enableTelemetry false
yarn config set enableGlobalCache false
yarn config set cacheFolder $yarnOfflineCache
yarn config set cacheFolder $yarnOfflineCache/cache
# electron config
ELECTRON_VERSION_IN_LOCKFILE=$(yarn why electron --json | tail --lines 1 | jq --raw-output '.children | to_entries | first | .key ' | cut -d : -f 2)
rsync --archive --chmod=u+w "${electron.dist}/" $HOME/.electron-prebuilt-zip-tmp
export ELECTRON_FORGE_ELECTRON_ZIP_DIR=$PWD/.electron_zip_dir
mkdir -p $ELECTRON_FORGE_ELECTRON_ZIP_DIR
(cd $HOME/.electron-prebuilt-zip-tmp && zip --recurse-paths - .) > $ELECTRON_FORGE_ELECTRON_ZIP_DIR/electron-v$ELECTRON_VERSION_IN_LOCKFILE-${nodePlatform}-${nodeArch}.zip
cp ${electron-dist-zip} $ELECTRON_FORGE_ELECTRON_ZIP_DIR/electron-v$ELECTRON_VERSION_IN_LOCKFILE-${nodePlatform}-${nodeArch}.zip
export ELECTRON_SKIP_BINARY_DOWNLOAD=1
runHook postConfigure