nix: Use mkFilter in local status-go source
Signed-off-by: Pedro Pombeiro <pombeirp@users.noreply.github.com>
This commit is contained in:
parent
b32dd113f6
commit
7e6caf03ad
|
@ -2,10 +2,6 @@ source 'https://rubygems.org'
|
|||
|
||||
gem 'fastlane', '>= 2.131.0'
|
||||
|
||||
plugins_path = ENV['FASTLANE_PLUGINFILE_PATH']
|
||||
|
||||
if plugins_path == nil
|
||||
plugins_path = File.join(__dir__, 'Pluginfile')
|
||||
end
|
||||
|
||||
plugins_path = ENV['FASTLANE_PLUGINFILE_PATH'] ||
|
||||
File.join(__dir__, 'Pluginfile')
|
||||
eval_gemfile(plugins_path) if plugins_path
|
||||
|
|
|
@ -22,7 +22,7 @@ let
|
|||
buildGoPackage = pkgs.buildGoPackage.override { inherit go; };
|
||||
desktop = pkgs.callPackage ./desktop { inherit target-os stdenv status-go pkgs go nodejs; inherit (pkgs) darwin; };
|
||||
mobile = pkgs.callPackage ./mobile { inherit target-os config stdenv pkgs mkShell nodejs yarn status-go maven localMavenRepoBuilder mkFilter; inherit (pkgs.xcodeenv) composeXcodeWrapper; };
|
||||
status-go = pkgs.callPackage ./status-go { inherit target-os config go buildGoPackage; inherit (mobile.ios) xcodeWrapper; androidPkgs = mobile.android.androidComposition; };
|
||||
status-go = pkgs.callPackage ./status-go { inherit target-os config go buildGoPackage mkFilter; inherit (mobile.ios) xcodeWrapper; androidPkgs = mobile.android.androidComposition; };
|
||||
# mkFilter is a function that allows filtering a directory structure (used for filtering source files being captured in a closure)
|
||||
mkFilter = import ./tools/mkFilter.nix { inherit (stdenv) lib; };
|
||||
localMavenRepoBuilder =
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{ target-os, config, stdenv, callPackage,
|
||||
buildGoPackage, go, fetchFromGitHub, openjdk,
|
||||
buildGoPackage, go, fetchFromGitHub, mkFilter, openjdk,
|
||||
androidPkgs, xcodeWrapper }:
|
||||
|
||||
let
|
||||
|
@ -23,7 +23,20 @@ let
|
|||
rev = "unknown";
|
||||
shortRev = "unknown";
|
||||
versionName = "develop";
|
||||
src = stdenv.lib.cleanSource "${traceValFn (path: "Using local ${repo} sources from ${path}\n") config.status_go.src_override}";
|
||||
src =
|
||||
let path = traceValFn (path: "Using local ${repo} sources from ${path}\n") config.status_go.src_override;
|
||||
in builtins.path { # We use builtins.path so that we can name the resulting derivation, otherwise the name would be taken from the checkout directory, which is outside of our control
|
||||
inherit path;
|
||||
name = "${repo}-source-${shortRev}";
|
||||
filter =
|
||||
# Keep this filter as restrictive as possible in order to avoid unnecessary rebuilds and limit closure size
|
||||
mkFilter {
|
||||
dirRootsToInclude = [];
|
||||
dirsToExclude = [ ".git" ".svn" "CVS" ".hg" ".vscode" ".dependabot" ".github" ".ethereumtest" "build" "eth-node" "protocol" ];
|
||||
filesToInclude = [ "Makefile" "go.mod" "go.sum" "VERSION" ];
|
||||
root = path;
|
||||
};
|
||||
};
|
||||
} else
|
||||
# Otherwise grab it from the location defined by status-go-version.json
|
||||
let
|
||||
|
|
|
@ -16,23 +16,27 @@ let
|
|||
allowedPathElementsSubset = take count allowedPathElements;
|
||||
in (compareLists compare allowedPathElementsSubset pathElementsSubset) == 0;
|
||||
|
||||
mkFilter = { dirRootsToInclude, # Relative paths of directories to include
|
||||
mkFilter = {
|
||||
dirRootsToInclude, # Relative paths of directories to include
|
||||
dirsToExclude ? [ ], # Base names of directories to exclude
|
||||
filesToInclude ? [ ], # Relative path of files to include
|
||||
filesToExclude ? [ ], # Relative path of files to exclude
|
||||
root }:
|
||||
path: type:
|
||||
let
|
||||
baseName = baseNameOf (toString path);
|
||||
subpath = elemAt (splitString "${toString root}/" path) 1;
|
||||
spdir = elemAt (splitString "/" subpath) 0;
|
||||
allPathRootsAllowed = (length dirRootsToInclude) == 0;
|
||||
in
|
||||
path: type:
|
||||
let
|
||||
baseName = baseNameOf (toString path);
|
||||
subpath = elemAt (splitString "${toString root}/" path) 1;
|
||||
spdir = elemAt (splitString "/" subpath) 0;
|
||||
|
||||
in lib.cleanSourceFilter path type && (
|
||||
(type != "directory" && (elem spdir filesToInclude) && !(elem spdir filesToExclude)) ||
|
||||
# check if any part of the directory path is described in dirRootsToInclude
|
||||
((any (dirRootToInclude: isPathAllowed dirRootToInclude subpath) dirRootsToInclude) && ! (
|
||||
# Filter out version control software files/directories
|
||||
(type == "directory" && (elem baseName dirsToExclude))
|
||||
)));
|
||||
in lib.cleanSourceFilter path type && (
|
||||
(type != "directory" && (elem spdir filesToInclude) && !(elem spdir filesToExclude)) ||
|
||||
# check if any part of the directory path is described in dirRootsToInclude
|
||||
((allPathRootsAllowed || (any (dirRootToInclude: isPathAllowed dirRootToInclude subpath) dirRootsToInclude)) && ! (
|
||||
# Filter out version control software files/directories
|
||||
(type == "directory" && (elem baseName dirsToExclude))
|
||||
)));
|
||||
|
||||
in mkFilter
|
||||
|
|
Loading…
Reference in New Issue