nix: Apply some nixfmt suggestions and fix macOS status-go buildInputs

Signed-off-by: Pedro Pombeiro <pombeirp@users.noreply.github.com>
This commit is contained in:
Pedro Pombeiro 2019-07-29 10:33:35 +02:00
parent 4ab64d6c40
commit 9594552102
No known key found for this signature in database
GPG Key ID: C4A24185B2AA48A1
22 changed files with 7209 additions and 3623 deletions

View File

@ -8,7 +8,7 @@
let
shell' = shellAttr:
shellAttr // {
nativeBuildInputs = (shellAttr.nativeBuildInputs or []) ++ [ git ];
nativeBuildInputs = (shellAttr.nativeBuildInputs or [ ]) ++ [ git ];
TARGET_OS = target-os;
shellHook = ''
set -e
@ -27,6 +27,7 @@ let
};
# Declare a specialized mkShell function which adds some bootstrapping
# so that e.g. STATUS_REACT_HOME is automatically available in the shell
mkShell' = shellAttr: (mkShell.override { inherit stdenv; }) (shell' shellAttr);
mkShell' = shellAttr:
(mkShell.override { inherit stdenv; }) (shell' shellAttr);
in mkShell'

View File

@ -10,7 +10,10 @@ let
platform = pkgs.callPackage ./platform.nix { inherit target-os; };
# Declare a specialized mkShell function which adds some bootstrapping
# so that e.g. STATUS_REACT_HOME is automatically available in the shell
mkShell = (import ./bootstrapped-shell.nix { inherit stdenv target-os; inherit (pkgs) mkShell git; });
mkShell = (import ./bootstrapped-shell.nix {
inherit stdenv target-os;
inherit (pkgs) mkShell git;
});
# TODO: Try to use stdenv for iOS. The problem is with building iOS as the build is trying to pass parameters to Apple's ld that are meant for GNU's ld (e.g. -dynamiclib)
stdenv = pkgs.stdenvNoCC;
maven = pkgs.maven;
@ -22,7 +25,10 @@ let
status-go = pkgs.callPackage ./status-go { inherit target-os go buildGoPackage; 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 = pkgs.callPackage ./tools/maven/maven-repo-builder.nix { inherit (pkgs) stdenv; };
localMavenRepoBuilder =
pkgs.callPackage ./tools/maven/maven-repo-builder.nix {
inherit (pkgs) stdenv;
};
nodejs = pkgs.nodejs-10_x;
yarn = pkgs.yarn.override { inherit nodejs; };
selectedSources =
@ -54,11 +60,10 @@ in {
shell = {
buildInputs = unique ([
nodejs
pkgs.python27 # for e.g. gyp
yarn
]
++ optional isDarwin pkgs.cocoapods
nodejs
pkgs.python27 # for e.g. gyp
yarn
] ++ optional isDarwin pkgs.cocoapods
++ optional (isDarwin && !platform.targetIOS) pkgs.clang
++ optional (!isDarwin) pkgs.gcc8
++ catAttrs "buildInputs" selectedSources);

View File

@ -11,10 +11,14 @@ let
in {
buildInputs = [
baseImage status-go.buildInputs
baseImage
qt5.full
AppKit Cocoa darwin.cf-private Foundation OpenGL
];
AppKit
Cocoa
darwin.cf-private
Foundation
OpenGL
] ++ status-go.buildInputs;
shellHook =
concatStrings (catAttrs "shellHook" [ baseImage status-go ] ) + ''

File diff suppressed because it is too large Load Diff

View File

@ -46,15 +46,16 @@ let
echo -e "\n33b6a2b64607f11b759f320ef9dff4ae5c47d97a" > "$out/licenses/google-gdk-license"
'';
};
shellHook = assert platform.targetAndroid; ''
export JAVA_HOME="${openjdk}"
export ANDROID_HOME="${licensedAndroidEnv}"
export ANDROID_SDK_ROOT="$ANDROID_HOME"
export ANDROID_NDK_ROOT="${androidComposition.androidsdk}/libexec/android-sdk/ndk-bundle"
export ANDROID_NDK_HOME="$ANDROID_NDK_ROOT"
export ANDROID_NDK="$ANDROID_NDK_ROOT"
export PATH="$ANDROID_HOME/bin:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/build-tools:$PATH"
'';
shellHook = assert platform.targetAndroid;
''
export JAVA_HOME="${openjdk}"
export ANDROID_HOME="${licensedAndroidEnv}"
export ANDROID_SDK_ROOT="$ANDROID_HOME"
export ANDROID_NDK_ROOT="${androidComposition.androidsdk}/libexec/android-sdk/ndk-bundle"
export ANDROID_NDK_HOME="$ANDROID_NDK_ROOT"
export ANDROID_NDK="$ANDROID_NDK_ROOT"
export PATH="$ANDROID_HOME/bin:$ANDROID_HOME/tools:$ANDROID_HOME/tools/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/build-tools:$PATH"
'';
in {
inherit androidComposition licensedAndroidEnv shellHook;

View File

@ -16,7 +16,7 @@ let
"${aapt2NativePkg}" = srcs."${aapt2NativePkg}" // {
postCopy = ''
[ -n "$NIX_CC" ] || exit 1 # We need an stdenv with a compiler
prevSet=$-
set -e

File diff suppressed because it is too large Load Diff

View File

@ -33,7 +33,7 @@ in stdenvNoCC.mkDerivation {
srcs = builtins.map (d: (fetchurl { inherit (d) url sha256; })) react-native-deps-sources;
jsc = fetchurl {
url = "https://registry.npmjs.org/jsc-android/-/${jsc-filename}.tgz";
sha256 = "1s1fzmvpvdblzca7p2ifcysvd9na4jrsikaccqmfpgvkqjalfccp";
sha256 = "1s1fzmvpvdblzca7p2ifcysvd9na4jrsikaccqmfpgvkqjalfccp";
};
phases = [ "unpackPhase" ];
unpackPhase = ''
@ -49,4 +49,4 @@ in stdenvNoCC.mkDerivation {
export sourceRoot=$out/deps
echo $sourceRoot
'';
}
}

View File

@ -34,7 +34,7 @@ in stdenv.mkDerivation {
filter =
# Keep this filter as restrictive as possible in order to avoid unnecessary rebuilds and limit closure size
mkFilter {
dirRootsToInclude = [
dirRootsToInclude = [
"mobile_files"
"modules/react-native-status"
"packager"

View File

@ -7,17 +7,21 @@ let
platform = callPackage ../../platform.nix { inherit target-os; };
useFastlanePkg = platform.targetAndroid && !stdenv.isDarwin;
fastlane = callPackage ../../../fastlane {
bundlerEnv = _: bundlerEnv {
name = "fastlane-gems";
gemdir = ../../../fastlane;
};
bundlerEnv = _:
bundlerEnv {
name = "fastlane-gems";
gemdir = ../../../fastlane;
};
};
bundlerDeps = optionals platform.targetMobile [ bundler ruby ];
bundlerDeps = optionals platform.targetMobile [
bundler
ruby
]; # bundler/ruby used for fastlane on macOS
shellHook = optionalString useFastlanePkg fastlane.shellHook;
# TARGETS
shell = mkShell {
buildInputs = if useFastlanePkg then [ fastlane curl ] else bundlerDeps; # bundler/ruby used for fastlane on macOS
buildInputs = if useFastlanePkg then [ fastlane curl ] else bundlerDeps;
inherit shellHook;
};

View File

@ -8,6 +8,6 @@
name = "nixpkgs-source";
})) { inherit config; } }:
{
inherit pkgs config;
}
{
inherit pkgs config;
}

View File

@ -2,7 +2,16 @@
# We allow for "none" value because `make shell` can be called with `TARGET_OS` not set.
# We don't want to assume `all`, because that will rebuild status-go for all platforms.
assert stdenv.lib.assertOneOf "target-os" target-os [ "linux" "android" "windows" "macos" "darwin" "ios" "all" "none" ];
assert stdenv.lib.assertOneOf "target-os" target-os [
"linux"
"android"
"windows"
"macos"
"darwin"
"ios"
"all"
"none"
];
let
inherit (stdenv) isDarwin isLinux;

View File

@ -45,7 +45,7 @@ else
echo -e "See nix/README.md for more details."
fi
if [[ "$TARGET_OS" =~ (linux|windows) ]]; then
if [[ "$TARGET_OS" =~ (linux|windows|darwin|macos) ]]; then
# This is a dirty workaround because 'yarn install' is an impure operation,
# so we need to call it from an impure shell.
# Hopefull we'll be able to fix this later on with something like yarn2nix

View File

@ -10,9 +10,16 @@
hostSystem } @ args':
let
buildStatusGo = callPackage ./build-status-go.nix { inherit buildGoPackage go xcodeWrapper utils; };
buildStatusGo = callPackage ./build-status-go.nix {
inherit buildGoPackage go xcodeWrapper utils;
};
args = removeAttrs args' [ "goBuildFlags" "goBuildLdFlags" "outputFileName" "hostSystem" ]; # Remove desktop-only arguments from args
args = removeAttrs args' [
"goBuildFlags"
"goBuildLdFlags"
"outputFileName"
"hostSystem"
]; # Remove desktop-only arguments from args
buildStatusGoDesktopLib = buildStatusGo (args // {
buildMessage = "Building desktop library";
#GOOS=windows GOARCH=amd64 CGO_ENABLED=1 go build ${goBuildFlags} -buildmode=c-archive -o $out/${outputFileName} ./lib
@ -32,9 +39,7 @@ let
outputs = [ "out" ];
meta = {
platforms = with stdenv.lib.platforms; linux ++ darwin;
};
meta = { platforms = with stdenv.lib.platforms; linux ++ darwin; };
});
in buildStatusGoDesktopLib
in buildStatusGoDesktopLib

