Merge branch 'staging' into staging-next

This commit is contained in:
Vladimír Čunát
2022-03-23 08:37:12 +01:00
766 changed files with 5433 additions and 3251 deletions
+5 -1
View File
@@ -142,4 +142,8 @@ Removes the pre-existing vendor directory. This should only be used if the depen
### `subPackages` {#var-go-subPackages}
Limits the builder from building child packages that have not been listed. If `subPackages` is not specified, all child packages will be built.
Specified as a string or list of strings. Limits the builder from building child packages that have not been listed. If `subPackages` is not specified, all child packages will be built.
### `excludedPackages` {#var-go-excludedPackages}
Specified as a string or list of strings. Causes the builder to skip building child packages that match any of the provided values. If `excludedPackages` is not specified, all child packages will be built.
+1 -1
View File
@@ -9,7 +9,7 @@ tmp=$(mktemp --tmpdir -d nixpkgs-dep-license.XXXXXX)
exitHandler() {
exitCode=$?
rm -rf "$tmp"
exit $exitCode
return $exitCode
}
trap "exitHandler" EXIT
@@ -50,6 +50,11 @@
granular distinction between reloads and restarts.
</para>
</listitem>
<listitem>
<para>
Systemd has been upgraded to the version 250.
</para>
</listitem>
<listitem>
<para>
<link xlink:href="https://kops.sigs.k8s.io"><literal>kops</literal></link>
@@ -411,6 +416,12 @@
relying on the insecure behaviour before upgrading.
</para>
</listitem>
<listitem>
<para>
<literal>openssh</literal> has been update to 8.9p1, changing
the FIDO security key middleware interface.
</para>
</listitem>
<listitem>
<para>
<literal>services.k3s.enable</literal> no longer implies
@@ -19,6 +19,8 @@ In addition to numerous new and upgraded packages, this release has the followin
- systemd services can now set [systemd.services.\<name\>.reloadTriggers](#opt-systemd.services) instead of `reloadIfChanged` for a more granular distinction between reloads and restarts.
- Systemd has been upgraded to the version 250.
- [`kops`](https://kops.sigs.k8s.io) defaults to 1.22.4, which will enable [Instance Metadata Service Version 2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html) and require tokens on new clusters with Kubernetes 1.22. This will increase security by default, but may break some types of workloads. See the [release notes](https://kops.sigs.k8s.io/releases/1.22-notes/) for details.
- Module authors can use `mkRenamedOptionModuleWith` to automate the deprecation cycle without annoying out-of-tree module authors and their users.
@@ -133,6 +135,8 @@ In addition to numerous new and upgraded packages, this release has the followin
- `services.kubernetes.scheduler.{port,address}` now set `--secure-port` and `--bind-address` instead of `--port` and `--address`, since the former have been deprecated and are no longer functional in kubernetes>=1.23. Ensure that you are not relying on the insecure behaviour before upgrading.
- `openssh` has been update to 8.9p1, changing the FIDO security key middleware interface.
- `services.k3s.enable` no longer implies `systemd.enableUnifiedCgroupHierarchy = false`, and will default to the 'systemd' cgroup driver when using `services.k3s.docker = true`.
This change may require a reboot to take effect, and k3s may not be able to run if the boot cgroup hierarchy does not match its configuration.
The previous behavior may be retained by explicitly setting `systemd.enableUnifiedCgroupHierarchy = false` in your configuration.
@@ -708,6 +708,14 @@ in
systemd.packages = [ nixPackage ];
# Will only work once https://github.com/NixOS/nix/pull/6285 is merged
# systemd.tmpfiles.packages = [ nixPackage ];
# Can be dropped for Nix > https://github.com/NixOS/nix/pull/6285
systemd.tmpfiles.rules = [
"d /nix/var/nix/daemon-socket 0755 root root - -"
];
systemd.sockets.nix-daemon.wantedBy = [ "sockets.target" ];
systemd.services.nix-daemon =
+4
View File
@@ -281,6 +281,8 @@ let
"PrivateKeyFile"
"ListenPort"
"FirewallMark"
"RouteTable"
"RouteMetric"
])
(assertInt "FirewallMark")
(assertRange "FirewallMark" 1 4294967295)
@@ -296,6 +298,8 @@ let
"AllowedIPs"
"Endpoint"
"PersistentKeepalive"
"RouteTable"
"RouteMetric"
])
(assertInt "PersistentKeepalive")
(assertRange "PersistentKeepalive" 0 65535)
+2 -1
View File
@@ -232,7 +232,8 @@ done
mkdir -p /lib
ln -s @modulesClosure@/lib/modules /lib/modules
ln -s @modulesClosure@/lib/firmware /lib/firmware
echo @extraUtils@/bin/modprobe > /proc/sys/kernel/modprobe
# see comment in stage-1.nix for explanation
echo @extraUtils@/bin/modprobe-kernel > /proc/sys/kernel/modprobe
for i in @kernelModules@; do
info "loading module $(basename $i)..."
modprobe $i
+20
View File
@@ -131,6 +131,26 @@ let
copy_bin_and_libs ${pkgs.kmod}/bin/kmod
ln -sf kmod $out/bin/modprobe
# Dirty hack to make sure the kernel properly loads modules
# such as ext4 on demand (e.g. on a `mount(2)` syscall). This is necessary
# because `kmod` isn't linked against `libpthread.so.0` anymore (since
# it was merged into `libc.so.6` since version `2.34`), but still needs
# to access it for some reason. This is not an issue in stage-1 itself
# because of the `LD_LIBRARY_PATH`-variable and anytime later because the rpath of
# kmod/modprobe points to glibc's `$out/lib` where `libpthread.so.6` exists.
# However, this is a problem when the kernel calls `modprobe` inside
# the initial ramdisk because it doesn't know about the
# `LD_LIBRARY_PATH` and the rpath was nuked.
#
# Also, we can't use `makeWrapper` here because `kmod` only does
# `modprobe` functionality if `argv[0] == "modprobe"`.
cat >$out/bin/modprobe-kernel <<EOF
#!$out/bin/ash
export LD_LIBRARY_PATH=$out/lib
exec $out/bin/modprobe "\$@"
EOF
chmod +x $out/bin/modprobe-kernel
# Copy resize2fs if any ext* filesystems are to be resized
${optionalString (any (fs: fs.autoResize && (lib.hasPrefix "ext" fs.fsType)) fileSystems) ''
# We need mke2fs in the initrd.
+17 -5
View File
@@ -60,15 +60,27 @@ with lib;
};
users.groups.systemd-timesync.gid = config.ids.gids.systemd-timesync;
system.activationScripts.systemd-timesyncd-migration = mkIf (versionOlder config.system.stateVersion "19.09") ''
system.activationScripts.systemd-timesyncd-migration =
# workaround an issue of systemd-timesyncd not starting due to upstream systemd reverting their dynamic users changes
# - https://github.com/NixOS/nixpkgs/pull/61321#issuecomment-492423742
# - https://github.com/systemd/systemd/issues/12131
if [ -L /var/lib/systemd/timesync ]; then
rm /var/lib/systemd/timesync
mv /var/lib/private/systemd/timesync /var/lib/systemd/timesync
mkIf (versionOlder config.system.stateVersion "19.09") ''
if [ -L /var/lib/systemd/timesync ]; then
rm /var/lib/systemd/timesync
mv /var/lib/private/systemd/timesync /var/lib/systemd/timesync
fi
'';
system.activationScripts.systemd-timesyncd-init-clock =
# Ensure that we have some stored time to prevent systemd-timesyncd to
# resort back to the fallback time.
# If the file doesn't exist we assume that our current system clock is
# good enough to provide an initial value.
''
if ! [ -f /var/lib/systemd/timesync/clock ]; then
test -d /var/lib/systemd/timesync || mkdir -p /var/lib/systemd/timesync
touch /var/lib/systemd/timesync/clock
fi
'';
'';
};
}
+2 -10
View File
@@ -2,21 +2,13 @@
stdenv.mkDerivation rec {
pname = "flac";
version = "1.3.3";
version = "1.3.4";
src = fetchurl {
url = "http://downloads.xiph.org/releases/flac/${pname}-${version}.tar.xz";
sha256 = "0j0p9sf56a2fm2hkjnf7x3py5ir49jyavg4q5zdyd7bcf6yq4gi1";
sha256 = "0dz7am8kbc97a6afml1h4yp085274prg8j7csryds8m3fmz61w4g";
};
patches = [
(fetchpatch {
name = "CVE-2020-0499.patch";
url = "https://github.com/xiph/flac/commit/2e7931c27eb15e387da440a37f12437e35b22dd4.patch";
sha256 = "160qzq9ms5addz7sx06pnyjjkqrffr54r4wd8735vy4x008z71ah";
})
];
buildInputs = [ libogg ];
#doCheck = true; # takes lots of time
+6 -1
View File
@@ -1,6 +1,7 @@
{ lib, stdenv, fetchFromGitHub, libjack2, libsndfile, xorg, freetype
, libxkbcommon, cairo, glib, gnome, flac, libogg, libvorbis, libopus, cmake
, pango, pkg-config }:
, pango, pkg-config, catch2
}:
stdenv.mkDerivation rec {
pname = "sfizz";
@@ -40,6 +41,8 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ cmake pkg-config ];
postPatch = ''
cp ${catch2}/include/catch2/catch.hpp tests/catch2/catch.hpp
substituteInPlace plugins/editor/external/vstgui4/vstgui/lib/platform/linux/x11fileselector.cpp \
--replace 'zenitypath = "zenity"' 'zenitypath = "${gnome.zenity}/bin/zenity"'
substituteInPlace plugins/editor/src/editor/NativeHelpers.cpp \
@@ -48,6 +51,8 @@ stdenv.mkDerivation rec {
cmakeFlags = [ "-DCMAKE_BUILD_TYPE=Release" "-DSFIZZ_TESTS=ON" ];
doCheck = true;
meta = with lib; {
homepage = "https://github.com/sfztools/sfizz";
description = "SFZ jack client and LV2 plugin";
@@ -7,6 +7,7 @@
, qtquickcontrols2
, SDL
, python3
, catch2
}:
mkDerivation rec {
@@ -21,6 +22,10 @@ mkDerivation rec {
fetchSubmodules = true;
};
postPatch = ''
cp ${catch2}/include/catch2/catch.hpp 3rdparty/catch2/single_include/catch2/catch.hpp
'';
nativeBuildInputs = [
cmake
extra-cmake-modules
@@ -33,6 +38,8 @@ mkDerivation rec {
SDL
];
doCheck = true;
meta = with lib; {
homepage = "https://github.com/agateau/sfxr-qt";
description = "A sound effect generator, QtQuick port of sfxr";
+5
View File
@@ -7,5 +7,10 @@ import ./generic.nix (rec {
url = "https://git.savannah.gnu.org/cgit/emacs.git/patch/?id=a88f63500e475f842e5fbdd9abba4ce122cdb082";
sha256 = "sha256-RF9b5PojFUAjh2TDUW4+HaWveV30Spy1iAXhaWf1ZVg=";
})
# glibc 2.34 compat
(fetchpatch {
url = "https://src.fedoraproject.org/rpms/emacs/raw/181aafcdb7ee2fded9fce4cfc448f27edccc927f/f/emacs-glibc-2.34.patch";
sha256 = "sha256-2o3C/jhZPl2OW/LmVPt/fhdwbS9NOdF9lVEF1Kn9aEk=";
})
];
})
@@ -11,6 +11,12 @@ stdenv.mkDerivation rec {
owner = "apitrace";
};
patches = [
# glibc 2.34 compat
# derived from https://github.com/apitrace/apitrace/commit/d28a980802ad48568c87da02d630c8babfe163bb
./glibc-2.34-compat.patch
];
# LD_PRELOAD wrappers need to be statically linked to work against all kinds
# of games -- so it's fine to use e.g. bundled snappy.
buildInputs = [ libX11 procps python2 libdwarf qtbase qtwebkit ];
@@ -0,0 +1,13 @@
diff --git a/wrappers/dlsym.cpp b/wrappers/dlsym.cpp
index 2eda082..0c0c8ee 100644
--- a/wrappers/dlsym.cpp
+++ b/wrappers/dlsym.cpp
@@ -34,7 +34,7 @@
#include "os.hpp"
-#ifdef __GLIBC__
+#if defined(__GLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ < 34
#include <dlfcn.h>
@@ -24,6 +24,12 @@ stdenv.mkDerivation rec {
sha256 = "0sja0ddd9c8wjjpzk2ag8q1lxpj09adgmhd7wnsylincqnj2jyls";
};
postPatch = ''
# Don't build tests, vendored catch doesn't build with latest glibc.
substituteInPlace CMakeLists.txt \
--replace "add_subdirectory (tests)" ""
'';
nativeBuildInputs = [
cmake
gettext
@@ -21,6 +21,19 @@ stdenv.mkDerivation rec {
--subst-var-by APP_VERSION_YEAR ${lib.versions.major version} \
--subst-var-by APP_VERSION_NUMBER ${lib.versions.minor version} \
--subst-var-by GIT_DESCRIBE v${version}
# Tests don't compile because of vendored `catch2` being incompatible with glibc-2.34.
# Also, no need to since we don't even run them.
substituteInPlace lib/CMakeLists.txt \
--replace "add_subdirectory(Catch2)" ""
substituteInPlace lib/vecmath/CMakeLists.txt \
--replace "add_subdirectory(test)" "" \
--replace "add_subdirectory(lib)" ""
substituteInPlace lib/kdl/CMakeLists.txt \
--replace "add_subdirectory(test)" ""
substituteInPlace common/CMakeLists.txt \
--replace "add_subdirectory(test)" "" \
--replace "add_subdirectory(benchmark)" ""
'';
nativeBuildInputs = [ cmake git pandoc wrapQtAppsHook copyDesktopItems ];
@@ -15,7 +15,7 @@ buildGoModule rec {
nativeBuildInputs = [ installShellFiles ];
excludedPackages = "\\(tools\\|docgen\\)";
excludedPackages = [ "tools" "docgen" ];
ldflags =
let t = "github.com/rancher/k3d/v5/version"; in
@@ -19,7 +19,7 @@ buildGoModule rec {
# third_party/VENDOR-LICENSE breaks build/check as go files are still included
# docs is a tool for generating docs
excludedPackages = "\\(third_party\\|cmd/docs\\)";
excludedPackages = [ "third_party" "cmd/docs" ];
preCheck = ''
# some tests try to write to the home dir
@@ -24,7 +24,7 @@ buildGoPackage rec {
++ lib.optional stdenv.hostPlatform.isx86_64 dclxvi
++ lib.optionals gui [ wrapGAppsHook ];
tags = lib.optionals (!gui) [ "nogui" ];
excludedPackages = "\\(appengine\\|bn256cgo\\)";
excludedPackages = [ "appengine" "bn256cgo" ];
postPatch = lib.optionalString stdenv.hostPlatform.isx86_64 ''
grep -r 'bn256' | awk -F: '{print $1}' | xargs sed -i \
-e "s,golang.org/x/crypto/bn256,github.com/agl/pond/bn256cgo,g" \
@@ -2,6 +2,7 @@
, fetchFromGitHub
, cmake
, clingo
, catch2
}:
stdenv.mkDerivation rec {
@@ -15,6 +16,10 @@ stdenv.mkDerivation rec {
sha256 = "1g2xkz9nsgqnrw3fdf5jchl16f0skj5mm32va61scc2yrchll166";
};
postPatch = ''
cp ${catch2}/include/catch2/catch.hpp libclingcon/tests/catch.hpp
'';
nativeBuildInputs = [ cmake clingo ];
cmakeFlags = [
@@ -32,7 +32,9 @@ let
in
stdenv.mkDerivation {
pname = "git";
pname = "git"
+ lib.optionalString svnSupport "-with-svn"
+ lib.optionalString (!svnSupport && !guiSupport && !sendEmailSupport && !withManual && !pythonSupport && !withpcre2) "-minimal";
inherit version;
src = fetchurl {
@@ -166,8 +168,13 @@ stdenv.mkDerivation {
cp -a contrib $out/share/git/
mkdir -p $out/share/bash-completion/completions
ln -s $out/share/git/contrib/completion/git-completion.bash $out/share/bash-completion/completions/git
mkdir -p $out/share/bash-completion/completions
ln -s $out/share/git/contrib/completion/git-prompt.sh $out/share/bash-completion/completions/
# only readme, developed in another repo
rm -r contrib/hooks/multimail
mkdir -p $out/share/git-core/contrib
cp -a contrib/hooks/ $out/share/git-core/contrib/
substituteInPlace $out/share/git-core/contrib/hooks/pre-auto-gc-battery \
--replace ' grep' ' ${gnugrep}/bin/grep' \
# grep is a runtime dependency, need to patch so that it's found
substituteInPlace $out/libexec/git-core/git-sh-setup \
@@ -9,6 +9,14 @@ stdenv.mkDerivation rec {
sha256 = "sha256-Q93+EHJKi4XiRo9kA7YABzcYbwHmDgvWL95p2EIjTMU=";
};
patches = [
# glibc 2.34 compat
(fetchpatch {
url = "https://src.fedoraproject.org/rpms/rcs/raw/f8e07cd37f4abfb36e37d41852bb8f9e234d3fb1/f/rcs-5.10.0-SIGSTKSZ.patch";
sha256 = "sha256-mc6Uye9mdEsLBcOnf1m1TUb1BV0ncNU//iKBpLGBjho=";
})
];
ac_cv_path_ED = "${ed}/bin/ed";
DIFF = "${diffutils}/bin/diff";
DIFF3 = "${diffutils}/bin/diff3";
+1
View File
@@ -18,5 +18,6 @@ stdenv.mkDerivation rec {
license = lib.licenses.lgpl21Plus;
platforms = lib.platforms.linux;
maintainers = [ ];
broken = true; # missing glibc-2.34 support, no upstream activity
};
}
+1
View File
@@ -17,5 +17,6 @@ stdenv.mkDerivation rec {
license = lib.licenses.lgpl21Plus;
platforms = lib.platforms.linux;
maintainers = [ ];
broken = true; # missing glibc-2.34 support, no upstream activity
};
}
+1
View File
@@ -21,5 +21,6 @@ stdenv.mkDerivation rec {
license = lib.licenses.lgpl21Plus;
platforms = lib.platforms.linux;
maintainers = [ ];
broken = true; # missing glibc-2.34 support, no upstream activity
};
}
@@ -34,11 +34,6 @@
, extraConfig ? {} # Additional values to be added literally to the final item, e.g. vendor extensions
}:
let
# FIXME: workaround until https://github.com/NixOS/nixpkgs/pull/162246 lands
cleanName = if lib.hasInfix " " name
then throw "makeDesktopItem: name must not contain spaces!"
else name;
# There are multiple places in the FDO spec that make "boolean" values actually tristate,
# e.g. StartupNotify, where "unset" is literally defined as "do something reasonable".
# So, handle null values separately.
@@ -116,8 +111,8 @@ let
content = [ mainSectionRendered ] ++ actionsRendered;
in
writeTextFile {
name = "${cleanName}.desktop";
destination = "/share/applications/${cleanName}.desktop";
name = "${name}.desktop";
destination = "/share/applications/${name}.desktop";
text = builtins.concatStringsSep "\n" content;
checkPhase = "${buildPackages.desktop-file-utils}/bin/desktop-file-validate $target";
checkPhase = ''${buildPackages.desktop-file-utils}/bin/desktop-file-validate "$target"'';
}
@@ -34,7 +34,7 @@ _separateDebugInfo() {
# firmware blobs in QEMU.)
(
$OBJCOPY --only-keep-debug "$i" "$dst/${id:0:2}/${id:2}.debug"
$STRIP --strip-debug "$i"
$STRIP --strip-unneeded "$i"
# Also a create a symlink <original-name>.debug.
ln -sfn ".build-id/${id:0:2}/${id:2}.debug" "$dst/../$(basename "$i")"
+1 -1
View File
@@ -121,7 +121,7 @@ rec {
allowSubstitutes = false;
}
''
target=$out${destination}
target=$out${lib.escapeShellArg destination}
mkdir -p "$(dirname "$target")"
if [ -e "$textPath" ]; then
@@ -0,0 +1,34 @@
{ writeTextFile }:
let
veryWeirdName = ''here's a name with some "bad" characters, like spaces and quotes'';
in writeTextFile {
name = "weird-names";
destination = "/etc/${veryWeirdName}";
text = ''passed!'';
checkPhase = ''
# intentionally hardcode everything here, to make sure
# Nix does not mess with file paths
name="here's a name with some \"bad\" characters, like spaces and quotes"
fullPath="$out/etc/$name"
if [ -f "$fullPath" ]; then
echo "[PASS] File exists!"
else
echo "[FAIL] File was not created at expected path!"
exit 1
fi
content=$(<"$fullPath")
expected="passed!"
if [ "$content" = "$expected" ]; then
echo "[PASS] Contents match!"
else
echo "[FAIL] File contents don't match!"
echo " Expected: $expected"
echo " Got: $content"
exit 2
fi
'';
}
@@ -1,10 +1,11 @@
{ lib, stdenv, fetchurl }:
stdenv.mkDerivation rec {
name = "hicolor-icon-theme-0.17";
pname = "hicolor-icon-theme";
version = "0.17";
src = fetchurl {
url = "https://icon-theme.freedesktop.org/releases/${name}.tar.xz";
url = "https://icon-theme.freedesktop.org/releases/hicolor-icon-theme-${version}.tar.xz";
sha256 = "1n59i3al3zx6p90ff0l43gzpzmlqnzm6hf5cryxqrlbi48sq8x1i";
};
+2 -3
View File
@@ -1,9 +1,8 @@
{ lib, fetchzip, stdenvNoCC, writeText }:
let
stdenvNoCC.mkDerivation rec {
pname = "iana-etc";
version = "20211124";
in stdenvNoCC.mkDerivation {
name = "iana-etc-${version}";
src = fetchzip {
url = "https://github.com/Mic92/iana-etc/releases/download/${version}/iana-etc-${version}.tar.gz";
sha256 = "sha256-4mM/ZeGd91e1AklGHFK5UB4llg9IgCo9DKcM0iXcBls=";
+3 -3
View File
@@ -2,16 +2,16 @@
stdenv.mkDerivation rec {
pname = "tzdata";
version = "2021e";
version = "2022a";
srcs =
[ (fetchurl {
url = "https://data.iana.org/time-zones/releases/tzdata${version}.tar.gz";
sha256 = "1cdjdcxl0s9xf0dg1z64kh7llm80byxqlzrkkjzcdlyh6yvl5v07";
sha256 = "0r0nhwpk9nyxj5kkvjy58nr5d85568m04dcb69c4y3zmykczyzzg";
})
(fetchurl {
url = "https://data.iana.org/time-zones/releases/tzcode${version}.tar.gz";
sha256 = "0x8pcfmjvxk29yfh8bklchv2f0vpl4yih0gc4wyx292l78wncijq";
sha256 = "1iysv8fdkm79k8wh8jizmjmq075q4qjhk090vxjy57my6dz5wmzq";
})
];
@@ -1,10 +1,11 @@
{lib, stdenv, fetchurl}:
stdenv.mkDerivation {
name = "docbook-xml-ebnf-1.2b1";
stdenv.mkDerivation rec {
pname = "docbook-xml-ebnf";
version = "1.2b1";
dtd = fetchurl {
url = "http://www.docbook.org/xml/ebnf/1.2b1/dbebnf.dtd";
url = "https://docbook.org/xml/ebnf/${version}/dbebnf.dtd";
sha256 = "0min5dsc53my13b94g2yd65q1nkjcf4x1dak00bsc4ckf86mrx95";
};
catalog = ./docbook-ebnf.cat;
@@ -1,27 +1,22 @@
{lib, stdenv, fetchurl, unzip, findXMLCatalogs}:
let
# Urgh, DocBook 4.1.2 doesn't come with an XML catalog. Use the one
# from 4.2.
docbook42catalog = fetchurl {
url = "http://www.docbook.org/xml/4.2/catalog.xml";
url = "https://docbook.org/xml/4.2/catalog.xml";
sha256 = "18lhp6q2l0753s855r638shkbdwq9blm6akdjsc9nrik24k38j17";
};
in
import ./generic.nix {
inherit lib stdenv unzip findXMLCatalogs;
name = "docbook-xml-4.1.2";
version = "4.1.2";
src = fetchurl {
url = "http://www.docbook.org/xml/4.1.2/docbkx412.zip";
url = "https://docbook.org/xml/4.1.2/docbkx412.zip";
sha256 = "0wkp5rvnqj0ghxia0558mnn4c7s3n501j99q2isp3sp0ci069w1h";
};
postInstall = "
sed 's|V4.2|V4.1.2|g' < ${docbook42catalog} > catalog.xml
";
meta = {
branch = "4.1.2";
};
}
@@ -2,12 +2,9 @@
import ./generic.nix {
inherit lib stdenv unzip findXMLCatalogs;
name = "docbook-xml-4.2";
version = "4.2";
src = fetchurl {
url = "http://www.docbook.org/xml/4.2/docbook-xml-4.2.zip";
url = "https://docbook.org/xml/4.2/docbook-xml-4.2.zip";
sha256 = "acc4601e4f97a196076b7e64b368d9248b07c7abf26b34a02cca40eeebe60fa2";
};
meta = {
branch = "4.2";
};
}
@@ -2,12 +2,9 @@
import ./generic.nix {
inherit lib stdenv unzip findXMLCatalogs;
name = "docbook-xml-4.3";
version = "4.3";
src = fetchurl {
url = "http://www.docbook.org/xml/4.3/docbook-xml-4.3.zip";
url = "https://docbook.org/xml/4.3/docbook-xml-4.3.zip";
sha256 = "0r1l2if1z4wm2v664sqdizm4gak6db1kx9y50jq89m3gxaa8l1i3";
};
meta = {
branch = "4.3";
};
}
@@ -2,12 +2,9 @@
import ./generic.nix {
inherit lib stdenv unzip findXMLCatalogs;
name = "docbook-xml-4.4";
version = "4.4";
src = fetchurl {
url = "http://www.docbook.org/xml/4.4/docbook-xml-4.4.zip";
url = "https://docbook.org/xml/4.4/docbook-xml-4.4.zip";
sha256 = "141h4zsyc71sfi2zzd89v4bb4qqq9ca1ri9ix2als9f4i3mmkw82";
};
meta = {
branch = "4.4";
};
}
@@ -2,12 +2,9 @@
import ./generic.nix {
inherit lib stdenv unzip findXMLCatalogs;
name = "docbook-xml-4.5";
version = "4.5";
src = fetchurl {
url = "http://www.docbook.org/xml/4.5/docbook-xml-4.5.zip";
url = "https://docbook.org/xml/4.5/docbook-xml-4.5.zip";
sha256 = "1d671lcjckjri28xfbf6dq7y3xnkppa910w1jin8rjc35dx06kjf";
};
meta = {
branch = "4.5";
};
}
@@ -1,9 +1,10 @@
{ lib, stdenv, unzip, src, name, postInstall ? "true", meta ? {}, findXMLCatalogs }:
{ lib, stdenv, unzip, src, version, postInstall ? "true", findXMLCatalogs }:
stdenv.mkDerivation {
inherit src name postInstall;
inherit version src postInstall;
pname = "docbook-xml";
nativeBuildInputs = [unzip];
nativeBuildInputs = [ unzip ];
propagatedNativeBuildInputs = [ findXMLCatalogs ];
unpackPhase = ''
@@ -17,7 +18,8 @@ stdenv.mkDerivation {
runHook postInstall
'';
meta = meta // {
meta = {
branch = version;
platforms = lib.platforms.unix;
};
}
@@ -1,10 +1,11 @@
{ lib, stdenv, fetchurl, libxml2 }:
stdenv.mkDerivation {
name = "xhtml1-20020801";
pname = "xhtml1";
version = "unstable-2002-08-01";
src = fetchurl {
url = "http://www.w3.org/TR/xhtml1/xhtml1.tgz";
url = "https://www.w3.org/TR/xhtml1/xhtml1.tgz";
sha256 = "0rr0d89i0z75qvjbm8il93bippx09hbmjwy0y2sj44n9np69x3hl";
};
@@ -5,11 +5,11 @@ with lib;
let
inherit (python2.pkgs) python pygobject2 pygtk dbus-python;
in stdenv.mkDerivation rec {
version = "2.28";
name = "gnome-python-${version}.1";
pname = "gnome-python";
version = "2.28.1";
src = fetchurl {
url = "mirror://gnome/sources/gnome-python/${version}/${name}.tar.bz2";
url = "mirror://gnome/sources/gnome-python/${lib.versions.majorMinor version}/gnome-python-${version}.tar.bz2";
sha256 = "759ce9344cbf89cf7f8449d945822a0c9f317a494f56787782a901e4119b96d8";
};
@@ -20,7 +20,7 @@ in stdenv.mkDerivation rec {
# gnome-python expects that .pth file is already installed by PyGTK in the
# same directory. This is not the case for Nix.
postInstall = ''
echo "gtk-2.0" > $out/${python2.sitePackages}/${name}.pth
echo "gtk-2.0" > $out/${python2.sitePackages}/gnome-python-${version}.pth
'';
meta = with lib; {
@@ -1,9 +1,11 @@
{stdenv, fetchurl, pkg-config, perlPackages, libxml2, libxslt, docbook_xml_dtd_42, automake, gettext}:
{ lib, stdenv, fetchurl, pkg-config, perlPackages, libxml2, libxslt, docbook_xml_dtd_42, automake, gettext }:
stdenv.mkDerivation rec {
pname = "scrollkeeper";
version = "0.3.14";
stdenv.mkDerivation {
name = "scrollkeeper-0.3.14";
src = fetchurl {
url = "mirror://gnome/sources/scrollkeeper/0.3/scrollkeeper-0.3.14.tar.bz2";
url = "mirror://gnome/sources/scrollkeeper/${lib.versions.majorMinor version}/scrollkeeper-${version}.tar.bz2";
sha256 = "08n1xgj1f53zahwm0wpn3jid3rfbhi3iwby0ilaaldnid5qriqgc";
};
@@ -1,11 +1,11 @@
{ lib, stdenv, fetchurl, pkg-config, glib, libIDL, libintl }:
stdenv.mkDerivation rec {
name = "ORBit2-${minVer}.19";
minVer = "2.14";
pname = "ORBit2";
version = "2.14.19";
src = fetchurl {
url = "mirror://gnome/sources/ORBit2/${minVer}/${name}.tar.bz2";
url = "mirror://gnome/sources/ORBit2/${lib.versions.majorMinor version}/ORBit2-${version}.tar.bz2";
sha256 = "0l3mhpyym9m5iz09fz0rgiqxl2ym6kpkwpsp1xrr4aa80nlh1jam";
};
@@ -1,11 +1,11 @@
{ stdenv, fetchurl, which }:
{ lib, stdenv, fetchurl, which }:
stdenv.mkDerivation rec {
name = "gnome-common-${minVer}.0";
minVer = "2.34";
pname = "gnome-common";
version = "2.34.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-common/${minVer}/${name}.tar.bz2";
url = "mirror://gnome/sources/gnome-common/${lib.versions.majorMinor version}/gnome-common-${version}.tar.bz2";
sha256 = "1pz13mpp09q5s3bikm8ml92s1g0scihsm4iipqv1ql3mp6d4z73s";
};
@@ -1,9 +1,10 @@
{stdenv, fetchurl, intltool}:
{ lib, stdenv, fetchurl, intltool }:
stdenv.mkDerivation {
name = "gnome-mime-data-2.18.0";
stdenv.mkDerivation rec {
pname = "gnome-mime-data";
version = "2.18.0";
src = fetchurl {
url = "mirror://gnome/sources/gnome-mime-data/2.18/gnome-mime-data-2.18.0.tar.bz2";
url = "mirror://gnome/sources/gnome-mime-data/${lib.versions.majorMinor version}/gnome-mime-data-${version}.tar.bz2";
sha256 = "1mvg8glb2a40yilmyabmb7fkbzlqd3i3d31kbkabqnq86xdnn69p";
};
nativeBuildInputs = [ intltool ];
@@ -1,12 +1,12 @@
{ stdenv, fetchurl, fetchpatch, pkg-config, libxml2, bzip2, openssl, dbus-glib
{ lib, stdenv, fetchurl, fetchpatch, pkg-config, libxml2, bzip2, openssl, dbus-glib
, glib, gamin, cdparanoia, intltool, GConf, gnome_mime_data, avahi, acl }:
stdenv.mkDerivation rec {
name = "gnome-vfs-${minVer}.4";
minVer = "2.24";
pname = "gnome-vfs";
version = "2.24.4";
src = fetchurl {
url = "mirror://gnome/sources/gnome-vfs/${minVer}/${name}.tar.bz2";
url = "mirror://gnome/sources/gnome-vfs/${lib.versions.majorMinor version}/gnome-vfs-${version}.tar.bz2";
sha256 = "1ajg8jb8k3snxc7rrgczlh8daxkjidmcv3zr9w809sq4p2sn9pk2";
};
@@ -1,11 +1,12 @@
{ stdenv, fetchurl, pkg-config, gtk2, intltool,
{ lib, stdenv, fetchurl, pkg-config, gtk2, intltool,
GConf, enchant, isocodes, gnome-icon-theme }:
stdenv.mkDerivation rec {
name = "gtkhtml-3.32.2";
pname = "gtkhtml";
version = "3.32.2";
src = fetchurl {
url = "mirror://gnome/sources/gtkhtml/3.32/${name}.tar.bz2";
url = "mirror://gnome/sources/gtkhtml/${lib.versions.majorMinor version}/gtkhtml-${version}.tar.bz2";
sha256 = "17z3jwvpn8waz7bhwrk7a6vs9pad6sqmlxxcqwvxxq89ywy0ail7";
};
@@ -1,11 +1,11 @@
{stdenv, fetchurl, flex, bison, pkg-config, glib, gettext}:
{ lib, stdenv, fetchurl, flex, bison, pkg-config, glib, gettext }:
stdenv.mkDerivation rec {
name = "libIDL-${minVer}.14";
minVer = "0.8";
pname = "libIDL";
version = "0.8.14";
src = fetchurl {
url = "mirror://gnome/sources/libIDL/${minVer}/${name}.tar.bz2";
url = "mirror://gnome/sources/libIDL/${lib.versions.majorMinor version}/libIDL-${version}.tar.bz2";
sha256 = "08129my8s9fbrk0vqvnmx6ph4nid744g5vbwphzkaik51664vln5";
};
@@ -1,9 +1,10 @@
{stdenv, fetchurl}:
{ lib, stdenv, fetchurl }:
stdenv.mkDerivation rec {
name = "libart_lgpl-2.3.21";
pname = "libart_lgpl";
version = "2.3.21";
src = fetchurl {
url = "mirror://gnome/sources/libart_lgpl/2.3/${name}.tar.bz2";
url = "mirror://gnome/sources/libart_lgpl/${lib.versions.majorMinor version}/libart_lgpl-${version}.tar.bz2";
sha256 = "1yknfkyzgz9s616is0l9gp5aray0f2ry4dw533jgzj8gq5s1xhgx";
};
}
@@ -1,12 +1,12 @@
{ stdenv, fetchurl, flex, bison, pkg-config, glib, libxml2, popt
{ lib, stdenv, fetchurl, flex, bison, pkg-config, glib, libxml2, popt
, intltool, ORBit2, procps }:
stdenv.mkDerivation rec {
name = "libbonobo-${minVer}.1";
minVer = "2.32";
pname = "libbonobo";
version = "2.32.1";
src = fetchurl {
url = "mirror://gnome/sources/libbonobo/${minVer}/${name}.tar.bz2";
url = "mirror://gnome/sources/libbonobo/${lib.versions.majorMinor version}/libbonobo-${version}.tar.bz2";
sha256 = "0swp4kk6x7hy1rvd1f9jba31lvfc6qvafkvbpg9h0r34fzrd8q4i";
};
@@ -1,12 +1,12 @@
{ stdenv, fetchurl, bison, pkg-config, popt, libxml2, gtk2, libtool
{ lib, stdenv, fetchurl, bison, pkg-config, popt, libxml2, gtk2, libtool
, intltool, libbonobo, GConf, libgnomecanvas, libgnome, libglade }:
stdenv.mkDerivation rec {
name = "libbonoboui-${minVer}.5";
minVer = "2.24";
pname = "libbonoboui";
version = "2.24.5";
src = fetchurl {
url = "mirror://gnome/sources/libbonoboui/${minVer}/${name}.tar.bz2";
url = "mirror://gnome/sources/libbonoboui/${lib.versions.majorMinor version}/libbonoboui-${version}.tar.bz2";
sha256 = "1kbgqh7bw0fdx4f1a1aqwpff7gp5mwhbaz60c6c98bc4djng5dgs";
};
@@ -2,11 +2,12 @@
assert withLibgladeConvert -> python2 != null;
stdenv.mkDerivation {
name = "libglade-2.6.4";
stdenv.mkDerivation rec {
pname = "libglade";
version = "2.6.4";
src = fetchurl {
url = "mirror://gnome/sources/libglade/2.6/libglade-2.6.4.tar.bz2";
url = "mirror://gnome/sources/libglade/${lib.versions.majorMinor version}/libglade-${version}.tar.bz2";
sha256 = "1v2x2s04jry4gpabws92i0wq2ghd47yr5n9nhgnkd7c38xv1wdk4";
};
@@ -1,13 +1,13 @@
{ stdenv, fetchurl, pkg-config, glib, popt, zlib, libcanberra-gtk2
{ lib, stdenv, fetchurl, pkg-config, glib, popt, zlib, libcanberra-gtk2
, intltool, libbonobo, GConf, gnome_vfs, libtool, libogg
}:
stdenv.mkDerivation rec {
name = "libgnome-${minVer}.1";
minVer = "2.32";
pname = "libgnome";
version = "2.32.1";
src = fetchurl {
url = "mirror://gnome/sources/libgnome/${minVer}/${name}.tar.bz2";
url = "mirror://gnome/sources/libgnome/${lib.versions.majorMinor version}/libgnome-${version}.tar.bz2";
sha256 = "197pnq8y0knqjhm2fg4j6hbqqm3qfzfnd0irhwxpk1b4hqb3kimj";
};
@@ -1,11 +1,11 @@
{ stdenv, fetchurl, pkg-config, gtk2, intltool, libart_lgpl, libglade }:
{ lib, stdenv, fetchurl, pkg-config, gtk2, intltool, libart_lgpl, libglade }:
stdenv.mkDerivation rec {
name = "libgnomecanvas-${minVer}.3";
minVer = "2.30";
pname = "libgnomecanvas";
version = "2.30.3";
src = fetchurl {
url = "mirror://gnome/sources/libgnomecanvas/${minVer}/${name}.tar.bz2";
url = "mirror://gnome/sources/libgnomecanvas/${lib.versions.majorMinor version}/libgnomecanvas-${version}.tar.bz2";
sha256 = "0h6xvswbqspdifnyh5pm2pqq55yp3kn6yrswq7ay9z49hkh7i6w5";
};
@@ -1,10 +1,11 @@
{ stdenv, fetchurl, pkg-config, libgnomecanvas, gtkmm2 }:
{ lib, stdenv, fetchurl, pkg-config, libgnomecanvas, gtkmm2 }:
stdenv.mkDerivation {
name = "libgnomecanvasmm-2.26.0";
stdenv.mkDerivation rec {
pname = "libgnomecanvasmm";
version = "2.26.0";
src = fetchurl {
url = "mirror://gnome/sources/libgnomecanvasmm/2.26/libgnomecanvasmm-2.26.0.tar.bz2";
url = "mirror://gnome/sources/libgnomecanvasmm/${lib.versions.majorMinor version}/libgnomecanvasmm-${version}.tar.bz2";
sha256 = "996577f97f459a574919e15ba7fee6af8cda38a87a98289e9a4f54752d83e918";
};
@@ -1,10 +1,11 @@
{ stdenv, fetchurl, pkg-config, gtk2, gettext, libxml2, intltool, libart_lgpl }:
{ lib, stdenv, fetchurl, pkg-config, gtk2, gettext, libxml2, intltool, libart_lgpl }:
stdenv.mkDerivation rec {
name = "libgnomecups-0.2.3";
pname = "libgnomecups";
version = "0.2.3";
src = fetchurl {
url = "mirror://gnome/sources/libgnomecups/0.2/${name}.tar.bz2";
url = "mirror://gnome/sources/libgnomecups/${lib.versions.majorMinor version}/libgnomecups-${version}.tar.bz2";
sha256 = "0a8xdaxzz2wc0n1fjcav65093gixzyac3948l8cxx1mk884yhc71";
};
@@ -2,10 +2,11 @@
, libgnomecups, bison, flex }:
stdenv.mkDerivation rec {
name = "libgnomeprint-2.18.8";
pname = "libgnomeprint";
version = "2.18.8";
src = fetchurl {
url = "mirror://gnome/sources/libgnomeprint/2.18/${name}.tar.bz2";
url = "mirror://gnome/sources/libgnomeprint/${lib.versions.majorMinor version}/libgnomeprint-${version}.tar.bz2";
sha256 = "1034ec8651051f84d2424e7a1da61c530422cc20ce5b2d9e107e1e46778d9691";
};
@@ -1,10 +1,11 @@
{stdenv, fetchurl, pkg-config, gtk2, gettext, intltool, libgnomecanvas, libgnomeprint, gnome-icon-theme}:
{ lib, stdenv, fetchurl, pkg-config, gtk2, gettext, intltool, libgnomecanvas, libgnomeprint, gnome-icon-theme }:
stdenv.mkDerivation {
name = "libgnomeprintui-2.18.6";
stdenv.mkDerivation rec {
pname = "libgnomeprintui";
version = "2.18.6";
src = fetchurl {
url = "mirror://gnome/sources/libgnomeprintui/2.18/libgnomeprintui-2.18.6.tar.bz2";
url = "mirror://gnome/sources/libgnomeprintui/${lib.versions.majorMinor version}/libgnomeprintui-${version}.tar.bz2";
sha256 = "0spl8vinb5n6n1krnfnr61dwaxidg67h8j94z9p59k2xdsvfashm";
};
@@ -1,13 +1,13 @@
{ stdenv, fetchurl, fetchpatch, pkg-config, libxml2, xorg, glib, pango
{ lib, stdenv, fetchurl, fetchpatch, pkg-config, libxml2, xorg, glib, pango
, intltool, libgnome, libgnomecanvas, libbonoboui, GConf, libtool
, gnome_vfs, libgnome-keyring, libglade }:
stdenv.mkDerivation rec {
name = "libgnomeui-${minVer}.5";
minVer = "2.24";
pname = "libgnomeui";
version = "2.24.5";
src = fetchurl {
url = "mirror://gnome/sources/libgnomeui/${minVer}/${name}.tar.bz2";
url = "mirror://gnome/sources/libgnomeui/${lib.versions.majorMinor version}/libgnomeui-${version}.tar.bz2";
sha256 = "03rwbli76crkjl6gp422wrc9lqpl174k56cp9i96b7l8jlj2yddf";
};
@@ -1,10 +1,11 @@
{stdenv, fetchurl, pkg-config, gtk2, gettext, libxml2 }:
{ lib, stdenv, fetchurl, pkg-config, gtk2, gettext, libxml2 }:
stdenv.mkDerivation {
name = "libgtkhtml-2.11.1";
stdenv.mkDerivation rec {
pname = "libgtkhtml";
version = "2.11.1";
src = fetchurl {
url = "mirror://gnome/sources/libgtkhtml/2.11/libgtkhtml-2.11.1.tar.bz2";
url = "mirror://gnome/sources/libgtkhtml/${lib.versions.majorMinor version}/libgtkhtml-${version}.tar.bz2";
sha256 = "0msajafd42545dxzyr5zqka990cjrxw2yz09ajv4zs8m1w6pm9rw";
};
@@ -10,9 +10,10 @@ assert (stdenv.isDarwin && stdenv.isx86_64);
let cpuName = stdenv.hostPlatform.parsed.cpu.name;
result = stdenv.mkDerivation {
name = if sourcePerArch.packageType == "jdk"
then "adoptopenjdk-${sourcePerArch.vmType}-bin-${sourcePerArch.${cpuName}.version}"
else "adoptopenjdk-${sourcePerArch.packageType}-${sourcePerArch.vmType}-bin-${sourcePerArch.${cpuName}.version}";
pname = if sourcePerArch.packageType == "jdk"
then "adoptopenjdk-${sourcePerArch.vmType}-bin"
else "adoptopenjdk-${sourcePerArch.packageType}-${sourcePerArch.vmType}-bin";
version = sourcePerArch.${cpuName}.version or (throw "unsupported CPU ${cpuName}");
src = fetchurl {
inherit (sourcePerArch.${cpuName}) url sha256;
@@ -33,9 +33,9 @@ let
in
let result = stdenv.mkDerivation rec {
name = if sourcePerArch.packageType == "jdk"
then "adoptopenjdk-${sourcePerArch.vmType}-bin-${version}"
else "adoptopenjdk-${sourcePerArch.packageType}-${sourcePerArch.vmType}-bin-${version}";
pname = if sourcePerArch.packageType == "jdk"
then "adoptopenjdk-${sourcePerArch.vmType}-bin"
else "adoptopenjdk-${sourcePerArch.packageType}-${sourcePerArch.vmType}-bin";
version = sourcePerArch.${cpuName}.version or (throw "unsupported CPU ${cpuName}");
@@ -8,12 +8,7 @@
, profiledCompiler ? false
, langJit ? false
, staticCompiler ? false
, # N.B. the defult is intentionally not from an `isStatic`. See
# https://gcc.gnu.org/install/configure.html - this is about target
# platform libraries not host platform ones unlike normal. But since
# we can't rebuild those without also rebuilding the compiler itself,
# we opt to always build everything unlike our usual policy.
enableShared ? true
, enableShared ? !stdenv.targetPlatform.isStatic
, enableLTO ? !stdenv.hostPlatform.isStatic
, texinfo ? null
, perl ? null # optional, for texi2pod (then pod2man)
@@ -61,8 +56,8 @@ let majorVersion = "10";
inherit (stdenv) buildPlatform hostPlatform targetPlatform;
patches =
optional (targetPlatform != hostPlatform) ../libstdc++-target.patch
patches = [ ./gcc10-asan-glibc-2.34.patch ]
++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch
++ optional noSysDirs ../no-sys-dirs.patch
++ optional (noSysDirs && hostPlatform.isRiscV) ../no-sys-dirs-riscv.patch
/* ++ optional (hostPlatform != buildPlatform) (fetchpatch { # XXX: Refine when this should be applied
@@ -266,7 +261,7 @@ stdenv.mkDerivation ({
};
enableParallelBuilding = true;
inherit enableMultilib;
inherit enableMultilib enableShared;
inherit (stdenv) is64bit;
@@ -0,0 +1,70 @@
From 950bac27d63c1c2ac3a6ed867692d6a13f21feb3 Mon Sep 17 00:00:00 2001
From: Jakub Jelinek <jakub@redhat.com>
Date: Sat, 17 Apr 2021 11:27:14 +0200
Subject: [PATCH] sanitizer: Fix asan against glibc 2.34 [PR100114]
As mentioned in the PR, SIGSTKSZ is no longer a compile time constant in
glibc 2.34 and later, so
static const uptr kAltStackSize = SIGSTKSZ * 4;
needs dynamic initialization, but is used by a function called indirectly
from .preinit_array and therefore before the variable is constructed.
This results in using 0 size instead and all asan instrumented programs
die with:
==91==ERROR: AddressSanitizer failed to allocate 0x0 (0) bytes of SetAlternateSignalStack (error code: 22)
Here is a cherry-pick from upstream to fix this.
2021-04-17 Jakub Jelinek <jakub@redhat.com>
PR sanitizer/100114
* sanitizer_common/sanitizer_posix_libcdep.cpp: Cherry-pick
llvm-project revisions 82150606fb11d28813ae6da1101f5bda638165fe
and b93629dd335ffee2fc4b9b619bf86c3f9e6b0023.
(cherry picked from commit d9f462fb372fb02da032cefd6b091d7582c425ae)
---
.../sanitizer_common/sanitizer_posix_libcdep.cpp | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cpp b/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cpp
index 304b3a01a08..ac88fbe074e 100644
--- a/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cpp
+++ b/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cpp
@@ -169,7 +169,11 @@ bool SupportsColoredOutput(fd_t fd) {
#if !SANITIZER_GO
// TODO(glider): different tools may require different altstack size.
-static const uptr kAltStackSize = SIGSTKSZ * 4; // SIGSTKSZ is not enough.
+static uptr GetAltStackSize() {
+ // SIGSTKSZ is not enough.
+ static const uptr kAltStackSize = SIGSTKSZ * 4;
+ return kAltStackSize;
+}
void SetAlternateSignalStack() {
stack_t altstack, oldstack;
@@ -180,10 +184,9 @@ void SetAlternateSignalStack() {
// TODO(glider): the mapped stack should have the MAP_STACK flag in the
// future. It is not required by man 2 sigaltstack now (they're using
// malloc()).
- void* base = MmapOrDie(kAltStackSize, __func__);
- altstack.ss_sp = (char*) base;
+ altstack.ss_size = GetAltStackSize();
+ altstack.ss_sp = (char *)MmapOrDie(altstack.ss_size, __func__);
altstack.ss_flags = 0;
- altstack.ss_size = kAltStackSize;
CHECK_EQ(0, sigaltstack(&altstack, nullptr));
}
@@ -191,7 +194,7 @@ void UnsetAlternateSignalStack() {
stack_t altstack, oldstack;
altstack.ss_sp = nullptr;
altstack.ss_flags = SS_DISABLE;
- altstack.ss_size = kAltStackSize; // Some sane value required on Darwin.
+ altstack.ss_size = GetAltStackSize(); // Some sane value required on Darwin.
CHECK_EQ(0, sigaltstack(&altstack, &oldstack));
UnmapOrDie(oldstack.ss_sp, oldstack.ss_size);
}
--
2.27.0
@@ -8,12 +8,7 @@
, profiledCompiler ? false
, langJit ? false
, staticCompiler ? false
, # N.B. the defult is intentionally not from an `isStatic`. See
# https://gcc.gnu.org/install/configure.html - this is about target
# platform libraries not host platform ones unlike normal. But since
# we can't rebuild those without also rebuilding the compiler itself,
# we opt to always build everything unlike our usual policy.
enableShared ? true
, enableShared ? !stdenv.targetPlatform.isStatic
, enableLTO ? !stdenv.hostPlatform.isStatic
, texinfo ? null
, perl ? null # optional, for texi2pod (then pod2man)
@@ -269,7 +264,7 @@ stdenv.mkDerivation ({
};
enableParallelBuilding = true;
inherit enableMultilib;
inherit enableShared enableMultilib;
inherit (stdenv) is64bit;
@@ -8,12 +8,7 @@
, profiledCompiler ? false
, langJit ? false
, staticCompiler ? false
, # N.B. the defult is intentionally not from an `isStatic`. See
# https://gcc.gnu.org/install/configure.html - this is about target
# platform libraries not host platform ones unlike normal. But since
# we can't rebuild those without also rebuilding the compiler itself,
# we opt to always build everything unlike our usual policy.
enableShared ? true
, enableShared ? !stdenv.targetPlatform.isStatic
, enableLTO ? !stdenv.hostPlatform.isStatic
, texinfo ? null
, perl ? null # optional, for texi2pod (then pod2man); required for Java
@@ -295,7 +290,7 @@ stdenv.mkDerivation ({
};
enableParallelBuilding = true;
inherit enableMultilib;
inherit enableShared enableMultilib;
inherit (stdenv) is64bit;
@@ -8,12 +8,7 @@
, profiledCompiler ? false
, langJit ? false
, staticCompiler ? false
, # N.B. the defult is intentionally not from an `isStatic`. See
# https://gcc.gnu.org/install/configure.html - this is about target
# platform libraries not host platform ones unlike normal. But since
# we can't rebuild those without also rebuilding the compiler itself,
# we opt to always build everything unlike our usual policy.
enableShared ? true
, enableShared ? !stdenv.targetPlatform.isStatic
, enableLTO ? !stdenv.hostPlatform.isStatic
, texinfo ? null
, perl ? null # optional, for texi2pod (then pod2man); required for Java
@@ -311,7 +306,7 @@ stdenv.mkDerivation ({
};
enableParallelBuilding = true;
inherit enableMultilib;
inherit enableShared enableMultilib;
inherit (stdenv) is64bit;
+2 -7
View File
@@ -9,12 +9,7 @@
, profiledCompiler ? false
, langJit ? false
, staticCompiler ? false
, # N.B. the defult is intentionally not from an `isStatic`. See
# https://gcc.gnu.org/install/configure.html - this is about target
# platform libraries not host platform ones unlike normal. But since
# we can't rebuild those without also rebuilding the compiler itself,
# we opt to always build everything unlike our usual policy.
enableShared ? true
, enableShared ? !stdenv.targetPlatform.isStatic
, enableLTO ? !stdenv.hostPlatform.isStatic
, texinfo ? null
, flex
@@ -325,7 +320,7 @@ stdenv.mkDerivation ({
};
enableParallelBuilding = true;
inherit enableMultilib;
inherit enableShared enableMultilib;
inherit (stdenv) is64bit;
+5 -7
View File
@@ -7,12 +7,7 @@
, profiledCompiler ? false
, langJit ? false
, staticCompiler ? false
, # N.B. the defult is intentionally not from an `isStatic`. See
# https://gcc.gnu.org/install/configure.html - this is about target
# platform libraries not host platform ones unlike normal. But since
# we can't rebuild those without also rebuilding the compiler itself,
# we opt to always build everything unlike our usual policy.
enableShared ? true
, enableShared ? !stdenv.targetPlatform.isStatic
, enableLTO ? !stdenv.hostPlatform.isStatic
, texinfo ? null
, perl ? null # optional, for texi2pod (then pod2man)
@@ -63,6 +58,9 @@ let majorVersion = "7";
./riscv-pthread-reentrant.patch
# https://gcc.gnu.org/ml/gcc-patches/2018-03/msg00297.html
./riscv-no-relax.patch
# Fix for asan w/glibc-2.34. Although there's no upstream backport to v7,
# the patch from gcc 8 seems to work perfectly fine.
./gcc8-asan-glibc-2.34.patch
./0001-Fix-build-for-glibc-2.31.patch
]
@@ -277,7 +275,7 @@ stdenv.mkDerivation ({
};
enableParallelBuilding = true;
inherit enableMultilib;
inherit enableShared enableMultilib;
inherit (stdenv) is64bit;
@@ -0,0 +1,70 @@
From ef195a39d0d3b929cc676302d074b42c25460601 Mon Sep 17 00:00:00 2001
From: Jakub Jelinek <jakub@redhat.com>
Date: Sat, 17 Apr 2021 11:27:14 +0200
Subject: [PATCH] sanitizer: Fix asan against glibc 2.34 [PR100114]
As mentioned in the PR, SIGSTKSZ is no longer a compile time constant in
glibc 2.34 and later, so
static const uptr kAltStackSize = SIGSTKSZ * 4;
needs dynamic initialization, but is used by a function called indirectly
from .preinit_array and therefore before the variable is constructed.
This results in using 0 size instead and all asan instrumented programs
die with:
==91==ERROR: AddressSanitizer failed to allocate 0x0 (0) bytes of SetAlternateSignalStack (error code: 22)
Here is a cherry-pick from upstream to fix this.
2021-04-17 Jakub Jelinek <jakub@redhat.com>
PR sanitizer/100114
* sanitizer_common/sanitizer_posix_libcdep.cc: Cherry-pick
llvm-project revisions 82150606fb11d28813ae6da1101f5bda638165fe
and b93629dd335ffee2fc4b9b619bf86c3f9e6b0023.
(cherry picked from commit 950bac27d63c1c2ac3a6ed867692d6a13f21feb3)
---
.../sanitizer_common/sanitizer_posix_libcdep.cc | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cc b/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cc
index 1a37118c299..066079b3954 100644
--- a/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cc
+++ b/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cc
@@ -159,7 +159,11 @@ bool SupportsColoredOutput(fd_t fd) {
#if !SANITIZER_GO
// TODO(glider): different tools may require different altstack size.
-static const uptr kAltStackSize = SIGSTKSZ * 4; // SIGSTKSZ is not enough.
+static uptr GetAltStackSize() {
+ // SIGSTKSZ is not enough.
+ static const uptr kAltStackSize = SIGSTKSZ * 4;
+ return kAltStackSize;
+}
void SetAlternateSignalStack() {
stack_t altstack, oldstack;
@@ -170,10 +174,9 @@ void SetAlternateSignalStack() {
// TODO(glider): the mapped stack should have the MAP_STACK flag in the
// future. It is not required by man 2 sigaltstack now (they're using
// malloc()).
- void* base = MmapOrDie(kAltStackSize, __func__);
- altstack.ss_sp = (char*) base;
+ altstack.ss_size = GetAltStackSize();
+ altstack.ss_sp = (char *)MmapOrDie(altstack.ss_size, __func__);
altstack.ss_flags = 0;
- altstack.ss_size = kAltStackSize;
CHECK_EQ(0, sigaltstack(&altstack, nullptr));
}
@@ -181,7 +184,7 @@ void UnsetAlternateSignalStack() {
stack_t altstack, oldstack;
altstack.ss_sp = nullptr;
altstack.ss_flags = SS_DISABLE;
- altstack.ss_size = kAltStackSize; // Some sane value required on Darwin.
+ altstack.ss_size = GetAltStackSize(); // Some sane value required on Darwin.
CHECK_EQ(0, sigaltstack(&altstack, &oldstack));
UnmapOrDie(oldstack.ss_sp, oldstack.ss_size);
}
--
2.27.0
+2 -7
View File
@@ -7,12 +7,7 @@
, profiledCompiler ? false
, langJit ? false
, staticCompiler ? false
, # N.B. the defult is intentionally not from an `isStatic`. See
# https://gcc.gnu.org/install/configure.html - this is about target
# platform libraries not host platform ones unlike normal. But since
# we can't rebuild those without also rebuilding the compiler itself,
# we opt to always build everything unlike our usual policy.
enableShared ? true
, enableShared ? !stdenv.targetPlatform.isStatic
, enableLTO ? !stdenv.hostPlatform.isStatic
, texinfo ? null
, perl ? null # optional, for texi2pod (then pod2man)
@@ -259,7 +254,7 @@ stdenv.mkDerivation ({
};
enableParallelBuilding = true;
inherit enableMultilib;
inherit enableShared enableMultilib;
inherit (stdenv) is64bit;
+3 -8
View File
@@ -9,12 +9,7 @@
, profiledCompiler ? false
, langJit ? false
, staticCompiler ? false
, # N.B. the defult is intentionally not from an `isStatic`. See
# https://gcc.gnu.org/install/configure.html - this is about target
# platform libraries not host platform ones unlike normal. But since
# we can't rebuild those without also rebuilding the compiler itself,
# we opt to always build everything unlike our usual policy.
enableShared ? true
, enableShared ? !stdenv.targetPlatform.isStatic
, enableLTO ? !stdenv.hostPlatform.isStatic
, texinfo ? null
, perl ? null # optional, for texi2pod (then pod2man)
@@ -78,7 +73,7 @@ let majorVersion = "9";
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96796
#
# This patch can most likely be removed by a post 9.3.0-release.
[ ./avoid-cycling-subreg-reloads.patch ]
[ ./avoid-cycling-subreg-reloads.patch ./gcc9-asan-glibc-2.34.patch ]
++ optional (targetPlatform != hostPlatform) ../libstdc++-target.patch
++ optional targetPlatform.isNetBSD ../libstdc++-netbsd-ctypes.patch
++ optional noSysDirs ../no-sys-dirs.patch
@@ -285,7 +280,7 @@ stdenv.mkDerivation ({
};
enableParallelBuilding = true;
inherit enableMultilib;
inherit enableShared enableMultilib;
inherit (stdenv) is64bit;
@@ -0,0 +1,70 @@
From 3d0135bf3be416bbe2531dc763d19b749eb2b856 Mon Sep 17 00:00:00 2001
From: Jakub Jelinek <jakub@redhat.com>
Date: Sat, 17 Apr 2021 11:27:14 +0200
Subject: [PATCH] sanitizer: Fix asan against glibc 2.34 [PR100114]
As mentioned in the PR, SIGSTKSZ is no longer a compile time constant in
glibc 2.34 and later, so
static const uptr kAltStackSize = SIGSTKSZ * 4;
needs dynamic initialization, but is used by a function called indirectly
from .preinit_array and therefore before the variable is constructed.
This results in using 0 size instead and all asan instrumented programs
die with:
==91==ERROR: AddressSanitizer failed to allocate 0x0 (0) bytes of SetAlternateSignalStack (error code: 22)
Here is a cherry-pick from upstream to fix this.
2021-04-17 Jakub Jelinek <jakub@redhat.com>
PR sanitizer/100114
* sanitizer_common/sanitizer_posix_libcdep.cc: Cherry-pick
llvm-project revisions 82150606fb11d28813ae6da1101f5bda638165fe
and b93629dd335ffee2fc4b9b619bf86c3f9e6b0023.
(cherry picked from commit 950bac27d63c1c2ac3a6ed867692d6a13f21feb3)
---
.../sanitizer_common/sanitizer_posix_libcdep.cc | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cc b/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cc
index d2fd76a6d36..1917e29ced2 100644
--- a/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cc
+++ b/libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cc
@@ -169,7 +169,11 @@ bool SupportsColoredOutput(fd_t fd) {
#if !SANITIZER_GO
// TODO(glider): different tools may require different altstack size.
-static const uptr kAltStackSize = SIGSTKSZ * 4; // SIGSTKSZ is not enough.
+static uptr GetAltStackSize() {
+ // SIGSTKSZ is not enough.
+ static const uptr kAltStackSize = SIGSTKSZ * 4;
+ return kAltStackSize;
+}
void SetAlternateSignalStack() {
stack_t altstack, oldstack;
@@ -180,10 +184,9 @@ void SetAlternateSignalStack() {
// TODO(glider): the mapped stack should have the MAP_STACK flag in the
// future. It is not required by man 2 sigaltstack now (they're using
// malloc()).
- void* base = MmapOrDie(kAltStackSize, __func__);
- altstack.ss_sp = (char*) base;
+ altstack.ss_size = GetAltStackSize();
+ altstack.ss_sp = (char *)MmapOrDie(altstack.ss_size, __func__);
altstack.ss_flags = 0;
- altstack.ss_size = kAltStackSize;
CHECK_EQ(0, sigaltstack(&altstack, nullptr));
}
@@ -191,7 +194,7 @@ void UnsetAlternateSignalStack() {
stack_t altstack, oldstack;
altstack.ss_sp = nullptr;
altstack.ss_flags = SS_DISABLE;
- altstack.ss_size = kAltStackSize; // Some sane value required on Darwin.
+ altstack.ss_size = GetAltStackSize(); // Some sane value required on Darwin.
CHECK_EQ(0, sigaltstack(&altstack, &oldstack));
UnmapOrDie(oldstack.ss_sp, oldstack.ss_size);
}
--
2.27.0
@@ -222,6 +222,10 @@ postInstall() {
moveToOutput "${targetConfig+$targetConfig/}lib/lib*.dll.a" "${!outputLib}"
moveToOutput "share/gcc-*/python" "${!outputLib}"
if [ -z "$enableShared" ]; then
moveToOutput "${targetConfig+$targetConfig/}lib/lib*.a" "${!outputLib}"
fi
for i in "${!outputLib}/${targetConfig}"/lib/*.{la,py}; do
substituteInPlace "$i" --replace "$out" "${!outputLib}"
done
+2 -2
View File
@@ -55,11 +55,11 @@ in
stdenv.mkDerivation rec {
pname = "go";
version = "1.17.7";
version = "1.17.8";
src = fetchurl {
url = "https://dl.google.com/go/go${version}.src.tar.gz";
sha256 = "sha256-wQjNM7c7GRGgK2l3Qd896kPgGlxOCOQJ6LOg43RdK00=";
sha256 = "sha256-Lv/NiYFA2nmgYfN4TKT42LE9gR+yq+na0kBEQtq733o=";
};
# perl is used for testing go vet
@@ -3,4 +3,7 @@ import ./generic.nix {
minor_version = "10";
patch_version = "2";
sha256 = "sha256-locUYQeCgtXbAiB32JveJchfteN2YStE+MN9ToTwAOM=";
patches = [
./glibc-2.34-for-ocaml-4.10-and-11.patch
];
}
@@ -3,4 +3,7 @@ import ./generic.nix {
minor_version = "11";
patch_version = "2";
sha256 = "1m3wrgkkv3f77wvcymjm0i2srxzmx62y6jln3i0a2px07ng08l9z";
patches = [
./glibc-2.34-for-ocaml-4.10-and-11.patch
];
}
@@ -3,4 +3,9 @@ import ./generic.nix {
minor_version = "12";
patch_version = "1";
sha256 = "1jbjjnmqq6ymsy81x188i256bz4z5jrz1pws8g1qf59c32ganjkf";
patches = [
{ url = "https://src.fedoraproject.org/rpms/ocaml/raw/129153b85109944bf0b2922949f77ef8f32b39a1/f/0004-Dynamically-allocate-the-alternate-signal-stack-1026.patch";
sha256 = "sha256-FdQ1HkMKHU9QvgLPUBvMdPiEa7w7IL3+1F3SLv63Gog=";
}
];
}
@@ -0,0 +1,16 @@
# ocaml build system does not allow for parallel building of some
# top-level targets like 'world', 'bootstrap', 'world.opt' as
# then spawn '$(MAKE) all' subprocesses that conflict among each
# other. But we would still like to run each target in parallel
# individually. This file defines such entry points.
# Re-export all existing phases to make 'make install' work as is.
include Makefile
nixpkgs_world:
$(MAKE) world
nixpkgs_world_bootstrap_world_opt:
$(MAKE) world
$(MAKE) bootstrap
$(MAKE) world.opt
+19 -7
View File
@@ -1,4 +1,4 @@
{ minor_version, major_version, patch_version
{ minor_version, major_version, patch_version, patches ? []
, ...}@args:
let
versionNoPatch = "${toString major_version}.${toString minor_version}";
@@ -6,7 +6,7 @@ let
safeX11 = stdenv: !(stdenv.isAarch32 || stdenv.isMips || stdenv.hostPlatform.isStatic);
in
{ lib, stdenv, fetchurl, ncurses, buildEnv, libunwind
{ lib, stdenv, fetchurl, ncurses, buildEnv, libunwind, fetchpatch
, libX11, xorgproto, useX11 ? safeX11 stdenv && !lib.versionAtLeast version "4.09"
, aflSupport ? false
, flambdaSupport ? false
@@ -28,21 +28,22 @@ in
let
useNativeCompilers = !stdenv.isMips;
inherit (lib) optional optionals optionalString;
name = "ocaml${optionalString aflSupport "+afl"}${optionalString spaceTimeSupport "+spacetime"}${optionalString flambdaSupport "+flambda"}-${version}";
pname = "ocaml${optionalString aflSupport "+afl"}${optionalString spaceTimeSupport "+spacetime"}${optionalString flambdaSupport "+flambda"}";
in
let
x11env = buildEnv { name = "x11env"; paths = [libX11 xorgproto]; };
x11lib = x11env + "/lib";
x11inc = x11env + "/include";
fetchpatch' = x: if builtins.isAttrs x then fetchpatch x else x;
in
stdenv.mkDerivation (args // {
inherit name;
inherit version;
inherit pname version src;
inherit src;
patches = map fetchpatch' patches;
strictDeps = true;
@@ -74,7 +75,18 @@ stdenv.mkDerivation (args // {
hardeningDisable = lib.optional (lib.versionAtLeast version "4.09" && stdenv.hostPlatform.isMusl) "pie"
++ lib.optionals (args ? hardeningDisable) args.hardeningDisable;
buildFlags = [ "world" ] ++ optionals useNativeCompilers [ "bootstrap" "world.opt" ];
# Older versions have some race:
# cp: cannot stat 'boot/ocamlrun': No such file or directory
# make[2]: *** [Makefile:199: backup] Error 1
enableParallelBuilding = lib.versionAtLeast version "4.08";
# Workaround lack of parallelism support among top-level targets:
# we place nixpkgs-specific targets to a separate file and set
# sequential order among them as a single rule.
makefile = ./Makefile.nixpkgs;
buildFlags = if useNativeCompilers
then ["nixpkgs_world_bootstrap_world_opt"]
else ["nixpkgs_world"];
buildInputs = optional (!lib.versionAtLeast version "4.07") ncurses
++ optionals useX11 [ libX11 xorgproto ];
propagatedBuildInputs = optional spaceTimeSupport libunwind;
@@ -0,0 +1,37 @@
From dfb5e954a04f59b0456cc4c0ddf3acaf22e0ff07 Mon Sep 17 00:00:00 2001
From: Richard W.M. Jones <rjones@redhat.com>
Date: Feb 28 2021 20:45:47 +0000
Subject: Workaround for glibc non-constant SIGSTKSZ
https://github.com/ocaml/ocaml/issues/10250
Signed-off-by: Richard W.M. Jones <rjones@redhat.com>
---
diff --git a/runtime/signals_nat.c b/runtime/signals_nat.c
index 8b64ab4..7f0a975 100644
--- a/runtime/signals_nat.c
+++ b/runtime/signals_nat.c
@@ -181,7 +181,19 @@ DECLARE_SIGNAL_HANDLER(trap_handler)
#error "CONTEXT_SP is required if HAS_STACK_OVERFLOW_DETECTION is defined"
#endif
+#ifndef __GLIBC__
static char sig_alt_stack[SIGSTKSZ];
+#else
+/* glibc 2.34 has non-constant SIGSTKSZ */
+static char *sig_alt_stack;
+
+static void allocate_sig_alt_stack(void) __attribute__((constructor));
+static void
+allocate_sig_alt_stack(void)
+{
+ sig_alt_stack = malloc(SIGSTKSZ);
+}
+#endif
/* Code compiled with ocamlopt never accesses more than
EXTRA_STACK bytes below the stack pointer. */
@@ -40,6 +40,7 @@ let
./currency-date-range-jdk10.patch
./increase-javadoc-heap.patch
./fix-library-path-jdk11.patch
./fix-glibc-2.34.patch
] ++ lib.optionals (!headless && enableGnome2) [
./swing-use-gtk-jdk10.patch
];
@@ -48,6 +48,7 @@ let
url = "https://src.fedoraproject.org/rpms/java-openjdk/raw/06c001c7d87f2e9fe4fedeef2d993bcd5d7afa2a/f/rh1673833-remove_removal_of_wformat_during_test_compilation.patch";
sha256 = "082lmc30x64x583vqq00c8y0wqih3y4r0mp1c4bqq36l22qv6b6r";
})
./fix-glibc-2.34.patch
] ++ lib.optionals (!headless && enableGnome2) [
./swing-use-gtk-jdk13.patch
];
@@ -0,0 +1,24 @@
Taken from https://build.opensuse.org/package/view_file/Java:Factory/java-15-openjdk/openjdk-glibc234.patch
--- openjdk/test/hotspot/jtreg/runtime/StackGuardPages/exeinvoke.c 2021-04-09 11:36:58.000000000 +0200
+++ openjdk/test/hotspot/jtreg/runtime/StackGuardPages/exeinvoke.c 2021-08-26 15:42:52.326232581 +0200
@@ -67,8 +67,17 @@
longjmp(context, 1);
}
+static char* altstack = NULL;
+
void set_signal_handler() {
- static char altstack[SIGSTKSZ];
+ if (altstack == NULL) {
+ // Dynamically allocated in case SIGSTKSZ is not constant
+ altstack = malloc(SIGSTKSZ);
+ if (altstack == NULL) {
+ fprintf(stderr, "Test ERROR. Unable to malloc altstack space\n");
+ exit(7);
+ }
+ }
stack_t ss = {
.ss_size = SIGSTKSZ,
+9 -1
View File
@@ -1,4 +1,4 @@
{lib, stdenv, fetchurl, autoreconfHook}:
{lib, stdenv, fetchurl, autoreconfHook, fetchpatch }:
let
version = "5.6";
@@ -12,6 +12,14 @@ stdenv.mkDerivation {
substituteInPlace configure.ac --replace stdc++ c++
'';
patches = [
# glibc 2.34 compat
(fetchpatch {
url = "https://src.fedoraproject.org/rpms/polyml/raw/4d8868ca5a1ce3268f212599a321f8011c950496/f/polyml-pthread-stack-min.patch";
sha256 = "1h5ihg2sxld9ymrl3f2mpnbn2242ka1fsa0h4gl9h90kndvg6kby";
})
];
buildInputs = lib.optional stdenv.isDarwin autoreconfHook;
src = fetchurl {
+10 -2
View File
@@ -1,4 +1,4 @@
{ lib, stdenv, fetchFromGitHub, autoreconfHook, gmp, libffi }:
{ lib, stdenv, fetchFromGitHub, autoreconfHook, gmp, libffi, fetchpatch }:
stdenv.mkDerivation rec {
pname = "polyml";
@@ -8,7 +8,15 @@ stdenv.mkDerivation rec {
substituteInPlace configure.ac --replace stdc++ c++
'';
patches = [ ./5.7-new-libffi-FFI_SYSV.patch ];
patches = [
./5.7-new-libffi-FFI_SYSV.patch
# glibc 2.34 compat
(fetchpatch {
url = "https://src.fedoraproject.org/rpms/polyml/raw/4d8868ca5a1ce3268f212599a321f8011c950496/f/polyml-pthread-stack-min.patch";
sha256 = "1h5ihg2sxld9ymrl3f2mpnbn2242ka1fsa0h4gl9h90kndvg6kby";
})
];
buildInputs = [ libffi gmp ];
@@ -12,6 +12,14 @@ stdenv.mkDerivation rec {
nativeBuildInputs = lib.optional stdenv.isDarwin autoreconfHook;
patches = [
# glibc 2.34 compat
(fetchpatch {
url = "https://src.fedoraproject.org/rpms/polyml/raw/4d8868ca5a1ce3268f212599a321f8011c950496/f/polyml-pthread-stack-min.patch";
sha256 = "1h5ihg2sxld9ymrl3f2mpnbn2242ka1fsa0h4gl9h90kndvg6kby";
})
];
configureFlags = [
"--enable-shared"
"--with-system-libffi"
@@ -20,8 +20,8 @@
} @ args:
import ./default.nix {
rustcVersion = "1.58.1";
rustcSha256 = "1iq7kj16qfpkx8gvw50d8rf7glbm6s0pj2y1qkrz7mi56vfsyfd8";
rustcVersion = "1.59.0";
rustcSha256 = "sha256-p8juruhb/O+EyWsCsxcdHmVA0VF5/4Pd3Z6vuhhfhfk=";
llvmSharedForBuild = pkgsBuildBuild.llvmPackages_13.libllvm.override { enableSharedLibraries = true; };
llvmSharedForHost = pkgsBuildHost.llvmPackages_13.libllvm.override { enableSharedLibraries = true; };
@@ -37,24 +37,25 @@ import ./default.nix {
# Note: the version MUST be one version prior to the version we're
# building
bootstrapVersion = "1.57.0";
bootstrapVersion = "1.58.1";
# fetch hashes by running `print-hashes.sh ${bootstrapVersion}`
bootstrapHashes = {
i686-unknown-linux-gnu = "7e4ac8ca2874897099a3ceb89039ceee170f474a98ee247589fd6bca8dda7cfa";
x86_64-unknown-linux-gnu = "ea0253784b2e5c22659ff148d492a68d2e11da734491714ebc61cc93896efcda";
x86_64-unknown-linux-musl = "56876ebca0e46236208c8bd3c3425dba553abe49639e1040ee8b95bc66a45d33";
arm-unknown-linux-gnueabihf = "b4448f7a96da4feee99a2c4b16b5738b99ab7e86e22d284ea6f7dca5921bca9b";
armv7-unknown-linux-gnueabihf = "577682b1405e8901f971839407daaad06d8ae68ad370305b75d569ba293c4fb4";
aarch64-unknown-linux-gnu = "d66847f7cf7b548ecb328c400ac4f691ee2aea6ff5cd9286ad8733239569556c";
aarch64-unknown-linux-musl = "91c8e5171e5715261f7f635142a10a9415a4e5ba55374daf76f0b713c8b08132";
x86_64-apple-darwin = "15ceffc4743434c19d08f73fb4edd6642b7fd8162ed7101d3e6ca2c691fcb699";
aarch64-apple-darwin = "7511075e28b715e2d9c7ee74221779f8444681a4bb60ac3a0270a5fdf08bdd5a";
powerpc64le-unknown-linux-gnu = "3ddc1abed6b7535c4150bf54291901fa856806c948bc21b711e24a3c8d810be7";
riscv64gc-unknown-linux-gnu = "f809df1c6ac0adc9bd37eb871dfb0d9809f3ed7f61ba611f9305e9eb8f8c9226";
i686-unknown-linux-gnu = "c3d282cd96cc9e5292e62db1ebb9fa6d5b738f4684d5ece9883f7472e2f76ad4";
x86_64-unknown-linux-gnu = "4fac6df9ea49447682c333e57945bebf4f9f45ec7b08849e507a64b2ccd5f8fb";
x86_64-unknown-linux-musl = "7036e34eadc8ce22d16b0625919d9f2244ca49a5441d6599f4822116c181d272";
arm-unknown-linux-gnueabihf = "739389d46c5862b0e67d01dece99aa3db2229e055a3d7f7624679c55b6c33e06";
armv7-unknown-linux-gnueabihf = "6cede2c7795e8126b0f17b1032d52500e594bac64c7d190bdc0ac1c832ef30bd";
aarch64-unknown-linux-gnu = "ce557516593e4526709b0f33c2e1d7c932b3ddf76af94c2417d8d667921ce90c";
aarch64-unknown-linux-musl = "b1533fdeeda483a3633617fd18a79d8fad7821331614b8dc13efd8b22acc30f5";
x86_64-apple-darwin = "d0044680fc132a721481b130a0a4282a444867f423efdb890fe13e447966412f";
aarch64-apple-darwin = "00b44985bc87e53c53d92622fb10226f09e9f25c79db48a77c0a769a36f83b1e";
powerpc64le-unknown-linux-gnu = "b15baef702cbd6f0ea2bef7bf98ca7ce5644f2beb219028e8a12e7053da4c849";
riscv64gc-unknown-linux-gnu = "d8ea2b11a4b24d1169fa3190127488b951b8bdef28293a4129ddd46c0ba9469b";
mips64el-unknown-linux-gnuabi64 = "4f03bc972ae784d4f66cfa77215b369723531e67f647de9f49ce9fc21e5691af";
};
selectRustPackage = pkgs: pkgs.rust_1_58;
selectRustPackage = pkgs: pkgs.rust_1_59;
rustcPatches = [
];
+2 -2
View File
@@ -19,7 +19,7 @@ in
rec {
rustc = stdenv.mkDerivation {
name = "rustc-${versionType}-${version}";
pname = "rustc-${versionType}";
inherit version;
inherit src;
@@ -71,7 +71,7 @@ rec {
};
cargo = stdenv.mkDerivation {
name = "cargo-${versionType}-${version}";
pname = "cargo-${versionType}";
inherit version;
inherit src;
+1 -1
View File
@@ -5,7 +5,7 @@
}:
rustPlatform.buildRustPackage {
name = "cargo-${rustc.version}";
pname = "cargo";
inherit (rustc) version src;
# the rust source tarball already has all the dependencies vendored, no need to fetch them again
@@ -153,7 +153,8 @@ with python.pkgs; buildPythonApplication rec {
--subst-var-by SPDX_LICENSE_LIST_DATA '${spdx-license-list-data.json}'
substituteInPlace setup.py \
--replace "zeroconf==0.37.*" "zeroconf"
--replace "wsproto==1.0.*" "wsproto" \
--replace "zeroconf==0.38.*" "zeroconf"
'';
meta = with lib; {
@@ -153,13 +153,13 @@ let
export GOCACHE=$TMPDIR/go-cache
export GOPATH="$TMPDIR/go"
export GOPROXY=off
export GOSUMDB=off
cd "$modRoot"
'' + lib.optionalString (go-modules != "") ''
'' + lib.optionalString (vendorSha256 != null) ''
${if proxyVendor then ''
export GOPROXY=file://${go-modules}
'' else ''
export GOPROXY=off
rm -rf vendor
cp -r --reflink=auto ${go-modules} vendor
''}
@@ -171,13 +171,20 @@ let
buildPhase = args.buildPhase or ''
runHook preBuild
exclude='\(/_\|examples\|Godeps\|testdata'
if [[ -n "$excludedPackages" ]]; then
IFS=' ' read -r -a excludedArr <<<$excludedPackages
printf -v excludedAlternates '%s\\|' "''${excludedArr[@]}"
excludedAlternates=''${excludedAlternates%\\|} # drop final \| added by printf
exclude+='\\|'"$excludedAlternates"
fi
exclude+='\)'
buildGoDir() {
local d; local cmd;
cmd="$1"
d="$2"
. $TMPDIR/buildFlagsArray
echo "$d" | grep -q "\(/_\|examples\|Godeps\|testdata\)" && return 0
[ -n "$excludedPackages" ] && echo "$d" | grep -q "$excludedPackages" && return 0
local OUT
if ! OUT="$(go $cmd $buildFlags "''${buildFlagsArray[@]}" ''${tags:+-tags=${lib.concatStringsSep "," tags}} ''${ldflags:+-ldflags="$ldflags"} -v -p $NIX_BUILD_CORES $d 2>&1)"; then
if ! echo "$OUT" | grep -qE '(no( buildable| non-test)?|build constraints exclude all) Go (source )?files'; then
@@ -214,6 +221,7 @@ let
export NIX_BUILD_CORES=1
fi
for pkg in $(getGoDirs ""); do
grep -q "$exclude" <<<$pkg && continue
echo "Building subPackage $pkg"
buildGoDir install "$pkg"
done
@@ -150,13 +150,20 @@ let
runHook renameImports
exclude='\(/_\|examples\|Godeps\|testdata'
if [[ -n "$excludedPackages" ]]; then
IFS=' ' read -r -a excludedArr <<<$excludedPackages
printf -v excludedAlternates '%s\\|' "''${excludedArr[@]}"
excludedAlternates=''${excludedAlternates%\\|} # drop final \| added by printf
exclude+='\\|'"$excludedAlternates"
fi
exclude+='\)'
buildGoDir() {
local d; local cmd;
cmd="$1"
d="$2"
. $TMPDIR/buildFlagsArray
echo "$d" | grep -q "\(/_\|examples\|Godeps\)" && return 0
[ -n "$excludedPackages" ] && echo "$d" | grep -q "$excludedPackages" && return 0
local OUT
if ! OUT="$(go $cmd $buildFlags "''${buildFlagsArray[@]}" ''${tags:+-tags=${lib.concatStringsSep "," tags}} ''${ldflags:+-ldflags="$ldflags"} -v -p $NIX_BUILD_CORES $d 2>&1)"; then
if ! echo "$OUT" | grep -qE '(no( buildable| non-test)?|build constraints exclude all) Go (source )?files'; then
@@ -195,6 +202,8 @@ let
export NIX_BUILD_CORES=1
fi
for pkg in $(getGoDirs ""); do
grep -q "$exclude" <<<$pkg && continue
echo "Building subPackage $pkg"
buildGoDir install "$pkg"
done
'' + lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) ''
@@ -30,6 +30,10 @@ stdenv.mkDerivation {
hardeningDisable = [ "stackprotector" ] ++
lib.optionals stdenv.isi686 [ "pic" "fortify" ];
# Fix for glibc-2.34, see
# https://gitweb.gentoo.org/repo/gentoo.git/commit/dev-lang/maude/maude-3.1-r1.ebuild?id=f021cc6cfa1e35eb9c59955830f1fd89bfcb26b4
configureFlags = [ "--without-libsigsegv" ];
preConfigure = ''
configureFlagsArray=(
--datadir="$out/share/maude"
@@ -19,11 +19,10 @@ let
common = { perl, buildPerl, version, sha256 }: stdenv.mkDerivation (rec {
inherit version;
name = "perl-${version}";
pname = "perl";
src = fetchurl {
url = "mirror://cpan/src/5.0/${name}.tar.gz";
url = "mirror://cpan/src/5.0/perl-${version}.tar.gz";
inherit sha256;
};
@@ -124,19 +124,19 @@ with pkgs;
sourceVersion = {
major = "3";
minor = "9";
patch = "10";
patch = "11";
suffix = "";
};
sha256 = "sha256-Co+/tSh+vDoT6brz1U4I+gZ3j/7M9jEa74Ibs6ZYbMg=";
sha256 = "sha256-ZnZ6NTCdck83DfnlA8FytO5ET0nWK5i8TspyUSPibEk=";
};
python310 = {
sourceVersion = {
major = "3";
minor = "10";
patch = "2";
patch = "3";
suffix = "";
};
sha256 = "sha256-F946x9qfJRmqnWQ3jGA6c6DprVjf+ogS5FFgwIbeZMc=";
sha256 = "sha256-WWxy3pmNw5IFvE9w7w2/ft7HQKMG0JtJqb0Kd4BnMNw=";
};
};
@@ -356,17 +356,19 @@ def _update_package(path, target):
text = _replace_value('hash', sri_hash, text)
if fetcher == 'fetchFromGitHub':
# in the case of fetchFromGitHub, it's common to see `rev = version;`
# in which no string value is meant to be substituted.
# Verify that the attribute is set to a variable
regex = '(rev\s+=\s+([_a-zA-Z][_a-zA-Z0-9\.]*);)'
# in the case of fetchFromGitHub, it's common to see `rev = version;` or `rev = "v${version}";`
# in which no string value is meant to be substituted. However, we can just overwrite the previous value.
regex = '(rev\s+=\s+[^;]*;)'
regex = re.compile(regex)
value = regex.findall(text)
n = len(value)
matches = regex.findall(text)
n = len(matches)
if n == 0:
# value is set to a string, e.g. `rev = "v${version}";`
text = _replace_value('rev', f"{prefix}${{version}}", text)
raise ValueError("Unable to find rev value for {}.".format(pname))
else:
# forcefully rewrite rev, incase tagging conventions changed for a release
match = matches[0]
text = text.replace(match, f'rev = "refs/tags/{prefix}${{version}}";')
# incase there's no prefix, just rewrite without interpolation
text = text.replace('"${version}";', 'version;')
@@ -1,7 +1,7 @@
{ stdenv, lib, fetchurl }:
stdenv.mkDerivation rec {
name = "rubygems";
pname = "rubygems";
version = "3.2.26";
src = fetchurl {
@@ -65,6 +65,14 @@ stdenv.mkDerivation rec {
outputs = [ "out" "dev" ];
outputBin = "dev"; # sdl-config
patches = [
# `sdl2-config --cflags` from Nixpkgs returns include path to just SDL2.
# On a normal distro this is enough for includes from all SDL2* packages to work,
# but on NixOS they're spread across different paths.
# This patch + the setup-hook will ensure that `sdl2-config --cflags` works correctly.
./find-headers.patch
];
depsBuildBuild = [ pkg-config ];
nativeBuildInputs = [ pkg-config ] ++ optionals waylandSupport [ wayland ];

Some files were not shown because too many files have changed in this diff Show More