···765### Interpreters {#interpreters}
766767Versions 2.7, 3.6, 3.7, 3.8 and 3.9 of the CPython interpreter are available as
768-respectively `python27`, `python36`, `python37`, `python38` and `python39`. The
769aliases `python2` and `python3` correspond to respectively `python27` and
770`python39`. The attribute `python` maps to `python2`. The PyPy interpreters
771compatible with Python 2.7 and 3 are available as `pypy27` and `pypy3`, with
···830sets are
831832* `pkgs.python27Packages`
833-* `pkgs.python36Packages`
834* `pkgs.python37Packages`
835* `pkgs.python38Packages`
836* `pkgs.python39Packages`
0837* `pkgs.pypyPackages`
838839and the aliases
···765### Interpreters {#interpreters}
766767Versions 2.7, 3.6, 3.7, 3.8 and 3.9 of the CPython interpreter are available as
768+respectively `python27`, `python37`, `python38` and `python39`. The
769aliases `python2` and `python3` correspond to respectively `python27` and
770`python39`. The attribute `python` maps to `python2`. The PyPy interpreters
771compatible with Python 2.7 and 3 are available as `pypy27` and `pypy3`, with
···830sets are
831832* `pkgs.python27Packages`
0833* `pkgs.python37Packages`
834* `pkgs.python38Packages`
835* `pkgs.python39Packages`
836+* `pkgs.python310Packages`
837* `pkgs.pypyPackages`
838839and the aliases
···17 <itemizedlist>
18 <listitem>
19 <para>
00000020 PHP now defaults to PHP 8.0, updated from 7.4.
21 </para>
22 </listitem>
···371 that before NixOS 21.11, specifying either setuid or setgid
372 but not owner/group resulted in wrappers owned by
373 nobody/nogroup, which is unsafe.
00000000374 </para>
375 </listitem>
376 <listitem>
···17 <itemizedlist>
18 <listitem>
19 <para>
20+ <literal>iptables</literal> now uses
21+ <literal>nf_tables</literal> backend.
22+ </para>
23+ </listitem>
24+ <listitem>
25+ <para>
26 PHP now defaults to PHP 8.0, updated from 7.4.
27 </para>
28 </listitem>
···377 that before NixOS 21.11, specifying either setuid or setgid
378 but not owner/group resulted in wrappers owned by
379 nobody/nogroup, which is unsafe.
380+ </para>
381+ </listitem>
382+ <listitem>
383+ <para>
384+ Since <literal>iptables</literal> now uses
385+ <literal>nf_tables</literal> backend and
386+ <literal>ipset</literal> doesn’t support it, some applications
387+ (ferm, shorewall, firehol) may have limited functionality.
388 </para>
389 </listitem>
390 <listitem>
+4
nixos/doc/manual/release-notes/rl-2111.section.md
···67## Highlights {#sec-release-21.11-highlights}
8009- PHP now defaults to PHP 8.0, updated from 7.4.
1011- kOps now defaults to 1.21.1, which uses containerd as the default runtime.
···113114- The `security.wrappers` option now requires to always specify an owner, group and whether the setuid/setgid bit should be set.
115 This is motivated by the fact that before NixOS 21.11, specifying either setuid or setgid but not owner/group resulted in wrappers owned by nobody/nogroup, which is unsafe.
00116117- The `paperless` module and package have been removed. All users should migrate to the
118 successor `paperless-ng` instead. The Paperless project [has been
···67## Highlights {#sec-release-21.11-highlights}
89+- `iptables` now uses `nf_tables` backend.
10+11- PHP now defaults to PHP 8.0, updated from 7.4.
1213- kOps now defaults to 1.21.1, which uses containerd as the default runtime.
···115116- The `security.wrappers` option now requires to always specify an owner, group and whether the setuid/setgid bit should be set.
117 This is motivated by the fact that before NixOS 21.11, specifying either setuid or setgid but not owner/group resulted in wrappers owned by nobody/nogroup, which is unsafe.
118+119+- Since `iptables` now uses `nf_tables` backend and `ipset` doesn't support it, some applications (ferm, shorewall, firehol) may have limited functionality.
120121- The `paperless` module and package have been removed. All users should migrate to the
122 successor `paperless-ng` instead. The Paperless project [has been
+2-7
nixos/modules/hardware/printers.nix
···116 description = "Ensure NixOS-configured CUPS printers";
117 wantedBy = [ "multi-user.target" ];
118 requires = [ cupsUnit ];
119- # in contrast to cups.socket, for cups.service, this is actually not enough,
120- # as the cups service reports its activation before clients can actually interact with it.
121- # Because of this, commands like `lpinfo -v` will report a bad file descriptor
122- # due to the missing UNIX socket without sufficient sleep time.
123 after = [ cupsUnit ];
124125 serviceConfig = {
126 Type = "oneshot";
0127 };
128129- # sleep 10 is required to wait until cups.service is actually initialized and has created its UNIX socket file
130- script = (optionalString (!config.services.printing.startWhenNeeded) "sleep 10\n")
131- + (concatMapStringsSep "\n" ensurePrinter cfg.ensurePrinters)
132 + optionalString (cfg.ensureDefaultPrinter != null) (ensureDefaultPrinter cfg.ensureDefaultPrinter);
133 };
134 };
···502503 systemd.services.ModemManager.aliases = [ "dbus-org.freedesktop.ModemManager1.service" ];
504505- # override unit as recommended by upstream - see https://github.com/NixOS/nixpkgs/issues/88089
506- # TODO: keep an eye on modem-manager releases as this will eventually be added to the upstream unit
507- systemd.services.ModemManager.serviceConfig.ExecStart = [
508- ""
509- "${pkgs.modemmanager}/sbin/ModemManager --filter-policy=STRICT"
510- ];
511-512 systemd.services.NetworkManager-dispatcher = {
513 wantedBy = [ "network.target" ];
514 restartTriggers = [ configFile overrideNameserversScript ];
···109110 environment.systemPackages = with pkgs; [
111 xdotool
112- # Firefox was disabled here, because we needed to disable p11-kit support in nss,
113- # which is why it will not use the system certificate store for the time being.
114- # firefox
115 chromium
116 qutebrowser
117 midori
···153 machine.fail("curl -fv https://bad.example.com")
154155 browsers = {
156- # Firefox was disabled here, because we needed to disable p11-kit support in nss,
157- # which is why it will not use the system certificate store for the time being.
158- #"firefox": "Security Risk",
159 "chromium": "not private",
160 "qutebrowser -T": "Certificate error",
161 "midori": "Security"
···5354 start_all()
5556- with subtest("Make sure that cups is up on both sides"):
57 serviceServer.wait_for_unit("cups.service")
58 serviceClient.wait_for_unit("cups.service")
59-60- with subtest(
61- "Wait until cups is fully initialized and ensure-printers has "
62- "executed with 10s delay"
63- ):
64- serviceClient.sleep(20)
65- socketActivatedClient.wait_until_succeeds(
66- "systemctl show ensure-printers | grep -q -E 'code=exited ; status=0'"
67- )
686970 def test_printing(client, server):
···5354 start_all()
5556+ with subtest("Make sure that cups is up on both sides and printers are set up"):
57 serviceServer.wait_for_unit("cups.service")
58 serviceClient.wait_for_unit("cups.service")
59+ socketActivatedClient.wait_for_unit("ensure-printers.service")
00000000606162 def test_printing(client, server):
···50 mkdir -p $out/Applications
51 mv binaries/bin/merkaartor.app $out/Applications
52 mv binaries/bin/plugins $out/Applications/merkaartor.app/Contents
053 '';
5455 meta = with lib; {
+10-10
pkgs/applications/misc/multibootusb/default.nix
···1{ fetchFromGitHub, libxcb, mtools, p7zip, parted, procps, qemu, unzip, zip,
2 coreutils, gnugrep, which, gnused, e2fsprogs, autoPatchelfHook, gptfdisk,
3- python36Packages, qt5, runtimeShell, lib, util-linux, wrapQtAppsHook }:
45# Note: Multibootusb is tricky to maintain. It relies on the
6# $PYTHONPATH variable containing some of their code, so that
···13#
14# https://github.com/mbusb/multibootusb/blob/0d34d70c3868f1d7695cfd141141b17c075de967/scripts/osdriver.py#L59
1516-python36Packages.buildPythonApplication rec {
17 pname = "multibootusb";
18 name = "${pname}-${version}";
19 version = "9.2.0";
···4243 buildInputs = [
44 libxcb
45- python36Packages.python
46 qt5.full
47 ];
48···58 # "Failed to connect to socket /run/dbus/system_bus_socket: No such file or directory"
59 doCheck = false;
6061- pythonPath = [
62- python36Packages.dbus-python
63- python36Packages.pyqt5
64- python36Packages.pytest-shutil
65- python36Packages.pyudev
66- python36Packages.six
67 ];
6869 # multibootusb ships zips with various versions of syslinux, we need to patchelf them
···95 "''${qtWrapperArgs[@]}"
9697 # Then, add the installed scripts/ directory to the python path
98- --prefix "PYTHONPATH" ":" "$out/lib/${python36Packages.python.libPrefix}/site-packages"
99100 # Add some runtime dependencies
101 --prefix "PATH" ":" "${lib.makeBinPath runTimeDeps}"
···1{ fetchFromGitHub, libxcb, mtools, p7zip, parted, procps, qemu, unzip, zip,
2 coreutils, gnugrep, which, gnused, e2fsprogs, autoPatchelfHook, gptfdisk,
3+ python3Packages, qt5, runtimeShell, lib, util-linux, wrapQtAppsHook }:
45# Note: Multibootusb is tricky to maintain. It relies on the
6# $PYTHONPATH variable containing some of their code, so that
···13#
14# https://github.com/mbusb/multibootusb/blob/0d34d70c3868f1d7695cfd141141b17c075de967/scripts/osdriver.py#L59
1516+python3Packages.buildPythonApplication rec {
17 pname = "multibootusb";
18 name = "${pname}-${version}";
19 version = "9.2.0";
···4243 buildInputs = [
44 libxcb
45+ python3Packages.python
46 qt5.full
47 ];
48···58 # "Failed to connect to socket /run/dbus/system_bus_socket: No such file or directory"
59 doCheck = false;
6061+ pythonPath = with python3Packages; [
62+ dbus-python
63+ pyqt5
64+ pytest-shutil
65+ pyudev
66+ six
67 ];
6869 # multibootusb ships zips with various versions of syslinux, we need to patchelf them
···95 "''${qtWrapperArgs[@]}"
9697 # Then, add the installed scripts/ directory to the python path
98+ --prefix "PYTHONPATH" ":" "$out/lib/${python3Packages.python.libPrefix}/site-packages"
99100 # Add some runtime dependencies
101 --prefix "PATH" ":" "${lib.makeBinPath runTimeDeps}"
-4
pkgs/applications/misc/sleepyhead/default.nix
···33 cp sleepyhead/SleepyHead $out/bin
34 '';
3536- postFixup = lib.optionalString stdenv.isDarwin ''
37- wrapQtApp "$out/Applications/SleepyHead.app/Contents/MacOS/SleepyHead"
38- '';
39-40 meta = with lib; {
41 homepage = "https://sleepyhead.jedimark.net/";
42 description = "Review and explore data produced by CPAP and related machines";
···33 cp sleepyhead/SleepyHead $out/bin
34 '';
35000036 meta = with lib; {
37 homepage = "https://sleepyhead.jedimark.net/";
38 description = "Review and explore data produced by CPAP and related machines";
-5
pkgs/applications/misc/xpdf/default.nix
···51 install -Dm644 $src/xpdf-qt/xpdf-icon.svg $out/share/pixmaps/xpdf.svg
52 '';
5354- # wrapQtAppsHook broken on macOS (https://github.com/NixOS/nixpkgs/issues/102044)
55- postFixup = lib.optionalString stdenv.isDarwin ''
56- wrapQtApp $out/bin/xpdf
57- '';
58-59 meta = with lib; {
60 homepage = "https://www.xpdfreader.com";
61 description = "Viewer for Portable Document Format (PDF) files";
···51 install -Dm644 $src/xpdf-qt/xpdf-icon.svg $out/share/pixmaps/xpdf.svg
52 '';
530000054 meta = with lib; {
55 homepage = "https://www.xpdfreader.com";
56 description = "Viewer for Portable Document Format (PDF) files";
···117 then overrideCC stdenv llvmPackages.clangUseLLVM
118 else stdenv;
119120- # Disable p11-kit support in nss until our cacert packages has caught up exposing CKA_NSS_MOZILLA_CA_POLICY
121- # https://github.com/NixOS/nixpkgs/issues/126065
122- nss_pkg = if lib.versionOlder version "83" then nss_3_53 else nss.override { useP11kit = false; };
123124 # --enable-release adds -ffunction-sections & LTO that require a big amount of
125 # RAM and the 32-bit memory space cannot handle that linking
···117 then overrideCC stdenv llvmPackages.clangUseLLVM
118 else stdenv;
119120+ nss_pkg = if lib.versionOlder version "83" then nss_3_53 else nss;
00121122 # --enable-release adds -ffunction-sections & LTO that require a big amount of
123 # RAM and the 32-bit memory space cannot handle that linking
···1{ lib, stdenv, llvm_meta
2, pkgsBuildBuild
3, fetch
04, cmake
5, python3
6, libffi
···60 # Force a test to evaluate the saved benchmark for a CPU for which LLVM has
61 # an execution model. See NixOS/nixpkgs#119673.
62 ../../exegesis-force-bdver2.patch
0000000063 ] ++ lib.optional enablePolly ./gnu-install-dirs-polly.patch;
6465 postPatch = optionalString stdenv.isDarwin ''
···1{ lib, stdenv, llvm_meta
2, pkgsBuildBuild
3, fetch
4+, fetchpatch
5, cmake
6, python3
7, libffi
···61 # Force a test to evaluate the saved benchmark for a CPU for which LLVM has
62 # an execution model. See NixOS/nixpkgs#119673.
63 ../../exegesis-force-bdver2.patch
64+65+ # Fix missing includes for GCC 11
66+ (fetchpatch {
67+ name = "headers-gcc-11.patch";
68+ url = "https://github.com/llvm/llvm-project/commit/b498303066a63a203d24f739b2d2e0e56dca70d1.patch";
69+ sha256 = "0nh123kld0dgz2h941lng331dkj3wbm5lfxm375k1f569gv83hlk";
70+ stripLen = 1;
71+ })
72 ] ++ lib.optional enablePolly ./gnu-install-dirs-polly.patch;
7374 postPatch = optionalString stdenv.isDarwin ''
+52-30
pkgs/development/interpreters/guile/1.8.nix
···1-{ lib, stdenv, pkgsBuildBuild, buildPackages
2-, fetchurl, makeWrapper, gawk, pkg-config
3-, libtool, readline, gmp
000000004}:
56stdenv.mkDerivation rec {
7- name = "guile-1.8.8";
089 src = fetchurl {
10- url = "mirror://gnu/guile/${name}.tar.gz";
11 sha256 = "0l200a0v7h8bh0cwz6v7hc13ds39cgqsmfrks55b1rbj5vniyiy3";
12 };
13···15 setOutputFlags = false; # $dev gets into the library otherwise
1617 # GCC 4.6 raises a number of set-but-unused warnings.
18- configureFlags = [ "--disable-error-on-warning" ]
19- # Guile needs patching to preset results for the configure tests about
20- # pthreads, which work only in native builds.
21- ++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform)
22- "--with-threads=no";
23-24- depsBuildBuild = [ buildPackages.stdenv.cc ]
25- ++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform)
26- pkgsBuildBuild.guile_1_8;
27- nativeBuildInputs = [ makeWrapper gawk pkg-config ];
28- buildInputs = [ readline libtool ];
290000000000000030 propagatedBuildInputs = [
31 gmp
32···38 ];
3940 patches = [
041 ./cpp-4.5.patch
042 ./CVE-2016-8605.patch
43 ];
44···46 sed -e '/lt_dlinit/a lt_dladdsearchdir("'$out/lib'");' -i libguile/dynl.c
47 '';
4849-50 postInstall = ''
51 wrapProgram $out/bin/guile-snarf --prefix PATH : "${gawk}/bin"
52 ''
53- # XXX: See http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/18903 for
54- # why `--with-libunistring-prefix' and similar options coming from
55- # `AC_LIB_LINKFLAGS_BODY' don't work on NixOS/x86_64.
56 + ''
57 sed -i "$out/lib/pkgconfig/guile"-*.pc \
58 -e "s|-lltdl|-L${libtool.lib}/lib -lltdl|g"
···65 doCheck = false;
66 doInstallCheck = doCheck;
6768- setupHook = ./setup-hook.sh;
6970- meta = {
071 description = "Embeddable Scheme implementation";
72- homepage = "https://www.gnu.org/software/guile/";
73- license = lib.licenses.lgpl2Plus;
74- maintainers = [ lib.maintainers.ludo ];
75- platforms = lib.platforms.unix;
76-77 longDescription = ''
78- GNU Guile is an interpreter for the Scheme programming language,
79- packaged as a library that can be embedded into programs to make
80- them extensible. It supports many SRFIs.
00081 '';
00082 };
83}
···1+{ lib
2+, stdenv
3+, fetchurl
4+, buildPackages
5+, gawk
6+, gmp
7+, libtool
8+, makeWrapper
9+, pkg-config
10+, pkgsBuildBuild
11+, readline
12}:
1314stdenv.mkDerivation rec {
15+ pname = "guile";
16+ version = "1.8.8";
1718 src = fetchurl {
19+ url = "mirror://gnu/${pname}/${pname}-${version}.tar.gz";
20 sha256 = "0l200a0v7h8bh0cwz6v7hc13ds39cgqsmfrks55b1rbj5vniyiy3";
21 };
22···24 setOutputFlags = false; # $dev gets into the library otherwise
2526 # GCC 4.6 raises a number of set-but-unused warnings.
27+ configureFlags = [
28+ "--disable-error-on-warning"
29+ ]
30+ # Guile needs patching to preset results for the configure tests about
31+ # pthreads, which work only in native builds.
32+ ++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform)
33+ "--with-threads=no";
00003435+ depsBuildBuild = [
36+ buildPackages.stdenv.cc
37+ ]
38+ ++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform)
39+ pkgsBuildBuild.guile_1_8;
40+ nativeBuildInputs = [
41+ gawk
42+ makeWrapper
43+ pkg-config
44+ ];
45+ buildInputs = [
46+ libtool
47+ readline
48+ ];
49 propagatedBuildInputs = [
50 gmp
51···57 ];
5859 patches = [
60+ # Fix doc snarfing with GCC 4.5.
61 ./cpp-4.5.patch
62+ # Self explanatory
63 ./CVE-2016-8605.patch
64 ];
65···67 sed -e '/lt_dlinit/a lt_dladdsearchdir("'$out/lib'");' -i libguile/dynl.c
68 '';
69070 postInstall = ''
71 wrapProgram $out/bin/guile-snarf --prefix PATH : "${gawk}/bin"
72 ''
73+ # XXX: See http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/18903 for
74+ # why `--with-libunistring-prefix' and similar options coming from
75+ # `AC_LIB_LINKFLAGS_BODY' don't work on NixOS/x86_64.
76 + ''
77 sed -i "$out/lib/pkgconfig/guile"-*.pc \
78 -e "s|-lltdl|-L${libtool.lib}/lib -lltdl|g"
···85 doCheck = false;
86 doInstallCheck = doCheck;
8788+ setupHook = ./setup-hook-1.8.sh;
8990+ meta = with lib; {
91+ homepage = "https://www.gnu.org/software/guile/";
92 description = "Embeddable Scheme implementation";
0000093 longDescription = ''
94+ GNU Guile is an implementation of the Scheme programming language, with
95+ support for many SRFIs, packaged for use in a wide variety of
96+ environments. In addition to implementing the R5RS Scheme standard and a
97+ large subset of R6RS, Guile includes a module system, full access to POSIX
98+ system calls, networking support, multiple threads, dynamic linking, a
99+ foreign function call interface, and powerful string processing.
100 '';
101+ license = licenses.lgpl3Plus;
102+ maintainers = with maintainers; [ ludo ];
103+ platforms = platforms.all;
104 };
105}
+101-67
pkgs/development/interpreters/guile/2.0.nix
···1-{ lib, stdenv, pkgsBuildBuild, buildPackages
2-, fetchpatch, fetchurl, makeWrapper, gawk, pkg-config
3-, libffi, libtool, readline, gmp, boehmgc, libunistring
0004, coverageAnalysis ? null
0000000005}:
67-# Do either a coverage analysis build or a standard build.
8-(if coverageAnalysis != null
9- then coverageAnalysis
10- else stdenv.mkDerivation)
11-12-(rec {
13- name = "guile-2.0.13";
001415 src = fetchurl {
16- url = "mirror://gnu/guile/${name}.tar.xz";
17 sha256 = "12yqkr974y91ylgw6jnmci2v90i90s7h9vxa4zk0sai8vjnz4i1p";
18 };
1920 outputs = [ "out" "dev" "info" ];
21 setOutputFlags = false; # $dev gets into the library otherwise
2223- depsBuildBuild = [ buildPackages.stdenv.cc ]
24- ++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform)
25- pkgsBuildBuild.guile_2_0;
26- nativeBuildInputs = [ makeWrapper gawk pkg-config ];
27- buildInputs = [ readline libtool libunistring libffi ];
280000000000029 propagatedBuildInputs = [
30- gmp boehmgc
03132- # XXX: These ones aren't normally needed here, but `libguile*.la' has '-l'
33- # flags for them without corresponding '-L' flags. Adding them here will add
34- # the needed `-L' flags. As for why the `.la' file lacks the `-L' flags,
35- # see below.
36- libtool libunistring
037 ];
3839 enableParallelBuilding = true;
4041- patches = [ ./disable-gc-sensitive-tests.patch ./eai_system.patch ./clang.patch
00000000042 (fetchpatch {
43- # Fixes stability issues with 00-repl-server.test
44 url = "https://git.savannah.gnu.org/cgit/guile.git/patch/?id=2fbde7f02adb8c6585e9baf6e293ee49cd23d4c4";
45 sha256 = "0p6c1lmw1iniq03z7x5m65kg3lq543kgvdb4nrxsaxjqf3zhl77v";
000000046 })
47- ./riscv.patch
48- ] ++
49- (lib.optional (coverageAnalysis != null) ./gcov-file-name.patch)
50- ++ lib.optionals stdenv.isDarwin [
51- (fetchpatch {
52- url = "https://gitlab.gnome.org/GNOME/gtk-osx/raw/52898977f165777ad9ef169f7d4818f2d4c9b731/patches/guile-clocktime.patch";
53- sha256 = "12wvwdna9j8795x59ldryv9d84c1j3qdk2iskw09306idfsis207";
54- })
55- ./filter-mkostemp-darwin.patch
56- ];
5758 # Explicitly link against libgcc_s, to work around the infamous
59 # "libgcc_s.so.1 must be installed for pthread_cancel to work".
6061 # don't have "libgcc_s.so.1" on darwin
62- LDFLAGS = lib.optionalString (!stdenv.isDarwin && !stdenv.hostPlatform.isMusl) "-lgcc_s";
06364- configureFlags = [ "--with-libreadline-prefix" ]
65- ++ lib.optionals stdenv.isSunOS [
66- # Make sure the right <gmp.h> is found, and not the incompatible
67- # /usr/include/mp.h from OpenSolaris. See
68- # <https://lists.gnu.org/archive/html/hydra-users/2012-08/msg00000.html>
69- # for details.
70- "--with-libgmp-prefix=${gmp.dev}"
07172- # Same for these (?).
73- "--with-libreadline-prefix=${readline.dev}"
74- "--with-libunistring-prefix=${libunistring}"
7576- # See below.
77- "--without-threads"
78- ];
7980 postInstall = ''
81 wrapProgram $out/bin/guile-snarf --prefix PATH : "${gawk}/bin"
82 ''
83- # XXX: See http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/18903 for
84- # why `--with-libunistring-prefix' and similar options coming from
85- # `AC_LIB_LINKFLAGS_BODY' don't work on NixOS/x86_64.
86 + ''
87 sed -i "$out/lib/pkgconfig/guile"-*.pc \
88 -e "s|-lunistring|-L${libunistring}/lib -lunistring|g ;
···90 s|-lltdl|-L${libtool.lib}/lib -lltdl|g ;
91 s|includedir=$out|includedir=$dev|g
92 "
93- '';
9495 # make check doesn't work on darwin
96 # On Linuxes+Hydra the tests are flaky; feel free to investigate deeper.
···99100 setupHook = ./setup-hook-2.0.sh;
101102- meta = {
0103 description = "Embeddable Scheme implementation";
104- homepage = "https://www.gnu.org/software/guile/";
105- license = lib.licenses.lgpl3Plus;
106- maintainers = with lib.maintainers; [ ludo lovek323 ];
107- platforms = lib.platforms.all;
108-109 longDescription = ''
110- GNU Guile is an implementation of the Scheme programming language, with
111- support for many SRFIs, packaged for use in a wide variety of
112- environments. In addition to implementing the R5RS Scheme standard
113- and a large subset of R6RS, Guile includes a module system, full access
114- to POSIX system calls, networking support, multiple threads, dynamic
115- linking, a foreign function call interface, and powerful string
116- processing.
117- '';
000118 };
119-})
120121//
122
···1+{ lib
2+, stdenv
3+, fetchurl
4+, fetchpatch
5+, boehmgc
6+, buildPackages
7, coverageAnalysis ? null
8+, gawk
9+, gmp
10+, libffi
11+, libtool
12+, libunistring
13+, makeWrapper
14+, pkg-config
15+, pkgsBuildBuild
16+, readline
17}:
1819+let
20+ # Do either a coverage analysis build or a standard build.
21+ builder = if coverageAnalysis != null
22+ then coverageAnalysis
23+ else stdenv.mkDerivation;
24+in
25+builder rec {
26+ pname = "guile";
27+ version = "2.0.13";
2829 src = fetchurl {
30+ url = "mirror://gnu/${pname}/${pname}-${version}.tar.xz";
31 sha256 = "12yqkr974y91ylgw6jnmci2v90i90s7h9vxa4zk0sai8vjnz4i1p";
32 };
3334 outputs = [ "out" "dev" "info" ];
35 setOutputFlags = false; # $dev gets into the library otherwise
3637+ depsBuildBuild = [
38+ buildPackages.stdenv.cc
39+ ]
40+ ++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform)
41+ pkgsBuildBuild.guile_2_0;
4243+ nativeBuildInputs = [
44+ makeWrapper
45+ gawk
46+ pkg-config
47+ ];
48+ buildInputs = [
49+ readline
50+ libtool
51+ libunistring
52+ libffi
53+ ];
54 propagatedBuildInputs = [
55+ boehmgc
56+ gmp
5758+ # These ones aren't normally needed here, but `libguile*.la' has '-l'
59+ # flags for them without corresponding '-L' flags. Adding them here will
60+ # add the needed `-L' flags. As for why the `.la' file lacks the `-L'
61+ # flags, see below.
62+ libtool
63+ libunistring
64 ];
6566 enableParallelBuilding = true;
6768+ patches = [
69+ # Small fixes to Clang compiler
70+ ./clang.patch
71+ # Self-explanatory
72+ ./disable-gc-sensitive-tests.patch
73+ # Read the header of the patch to more info
74+ ./eai_system.patch
75+ # RISC-V endianness
76+ ./riscv.patch
77+ # Fixes stability issues with 00-repl-server.test
78 (fetchpatch {
079 url = "https://git.savannah.gnu.org/cgit/guile.git/patch/?id=2fbde7f02adb8c6585e9baf6e293ee49cd23d4c4";
80 sha256 = "0p6c1lmw1iniq03z7x5m65kg3lq543kgvdb4nrxsaxjqf3zhl77v";
81+ })] ++
82+ (lib.optional (coverageAnalysis != null) ./gcov-file-name.patch)
83+ ++ lib.optionals stdenv.isDarwin [
84+ ./filter-mkostemp-darwin.patch
85+ (fetchpatch {
86+ url = "https://gitlab.gnome.org/GNOME/gtk-osx/raw/52898977f165777ad9ef169f7d4818f2d4c9b731/patches/guile-clocktime.patch";
87+ sha256 = "12wvwdna9j8795x59ldryv9d84c1j3qdk2iskw09306idfsis207";
88 })
89+ ];
0000000009091 # Explicitly link against libgcc_s, to work around the infamous
92 # "libgcc_s.so.1 must be installed for pthread_cancel to work".
9394 # don't have "libgcc_s.so.1" on darwin
95+ LDFLAGS = lib.optionalString
96+ (!stdenv.isDarwin && !stdenv.hostPlatform.isMusl) "-lgcc_s";
9798+ configureFlags = [
99+ "--with-libreadline-prefix"
100+ ] ++ lib.optionals stdenv.isSunOS [
101+ # Make sure the right <gmp.h> is found, and not the incompatible
102+ # /usr/include/mp.h from OpenSolaris. See
103+ # <https://lists.gnu.org/archive/html/hydra-users/2012-08/msg00000.html>
104+ # for details.
105+ "--with-libgmp-prefix=${lib.getDev gmp}"
106107+ # Same for these (?).
108+ "--with-libreadline-prefix=${lib.getDev readline}"
109+ "--with-libunistring-prefix=${libunistring}"
110111+ # See below.
112+ "--without-threads"
113+ ];
114115 postInstall = ''
116 wrapProgram $out/bin/guile-snarf --prefix PATH : "${gawk}/bin"
117 ''
118+ # XXX: See http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/18903 for
119+ # why `--with-libunistring-prefix' and similar options coming from
120+ # `AC_LIB_LINKFLAGS_BODY' don't work on NixOS/x86_64.
121 + ''
122 sed -i "$out/lib/pkgconfig/guile"-*.pc \
123 -e "s|-lunistring|-L${libunistring}/lib -lunistring|g ;
···125 s|-lltdl|-L${libtool.lib}/lib -lltdl|g ;
126 s|includedir=$out|includedir=$dev|g
127 "
128+ '';
129130 # make check doesn't work on darwin
131 # On Linuxes+Hydra the tests are flaky; feel free to investigate deeper.
···134135 setupHook = ./setup-hook-2.0.sh;
136137+ meta = with lib; {
138+ homepage = "https://www.gnu.org/software/guile/";
139 description = "Embeddable Scheme implementation";
00000140 longDescription = ''
141+ GNU Guile is an implementation of the Scheme programming language, with
142+ support for many SRFIs, packaged for use in a wide variety of
143+ environments. In addition to implementing the R5RS Scheme standard and
144+ a large subset of R6RS, Guile includes a module system, full access to
145+ POSIX system calls, networking support, multiple threads, dynamic
146+ linking, a foreign function call interface, and powerful string
147+ processing.
148+ '';
149+ license = licenses.lgpl3Plus;
150+ maintainers = with maintainers; [ ludo lovek323 vrthra ];
151+ platforms = platforms.all;
152 };
153+}
154155//
156
···1+{ lib
2+, stdenv
3+, fetchurl
4+, fetchpatch
5+, boehmgc
6+, buildPackages
7+, coverageAnalysis ? null
8+, gawk
9+, gmp
10+, libffi
11+, libtool
12+, libunistring
13+, makeWrapper
14+, pkg-config
15+, pkgsBuildBuild
16+, readline
17+}:
18+19+let
20+ # Do either a coverage analysis build or a standard build.
21+ builder = if coverageAnalysis != null
22+ then coverageAnalysis
23+ else stdenv.mkDerivation;
24+in
25+builder rec {
26+ pname = "guile";
27+ version = "2.2.7";
28+29+ src = fetchurl {
30+ url = "mirror://gnu/${pname}/${pname}-${version}.tar.xz";
31+ sha256 = "013mydzhfswqci6xmyc1ajzd59pfbdak15i0b090nhr9bzm7dxyd";
32+ };
33+34+ outputs = [ "out" "dev" "info" ];
35+ setOutputFlags = false; # $dev gets into the library otherwise
36+37+ depsBuildBuild = [
38+ buildPackages.stdenv.cc
39+ ]
40+ ++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform)
41+ pkgsBuildBuild.guile;
42+ nativeBuildInputs = [
43+ gawk
44+ makeWrapper
45+ pkg-config
46+ ];
47+ buildInputs = [
48+ libffi
49+ libtool
50+ libunistring
51+ readline
52+ ];
53+ propagatedBuildInputs = [
54+ boehmgc
55+ gmp
56+57+ # XXX: These ones aren't normally needed here, but `libguile*.la' has '-l'
58+ # flags for them without corresponding '-L' flags. Adding them here will add
59+ # the needed `-L' flags. As for why the `.la' file lacks the `-L' flags,
60+ # see below.
61+ libtool
62+ libunistring
63+ ];
64+65+ # According to Bernhard M. Wiedemann <bwiedemann suse de> on
66+ # #reproducible-builds on irc.oftc.net, (2020-01-29): they had to
67+ # build Guile without parallel builds to make it reproducible.
68+ #
69+ # re: https://issues.guix.gnu.org/issue/20272
70+ # re: https://build.opensuse.org/request/show/732638
71+ enableParallelBuilding = false;
72+73+ patches = [
74+ # Read the header of the patch to more info
75+ ./eai_system.patch
76+ ] ++ lib.optional (coverageAnalysis != null) ./gcov-file-name.patch
77+ ++ lib.optional stdenv.isDarwin
78+ (fetchpatch {
79+ url = "https://gitlab.gnome.org/GNOME/gtk-osx/raw/52898977f165777ad9ef169f7d4818f2d4c9b731/patches/guile-clocktime.patch";
80+ sha256 = "12wvwdna9j8795x59ldryv9d84c1j3qdk2iskw09306idfsis207";
81+ });
82+83+ # Explicitly link against libgcc_s, to work around the infamous
84+ # "libgcc_s.so.1 must be installed for pthread_cancel to work".
85+86+ # don't have "libgcc_s.so.1" on darwin
87+ LDFLAGS = lib.optionalString
88+ (!stdenv.isDarwin && !stdenv.hostPlatform.isStatic) "-lgcc_s";
89+90+ configureFlags = [
91+ "--with-libreadline-prefix=${lib.getDev readline}"
92+ ] ++ lib.optionals stdenv.isSunOS [
93+ # Make sure the right <gmp.h> is found, and not the incompatible
94+ # /usr/include/mp.h from OpenSolaris. See
95+ # <https://lists.gnu.org/archive/html/hydra-users/2012-08/msg00000.html>
96+ # for details.
97+ "--with-libgmp-prefix=${lib.getDev gmp}"
98+99+ # Same for these (?).
100+ "--with-libunistring-prefix=${libunistring}"
101+102+ # See below.
103+ "--without-threads"
104+ ];
105+106+ postInstall = ''
107+ wrapProgram $out/bin/guile-snarf --prefix PATH : "${gawk}/bin"
108+ ''
109+ # XXX: See http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/18903 for
110+ # why `--with-libunistring-prefix' and similar options coming from
111+ # `AC_LIB_LINKFLAGS_BODY' don't work on NixOS/x86_64.
112+ + ''
113+ sed -i "$out/lib/pkgconfig/guile"-*.pc \
114+ -e "s|-lunistring|-L${libunistring}/lib -lunistring|g ;
115+ s|^Cflags:\(.*\)$|Cflags: -I${libunistring}/include \1|g ;
116+ s|-lltdl|-L${libtool.lib}/lib -lltdl|g ;
117+ s|includedir=$out|includedir=$dev|g
118+ "
119+ '';
120+121+ # make check doesn't work on darwin
122+ # On Linuxes+Hydra the tests are flaky; feel free to investigate deeper.
123+ doCheck = false;
124+ doInstallCheck = doCheck;
125+126+ setupHook = ./setup-hook-2.2.sh;
127+128+ meta = with lib; {
129+ homepage = "https://www.gnu.org/software/guile/";
130+ description = "Embeddable Scheme implementation";
131+ longDescription = ''
132+ GNU Guile is an implementation of the Scheme programming language, with
133+ support for many SRFIs, packaged for use in a wide variety of
134+ environments. In addition to implementing the R5RS Scheme standard and a
135+ large subset of R6RS, Guile includes a module system, full access to POSIX
136+ system calls, networking support, multiple threads, dynamic linking, a
137+ foreign function call interface, and powerful string processing.
138+ '';
139+ license = licenses.lgpl3Plus;
140+ maintainers = with maintainers; [ ludo lovek323 vrthra ];
141+ platforms = platforms.all;
142+ };
143+}
···1+{ lib
2+, stdenv
3+, fetchurl
4+, fetchpatch
5+, boehmgc
6+, buildPackages
7+, coverageAnalysis ? null
8+, gawk
9+, gmp
10+, libffi
11+, libtool
12+, libunistring
13+, makeWrapper
14+, pkg-config
15+, pkgsBuildBuild
16+, readline
17+}:
18+19+let
20+ # Do either a coverage analysis build or a standard build.
21+ builder = if coverageAnalysis != null
22+ then coverageAnalysis
23+ else stdenv.mkDerivation;
24+in
25+builder rec {
26+ pname = "guile";
27+ version = "3.0.7";
28+29+ src = fetchurl {
30+ url = "mirror://gnu/${pname}/${pname}-${version}.tar.xz";
31+ sha256 = "sha256-9X2GxwYgJxv863qb4MgXRKAz8IrcfOuoMsmRerPmkbc=";
32+ };
33+34+ outputs = [ "out" "dev" "info" ];
35+ setOutputFlags = false; # $dev gets into the library otherwise
36+37+ depsBuildBuild = [
38+ buildPackages.stdenv.cc
39+ ] ++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform)
40+ pkgsBuildBuild.guile;
41+ nativeBuildInputs = [
42+ gawk
43+ makeWrapper
44+ pkg-config
45+ ];
46+ buildInputs = [
47+ libffi
48+ libtool
49+ libunistring
50+ readline
51+ ];
52+ propagatedBuildInputs = [
53+ boehmgc
54+ gmp
55+56+ # These ones aren't normally needed here, but `libguile*.la' has '-l'
57+ # flags for them without corresponding '-L' flags. Adding them here will
58+ # add the needed `-L' flags. As for why the `.la' file lacks the `-L'
59+ # flags, see below.
60+ libtool
61+ libunistring
62+ ];
63+64+ # According to Bernhard M. Wiedemann <bwiedemann suse de> on
65+ # #reproducible-builds on irc.oftc.net, (2020-01-29): they had to build
66+ # Guile without parallel builds to make it reproducible.
67+ #
68+ # re: https://issues.guix.gnu.org/issue/20272
69+ # re: https://build.opensuse.org/request/show/732638
70+ enableParallelBuilding = false;
71+72+ patches = [
73+ ./eai_system.patch
74+ ] ++ lib.optional (coverageAnalysis != null) ./gcov-file-name.patch
75+ ++ lib.optional stdenv.isDarwin
76+ (fetchpatch {
77+ url = "https://gitlab.gnome.org/GNOME/gtk-osx/raw/52898977f165777ad9ef169f7d4818f2d4c9b731/patches/guile-clocktime.patch";
78+ sha256 = "12wvwdna9j8795x59ldryv9d84c1j3qdk2iskw09306idfsis207";
79+ });
80+81+ # Explicitly link against libgcc_s, to work around the infamous
82+ # "libgcc_s.so.1 must be installed for pthread_cancel to work".
83+84+ # don't have "libgcc_s.so.1" on darwin
85+ LDFLAGS = lib.optionalString
86+ (!stdenv.isDarwin && !stdenv.hostPlatform.isStatic) "-lgcc_s";
87+88+ configureFlags = [
89+ "--with-libreadline-prefix=${lib.getDev readline}"
90+ ] ++ lib.optionals stdenv.isSunOS [
91+ # Make sure the right <gmp.h> is found, and not the incompatible
92+ # /usr/include/mp.h from OpenSolaris. See
93+ # <https://lists.gnu.org/archive/html/hydra-users/2012-08/msg00000.html>
94+ # for details.
95+ "--with-libgmp-prefix=${lib.getDev gmp}"
96+97+ # Same for these (?).
98+ "--with-libunistring-prefix=${libunistring}"
99+100+ # See below.
101+ "--without-threads"
102+ ];
103+104+ postInstall = ''
105+ wrapProgram $out/bin/guile-snarf --prefix PATH : "${gawk}/bin"
106+ ''
107+ # XXX: See http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/18903 for
108+ # why `--with-libunistring-prefix' and similar options coming from
109+ # `AC_LIB_LINKFLAGS_BODY' don't work on NixOS/x86_64.
110+ + ''
111+ sed -i "$out/lib/pkgconfig/guile"-*.pc \
112+ -e "s|-lunistring|-L${libunistring}/lib -lunistring|g ;
113+ s|^Cflags:\(.*\)$|Cflags: -I${libunistring}/include \1|g ;
114+ s|-lltdl|-L${libtool.lib}/lib -lltdl|g ;
115+ s|includedir=$out|includedir=$dev|g
116+ "
117+ '';
118+119+ # make check doesn't work on darwin
120+ # On Linuxes+Hydra the tests are flaky; feel free to investigate deeper.
121+ doCheck = false;
122+ doInstallCheck = doCheck;
123+124+ setupHook = ./setup-hook-3.0.sh;
125+126+ meta = with lib; {
127+ homepage = "https://www.gnu.org/software/guile/";
128+ description = "Embeddable Scheme implementation";
129+ longDescription = ''
130+ GNU Guile is an implementation of the Scheme programming language, with
131+ support for many SRFIs, packaged for use in a wide variety of
132+ environments. In addition to implementing the R5RS Scheme standard and a
133+ large subset of R6RS, Guile includes a module system, full access to POSIX
134+ system calls, networking support, multiple threads, dynamic linking, a
135+ foreign function call interface, and powerful string processing.
136+ '';
137+ license = licenses.lgpl3Plus;
138+ maintainers = with maintainers; [ ludo lovek323 vrthra ];
139+ platforms = platforms.all;
140+ };
141+}
-118
pkgs/development/interpreters/guile/default.nix
···1-{ lib, stdenv, pkgsBuildBuild, buildPackages
2-, fetchurl, makeWrapper, gawk, pkg-config
3-, libffi, libtool, readline, gmp, boehmgc, libunistring
4-, coverageAnalysis ? null
5-, fetchpatch
6-}:
7-8-# Do either a coverage analysis build or a standard build.
9-(if coverageAnalysis != null
10- then coverageAnalysis
11- else stdenv.mkDerivation)
12-13-(rec {
14- name = "guile-${version}";
15- version = "2.2.7";
16-17- src = fetchurl {
18- url = "mirror://gnu/guile/${name}.tar.xz";
19- sha256 = "013mydzhfswqci6xmyc1ajzd59pfbdak15i0b090nhr9bzm7dxyd";
20- };
21-22- outputs = [ "out" "dev" "info" ];
23- setOutputFlags = false; # $dev gets into the library otherwise
24-25- depsBuildBuild = [ buildPackages.stdenv.cc ]
26- ++ lib.optional (stdenv.hostPlatform != stdenv.buildPlatform)
27- pkgsBuildBuild.guile;
28- nativeBuildInputs = [ makeWrapper gawk pkg-config ];
29- buildInputs = [ readline libtool libunistring libffi ];
30-31- propagatedBuildInputs = [
32- gmp boehmgc
33-34- # XXX: These ones aren't normally needed here, but `libguile*.la' has '-l'
35- # flags for them without corresponding '-L' flags. Adding them here will add
36- # the needed `-L' flags. As for why the `.la' file lacks the `-L' flags,
37- # see below.
38- libtool libunistring
39- ];
40-41- # According to Bernhard M. Wiedemann <bwiedemann suse de> on
42- # #reproducible-builds on irc.oftc.net, (2020-01-29): they had to
43- # build Guile without parallel builds to make it reproducible.
44- #
45- # re: https://issues.guix.gnu.org/issue/20272
46- # re: https://build.opensuse.org/request/show/732638
47- enableParallelBuilding = false;
48-49- patches = [
50- ./eai_system.patch
51- ] ++ lib.optional (coverageAnalysis != null) ./gcov-file-name.patch
52- ++ lib.optional stdenv.isDarwin (fetchpatch {
53- url = "https://gitlab.gnome.org/GNOME/gtk-osx/raw/52898977f165777ad9ef169f7d4818f2d4c9b731/patches/guile-clocktime.patch";
54- sha256 = "12wvwdna9j8795x59ldryv9d84c1j3qdk2iskw09306idfsis207";
55- });
56-57- # Explicitly link against libgcc_s, to work around the infamous
58- # "libgcc_s.so.1 must be installed for pthread_cancel to work".
59-60- # don't have "libgcc_s.so.1" on darwin
61- LDFLAGS = lib.optionalString
62- (!stdenv.isDarwin && !stdenv.hostPlatform.isStatic) "-lgcc_s";
63-64- configureFlags = [ "--with-libreadline-prefix=${readline.dev}" ]
65- ++ lib.optionals stdenv.isSunOS [
66- # Make sure the right <gmp.h> is found, and not the incompatible
67- # /usr/include/mp.h from OpenSolaris. See
68- # <https://lists.gnu.org/archive/html/hydra-users/2012-08/msg00000.html>
69- # for details.
70- "--with-libgmp-prefix=${gmp.dev}"
71-72- # Same for these (?).
73- "--with-libunistring-prefix=${libunistring}"
74-75- # See below.
76- "--without-threads"
77- ];
78-79- postInstall = ''
80- wrapProgram $out/bin/guile-snarf --prefix PATH : "${gawk}/bin"
81- ''
82- # XXX: See http://thread.gmane.org/gmane.comp.lib.gnulib.bugs/18903 for
83- # why `--with-libunistring-prefix' and similar options coming from
84- # `AC_LIB_LINKFLAGS_BODY' don't work on NixOS/x86_64.
85- + ''
86- sed -i "$out/lib/pkgconfig/guile"-*.pc \
87- -e "s|-lunistring|-L${libunistring}/lib -lunistring|g ;
88- s|^Cflags:\(.*\)$|Cflags: -I${libunistring}/include \1|g ;
89- s|-lltdl|-L${libtool.lib}/lib -lltdl|g ;
90- s|includedir=$out|includedir=$dev|g
91- "
92- '';
93-94- # make check doesn't work on darwin
95- # On Linuxes+Hydra the tests are flaky; feel free to investigate deeper.
96- doCheck = false;
97- doInstallCheck = doCheck;
98-99- setupHook = ./setup-hook-2.2.sh;
100-101- meta = {
102- description = "Embeddable Scheme implementation";
103- homepage = "https://www.gnu.org/software/guile/";
104- license = lib.licenses.lgpl3Plus;
105- maintainers = with lib.maintainers; [ ludo lovek323 vrthra ];
106- platforms = lib.platforms.all;
107-108- longDescription = ''
109- GNU Guile is an implementation of the Scheme programming language, with
110- support for many SRFIs, packaged for use in a wide variety of
111- environments. In addition to implementing the R5RS Scheme standard
112- and a large subset of R6RS, Guile includes a module system, full access
113- to POSIX system calls, networking support, multiple threads, dynamic
114- linking, a foreign function call interface, and powerful string
115- processing.
116- '';
117- };
118-})
···1addGuileLibPath () {
2- if test -d "$1/share/guile/site/2.0"
3- then
4 export GUILE_LOAD_PATH="${GUILE_LOAD_PATH-}${GUILE_LOAD_PATH:+:}$1/share/guile/site/2.0"
5 export GUILE_LOAD_COMPILED_PATH="${GUILE_LOAD_COMPILED_PATH-}${GUILE_LOAD_COMPILED_PATH:+:}$1/share/guile/site/2.0"
6- elif test -d "$1/share/guile/site"
7- then
8 export GUILE_LOAD_PATH="${GUILE_LOAD_PATH-}${GUILE_LOAD_PATH:+:}$1/share/guile/site"
9 export GUILE_LOAD_COMPILED_PATH="${GUILE_LOAD_COMPILED_PATH-}${GUILE_LOAD_COMPILED_PATH:+:}$1/share/guile/site"
10 fi
1112- if test -d "$1/lib/guile/2.0/ccache"
13- then
14 export GUILE_LOAD_COMPILED_PATH="${GUILE_LOAD_COMPILED_PATH-}${GUILE_LOAD_COMPILED_PATH:+:}$1/lib/guile/2.0/ccache"
15 fi
1617- if test -d "$1/lib/guile/2.0/site-ccache"
18- then
19 export GUILE_LOAD_COMPILED_PATH="${GUILE_LOAD_COMPILED_PATH-}${GUILE_LOAD_COMPILED_PATH:+:}$1/lib/guile/2.0/site-ccache"
20 fi
21}
···1addGuileLibPath () {
2+ if test -d "$1/share/guile/site/2.0"; then
03 export GUILE_LOAD_PATH="${GUILE_LOAD_PATH-}${GUILE_LOAD_PATH:+:}$1/share/guile/site/2.0"
4 export GUILE_LOAD_COMPILED_PATH="${GUILE_LOAD_COMPILED_PATH-}${GUILE_LOAD_COMPILED_PATH:+:}$1/share/guile/site/2.0"
5+ elif test -d "$1/share/guile/site"; then
06 export GUILE_LOAD_PATH="${GUILE_LOAD_PATH-}${GUILE_LOAD_PATH:+:}$1/share/guile/site"
7 export GUILE_LOAD_COMPILED_PATH="${GUILE_LOAD_COMPILED_PATH-}${GUILE_LOAD_COMPILED_PATH:+:}$1/share/guile/site"
8 fi
910+ if test -d "$1/lib/guile/2.0/ccache"; then
011 export GUILE_LOAD_COMPILED_PATH="${GUILE_LOAD_COMPILED_PATH-}${GUILE_LOAD_COMPILED_PATH:+:}$1/lib/guile/2.0/ccache"
12 fi
1314+ if test -d "$1/lib/guile/2.0/site-ccache"; then
015 export GUILE_LOAD_COMPILED_PATH="${GUILE_LOAD_COMPILED_PATH-}${GUILE_LOAD_COMPILED_PATH:+:}$1/lib/guile/2.0/site-ccache"
16 fi
17}
···1addGuileLibPath () {
2- if test -d "$1/share/guile/site/2.2"
3- then
4 export GUILE_LOAD_PATH="${GUILE_LOAD_PATH-}${GUILE_LOAD_PATH:+:}$1/share/guile/site/2.2"
5 export GUILE_LOAD_COMPILED_PATH="${GUILE_LOAD_COMPILED_PATH-}${GUILE_LOAD_COMPILED_PATH:+:}$1/share/guile/site/2.2"
6- elif test -d "$1/share/guile/site"
7- then
8 export GUILE_LOAD_PATH="${GUILE_LOAD_PATH-}${GUILE_LOAD_PATH:+:}$1/share/guile/site"
9 export GUILE_LOAD_COMPILED_PATH="${GUILE_LOAD_COMPILED_PATH-}${GUILE_LOAD_COMPILED_PATH:+:}$1/share/guile/site"
10 fi
1112- if test -d "$1/lib/guile/2.2/ccache"
13- then
14 export GUILE_LOAD_COMPILED_PATH="${GUILE_LOAD_COMPILED_PATH-}${GUILE_LOAD_COMPILED_PATH:+:}$1/lib/guile/2.2/ccache"
15 fi
1617- if test -d "$1/lib/guile/2.2/site-ccache"
18- then
19 export GUILE_LOAD_COMPILED_PATH="${GUILE_LOAD_COMPILED_PATH-}${GUILE_LOAD_COMPILED_PATH:+:}$1/lib/guile/2.2/site-ccache"
20 fi
21}
···1addGuileLibPath () {
2+ if test -d "$1/share/guile/site/2.2"; then
03 export GUILE_LOAD_PATH="${GUILE_LOAD_PATH-}${GUILE_LOAD_PATH:+:}$1/share/guile/site/2.2"
4 export GUILE_LOAD_COMPILED_PATH="${GUILE_LOAD_COMPILED_PATH-}${GUILE_LOAD_COMPILED_PATH:+:}$1/share/guile/site/2.2"
5+ elif test -d "$1/share/guile/site"; then
06 export GUILE_LOAD_PATH="${GUILE_LOAD_PATH-}${GUILE_LOAD_PATH:+:}$1/share/guile/site"
7 export GUILE_LOAD_COMPILED_PATH="${GUILE_LOAD_COMPILED_PATH-}${GUILE_LOAD_COMPILED_PATH:+:}$1/share/guile/site"
8 fi
910+ if test -d "$1/lib/guile/2.2/ccache"; then
011 export GUILE_LOAD_COMPILED_PATH="${GUILE_LOAD_COMPILED_PATH-}${GUILE_LOAD_COMPILED_PATH:+:}$1/lib/guile/2.2/ccache"
12 fi
1314+ if test -d "$1/lib/guile/2.2/site-ccache"; then
015 export GUILE_LOAD_COMPILED_PATH="${GUILE_LOAD_COMPILED_PATH-}${GUILE_LOAD_COMPILED_PATH:+:}$1/lib/guile/2.2/site-ccache"
16 fi
17}
···1+addGuileLibPath () {
2+ if test -d "$1/share/guile/site/3.0"; then
3+ export GUILE_LOAD_PATH="${GUILE_LOAD_PATH-}${GUILE_LOAD_PATH:+:}$1/share/guile/site/3.0"
4+ export GUILE_LOAD_COMPILED_PATH="${GUILE_LOAD_COMPILED_PATH-}${GUILE_LOAD_COMPILED_PATH:+:}$1/share/guile/site/3.0"
5+ elif test -d "$1/share/guile/site"; then
6+ export GUILE_LOAD_PATH="${GUILE_LOAD_PATH-}${GUILE_LOAD_PATH:+:}$1/share/guile/site"
7+ export GUILE_LOAD_COMPILED_PATH="${GUILE_LOAD_COMPILED_PATH-}${GUILE_LOAD_COMPILED_PATH:+:}$1/share/guile/site"
8+ fi
9+10+ if test -d "$1/lib/guile/3.0/ccache"; then
11+ export GUILE_LOAD_COMPILED_PATH="${GUILE_LOAD_COMPILED_PATH-}${GUILE_LOAD_COMPILED_PATH:+:}$1/lib/guile/3.0/ccache"
12+ fi
13+14+ if test -d "$1/lib/guile/3.0/site-ccache"; then
15+ export GUILE_LOAD_COMPILED_PATH="${GUILE_LOAD_COMPILED_PATH-}${GUILE_LOAD_COMPILED_PATH:+:}$1/lib/guile/3.0/site-ccache"
16+ fi
17+}
18+19+addEnvHooks "$hostOffset" addGuileLibPath
···1addGuileLibPath () {
2- if test -d "$1/share/guile/site"
3- then
4 export GUILE_LOAD_PATH="${GUILE_LOAD_PATH-}${GUILE_LOAD_PATH:+:}$1/share/guile/site"
5 fi
6}
···1addGuileLibPath () {
2+ if test -d "$1/share/guile/site"; then
03 export GUILE_LOAD_PATH="${GUILE_LOAD_PATH-}${GUILE_LOAD_PATH:+:}$1/share/guile/site"
4 fi
5}
···1-{ lib, stdenv, fetchurl, fetchpatch, pkg-config, libatomic_ops
2-, enableLargeConfig ? false # doc: https://github.com/ivmai/bdwgc/blob/v7.6.6/doc/README.macros#L179
3-}:
4-5-stdenv.mkDerivation rec {
6- pname = "boehm-gc";
7- version = "7.6.6";
8-9- src = fetchurl {
10- urls = [
11- "https://www.hboehm.info/gc/gc_source/gc-${version}.tar.gz"
12- "https://github.com/ivmai/bdwgc/releases/download/v${version}/gc-${version}.tar.gz"
13- ];
14- sha256 = "1p1r015a7jbpvkkbgzv1y8nxrbbp6dg0mq3ksi6ji0qdz3wfss79";
15- };
16-17- buildInputs = [ libatomic_ops ];
18- nativeBuildInputs = [ pkg-config ];
19-20- outputs = [ "out" "dev" "doc" ];
21- separateDebugInfo = stdenv.isLinux;
22-23- preConfigure = lib.optionalString (stdenv.hostPlatform.libc == "musl") ''
24- export NIX_CFLAGS_COMPILE+=" -D_GNU_SOURCE -DUSE_MMAP -DHAVE_DL_ITERATE_PHDR"
25- '';
26-27- patches = [ (fetchpatch {
28- url = "https://gitweb.gentoo.org/proj/musl.git/plain/dev-libs/boehm-gc/files/boehm-gc-7.6.0-sys_select.patch";
29- sha256 = "1gydwlklvci30f5dpp5ccw2p2qpph5y41r55wx9idamjlq66fbb3";
30- }) ] ++
31- # https://github.com/ivmai/bdwgc/pull/208
32- lib.optional stdenv.hostPlatform.isRiscV ./riscv.patch;
33-34- configureFlags =
35- [ "--enable-cplusplus" ]
36- ++ lib.optional enableLargeConfig "--enable-large-config"
37- ++ lib.optional (stdenv.hostPlatform.libc == "musl") "--disable-static";
38-39- doCheck = true; # not cross;
40-41- # Don't run the native `strip' when cross-compiling.
42- dontStrip = stdenv.hostPlatform != stdenv.buildPlatform;
43-44- enableParallelBuilding = true;
45-46- meta = {
47- description = "The Boehm-Demers-Weiser conservative garbage collector for C and C++";
48-49- longDescription = ''
50- The Boehm-Demers-Weiser conservative garbage collector can be used as a
51- garbage collecting replacement for C malloc or C++ new. It allows you
52- to allocate memory basically as you normally would, without explicitly
53- deallocating memory that is no longer useful. The collector
54- automatically recycles memory when it determines that it can no longer
55- be otherwise accessed.
56-57- The collector is also used by a number of programming language
58- implementations that either use C as intermediate code, want to
59- facilitate easier interoperation with C libraries, or just prefer the
60- simple collector interface.
61-62- Alternatively, the garbage collector may be used as a leak detector for
63- C or C++ programs, though that is not its primary goal.
64- '';
65-66- homepage = "https://hboehm.info/gc/";
67-68- # non-copyleft, X11-style license
69- license = "https://hboehm.info/gc/license.txt";
70-71- maintainers = [ ];
72- platforms = lib.platforms.all;
73- };
74-}
···22, gettext
23, libtasn1
24, iptables
25-, ebtables
26, libgcrypt
27, yajl
28, pmutils
···68# if you update, also bump <nixpkgs/pkgs/development/python-modules/libvirt/default.nix> and SysVirt in <nixpkgs/pkgs/top-level/perl-packages.nix>
69let
70 buildFromTarball = stdenv.isDarwin;
71- # libvirt hardcodes the binary name 'ebtables', but in nixpkgs the ebtables
72- # binary we want to use is named 'ebtables-legacy'.
73- # Create a derivation to alias the binary name so that libvirt can find the right one, and use that below.
74- ebtables-compat = stdenv.mkDerivation {
75- pname = "ebtables-compat";
76- version = ebtables.version;
77- src = null;
78- buildInputs = [ ebtables ];
79- buildCommand = ''
80- mkdir -p $out/bin
81- ln -sf ${ebtables}/bin/ebtables-legacy $out/bin/ebtables
82- '';
83- };
84in
85stdenv.mkDerivation rec {
86 pname = "libvirt";
···178 '';
179 in
180 ''
181- PATH=${lib.makeBinPath ([ dnsmasq ] ++ optionals stdenv.isLinux [ iproute2 iptables ebtables-compat lvm2 systemd numad ] ++ optionals enableIscsi [ openiscsi ])}:$PATH
182 # the path to qemu-kvm will be stored in VM's .xml and .save files
183 # do not use "''${qemu_kvm}/bin/qemu-kvm" to avoid bound VMs to particular qemu derivations
184 substituteInPlace src/lxc/lxc_conf.c \
···226227 postInstall =
228 let
229- # Keep the legacy iptables binary for now for backwards compatibility (comment on #109332)
230- binPath = [ iptables ebtables-compat iproute2 pmutils numad numactl bridge-utils dmidecode dnsmasq ] ++ optionals enableIscsi [ openiscsi ];
231 in
232 ''
233 substituteInPlace $out/libexec/libvirt-guests.sh \
···22, gettext
23, libtasn1
24, iptables
025, libgcrypt
26, yajl
27, pmutils
···67# if you update, also bump <nixpkgs/pkgs/development/python-modules/libvirt/default.nix> and SysVirt in <nixpkgs/pkgs/top-level/perl-packages.nix>
68let
69 buildFromTarball = stdenv.isDarwin;
000000000000070in
71stdenv.mkDerivation rec {
72 pname = "libvirt";
···164 '';
165 in
166 ''
167+ PATH=${lib.makeBinPath ([ dnsmasq ] ++ optionals stdenv.isLinux [ iproute2 iptables lvm2 systemd numad ] ++ optionals enableIscsi [ openiscsi ])}:$PATH
168 # the path to qemu-kvm will be stored in VM's .xml and .save files
169 # do not use "''${qemu_kvm}/bin/qemu-kvm" to avoid bound VMs to particular qemu derivations
170 substituteInPlace src/lxc/lxc_conf.c \
···212213 postInstall =
214 let
215+ binPath = [ iptables iproute2 pmutils numad numactl bridge-utils dmidecode dnsmasq ] ++ optionals enableIscsi [ openiscsi ];
0216 in
217 ''
218 substituteInPlace $out/libexec/libvirt-guests.sh \
···93 ++ lib.optional stdenv.isLinux "driversdev"
94 ++ lib.optional enableOpenCL "opencl";
95000096 # TODO: Figure out how to enable opencl without having a runtime dependency on clang
97 mesonFlags = [
98 "--sysconfdir=/etc"
···93 ++ lib.optional stdenv.isLinux "driversdev"
94 ++ lib.optional enableOpenCL "opencl";
9596+ preConfigure = ''
97+ PATH=${llvmPackages.libllvm.dev}/bin:$PATH
98+ '';
99+100 # TODO: Figure out how to enable opencl without having a runtime dependency on clang
101 mesonFlags = [
102 "--sysconfdir=/etc"
+2-2
pkgs/development/libraries/nss/default.nix
···27 # It will rebuild itself using the version of this package (NSS) and if
28 # an update is required do the required changes to the expression.
29 # Example: nix-shell ./maintainers/scripts/update.nix --argstr package cacert
30- version = "3.70";
3132in
33stdenv.mkDerivation rec {
···3637 src = fetchurl {
38 url = "mirror://mozilla/security/nss/releases/NSS_${lib.replaceStrings [ "." ] [ "_" ] version}_RTM/src/${pname}-${version}.tar.gz";
39- sha256 = "sha256-K4mruGAe5AW+isW1cD1x8fs4pRw6ZKPYNDh/eLMlURs=";
40 };
4142 depsBuildBuild = [ buildPackages.stdenv.cc ];
···27 # It will rebuild itself using the version of this package (NSS) and if
28 # an update is required do the required changes to the expression.
29 # Example: nix-shell ./maintainers/scripts/update.nix --argstr package cacert
30+ version = "3.71";
3132in
33stdenv.mkDerivation rec {
···3637 src = fetchurl {
38 url = "mirror://mozilla/security/nss/releases/NSS_${lib.replaceStrings [ "." ] [ "_" ] version}_RTM/src/${pname}-${version}.tar.gz";
39+ sha256 = "0ly2l3dv6z5hlxs72h5x6796ni3x1bq60saavaf42ddgv4ax7b4r";
40 };
4142 depsBuildBuild = [ buildPackages.stdenv.cc ];
···18 # If you need these, you can just add them to your environment.
1920 pname = "hypothesis";
21- version = "6.17.3";
2223 # Use github tarballs that includes tests
24 src = fetchFromGitHub {
25 owner = "HypothesisWorks";
26 repo = "hypothesis-python";
27 rev = "hypothesis-python-${version}";
28- sha256 = "1g96q3l97lq3xps36cv147dvj44nh1b0k67z817x7zfwyw844sgn";
29 };
3031 postUnpack = "sourceRoot=$sourceRoot/hypothesis-python";
···18 # If you need these, you can just add them to your environment.
1920 pname = "hypothesis";
21+ version = "6.23.2";
2223 # Use github tarballs that includes tests
24 src = fetchFromGitHub {
25 owner = "HypothesisWorks";
26 repo = "hypothesis-python";
27 rev = "hypothesis-python-${version}";
28+ sha256 = "1mdygyq6ra4kysi0y2g3a4bgpqrcb8ci2061117zyms419qwwh4l";
29 };
3031 postUnpack = "sourceRoot=$sourceRoot/hypothesis-python";
···78buildPythonPackage rec {
9 pname = "jax";
10- version = "0.2.19";
1112 # Fetching from pypi doesn't allow us to run the test suite. See https://discourse.nixos.org/t/pythonremovetestsdir-hook-being-run-before-checkphase/14612/3.
13 src = fetchFromGitHub {
14 owner = "google";
15 repo = pname;
16 rev = "jax-v${version}";
17- sha256 = "sha256-pVn62G7pydR7ybkf7gSbu0FlEq2c0US6H2GTBAljup4=";
18 };
1920 # jaxlib is _not_ included in propagatedBuildInputs because there are
···78buildPythonPackage rec {
9 pname = "jax";
10+ version = "0.2.21";
1112 # Fetching from pypi doesn't allow us to run the test suite. See https://discourse.nixos.org/t/pythonremovetestsdir-hook-being-run-before-checkphase/14612/3.
13 src = fetchFromGitHub {
14 owner = "google";
15 repo = pname;
16 rev = "jax-v${version}";
17+ sha256 = "05w157h6jv20k8w2gnmlxbycmzf24lr5v392q0c5v0qcql11q7pn";
18 };
1920 # jaxlib is _not_ included in propagatedBuildInputs because there are
+32-12
pkgs/development/python-modules/jedi/default.nix
···1-{ lib, buildPythonPackage, fetchFromGitHub, fetchPypi, pytest, glibcLocales, tox, pytest-cov, parso }:
0000000000023buildPythonPackage rec {
4 pname = "jedi";
5- # switch back to stable version on the next release.
6- # current stable is incompatible with parso
7- version = "2020-08-06";
89 src = fetchFromGitHub {
10 owner = "davidhalter";
11 repo = "jedi";
12- rev = "216f976fd5cab7a460e5d287e853d11759251e52";
13- sha256 = "1kb2ajzigadl95pnwglg8fxz9cvpg9hx30hqqj91jkgrc7djdldj";
14 fetchSubmodules = true;
15 };
1617- checkInputs = [ pytest glibcLocales tox pytest-cov ];
1819- propagatedBuildInputs = [ parso ];
000002021- checkPhase = ''
22- LC_ALL="en_US.UTF-8" py.test test
23 '';
2425- # tox required for tests: https://github.com/davidhalter/jedi/issues/808
26- doCheck = false;
000002728 meta = with lib; {
29 homepage = "https://github.com/davidhalter/jedi";
···2324buildPythonPackage rec {
25 pname = "nbconvert";
26- version = "6.1.0";
2728 src = fetchPypi {
29 inherit pname version;
30- sha256 = "d22a8ff202644d31db254d24d52c3a96c82156623fcd7c7f987bba2612303ec9";
31 };
3233 # Add $out/share/jupyter to the list of paths that are used to search for
···2324buildPythonPackage rec {
25 pname = "nbconvert";
26+ version = "6.2.0";
2728 src = fetchPypi {
29 inherit pname version;
30+ sha256 = "16ceecd0afaa8fd26c245fa32e2c52066c02f13aa73387fffafd84750baea863";
31 };
3233 # Add $out/share/jupyter to the list of paths that are used to search for
···1415 meta = with lib; {
16 description = "A one step database access tool, built on the SQLAlchemy ORM";
17- homepage = "https://bitbucket.org/zzzeek/sqlsoup";
18 license = licenses.mit;
19 maintainers = [ maintainers.globin ];
020 };
21}
···1415 meta = with lib; {
16 description = "A one step database access tool, built on the SQLAlchemy ORM";
17+ homepage = "https://github.com/zzzeek/sqlsoup";
18 license = licenses.mit;
19 maintainers = [ maintainers.globin ];
20+ broken = true; # incompatible with sqlalchemy>=1.4 and unmaintained since 2016
21 };
22}
···1set -eu
2set -o pipefail
034if [[ -n "${BASH_VERSINFO-}" && "${BASH_VERSINFO-}" -lt 4 ]]; then
5 echo "Detected Bash version that isn't supported by Nixpkgs (${BASH_VERSION})"
···409 # The current package's host and target offset together
410 # provide a <=-preserving homomorphism from the relative
411 # offsets to current offset
412- local -i mapOffsetResult
413 function mapOffset() {
414 local -r inputOffset="$1"
0415 if (( inputOffset <= 0 )); then
416- local -r outputOffset=$((inputOffset + hostOffset))
417 else
418- local -r outputOffset=$((inputOffset - 1 + targetOffset))
419 fi
420- mapOffsetResult="$outputOffset"
421 }
422423 # Host offset relative to that of the package whose immediate
···429430 # Host offset relative to the package currently being
431 # built---as absolute an offset as will be used.
432- mapOffset relHostOffset
433- local -i hostOffsetNext="$mapOffsetResult"
434435 # Ensure we're in bounds relative to the package currently
436 # being built.
437- [[ "${allPlatOffsets[*]}" = *"$hostOffsetNext"* ]] || continue
438439 # Target offset relative to the *host* offset of the package
440 # whose immediate dependencies we are currently exploring.
441- local -i relTargetOffset
442 for relTargetOffset in "${allPlatOffsets[@]}"; do
443 (( "$relHostOffset" <= "$relTargetOffset" )) || continue
444···448449 # Target offset relative to the package currently being
450 # built.
451- mapOffset relTargetOffset
452- local -i targetOffsetNext="$mapOffsetResult"
453454 # Once again, ensure we're in bounds relative to the
455 # package currently being built.
456- [[ "${allPlatOffsets[*]}" = *"$targetOffsetNext"* ]] || continue
457458 [[ -f "$pkg/nix-support/$file" ]] || continue
459
···1set -eu
2set -o pipefail
3+shopt -s inherit_errexit
45if [[ -n "${BASH_VERSINFO-}" && "${BASH_VERSINFO-}" -lt 4 ]]; then
6 echo "Detected Bash version that isn't supported by Nixpkgs (${BASH_VERSION})"
···410 # The current package's host and target offset together
411 # provide a <=-preserving homomorphism from the relative
412 # offsets to current offset
0413 function mapOffset() {
414 local -r inputOffset="$1"
415+ local -n outputOffset="$2"
416 if (( inputOffset <= 0 )); then
417+ outputOffset=$((inputOffset + hostOffset))
418 else
419+ outputOffset=$((inputOffset - 1 + targetOffset))
420 fi
0421 }
422423 # Host offset relative to that of the package whose immediate
···429430 # Host offset relative to the package currently being
431 # built---as absolute an offset as will be used.
432+ local hostOffsetNext
433+ mapOffset "$relHostOffset" hostOffsetNext
434435 # Ensure we're in bounds relative to the package currently
436 # being built.
437+ (( -1 <= hostOffsetNext && hostOffsetNext <= 1 )) || continue
438439 # Target offset relative to the *host* offset of the package
440 # whose immediate dependencies we are currently exploring.
441+ local relTargetOffset
442 for relTargetOffset in "${allPlatOffsets[@]}"; do
443 (( "$relHostOffset" <= "$relTargetOffset" )) || continue
444···448449 # Target offset relative to the package currently being
450 # built.
451+ local targetOffsetNext
452+ mapOffset "$relTargetOffset" targetOffsetNext
453454 # Once again, ensure we're in bounds relative to the
455 # package currently being built.
456+ (( -1 <= hostOffsetNext && hostOffsetNext <= 1 )) || continue
457458 [[ -f "$pkg/nix-support/$file" ]] || continue
459
+1-6
pkgs/stdenv/linux/default.nix
···375 targetPlatform = localSystem;
376 inherit config;
377378- preHook = ''
379- # Make "strip" produce deterministic output, by setting
380- # timestamps etc. to a fixed value.
381- commonStripFlags="--enable-deterministic-archives"
382- ${commonPreHook}
383- '';
384385 initialPath =
386 ((import ../common-path.nix) {pkgs = prevStage;});
···1+From e8b56ebd536e82b15542a00c888109471936bfda Mon Sep 17 00:00:00 2001
2+From: =?UTF-8?q?P=C3=A1draig=20Brady?= <P@draigBrady.com>
3+Date: Fri, 24 Sep 2021 20:57:41 +0100
4+Subject: [PATCH] chmod: fix exit status when ignoring symlinks
5+6+* src/chmod.c: Reorder enum so CH_NOT_APPLIED
7+can be treated as a non error.
8+* tests/chmod/ignore-symlink.sh: A new test.
9+* tests/local.mk: Reference the new test.
10+* NEWS: Mention the bug fix.
11+Fixes https://bugs.gnu.org/50784
12+---
13+ NEWS | 6 ++++++
14+ src/chmod.c | 4 ++--
15+ tests/chmod/ignore-symlink.sh | 31 +++++++++++++++++++++++++++++++
16+ tests/local.mk | 1 +
17+ 4 files changed, 40 insertions(+), 2 deletions(-)
18+ create mode 100755 tests/chmod/ignore-symlink.sh
19+20+diff --git a/NEWS b/NEWS
21+index a1470a7d7..1cb3c28a1 100644
22+--- a/NEWS
23++++ b/NEWS
24+@@ -2,6 +2,12 @@ GNU coreutils NEWS -*- outline -*-
25+26+ * Noteworthy changes in release ?.? (????-??-??) [?]
27+28++** Bug fixes
29++
30++ chmod -R no longer exits with error status when encountering symlinks.
31++ All files would be processed correctly, but the exit status was incorrect.
32++ [bug introduced in coreutils-9.0]
33++
34+35+ * Noteworthy changes in release 9.0 (2021-09-24) [stable]
36+37+diff --git a/src/chmod.c b/src/chmod.c
38+index 37b04f500..57ac47f33 100644
39+--- a/src/chmod.c
40++++ b/src/chmod.c
41+@@ -44,8 +44,8 @@ struct change_status
42+ enum
43+ {
44+ CH_NO_STAT,
45+- CH_NOT_APPLIED,
46+ CH_FAILED,
47++ CH_NOT_APPLIED,
48+ CH_NO_CHANGE_REQUESTED,
49+ CH_SUCCEEDED
50+ }
51+@@ -322,7 +322,7 @@ process_file (FTS *fts, FTSENT *ent)
52+ if ( ! recurse)
53+ fts_set (fts, ent, FTS_SKIP);
54+55+- return CH_NO_CHANGE_REQUESTED <= ch.status;
56++ return CH_NOT_APPLIED <= ch.status;
57+ }
58+59+ /* Recursively change the modes of the specified FILES (the last entry
60+diff --git a/tests/chmod/ignore-symlink.sh b/tests/chmod/ignore-symlink.sh
61+new file mode 100755
62+index 000000000..5ce3de816
63+--- /dev/null
64++++ b/tests/chmod/ignore-symlink.sh
65+@@ -0,0 +1,31 @@
66++#!/bin/sh
67++# Test for proper exit code of chmod on a processed symlink.
68++
69++# Copyright (C) 2021 Free Software Foundation, Inc.
70++
71++# This program is free software: you can redistribute it and/or modify
72++# it under the terms of the GNU General Public License as published by
73++# the Free Software Foundation, either version 3 of the License, or
74++# (at your option) any later version.
75++
76++# This program is distributed in the hope that it will be useful,
77++# but WITHOUT ANY WARRANTY; without even the implied warranty of
78++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
79++# GNU General Public License for more details.
80++
81++# You should have received a copy of the GNU General Public License
82++# along with this program. If not, see <https://www.gnu.org/licenses/>.
83++
84++. "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
85++print_ver_ chmod
86++
87++mkdir dir || framework_failure_
88++touch dir/f || framework_failure_
89++ln -s f dir/l || framework_failure_
90++
91++# This operation ignores symlinks but should succeed.
92++chmod u+w -R dir 2> out || fail=1
93++
94++compare /dev/null out || fail=1
95++
96++Exit $fail
97+diff --git a/tests/local.mk b/tests/local.mk
98+index 228d0e368..b5b893fb7 100644
99+--- a/tests/local.mk
100++++ b/tests/local.mk
101+@@ -456,6 +456,7 @@ all_tests = \
102+ tests/chmod/c-option.sh \
103+ tests/chmod/equal-x.sh \
104+ tests/chmod/equals.sh \
105++ tests/chmod/ignore-symlink.sh \
106+ tests/chmod/inaccessible.sh \
107+ tests/chmod/octal.sh \
108+ tests/chmod/setgid.sh \
···4, substituteAll
5, libpcap
6, openssl
07}:
89stdenv.mkDerivation rec {
···31 buildInputs = [
32 libpcap
33 openssl
034 ];
3536 postPatch = ''
37- # strip is not found when cross compiling with seemingly no way to point
38- # make to the right place, fixup phase will correctly strip
39- # everything anyway so we remove it from the Makefiles
40 for file in $(find -name Makefile.linux); do
41- substituteInPlace "$file" --replace '$(INSTALL) -s' '$(INSTALL)'
42 substituteInPlace "$file" --replace '-m 4550' '-m 550'
43 done
00044 '';
45000046 installPhase = ''
47 runHook preInstall
48 mkdir -p $out/bin
···52 '';
5354 postFixup = ''
55- for tgt in pon poff plog; do
56- substituteInPlace "$out/bin/$tgt" --replace "/usr/sbin" "$out/bin"
57- done
58 '';
5960 meta = with lib; {
···25 mkdir -p $out/Applications
26 mv $out/bin/glogg.app $out/Applications/glogg.app
27 rm -fr $out/{bin,share}
028 '';
2930 meta = with lib; {
+2-2
pkgs/tools/text/gnugrep/default.nix
···5# cgit) that are needed here should be included directly in Nixpkgs as
6# files.
78-let version = "3.6"; in
910stdenv.mkDerivation {
11 pname = "gnugrep";
···1314 src = fetchurl {
15 url = "mirror://gnu/grep/grep-${version}.tar.xz";
16- sha256 = "0gipv6bzkm1aihj0ncqpyh164xrzgcxcv9r1kwzyk2g1mzl1azk6";
17 };
1819 # Perl is needed for testing
···5# cgit) that are needed here should be included directly in Nixpkgs as
6# files.
78+let version = "3.7"; in
910stdenv.mkDerivation {
11 pname = "gnugrep";
···1314 src = fetchurl {
15 url = "mirror://gnu/grep/grep-${version}.tar.xz";
16+ sha256 = "0g42svbc1nq5bamxfj6x7320wli4dlj86padk0hwgbk04hqxl42w";
17 };
1819 # Perl is needed for testing
+6-3
pkgs/tools/text/source-highlight/default.nix
···4 pname = "source-highlight";
5 version = "3.1.9";
6007 src = fetchurl {
8 url = "mirror://gnu/src-highlite/${pname}-${version}.tar.gz";
9 sha256 = "148w47k3zswbxvhg83z38ifi85f9dqcpg7icvvw1cm6bg21x4zrs";
···28 strictDeps = true;
29 buildInputs = [ boost ];
3031- configureFlags = [ "--with-boost=${boost.out}" ];
0003233 doCheck = !stdenv.cc.isClang;
34···36 # Upstream uses the same intermediate files in multiple tests, running
37 # them in parallel by make will eventually break one or more tests.
38 enableParallelChecking = false;
39-40- outputs = [ "out" "doc" "dev" ];
4142 meta = with lib; {
43 description = "Source code renderer with syntax highlighting";
···4 pname = "source-highlight";
5 version = "3.1.9";
67+ outputs = [ "out" "doc" "dev" ];
8+9 src = fetchurl {
10 url = "mirror://gnu/src-highlite/${pname}-${version}.tar.gz";
11 sha256 = "148w47k3zswbxvhg83z38ifi85f9dqcpg7icvvw1cm6bg21x4zrs";
···30 strictDeps = true;
31 buildInputs = [ boost ];
3233+ configureFlags = [
34+ "--with-boost=${boost.out}"
35+ "--with-bash-completion=${placeholder "out"}/share/bash_completion.d"
36+ ];
3738 doCheck = !stdenv.cc.isClang;
39···41 # Upstream uses the same intermediate files in multiple tests, running
42 # them in parallel by make will eventually break one or more tests.
43 enableParallelChecking = false;
004445 meta = with lib; {
46 description = "Source code renderer with syntax highlighting";
+4-4
pkgs/tools/typesetting/tex/texlive/combine.nix
···33 ++ lib.optional (lib.any pkgNeedsRuby splitBin.wrong) ruby;
34 };
3536- uniqueStrings = list: lib.sort (a: b: a < b) (lib.unique list);
3738- mkUniqueOutPaths = pkgs: uniqueStrings
39 (map (p: p.outPath) (builtins.filter lib.isDerivation pkgs));
4041in (buildEnv {
···124 # now filter hyphenation patterns and formats
125 (let
126 hyphens = lib.filter (p: p.hasHyphens or false && p.tlType == "run") pkgList.splitBin.wrong;
127- hyphenPNames = uniqueStrings (map (p: p.pname) hyphens);
128 formats = lib.filter (p: p.hasFormats or false && p.tlType == "run") pkgList.splitBin.wrong;
129- formatPNames = uniqueStrings (map (p: p.pname) formats);
130 # sed expression that prints the lines in /start/,/end/ except for /end/
131 section = start: end: "/${start}/,/${end}/{ /${start}/p; /${end}/!p; };\n";
132 script =
···33 ++ lib.optional (lib.any pkgNeedsRuby splitBin.wrong) ruby;
34 };
3536+ sortedUniqueStrings = list: lib.sort (a: b: a < b) (lib.unique list);
3738+ mkUniqueOutPaths = pkgs: lib.unique
39 (map (p: p.outPath) (builtins.filter lib.isDerivation pkgs));
4041in (buildEnv {
···124 # now filter hyphenation patterns and formats
125 (let
126 hyphens = lib.filter (p: p.hasHyphens or false && p.tlType == "run") pkgList.splitBin.wrong;
127+ hyphenPNames = sortedUniqueStrings (map (p: p.pname) hyphens);
128 formats = lib.filter (p: p.hasFormats or false && p.tlType == "run") pkgList.splitBin.wrong;
129+ formatPNames = sortedUniqueStrings (map (p: p.pname) formats);
130 # sed expression that prints the lines in /start/,/end/ except for /end/
131 section = start: end: "/${start}/,/${end}/{ /${start}/p; /${end}/!p; };\n";
132 script =