View File

@ -50,4 +50,4 @@ let
};
});
in buildStatusGoMobileLib
in buildStatusGoMobileLib

View File

@ -78,9 +78,7 @@ let
return
'';
passthru = {
inherit owner version rev;
};
passthru = { inherit owner version rev; };
meta = {
# Add default meta information
@ -89,8 +87,7 @@ let
license = lib.licenses.mpl20;
} // meta // {
# add an extra maintainer to every package
maintainers = (meta.maintainers or []) ++
[ lib.maintainers.pombeirp ];
maintainers = (meta.maintainers or [ ]) ++ [ lib.maintainers.pombeirp ];
};
});

View File

@ -72,11 +72,16 @@ let
});
};
buildInputs = if target-os == "android" then android.buildInputs else
if target-os == "ios" then ios.buildInputs else
if target-os == "all" then currentHostConfig.allTargets else
if platform.targetDesktop then desktop.buildInputs else
throw "Unexpected target platform ${target-os}";
buildInputs = if target-os == "android" then
android.buildInputs
else if target-os == "ios" then
ios.buildInputs
else if target-os == "all" then
currentHostConfig.allTargets
else if platform.targetDesktop then
desktop.buildInputs
else
throw "Unexpected target platform ${target-os}";
android = {
buildInputs = optional platform.targetAndroid [ status-go-packages.android ];
shellHook =

View File

@ -85,9 +85,11 @@ function writeEntry() {
exit 1
fi
echo -n " \"$depurl\" = {
echo -n " \"$depurl\" =
{
host = repositories.$host;
path = \"$deppath\";
path =
\"$deppath\";
type = \"$type\";"
if [ -n "$pom_sha256" ]; then
echo -n "
@ -112,7 +114,7 @@ currentLine=0
pstr="[=======================================================================]"
echo "# Auto-generated by $(realpath --relative-to="$(dirname $1)" ${BASH_SOURCE})
{}:
{ }:
let
repositories = {
@ -126,8 +128,10 @@ let
jcenter = \"$jcenterUrl\";
jitpack = \"$jitpackUrl\";
maven = \"$mavenUrl\";
sonatypeSnapshots = \"$sonatypeSnapshotsUrl\";
sonatypePublicGrid = \"$sonatypePublicGridUrl\";
sonatypeSnapshots =
\"$sonatypeSnapshotsUrl\";
sonatypePublicGrid =
\"$sonatypePublicGridUrl\";
};
in {"

View File

@ -4,11 +4,10 @@
# It also filters out symlinks to result folders created by nix-build, as well as backup/swap/generated files
let
inherit (lib) any compare compareLists elem elemAt hasPrefix length min splitString take;
inherit (lib)
any compare compareLists elem elemAt hasPrefix length min splitString take;
isPathAllowed =
allowedPath:
path:
isPathAllowed = allowedPath: path:
let
count = min (length allowedPathElements) (length pathElements);
pathElements = splitString "/" path;
@ -17,13 +16,12 @@ let
allowedPathElementsSubset = take count allowedPathElements;
in (compareLists compare allowedPathElementsSubset pathElementsSubset) == 0;
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:
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;

View File

@ -30,11 +30,17 @@ let
};
tests = [
{
a = { path = "${absPath}/android/1"; type = "directory"; };
a = {
path = "${absPath}/android/1";
type = "directory";
};
e = true;
}
{
a = { path = "${absPath}/ios"; type = "directory"; };
a = {
path = "${absPath}/ios";
type = "directory";
};
e = false;
}
];

View File

@ -2,7 +2,7 @@
let
RED = "\\033[0;31m";
GREEN="\\033[0;32m";
GREEN = "\\033[0;32m";
NC = "\\033[0m";
_xcodeToolsTest = ''
xcode=0

View File

@ -3,8 +3,14 @@
target-os ? "none" }:
let
project = import ./default.nix { inherit target-os pkgs nixpkgs-bootstrap; inherit (nixpkgs-bootstrap) config; };
mkShell = pkgs.callPackage ./nix/bootstrapped-shell.nix { inherit stdenv target-os; inherit (pkgs) mkShell; };
project = import ./default.nix {
inherit target-os pkgs nixpkgs-bootstrap;
inherit (nixpkgs-bootstrap) config;
};
mkShell = pkgs.callPackage ./nix/bootstrapped-shell.nix {
inherit stdenv target-os;
inherit (pkgs) mkShell;
};
platform = pkgs.callPackage ./nix/platform.nix { inherit target-os; };
# TODO: Try to use stdenv for iOS. The problem is with building iOS as the build is trying to pass parameters to Apple's ld that are meant for GNU's ld (e.g. -dynamiclib)
stdenv = pkgs.stdenvNoCC;