Merge staging-next into staging
This commit is contained in:
@@ -2,11 +2,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "closure-compiler";
|
||||
version = "20200517";
|
||||
version = "20200614";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://dl.google.com/closure-compiler/compiler-${version}.tar.gz";
|
||||
sha256 = "05bbsrxw2nxjlcfc22w1ympi66jnmzymivg29cvidh5n28jgwba2";
|
||||
sha256 = "0a54y2d9nfg60knfv34kf6sdsh065dzam86l3wprf8gvqffxxcli";
|
||||
};
|
||||
|
||||
sourceRoot = ".";
|
||||
|
||||
@@ -71,56 +71,60 @@ let
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
Node/NPM based dependecies can be upgraded using script
|
||||
`packages/generate-node-packages.sh`.
|
||||
Packages which rely on `bin-wrap` will fail by default
|
||||
and can be patched using `patchBinwrap` function defined in `packages/patch-binwrap.nix`.
|
||||
/* Node/NPM based dependecies can be upgraded using script `packages/generate-node-packages.sh`.
|
||||
|
||||
* Packages which rely on `bin-wrap` will fail by default
|
||||
and can be patched using `patchBinwrap` function defined in `packages/lib.nix`.
|
||||
|
||||
* Packages which depend on npm installation of elm can be patched using
|
||||
`patchNpmElm` function also defined in `packages/lib.nix`.
|
||||
*/
|
||||
elmNodePackages =
|
||||
elmLib = import ./packages/lib.nix {
|
||||
inherit lib writeScriptBin stdenv;
|
||||
inherit (hsPkgs.elmPkgs) elm;
|
||||
};
|
||||
|
||||
elmNodePackages = with elmLib;
|
||||
let
|
||||
nodePkgs = import ./packages/node-composition.nix {
|
||||
inherit nodejs pkgs;
|
||||
inherit (stdenv.hostPlatform) system;
|
||||
};
|
||||
in with hsPkgs.elmPkgs; {
|
||||
elm-test = patchBinwrap [elmi-to-json] nodePkgs.elm-test;
|
||||
elm-verify-examples = patchBinwrap [elmi-to-json] nodePkgs.elm-verify-examples;
|
||||
|
||||
elm-test = patchBinwrap [elmi-to-json]
|
||||
nodePkgs.elm-test;
|
||||
|
||||
elm-verify-examples = patchBinwrap [elmi-to-json]
|
||||
nodePkgs.elm-verify-examples;
|
||||
|
||||
elm-coverage =
|
||||
let patched = patchBinwrap [elmi-to-json] nodePkgs.elm-coverage;
|
||||
in patched.override {
|
||||
preRebuild = ''
|
||||
let patched = patchNpmElm (patchBinwrap [elmi-to-json] nodePkgs.elm-coverage);
|
||||
in patched.override (old: {
|
||||
# Symlink Elm instrument binary
|
||||
preRebuild = (old.preRebuild or "") + ''
|
||||
# Noop custom installation script
|
||||
sed 's/\"install\".*/\"install\":\"echo no-op\"/g' --in-place package.json
|
||||
|
||||
# This should not be needed (thanks to binwrap* being nooped) but for some reason it still needs to be done
|
||||
# in case of just this package
|
||||
# TODO: investigate
|
||||
sed 's/\"install\".*/\"install\":\"echo no-op\",/g' --in-place node_modules/elmi-to-json/package.json
|
||||
|
||||
rm node_modules/elm/install.js
|
||||
echo "console.log('no-op');" > node_modules/elm/install.js
|
||||
'';
|
||||
|
||||
# Link Elm instrument binary
|
||||
postInstall = patched.postInstall + ''
|
||||
postInstall = (old.postInstall or "") + ''
|
||||
mkdir -p unpacked_bin
|
||||
ln -sf ${elm-instrument}/bin/elm-instrument unpacked_bin/elm-instrument
|
||||
'';
|
||||
};
|
||||
});
|
||||
|
||||
create-elm-app = patchBinwrap [elmi-to-json] (nodePkgs.create-elm-app.override {
|
||||
preRebuild = ''
|
||||
rm node_modules/elm/install.js
|
||||
echo "console.log('no-op');" > node_modules/elm/install.js
|
||||
'';
|
||||
});
|
||||
create-elm-app = patchNpmElm (patchBinwrap [elmi-to-json]
|
||||
nodePkgs.create-elm-app);
|
||||
|
||||
elm-language-server = nodePkgs."@elm-tooling/elm-language-server";
|
||||
|
||||
inherit (nodePkgs) elm-doc-preview elm-live elm-upgrade elm-xref elm-analyse;
|
||||
};
|
||||
|
||||
patchBinwrap = import ./packages/patch-binwrap.nix { inherit lib writeScriptBin stdenv; };
|
||||
|
||||
in hsPkgs.elmPkgs // elmNodePackages // {
|
||||
lib = { inherit patchBinwrap; };
|
||||
lib = elmLib;
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ set -eu -o pipefail
|
||||
|
||||
rm -f node-env.nix
|
||||
$(nix-build $ROOT -A nodePackages.node2nix --no-out-link)/bin/node2nix \
|
||||
--nodejs-10 \
|
||||
--nodejs-12 \
|
||||
-i node-packages.json \
|
||||
-o node-packages.nix \
|
||||
-c node-composition.nix \
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
{ writeScriptBin, stdenv, lib, elm }:
|
||||
let
|
||||
patchBinwrap =
|
||||
let
|
||||
# Patching binwrap by NoOp script
|
||||
binwrap = writeScriptBin "binwrap" ''
|
||||
#! ${stdenv.shell}
|
||||
echo "binwrap called: Returning 0"
|
||||
return 0
|
||||
'';
|
||||
binwrap-install = writeScriptBin "binwrap-install" ''
|
||||
#! ${stdenv.shell}
|
||||
echo "binwrap-install called: Doing nothing"
|
||||
'';
|
||||
in targets: pkg:
|
||||
pkg.override (old: {
|
||||
nativeBuildInputs = (old.nativeBuildInputs or []) ++ [ binwrap binwrap-install ];
|
||||
|
||||
# Manually install targets
|
||||
# by symlinking binaries into `node_modules`
|
||||
postInstall = let
|
||||
binFile = module: lib.strings.removeSuffix ("-" + module.version) module.name;
|
||||
in (old.postInstall or "") + ''
|
||||
${lib.concatStrings (map (module: ''
|
||||
echo "linking ${binFile module}"
|
||||
ln -sf ${module}/bin/${binFile module} \
|
||||
node_modules/${binFile module}/bin/${binFile module}
|
||||
'') targets)}
|
||||
'';
|
||||
});
|
||||
|
||||
patchNpmElm = pkg:
|
||||
pkg.override (old: {
|
||||
preRebuild = (old.preRebuild or "") + ''
|
||||
rm node_modules/elm/install.js
|
||||
echo "console.log('Nixpkgs\' version of Elm will be used');" > node_modules/elm/install.js
|
||||
'';
|
||||
postInstall = (old.postInstall or "") + ''
|
||||
ln -sf ${elm}/bin/elm node_modules/elm/bin/elm
|
||||
'';
|
||||
});
|
||||
in
|
||||
{ inherit patchBinwrap patchNpmElm; }
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
{pkgs ? import <nixpkgs> {
|
||||
inherit system;
|
||||
}, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-10_x"}:
|
||||
}, system ? builtins.currentSystem, nodejs ? pkgs."nodejs-12_x"}:
|
||||
|
||||
let
|
||||
nodeEnv = import ../../../node-packages/node-env.nix {
|
||||
|
||||
+2372
-2686
File diff suppressed because it is too large
Load Diff
@@ -1,30 +0,0 @@
|
||||
{ writeScriptBin, stdenv, lib }:
|
||||
let
|
||||
# Patching binwrap by NoOp script
|
||||
binwrap = writeScriptBin "binwrap" ''
|
||||
#! ${stdenv.shell}
|
||||
echo "binwrap called: Returning 0"
|
||||
return 0
|
||||
'';
|
||||
binwrap-install = writeScriptBin "binwrap-install" ''
|
||||
#! ${stdenv.shell}
|
||||
echo "binwrap-install called: Doing nothing"
|
||||
'';
|
||||
in
|
||||
targets:
|
||||
pkg:
|
||||
pkg.override {
|
||||
nativeBuildInputs = pkg.nativeBuildInputs ++ [ binwrap binwrap-install ];
|
||||
|
||||
# Manually install targets
|
||||
# by symlinking binaries into `node_modules`
|
||||
postInstall = let
|
||||
binFile = module: lib.strings.removeSuffix ("-" + module.version) module.name;
|
||||
in ''
|
||||
${lib.concatStrings (map (module: ''
|
||||
echo "linking ${binFile module}"
|
||||
ln -sf ${module}/bin/${binFile module} \
|
||||
node_modules/${binFile module}/bin/${binFile module}
|
||||
'') targets)}
|
||||
'';
|
||||
}
|
||||
@@ -78,18 +78,6 @@ stdenv.mkDerivation rec {
|
||||
patchShebangs ghc-${version}/configure
|
||||
'' +
|
||||
|
||||
# Strip is harmful, see also below. It's important that this happens
|
||||
# first. The GHC Cabal build system makes use of strip by default and
|
||||
# has hardcoded paths to /usr/bin/strip in many places. We replace
|
||||
# those below, making them point to our dummy script.
|
||||
''
|
||||
mkdir "$TMP/bin"
|
||||
for i in strip; do
|
||||
echo '#! ${stdenv.shell}' > "$TMP/bin/$i"
|
||||
chmod +x "$TMP/bin/$i"
|
||||
done
|
||||
PATH="$TMP/bin:$PATH"
|
||||
'' +
|
||||
# We have to patch the GMP paths for the integer-gmp package.
|
||||
''
|
||||
find . -name integer-gmp.buildinfo \
|
||||
@@ -125,17 +113,13 @@ stdenv.mkDerivation rec {
|
||||
] ++ stdenv.lib.optional stdenv.isDarwin "--with-gcc=${./gcc-clang-wrapper.sh}"
|
||||
++ stdenv.lib.optional stdenv.hostPlatform.isMusl "--disable-ld-override";
|
||||
|
||||
# Stripping combined with patchelf breaks the executables (they die
|
||||
# with a segfault or the kernel even refuses the execve). (NIXPKGS-85)
|
||||
dontStrip = true;
|
||||
|
||||
# No building is necessary, but calling make without flags ironically
|
||||
# calls install-strip ...
|
||||
dontBuild = true;
|
||||
|
||||
# On Linux, use patchelf to modify the executables so that they can
|
||||
# find editline/gmp.
|
||||
preFixup = stdenv.lib.optionalString stdenv.isLinux ''
|
||||
postFixup = stdenv.lib.optionalString stdenv.isLinux ''
|
||||
for p in $(find "$out" -type f -executable); do
|
||||
if isELF "$p"; then
|
||||
echo "Patchelfing $p"
|
||||
|
||||
@@ -0,0 +1,252 @@
|
||||
{ stdenv, fetchurl, tzdata, iana-etc, runCommand
|
||||
, perl, which, pkgconfig, patch, procps, pcre, cacert, Security, Foundation
|
||||
, mailcap, runtimeShell
|
||||
, buildPackages, pkgsTargetTarget
|
||||
, fetchpatch
|
||||
}:
|
||||
|
||||
let
|
||||
|
||||
inherit (stdenv.lib) optionals optionalString;
|
||||
|
||||
goBootstrap = runCommand "go-bootstrap" {} ''
|
||||
mkdir $out
|
||||
cp -rf ${buildPackages.go_bootstrap}/* $out/
|
||||
chmod -R u+w $out
|
||||
find $out -name "*.c" -delete
|
||||
cp -rf $out/bin/* $out/share/go/bin/
|
||||
'';
|
||||
|
||||
goarch = platform: {
|
||||
"i686" = "386";
|
||||
"x86_64" = "amd64";
|
||||
"aarch64" = "arm64";
|
||||
"arm" = "arm";
|
||||
"armv5tel" = "arm";
|
||||
"armv6l" = "arm";
|
||||
"armv7l" = "arm";
|
||||
}.${platform.parsed.cpu.name} or (throw "Unsupported system");
|
||||
|
||||
in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "go";
|
||||
version = "1.15beta1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://dl.google.com/go/go${version}.src.tar.gz";
|
||||
sha256 = "1h1sg6j9jac5bw2pjrd13bf4nr18prs89147izdhzbhp896sikbq";
|
||||
};
|
||||
|
||||
# perl is used for testing go vet
|
||||
nativeBuildInputs = [ perl which pkgconfig patch procps ];
|
||||
buildInputs = [ cacert pcre ]
|
||||
++ optionals stdenv.isLinux [ stdenv.cc.libc.out ]
|
||||
++ optionals (stdenv.hostPlatform.libc == "glibc") [ stdenv.cc.libc.static ];
|
||||
|
||||
depsTargetTargetPropagated = optionals stdenv.isDarwin [ Security Foundation ];
|
||||
|
||||
hardeningDisable = [ "all" ];
|
||||
|
||||
prePatch = ''
|
||||
patchShebangs ./ # replace /bin/bash
|
||||
|
||||
# This source produces shell script at run time,
|
||||
# and thus it is not corrected by patchShebangs.
|
||||
substituteInPlace misc/cgo/testcarchive/carchive_test.go \
|
||||
--replace '#!/usr/bin/env bash' '#!${runtimeShell}'
|
||||
|
||||
# Patch the mimetype database location which is missing on NixOS.
|
||||
# but also allow static binaries built with NixOS to run outside nix
|
||||
sed -i 's,\"/etc/mime.types,"${mailcap}/etc/mime.types\"\,\n\t&,' src/mime/type_unix.go
|
||||
|
||||
# Disabling the 'os/http/net' tests (they want files not available in
|
||||
# chroot builds)
|
||||
rm src/net/{listen,parse}_test.go
|
||||
rm src/syscall/exec_linux_test.go
|
||||
|
||||
# !!! substituteInPlace does not seems to be effective.
|
||||
# The os test wants to read files in an existing path. Just don't let it be /usr/bin.
|
||||
sed -i 's,/usr/bin,'"`pwd`", src/os/os_test.go
|
||||
sed -i 's,/bin/pwd,'"`type -P pwd`", src/os/os_test.go
|
||||
# Fails on aarch64
|
||||
sed -i '/TestFallocate/aif true \{ return\; \}' src/cmd/link/internal/ld/fallocate_test.go
|
||||
# Skip this test since ssl patches mess it up.
|
||||
sed -i '/TestLoadSystemCertsLoadColonSeparatedDirs/aif true \{ return\; \}' src/crypto/x509/root_unix_test.go
|
||||
# Disable another PIE test which breaks.
|
||||
sed -i '/TestTrivialPIE/aif true \{ return\; \}' misc/cgo/testshared/shared_test.go
|
||||
# Disable the BuildModePie test
|
||||
sed -i '/TestBuildmodePIE/aif true \{ return\; \}' src/cmd/go/go_test.go
|
||||
# Disable the unix socket test
|
||||
sed -i '/TestShutdownUnix/aif true \{ return\; \}' src/net/net_test.go
|
||||
# Disable the hostname test
|
||||
sed -i '/TestHostname/aif true \{ return\; \}' src/os/os_test.go
|
||||
# ParseInLocation fails the test
|
||||
sed -i '/TestParseInSydney/aif true \{ return\; \}' src/time/format_test.go
|
||||
# Remove the api check as it never worked
|
||||
sed -i '/src\/cmd\/api\/run.go/ireturn nil' src/cmd/dist/test.go
|
||||
# Remove the coverage test as we have removed this utility
|
||||
sed -i '/TestCoverageWithCgo/aif true \{ return\; \}' src/cmd/go/go_test.go
|
||||
# Remove the timezone naming test
|
||||
sed -i '/TestLoadFixed/aif true \{ return\; \}' src/time/time_test.go
|
||||
# Remove disable setgid test
|
||||
sed -i '/TestRespectSetgidDir/aif true \{ return\; \}' src/cmd/go/internal/work/build_test.go
|
||||
# Remove cert tests that conflict with NixOS's cert resolution
|
||||
sed -i '/TestEnvVars/aif true \{ return\; \}' src/crypto/x509/root_unix_test.go
|
||||
# TestWritevError hangs sometimes
|
||||
sed -i '/TestWritevError/aif true \{ return\; \}' src/net/writev_test.go
|
||||
# TestVariousDeadlines fails sometimes
|
||||
sed -i '/TestVariousDeadlines/aif true \{ return\; \}' src/net/timeout_test.go
|
||||
|
||||
sed -i 's,/etc/protocols,${iana-etc}/etc/protocols,' src/net/lookup_unix.go
|
||||
sed -i 's,/etc/services,${iana-etc}/etc/services,' src/net/port_unix.go
|
||||
|
||||
# Disable cgo lookup tests not works, they depend on resolver
|
||||
rm src/net/cgo_unix_test.go
|
||||
|
||||
'' + optionalString stdenv.isLinux ''
|
||||
# prepend the nix path to the zoneinfo files but also leave the original value for static binaries
|
||||
# that run outside a nix server
|
||||
sed -i 's,\"/usr/share/zoneinfo/,"${tzdata}/share/zoneinfo/\"\,\n\t&,' src/time/zoneinfo_unix.go
|
||||
|
||||
'' + optionalString stdenv.isAarch32 ''
|
||||
echo '#!${runtimeShell}' > misc/cgo/testplugin/test.bash
|
||||
'' + optionalString stdenv.isDarwin ''
|
||||
substituteInPlace src/race.bash --replace \
|
||||
"sysctl machdep.cpu.extfeatures | grep -qv EM64T" true
|
||||
sed -i 's,strings.Contains(.*sysctl.*,true {,' src/cmd/dist/util.go
|
||||
sed -i 's,"/etc","'"$TMPDIR"'",' src/os/os_test.go
|
||||
sed -i 's,/_go_os_test,'"$TMPDIR"'/_go_os_test,' src/os/path_test.go
|
||||
|
||||
sed -i '/TestChdirAndGetwd/aif true \{ return\; \}' src/os/os_test.go
|
||||
sed -i '/TestCredentialNoSetGroups/aif true \{ return\; \}' src/os/exec/exec_posix_test.go
|
||||
sed -i '/TestRead0/aif true \{ return\; \}' src/os/os_test.go
|
||||
sed -i '/TestSystemRoots/aif true \{ return\; \}' src/crypto/x509/root_darwin_test.go
|
||||
|
||||
sed -i '/TestGoInstallRebuildsStalePackagesInOtherGOPATH/aif true \{ return\; \}' src/cmd/go/go_test.go
|
||||
sed -i '/TestBuildDashIInstallsDependencies/aif true \{ return\; \}' src/cmd/go/go_test.go
|
||||
|
||||
sed -i '/TestDisasmExtld/aif true \{ return\; \}' src/cmd/objdump/objdump_test.go
|
||||
|
||||
sed -i 's/unrecognized/unknown/' src/cmd/link/internal/ld/lib.go
|
||||
|
||||
# TestCurrent fails because Current is not implemented on Darwin
|
||||
sed -i 's/TestCurrent/testCurrent/g' src/os/user/user_test.go
|
||||
sed -i 's/TestLookup/testLookup/g' src/os/user/user_test.go
|
||||
|
||||
touch $TMPDIR/group $TMPDIR/hosts $TMPDIR/passwd
|
||||
'';
|
||||
|
||||
patches = [
|
||||
./remove-tools-1.11.patch
|
||||
./ssl-cert-file-1.15.patch
|
||||
./remove-test-pie-1.15.patch
|
||||
./creds-test.patch
|
||||
./go-1.9-skip-flaky-19608.patch
|
||||
./go-1.9-skip-flaky-20072.patch
|
||||
./skip-external-network-tests-1.15.patch
|
||||
./skip-nohup-tests.patch
|
||||
./skip-cgo-tests-1.15.patch
|
||||
] ++ [
|
||||
# breaks under load: https://github.com/golang/go/issues/25628
|
||||
(if stdenv.isAarch32
|
||||
then ./skip-test-extra-files-on-aarch32-1.14.patch
|
||||
else ./skip-test-extra-files-on-386-1.14.patch)
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
find . -name '*.orig' -exec rm {} ';'
|
||||
'';
|
||||
|
||||
GOOS = stdenv.targetPlatform.parsed.kernel.name;
|
||||
GOARCH = goarch stdenv.targetPlatform;
|
||||
# GOHOSTOS/GOHOSTARCH must match the building system, not the host system.
|
||||
# Go will nevertheless build a for host system that we will copy over in
|
||||
# the install phase.
|
||||
GOHOSTOS = stdenv.buildPlatform.parsed.kernel.name;
|
||||
GOHOSTARCH = goarch stdenv.buildPlatform;
|
||||
|
||||
# {CC,CXX}_FOR_TARGET must be only set for cross compilation case as go expect those
|
||||
# to be different from CC/CXX
|
||||
CC_FOR_TARGET = if (stdenv.buildPlatform != stdenv.targetPlatform) then
|
||||
"${pkgsTargetTarget.stdenv.cc}/bin/${pkgsTargetTarget.stdenv.cc.targetPrefix}cc"
|
||||
else
|
||||
null;
|
||||
CXX_FOR_TARGET = if (stdenv.buildPlatform != stdenv.targetPlatform) then
|
||||
"${pkgsTargetTarget.stdenv.cc}/bin/${pkgsTargetTarget.stdenv.cc.targetPrefix}c++"
|
||||
else
|
||||
null;
|
||||
|
||||
GOARM = toString (stdenv.lib.intersectLists [(stdenv.hostPlatform.parsed.cpu.version or "")] ["5" "6" "7"]);
|
||||
GO386 = 387; # from Arch: don't assume sse2 on i686
|
||||
CGO_ENABLED = 1;
|
||||
# Hopefully avoids test timeouts on Hydra
|
||||
GO_TEST_TIMEOUT_SCALE = 3;
|
||||
|
||||
# Indicate that we are running on build infrastructure
|
||||
# Some tests assume things like home directories and users exists
|
||||
GO_BUILDER_NAME = "nix";
|
||||
|
||||
GOROOT_BOOTSTRAP="${goBootstrap}/share/go";
|
||||
|
||||
postConfigure = ''
|
||||
export GOCACHE=$TMPDIR/go-cache
|
||||
# this is compiled into the binary
|
||||
export GOROOT_FINAL=$out/share/go
|
||||
|
||||
export PATH=$(pwd)/bin:$PATH
|
||||
|
||||
# Independent from host/target, CC should produce code for the building system.
|
||||
export CC=${buildPackages.stdenv.cc}/bin/cc
|
||||
ulimit -a
|
||||
'';
|
||||
|
||||
postBuild = ''
|
||||
(cd src && ./make.bash)
|
||||
'';
|
||||
|
||||
doCheck = stdenv.hostPlatform == stdenv.targetPlatform && !stdenv.isDarwin;
|
||||
|
||||
checkPhase = ''
|
||||
runHook preCheck
|
||||
(cd src && HOME=$TMPDIR GOCACHE=$TMPDIR/go-cache ./run.bash --no-rebuild)
|
||||
runHook postCheck
|
||||
'';
|
||||
|
||||
preInstall = ''
|
||||
rm -r pkg/obj
|
||||
# Contains the wrong perl shebang when cross compiling,
|
||||
# since it is not used for anything we can deleted as well.
|
||||
rm src/regexp/syntax/make_perl_groups.pl
|
||||
'' + (if (stdenv.buildPlatform != stdenv.hostPlatform) then ''
|
||||
mv bin/*_*/* bin
|
||||
rmdir bin/*_*
|
||||
${optionalString (!(GOHOSTARCH == GOARCH && GOOS == GOHOSTOS)) ''
|
||||
rm -rf pkg/${GOHOSTOS}_${GOHOSTARCH} pkg/tool/${GOHOSTOS}_${GOHOSTARCH}
|
||||
''}
|
||||
'' else if (stdenv.hostPlatform != stdenv.targetPlatform) then ''
|
||||
rm -rf bin/*_*
|
||||
${optionalString (!(GOHOSTARCH == GOARCH && GOOS == GOHOSTOS)) ''
|
||||
rm -rf pkg/${GOOS}_${GOARCH} pkg/tool/${GOOS}_${GOARCH}
|
||||
''}
|
||||
'' else "");
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
mkdir -p $GOROOT_FINAL
|
||||
cp -a bin pkg src lib misc api doc $GOROOT_FINAL
|
||||
ln -s $GOROOT_FINAL/bin $out/bin
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
disallowedReferences = [ goBootstrap ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
branch = "1.15";
|
||||
homepage = "http://golang.org/";
|
||||
description = "The Go Programming language";
|
||||
license = licenses.bsd3;
|
||||
maintainers = teams.golang.members;
|
||||
platforms = platforms.linux ++ platforms.darwin;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
diff --git a/src/cmd/dist/test.go b/src/cmd/dist/test.go
|
||||
index e1cd4965c3..66bf980fc6 100644
|
||||
--- a/src/cmd/dist/test.go
|
||||
+++ b/src/cmd/dist/test.go
|
||||
@@ -584,29 +584,6 @@ func (t *tester) registerTests() {
|
||||
})
|
||||
}
|
||||
|
||||
- // Test internal linking of PIE binaries where it is supported.
|
||||
- if t.internalLinkPIE() {
|
||||
- t.tests = append(t.tests, distTest{
|
||||
- name: "pie_internal",
|
||||
- heading: "internal linking of -buildmode=pie",
|
||||
- fn: func(dt *distTest) error {
|
||||
- t.addCmd(dt, "src", t.goTest(), "reflect", "-buildmode=pie", "-ldflags=-linkmode=internal", t.timeout(60))
|
||||
- return nil
|
||||
- },
|
||||
- })
|
||||
- // Also test a cgo package.
|
||||
- if t.cgoEnabled && t.internalLink() {
|
||||
- t.tests = append(t.tests, distTest{
|
||||
- name: "pie_internal_cgo",
|
||||
- heading: "internal linking of -buildmode=pie",
|
||||
- fn: func(dt *distTest) error {
|
||||
- t.addCmd(dt, "src", t.goTest(), "os/user", "-buildmode=pie", "-ldflags=-linkmode=internal", t.timeout(60))
|
||||
- return nil
|
||||
- },
|
||||
- })
|
||||
- }
|
||||
- }
|
||||
-
|
||||
// sync tests
|
||||
if goos != "js" { // js doesn't support -cpu=10
|
||||
t.tests = append(t.tests, distTest{
|
||||
@@ -0,0 +1,13 @@
|
||||
diff --git a/src/cmd/dist/test.go b/src/cmd/dist/test.go
|
||||
index e1cd4965c3..0980d044df 100644
|
||||
--- a/src/cmd/dist/test.go
|
||||
+++ b/src/cmd/dist/test.go
|
||||
@@ -1136,7 +1136,7 @@ func (t *tester) cgoTest(dt *distTest) error {
|
||||
t.addCmd(dt, "misc/cgo/test", t.goTest(), "-buildmode=pie", "-ldflags=-linkmode=internal")
|
||||
}
|
||||
t.addCmd(dt, "misc/cgo/testtls", t.goTest(), "-buildmode=pie")
|
||||
- t.addCmd(dt, "misc/cgo/nocgo", t.goTest(), "-buildmode=pie")
|
||||
+ //t.addCmd(dt, "misc/cgo/nocgo", t.goTest(), "-buildmode=pie")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
diff --git a/src/net/dial_test.go b/src/net/dial_test.go
|
||||
index 01582489de..5b5faa5424 100644
|
||||
--- a/src/net/dial_test.go
|
||||
+++ b/src/net/dial_test.go
|
||||
@@ -990,6 +990,8 @@ func TestDialerControl(t *testing.T) {
|
||||
// except that it won't skip testing on non-mobile builders.
|
||||
func mustHaveExternalNetwork(t *testing.T) {
|
||||
t.Helper()
|
||||
+ t.Skipf("Nix sandbox does not have networking")
|
||||
+
|
||||
mobile := runtime.GOOS == "android" || runtime.GOOS == "darwin" && runtime.GOARCH == "arm64"
|
||||
if testenv.Builder() == "" || mobile {
|
||||
testenv.MustHaveExternalNetwork(t)
|
||||
@@ -0,0 +1,76 @@
|
||||
diff --git a/src/crypto/x509/root_darwin_amd64.go b/src/crypto/x509/root_darwin_amd64.go
|
||||
index 8ad5a9607d..1d6091cf83 100644
|
||||
--- a/src/crypto/x509/root_darwin_amd64.go
|
||||
+++ b/src/crypto/x509/root_darwin_amd64.go
|
||||
@@ -8,6 +8,7 @@ import (
|
||||
"bytes"
|
||||
"crypto/x509/internal/macOS"
|
||||
"fmt"
|
||||
+ "io/ioutil"
|
||||
"os"
|
||||
"strings"
|
||||
)
|
||||
@@ -23,6 +24,14 @@ func (c *Certificate) systemVerify(opts *VerifyOptions) (chains [][]*Certificate
|
||||
var loadSystemRootsWithCgo func() (*CertPool, error)
|
||||
|
||||
func loadSystemRoots() (*CertPool, error) {
|
||||
+ if file := os.Getenv("NIX_SSL_CERT_FILE"); file != "" {
|
||||
+ data, err := ioutil.ReadFile(file)
|
||||
+ if err == nil {
|
||||
+ roots := NewCertPool()
|
||||
+ roots.AppendCertsFromPEM(data)
|
||||
+ return roots, nil
|
||||
+ }
|
||||
+ }
|
||||
var trustedRoots []*Certificate
|
||||
untrustedRoots := make(map[string]bool)
|
||||
|
||||
diff --git a/src/crypto/x509/root_darwin_arm64.go b/src/crypto/x509/root_darwin_arm64.go
|
||||
index 2fb079ba66..6a072f3e78 100644
|
||||
--- a/src/crypto/x509/root_darwin_arm64.go
|
||||
+++ b/src/crypto/x509/root_darwin_arm64.go
|
||||
@@ -6,6 +6,11 @@
|
||||
|
||||
package x509
|
||||
|
||||
+import (
|
||||
+ "io/ioutil"
|
||||
+ "os"
|
||||
+)
|
||||
+
|
||||
func (c *Certificate) systemVerify(opts *VerifyOptions) (chains [][]*Certificate, err error) {
|
||||
return nil, nil
|
||||
}
|
||||
@@ -14,6 +19,14 @@ func (c *Certificate) systemVerify(opts *VerifyOptions) (chains [][]*Certificate
|
||||
var loadSystemRootsWithCgo func() (*CertPool, error)
|
||||
|
||||
func loadSystemRoots() (*CertPool, error) {
|
||||
+ if file := os.Getenv("NIX_SSL_CERT_FILE"); file != "" {
|
||||
+ data, err := ioutil.ReadFile(file)
|
||||
+ if err == nil {
|
||||
+ roots := NewCertPool()
|
||||
+ roots.AppendCertsFromPEM(data)
|
||||
+ return roots, nil
|
||||
+ }
|
||||
+ }
|
||||
p := NewCertPool()
|
||||
p.AppendCertsFromPEM([]byte(systemRootsPEM))
|
||||
return p, nil
|
||||
diff --git a/src/crypto/x509/root_unix.go b/src/crypto/x509/root_unix.go
|
||||
index b48e618a65..195c1ff25a 100644
|
||||
--- a/src/crypto/x509/root_unix.go
|
||||
+++ b/src/crypto/x509/root_unix.go
|
||||
@@ -42,6 +42,13 @@ func (c *Certificate) systemVerify(opts *VerifyOptions) (chains [][]*Certificate
|
||||
|
||||
func loadSystemRoots() (*CertPool, error) {
|
||||
roots := NewCertPool()
|
||||
+ if file := os.Getenv("NIX_SSL_CERT_FILE"); file != "" {
|
||||
+ data, err := ioutil.ReadFile(file)
|
||||
+ if err == nil {
|
||||
+ roots.AppendCertsFromPEM(data)
|
||||
+ return roots, nil
|
||||
+ }
|
||||
+ }
|
||||
|
||||
files := certFiles
|
||||
if f := os.Getenv(certFileEnv); f != "" {
|
||||
@@ -0,0 +1,59 @@
|
||||
From acab088fd6af0b2ef2df1396aeb93bfc2e020fa5 Mon Sep 17 00:00:00 2001
|
||||
From: "Yukihiro \"Matz\" Matsumoto" <matz@ruby.or.jp>
|
||||
Date: Mon, 27 Apr 2020 18:52:43 +0900
|
||||
Subject: [PATCH 1/2] Updating `parse.y for recent `bison` (retry).
|
||||
|
||||
---
|
||||
mrbgems/mruby-compiler/core/parse.y | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y
|
||||
index 6a1faf4e..2a4f740e 100644
|
||||
--- a/mrbgems/mruby-compiler/core/parse.y
|
||||
+++ b/mrbgems/mruby-compiler/core/parse.y
|
||||
@@ -1323,7 +1323,7 @@ heredoc_end(parser_state *p)
|
||||
|
||||
%}
|
||||
|
||||
-%pure-parser
|
||||
+%define api.pure
|
||||
%parse-param {parser_state *p}
|
||||
%lex-param {parser_state *p}
|
||||
|
||||
--
|
||||
2.27.0
|
||||
|
||||
From 3cc682d943b29e84928a847a23f411ddbace74b7 Mon Sep 17 00:00:00 2001
|
||||
From: "Yukihiro \"Matz\" Matsumoto" <matz@ruby.or.jp>
|
||||
Date: Fri, 15 May 2020 12:30:13 +0900
|
||||
Subject: [PATCH 2/2] Remove `YYERROR_VERBOSE` which no longer supported since
|
||||
`bison 3.6`.
|
||||
|
||||
Instead we added `%define parse.error verbose`.
|
||||
---
|
||||
mrbgems/mruby-compiler/core/parse.y | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y
|
||||
index 2a4f740e..eee6a5e5 100644
|
||||
--- a/mrbgems/mruby-compiler/core/parse.y
|
||||
+++ b/mrbgems/mruby-compiler/core/parse.y
|
||||
@@ -9,7 +9,6 @@
|
||||
#ifdef PARSER_DEBUG
|
||||
# define YYDEBUG 1
|
||||
#endif
|
||||
-#define YYERROR_VERBOSE 1
|
||||
#define YYSTACK_USE_ALLOCA 1
|
||||
|
||||
#include <ctype.h>
|
||||
@@ -1323,6 +1322,7 @@ heredoc_end(parser_state *p)
|
||||
|
||||
%}
|
||||
|
||||
+%define parse.error verbose
|
||||
%define api.pure
|
||||
%parse-param {parser_state *p}
|
||||
%lex-param {parser_state *p}
|
||||
--
|
||||
2.27.0
|
||||
|
||||
@@ -1,17 +1,19 @@
|
||||
{ stdenv, ruby, bison, fetchFromGitHub }:
|
||||
{ stdenv, ruby, bison, rake, fetchFromGitHub }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "mruby";
|
||||
version = "2.1.0";
|
||||
version = "2.1.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mruby";
|
||||
repo = "mruby";
|
||||
rev = version;
|
||||
sha256 = "1y072c7dh9jf8xwy7kia6cb4dkpspq4zf24ssn7zm5f46p4waxni";
|
||||
sha256 = "gEEb0Vn/G+dNgeY6r0VP8bMSPrEOf5s+0GoOcnIPtEU=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ ruby bison ];
|
||||
nativeBuildInputs = [ ruby bison rake ];
|
||||
|
||||
patches = [ ./bison-36-compat.patch ];
|
||||
|
||||
# Necessary so it uses `gcc` instead of `ld` for linking.
|
||||
# https://github.com/mruby/mruby/blob/35be8b252495d92ca811d76996f03c470ee33380/tasks/toolchains/gcc.rake#L25
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "nim";
|
||||
version = "1.2.0";
|
||||
version = "1.2.4";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://nim-lang.org/download/${pname}-${version}.tar.xz";
|
||||
sha256 = "0xf56xb42hc92h4xnvk72q4n3ysjbyhf0rg60lc84r9r6wx5i52f";
|
||||
sha256 = "0dnn60slvp3ynlx3zhv3cjkanv8zglljxws0db8g0rdyz8r8zwgf";
|
||||
};
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
@@ -10,13 +10,13 @@ let
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "souffle";
|
||||
version = "1.7.1";
|
||||
version = "2.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "souffle-lang";
|
||||
repo = "souffle";
|
||||
rev = version;
|
||||
sha256 = "0px8kh5875q2iyza4ylpa6vxpy6qxg0qvn2idk1j6dcdf5pdryph";
|
||||
sha256 = "1azn32x0xbbk8gagipb34qk3y1srm927j5d34w20isgjxir4xsnz";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook bison flex mcpp doxygen graphviz makeWrapper perl ];
|
||||
|
||||
Reference in New Issue
Block a user