feature: handle git dependencies

- add git and cacert as deps to cacheDrvs
- use pkg.reference instead of version in package.json of isolated builds
  since it allow yarn to find the git repo (this will probably also fix
  oter type of deps)
This commit is contained in:
Adrian Gierakowski
2022-01-21 16:04:09 +00:00
committed by Stéphan Kochen
parent 383764ab9b
commit c999d4070c
2 changed files with 5 additions and 4 deletions
+1
View File
@@ -245,6 +245,7 @@ export default async (project: Project, cache: Cache, report: Report) => {
`${isolatedProp} = optionalOverride (args.${overrideArg} or null) (mkIsolatedBuild { ${[ `${isolatedProp} = optionalOverride (args.${overrideArg} or null) (mkIsolatedBuild { ${[
`pname = ${json(pkg.name)};`, `pname = ${json(pkg.name)};`,
`version = ${json(pkg.version)};`, `version = ${json(pkg.version)};`,
`reference = ${json(devirtPkg.reference)};`,
`locators = [\n${locators}];`, `locators = [\n${locators}];`,
].join(` `)} });` ].join(` `)} });`
); );
+4 -4
View File
@@ -1,7 +1,7 @@
# This file is generated by running "yarn install" inside your project. # This file is generated by running "yarn install" inside your project.
# Manual changes might be lost - proceed with caution! # Manual changes might be lost - proceed with caution!
{ lib, nodejs, stdenv, fetchurl, writeText }: { lib, nodejs, stdenv, fetchurl, writeText, git, cacert }:
{ src, overrideAttrs ? null, ... } @ args: { src, overrideAttrs ? null, ... } @ args:
let let
@@ -43,7 +43,7 @@ let
in lib.mapAttrs (locator: { filename, sha512 }: stdenv.mkDerivation { in lib.mapAttrs (locator: { filename, sha512 }: stdenv.mkDerivation {
inherit src builder locator; inherit src builder locator;
name = lib.strings.sanitizeDerivationName locator; name = lib.strings.sanitizeDerivationName locator;
buildInputs = [ nodejs ]; buildInputs = [ nodejs git cacert ];
outputFilename = filename; outputFilename = filename;
outputHashMode = "flat"; outputHashMode = "flat";
outputHashAlgo = "sha512"; outputHashAlgo = "sha512";
@@ -64,7 +64,7 @@ let
mkCacheBuilderForDrvs (pickCacheDrvs locators); mkCacheBuilderForDrvs (pickCacheDrvs locators);
# Create a derivation that builds a node-pre-gyp module in isolation. # Create a derivation that builds a node-pre-gyp module in isolation.
mkIsolatedBuild = { pname, version, locators }: stdenv.mkDerivation (drvCommon // { mkIsolatedBuild = { pname, version, reference, locators }: stdenv.mkDerivation (drvCommon // {
inherit pname version; inherit pname version;
phases = [ "buildPhase" "installPhase" ]; phases = [ "buildPhase" "installPhase" ];
@@ -74,7 +74,7 @@ let
source ${mkCacheBuilderForLocators locators} source ${mkCacheBuilderForLocators locators}
popd > /dev/null popd > /dev/null
echo '{ "dependencies": { "${pname}": "${version}" } }' > package.json echo '{ "dependencies": { "${pname}": "${reference}" } }' > package.json
install -m 0600 ${lockfile} ./yarn.lock install -m 0600 ${lockfile} ./yarn.lock
export yarn_global_folder="$TMP" export yarn_global_folder="$TMP"
export YARN_ENABLE_IMMUTABLE_INSTALLS=false export YARN_ENABLE_IMMUTABLE_INSTALLS=false