···5757 </listitem>
5858 <listitem>
5959 <para>
6060+ bash now defaults to major version 5.
6161+ </para>
6262+ </listitem>
6363+ <listitem>
6464+ <para>
6565+ Systemd was updated to version 249 (from 247).
6666+ </para>
6767+ </listitem>
6868+ <listitem>
6969+ <para>
6070 Pantheon desktop has been updated to version 6. Due to changes
6171 of screen locker, if locking doesn’t work for you, please try
6272 <literal>gsettings set org.gnome.desktop.lockdown disable-lock-screen false</literal>.
+65-53
nixos/doc/manual/release-notes/rl-2111.section.md
···2020 This allows activation scripts to output what they would change if the activation was really run.
2121 The users/modules activation script supports this and outputs some of is actions.
22222323+- bash now defaults to major version 5.
2424+2525+- Systemd was updated to version 249 (from 247).
2626+2327- Pantheon desktop has been updated to version 6. Due to changes of screen locker, if locking doesn't work for you, please try `gsettings set org.gnome.desktop.lockdown disable-lock-screen false`.
24282529- `kubernetes-helm` now defaults to 3.7.0, which introduced some breaking changes to the experimental OCI manifest format. See [HIP 6](https://github.com/helm/community/blob/main/hips/hip-0006.md) for more details.
···2933- [btrbk](https://digint.ch/btrbk/index.html), a backup tool for btrfs subvolumes, taking advantage of btrfs specific capabilities to create atomic snapshots and transfer them incrementally to your backup locations. Available as [services.btrbk](options.html#opt-services.brtbk.instances).
30343135- [clipcat](https://github.com/xrelkd/clipcat/), an X11 clipboard manager written in Rust. Available at [services.clipcat](options.html#o
3232-pt-services.clipcat.enable).
3636+ pt-services.clipcat.enable).
33373438- [geoipupdate](https://github.com/maxmind/geoipupdate), a GeoIP database updater from MaxMind. Available as [services.geoipupdate](options.html#opt-services.geoipupdate.enable).
3539···6771 Available as [isso](#opt-services.isso.enable)
68726973- [navidrome](https://www.navidrome.org/), a personal music streaming server with
7070-subsonic-compatible api. Available as [navidrome](#opt-services.navidrome.enable).
7474+ subsonic-compatible api. Available as [navidrome](#opt-services.navidrome.enable).
71757276- [fluidd](https://docs.fluidd.xyz/), a Klipper web interface for managing 3d printers using moonraker. Available as [fluidd](#opt-services.fluidd.enable).
7377···103107 and advises all users to use `paperless-ng` instead.
104108105109 Users can use the `services.paperless-ng` module as a replacement while noting the following incompatibilities:
106106- - `services.paperless.ocrLanguages` has no replacement. Users should migrate to [`services.paperless-ng.extraConfig`](options.html#opt-services.paperless-ng.extraConfig) instead:
107107- ```nix
108108- {
109109- services.paperless-ng.extraConfig = {
110110- # Provide languages as ISO 639-2 codes
111111- # separated by a plus (+) sign.
112112- # https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes
113113- PAPERLESS_OCR_LANGUAGE = "deu+eng+jpn"; # German & English & Japanse
114114- };
115115- }
116116- ```
117110118118- - If you previously specified `PAPERLESS_CONSUME_MAIL_*` settings in
119119- `services.paperless.extraConfig` you should remove those options now. You
120120- now *must* define those settings in the admin interface of paperless-ng.
111111+ - `services.paperless.ocrLanguages` has no replacement. Users should migrate to [`services.paperless-ng.extraConfig`](options.html#opt-services.paperless-ng.extraConfig) instead:
121112122122- - Option `services.paperless.manage` no longer exists.
123123- Use the script at `${services.paperless-ng.dataDir}/paperless-ng-manage` instead.
124124- Note that this script only exists after the `paperless-ng` service has been
125125- started at least once.
113113+ ```nix
114114+ {
115115+ services.paperless-ng.extraConfig = {
116116+ # Provide languages as ISO 639-2 codes
117117+ # separated by a plus (+) sign.
118118+ # https://en.wikipedia.org/wiki/List_of_ISO_639-2_codes
119119+ PAPERLESS_OCR_LANGUAGE = "deu+eng+jpn"; # German & English & Japanse
120120+ };
121121+ }
122122+ ```
126123127127- - After switching to the new system configuration you should run the Django
128128- management command to reindex your documents and optionally create a user,
129129- if you don't have one already.
124124+ - If you previously specified `PAPERLESS_CONSUME_MAIL_*` settings in
125125+ `services.paperless.extraConfig` you should remove those options now. You
126126+ now _must_ define those settings in the admin interface of paperless-ng.
130127131131- To do so, enter the data directory (the value of
132132- `services.paperless-ng.dataDir`, `/var/lib/paperless` by default), switch
133133- to the paperless user and execute the management command like below:
134134- ```
135135- $ cd /var/lib/paperless
136136- $ su paperless -s /bin/sh
137137- $ ./paperless-ng-manage document_index reindex
138138- # if not already done create a user account, paperless-ng requires a login
139139- $ ./paperless-ng-manage createsuperuser
140140- Username (leave blank to use 'paperless'): my-user-name
141141- Email address: me@example.com
142142- Password: **********
143143- Password (again): **********
144144- Superuser created successfully.
145145- ```
128128+ - Option `services.paperless.manage` no longer exists.
129129+ Use the script at `${services.paperless-ng.dataDir}/paperless-ng-manage` instead.
130130+ Note that this script only exists after the `paperless-ng` service has been
131131+ started at least once.
132132+133133+ - After switching to the new system configuration you should run the Django
134134+ management command to reindex your documents and optionally create a user,
135135+ if you don't have one already.
136136+137137+ To do so, enter the data directory (the value of
138138+ `services.paperless-ng.dataDir`, `/var/lib/paperless` by default), switch
139139+ to the paperless user and execute the management command like below:
140140+141141+ ```
142142+ $ cd /var/lib/paperless
143143+ $ su paperless -s /bin/sh
144144+ $ ./paperless-ng-manage document_index reindex
145145+ # if not already done create a user account, paperless-ng requires a login
146146+ $ ./paperless-ng-manage createsuperuser
147147+ Username (leave blank to use 'paperless'): my-user-name
148148+ Email address: me@example.com
149149+ Password: **********
150150+ Password (again): **********
151151+ Superuser created successfully.
152152+ ```
146153147154- The `staticjinja` package has been upgraded from 1.0.4 to 4.1.0
148155···239246* The `bitwarden_rs` packages and modules were renamed to `vaultwarden`
240247 [following upstream](https://github.com/dani-garcia/vaultwarden/discussions/1642). More specifically,
241248242242- * `pkgs.bitwarden_rs`, `pkgs.bitwarden_rs-sqlite`, `pkgs.bitwarden_rs-mysql` and
249249+ - `pkgs.bitwarden_rs`, `pkgs.bitwarden_rs-sqlite`, `pkgs.bitwarden_rs-mysql` and
243250 `pkgs.bitwarden_rs-postgresql` were renamed to `pkgs.vaultwarden`, `pkgs.vaultwarden-sqlite`,
244251 `pkgs.vaultwarden-mysql` and `pkgs.vaultwarden-postgresql`, respectively.
245245- * Old names are preserved as aliases for backwards compatibility, but may be removed in the future.
246246- * The `bitwarden_rs` executable was also renamed to `vaultwarden` in all packages.
247252248248- * `pkgs.bitwarden_rs-vault` was renamed to `pkgs.vaultwarden-vault`.
249249- * `pkgs.bitwarden_rs-vault` is preserved as an alias for backwards compatibility, but may be removed in the future.
250250- * The static files were moved from `/usr/share/bitwarden_rs` to `/usr/share/vaultwarden`.
253253+ - Old names are preserved as aliases for backwards compatibility, but may be removed in the future.
254254+ - The `bitwarden_rs` executable was also renamed to `vaultwarden` in all packages.
251255252252- * The `services.bitwarden_rs` config module was renamed to `services.vaultwarden`.
253253- * `services.bitwarden_rs` is preserved as an alias for backwards compatibility, but may be removed in the future.
256256+ - `pkgs.bitwarden_rs-vault` was renamed to `pkgs.vaultwarden-vault`.
257257+258258+ - `pkgs.bitwarden_rs-vault` is preserved as an alias for backwards compatibility, but may be removed in the future.
259259+ - The static files were moved from `/usr/share/bitwarden_rs` to `/usr/share/vaultwarden`.
260260+261261+ - The `services.bitwarden_rs` config module was renamed to `services.vaultwarden`.
262262+263263+ - `services.bitwarden_rs` is preserved as an alias for backwards compatibility, but may be removed in the future.
254264255255- * `systemd.services.bitwarden_rs`, `systemd.services.backup-bitwarden_rs` and `systemd.timers.backup-bitwarden_rs`
265265+ - `systemd.services.bitwarden_rs`, `systemd.services.backup-bitwarden_rs` and `systemd.timers.backup-bitwarden_rs`
256266 were renamed to `systemd.services.vaultwarden`, `systemd.services.backup-vaultwarden` and
257267 `systemd.timers.backup-vaultwarden`, respectively.
258258- * Old names are preserved as aliases for backwards compatibility, but may be removed in the future.
268268+269269+ - Old names are preserved as aliases for backwards compatibility, but may be removed in the future.
259270260260- * `users.users.bitwarden_rs` and `users.groups.bitwarden_rs` were renamed to `users.users.vaultwarden` and
271271+ - `users.users.bitwarden_rs` and `users.groups.bitwarden_rs` were renamed to `users.users.vaultwarden` and
261272 `users.groups.vaultwarden`, respectively.
262273263263- * The data directory remains located at `/var/lib/bitwarden_rs`, for backwards compatibility.
274274+ - The data directory remains located at `/var/lib/bitwarden_rs`, for backwards compatibility.
264275265276- `yggdrasil` was upgraded to a new major release with breaking changes, see [upstream changelog](https://github.com/yggdrasil-network/yggdrasil-go/releases/tag/v0.4.0).
266277···273284- `tt-rss` was upgraded to the commit on 2021-06-21, which has breaking changes. If you use `services.tt-rss.extraConfig` you should migrate to the `putenv`-style configuration. See [this Discourse post](https://community.tt-rss.org/t/rip-config-php-hello-classes-config-php/4337) in the tt-rss forums for more details.
274285275286- The following Visual Studio Code extensions were renamed to keep the naming convention uniform.
287287+276288 - `bbenoist.Nix` -> `bbenoist.nix`
277289 - `CoenraadS.bracket-pair-colorizer` -> `coenraads.bracket-pair-colorizer`
278290 - `golang.Go` -> `golang.go`
···292304- The `yambar` package has been split into `yambar` and `yambar-wayland`, corresponding to the xorg and wayland backend respectively. Please switch to `yambar-wayland` if you are on wayland.
293305294306- The `services.minio` module gained an additional option `consoleAddress`, that
295295-configures the address and port the web UI is listening, it defaults to `:9001`.
296296-To be able to access the web UI this port needs to be opened in the firewall.
307307+ configures the address and port the web UI is listening, it defaults to `:9001`.
308308+ To be able to access the web UI this port needs to be opened in the firewall.
297309298310- The `varnish` package was upgraded from 6.3.x to 6.5.x. `varnish60` for the last LTS release is also still available.
299311300300-- The `kubernetes` package was upgraded to 1.22. The `kubernetes.apiserver.kubeletHttps` option was removed and HTTPS is always used.
312312+- The `kubernetes` package was upgraded to 1.22. The `kubernetes.apiserver.kubeletHttps` option was removed and HTTPS is always used.
301313302314- The attribute `linuxPackages_latest_hardened` was dropped because the hardened patches
303315 lag behind the upstream kernel which made version bumps harder. If you want to use
···11-WGET_ARGS=( http://download.kde.org/stable/release-service/21.08.0/src -A '*.tar.xz' )
11+WGET_ARGS=( http://download.kde.org/stable/release-service/21.08.1/src -A '*.tar.xz' )
···6565 # Fix references to gettext introduced by ./git-sh-i18n.patch
6666 substituteInPlace git-sh-i18n.sh \
6767 --subst-var-by gettext ${gettext}
6868+6969+ # ensure we are using the correct shell when executing the test scripts
7070+ patchShebangs t/*.sh
6871 '';
69727073 nativeBuildInputs = [ gettext perlPackages.perl makeWrapper ]
···318321319322 # Flaky tests:
320323 disable_test t5319-multi-pack-index
324324+ disable_test t6421-merge-partial-clone
321325322326 ${lib.optionalString (!perlSupport) ''
323327 # request-pull is a Bash script that invokes Perl, so it is not available
···99 echo "gzipping man pages under $dir/share/man/"
10101111 # Compress all uncompressed manpages. Don't follow symlinks, etc.
1212- find "$dir"/share/man/ -type f -a '!' -regex '.*\.\(bz2\|gz\)$' -print0 \
1212+ find "$dir"/share/man/ -type f -a '!' -regex '.*\.\(bz2\|gz\|xz\)$' -print0 \
1313 | while IFS= read -r -d $'\0' f
1414 do
1515 if gzip -c -n "$f" > "$f".gz; then
···2020 done
21212222 # Point symlinks to compressed manpages.
2323- find "$dir"/share/man/ -type l -a '!' -regex '.*\.\(bz2\|gz\)$' -print0 \
2323+ find "$dir"/share/man/ -type l -a '!' -regex '.*\.\(bz2\|gz\|xz\)$' -print0 \
2424 | sort -z \
2525 | while IFS= read -r -d $'\0' f
2626 do
+1-1
pkgs/build-support/setup-hooks/move-docs.sh
···6677_moveToShare() {
88 forceShare=${forceShare:=man doc info}
99- if [ -z "$forceShare" -o -z "$out" ]; then return; fi
99+ if [[ -z "$out" ]]; then return; fi
10101111 for d in $forceShare; do
1212 if [ -d "$out/$d" ]; then
···11-WGET_ARGS=( https://download.kde.org/stable/plasma/5.22.4/ -A '*.tar.xz' )
11+WGET_ARGS=( https://download.kde.org/stable/plasma/5.22.5/ -A '*.tar.xz' )
···11-# New rust versions should first go to staging.
22-# Things to check after updating:
33-# 1. Rustc should produce rust binaries on x86_64-linux, aarch64-linux and x86_64-darwin:
44-# i.e. nix-shell -p fd or @GrahamcOfBorg build fd on github
55-# This testing can be also done by other volunteers as part of the pull
66-# request review, in case platforms cannot be covered.
77-# 2. The LLVM version used for building should match with rust upstream.
88-# Check the version number in the src/llvm-project git submodule in:
99-# https://github.com/rust-lang/rust/blob/<version-tag>/.gitmodules
1010-# 3. Firefox and Thunderbird should still build on x86_64-linux.
1111-1212-{ stdenv, lib
1313-, buildPackages
1414-, newScope, callPackage
1515-, CoreFoundation, Security
1616-, pkgsBuildTarget, pkgsBuildBuild, pkgsBuildHost
1717-, makeRustPlatform
1818-, llvmPackages_11
1919-, llvmPackages_12, llvm_12
2020-} @ args:
2121-2222-import ./default.nix {
2323- rustcVersion = "1.54.0";
2424- rustcSha256 = "0xk9dhfff16caambmwij67zgshd8v9djw6ha0fnnanlv7rii31dc";
2525-2626- llvmSharedForBuild = pkgsBuildBuild.llvmPackages_12.libllvm.override { enableSharedLibraries = true; };
2727- llvmSharedForHost = pkgsBuildHost.llvmPackages_12.libllvm.override { enableSharedLibraries = true; };
2828- llvmSharedForTarget = pkgsBuildTarget.llvmPackages_12.libllvm.override { enableSharedLibraries = true; };
2929-3030- llvmBootstrapForDarwin = llvmPackages_11;
3131-3232- # For use at runtime
3333- llvmShared = llvm_12.override { enableSharedLibraries = true; };
3434-3535- # Note: the version MUST be one version prior to the version we're
3636- # building
3737- bootstrapVersion = "1.53.0";
3838-3939- # fetch hashes by running `print-hashes.sh ${bootstrapVersion}`
4040- bootstrapHashes = {
4141- i686-unknown-linux-gnu = "4ebeeba05448b9484bb2845dba2ff4c0e2b7208fa8b08bef2b2ca3b171d0db99";
4242- x86_64-unknown-linux-gnu = "5e9e556d2ccce27aa8f01a528f1348bf8cdd34496c35ec2abf131660b9792fed";
4343- x86_64-unknown-linux-musl = "908b6163b62660f289bcd1eda1a0eb6d849b4b29da12546d24a033e5718e93ff";
4444- arm-unknown-linux-gnueabihf = "6ae3108f4a0b0478c76f5dbaf1827c9e4a983fa78a9f973b24d501e693cfdcab";
4545- armv7-unknown-linux-gnueabihf = "886e78f7c5bd92e16322ca3af70d1899c064837343cdfeb9a216b76edfd18157";
4646- aarch64-unknown-linux-gnu = "cba81d5c3d16deee04098ea18af8636bc7415315a44c9e44734fd669aa778040";
4747- aarch64-unknown-linux-musl = "a0065a6313bf370f2844af6f3b47fe292360e9cca3da31b5f6cb32db311ba686";
4848- x86_64-apple-darwin = "940a4488f907b871f9fb1be309086509e4a48efb19303f8b5fe115c6f12abf43";
4949- aarch64-apple-darwin = "c519da905514c05240a8fe39e459de2c4ef5943535e3655502e8fb756070aee1";
5050- powerpc64le-unknown-linux-gnu = "9f6c17427d1023b10694e4ba60d6d9deec0aeb07d051f99763789ed18e07e2e6";
5151- riscv64gc-unknown-linux-gnu = "6ae23ac00269df72b0790f10f2d9a98d03acf542c6090f4d30a87365fafd14ed";
5252- };
5353-5454- selectRustPackage = pkgs: pkgs.rust_1_54;
5555-5656- rustcPatches = [
5757- ];
5858-}
5959-6060-(builtins.removeAttrs args [ "fetchpatch" "pkgsBuildHost" "llvmPackages_11" "llvmPackages_12" "llvm_12"])
+60
pkgs/development/compilers/rust/1_55.nix
···11+# New rust versions should first go to staging.
22+# Things to check after updating:
33+# 1. Rustc should produce rust binaries on x86_64-linux, aarch64-linux and x86_64-darwin:
44+# i.e. nix-shell -p fd or @GrahamcOfBorg build fd on github
55+# This testing can be also done by other volunteers as part of the pull
66+# request review, in case platforms cannot be covered.
77+# 2. The LLVM version used for building should match with rust upstream.
88+# Check the version number in the src/llvm-project git submodule in:
99+# https://github.com/rust-lang/rust/blob/<version-tag>/.gitmodules
1010+# 3. Firefox and Thunderbird should still build on x86_64-linux.
1111+1212+{ stdenv, lib
1313+, buildPackages
1414+, newScope, callPackage
1515+, CoreFoundation, Security
1616+, pkgsBuildTarget, pkgsBuildBuild, pkgsBuildHost
1717+, makeRustPlatform
1818+, llvmPackages_11
1919+, llvmPackages_12, llvm_12
2020+} @ args:
2121+2222+import ./default.nix {
2323+ rustcVersion = "1.55.0";
2424+ rustcSha256 = "07l28f7grdmi65naq71pbmvdd61hwcpi40ry7kp7dy7m233rldxj";
2525+2626+ llvmSharedForBuild = pkgsBuildBuild.llvmPackages_12.libllvm.override { enableSharedLibraries = true; };
2727+ llvmSharedForHost = pkgsBuildHost.llvmPackages_12.libllvm.override { enableSharedLibraries = true; };
2828+ llvmSharedForTarget = pkgsBuildTarget.llvmPackages_12.libllvm.override { enableSharedLibraries = true; };
2929+3030+ llvmBootstrapForDarwin = llvmPackages_11;
3131+3232+ # For use at runtime
3333+ llvmShared = llvm_12.override { enableSharedLibraries = true; };
3434+3535+ # Note: the version MUST be one version prior to the version we're
3636+ # building
3737+ bootstrapVersion = "1.54.0";
3838+3939+ # fetch hashes by running `print-hashes.sh ${bootstrapVersion}`
4040+ bootstrapHashes = {
4141+ i686-unknown-linux-gnu = "1cd06090463711d50d98374ef52c1a84b9f4e3e35febaaef4890fb10536ceb3a";
4242+ x86_64-unknown-linux-gnu = "350354495b1d4b6dd2ec7cf96aa9bc61d031951cf667a31e8cf401dc508639e6";
4343+ x86_64-unknown-linux-musl = "3571db0018fcd32f3b579a32b2301826dbd1cce44b373aed8e8a31c2a6f52fe8";
4444+ arm-unknown-linux-gnueabihf = "77f4e4c2195f75466c6de0b1d8fd7fb8cef3d12666e3aae777dcfd0d71d080ca";
4545+ armv7-unknown-linux-gnueabihf = "dd01ccb6a53d5e895a6755a78c213ae601a347366688941d5c543b5af5835d6d";
4646+ aarch64-unknown-linux-gnu = "33a50c5366a57aaab43c1c19e4a49ab7d8ffcd99a72925c315fb1f9389139e6f";
4747+ aarch64-unknown-linux-musl = "49d94116a357ea13f5a3231de2472f59210028c3cf81f158b8a367c3155ac544";
4848+ x86_64-apple-darwin = "5eb27a4f5f7a4699bc70cf1848e340ddd74e151488bfcb26853fd584958e3d33";
4949+ aarch64-apple-darwin = "801b3b15b992b0321261de8b8ea2728e9a74822c6cb99bf978b34e217c7825ba";
5050+ powerpc64le-unknown-linux-gnu = "67cadf7ac5bd2e3d5fb4baede69846059f17c4e099f771329b266d08b875ed71";
5151+ riscv64gc-unknown-linux-gnu = "6113a6cce3500033d0dc0d170b54c5f22562ef3025fd58d804c822a2499c74d7";
5252+ };
5353+5454+ selectRustPackage = pkgs: pkgs.rust_1_55;
5555+5656+ rustcPatches = [
5757+ ];
5858+}
5959+6060+(builtins.removeAttrs args [ "fetchpatch" "pkgsBuildHost" "llvmPackages_11" "llvmPackages_12" "llvm_12"])
···416416 # This allows build Python to import host Python's sysconfigdata
417417 mkdir -p "$out/${sitePackages}"
418418 ln -s "$out/lib/${libPrefix}/"_sysconfigdata*.py "$out/${sitePackages}/"
419419+420420+ # debug info can't be separated from a static library and would otherwise be
421421+ # left in place by a separateDebugInfo build. force its removal here to save
422422+ # space in output.
423423+ $STRIP -S $out/lib/${libPrefix}/config-*/libpython*.a || true
419424 '' + optionalString stripConfig ''
420425 rm -R $out/bin/python*-config $out/lib/python*/config-*
421426 '' + optionalString stripIdlelib ''
···445450 find $out -name "*.py" | ${pythonForBuildInterpreter} -m compileall -q -f -x "lib2to3" -i -
446451 find $out -name "*.py" | ${pythonForBuildInterpreter} -O -m compileall -q -f -x "lib2to3" -i -
447452 find $out -name "*.py" | ${pythonForBuildInterpreter} -OO -m compileall -q -f -x "lib2to3" -i -
453453+ '' + ''
454454+ # *strip* shebang from libpython gdb script - it should be dual-syntax and
455455+ # interpretable by whatever python the gdb in question is using, which may
456456+ # not even match the major version of this python. doing this after the
457457+ # bytecode compilations for the same reason - we don't want bytecode generated.
458458+ mkdir -p $out/share/gdb
459459+ sed '/^#!/d' Tools/gdb/libpython.py > $out/share/gdb/libpython.py
448460 '';
449461450462 preFixup = lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) ''
···469481 # These typically end up in shebangs.
470482 pythonForBuild buildPackages.bash
471483 ];
484484+485485+ separateDebugInfo = true;
472486473487 inherit passthru;
474488
+12-6
pkgs/development/interpreters/python/tests.nix
···94949595 # Integration tests involving the package set.
9696 # All PyPy package builds are broken at the moment
9797- integrationTests = lib.optionalAttrs (python.pythonAtLeast "3.7" && (!python.isPyPy)) rec {
9898- # Before the addition of NIX_PYTHONPREFIX mypy was broken with typed packages
9999- nix-pythonprefix-mypy = callPackage ./tests/test_nix_pythonprefix {
100100- interpreter = python;
101101- };
102102- };
9797+ integrationTests = lib.optionalAttrs (!python.isPyPy) (
9898+ lib.optionalAttrs (python.isPy3k && !stdenv.isDarwin) { # darwin has no split-debug
9999+ cpython-gdb = callPackage ./tests/test_cpython_gdb {
100100+ interpreter = python;
101101+ };
102102+ } // lib.optionalAttrs (python.pythonAtLeast "3.7") rec {
103103+ # Before the addition of NIX_PYTHONPREFIX mypy was broken with typed packages
104104+ nix-pythonprefix-mypy = callPackage ./tests/test_nix_pythonprefix {
105105+ interpreter = python;
106106+ };
107107+ }
108108+ );
103109104110 # Tests to ensure overriding works as expected.
105111 overrideTests = let
···44 release = "8.5";
55 version = "${release}.18";
6677+ # Note: when updating, the hash in pkgs/development/libraries/tk/8.5.nix must also be updated!
88+79 src = fetchurl {
810 url = "mirror://sourceforge/tcl/tcl${version}-src.tar.gz";
911 sha256 = "1jfkqp2fr0xh6xvaqx134hkfa5kh7agaqbxm6lhjbpvvc1xfaaq3";
+2
pkgs/development/interpreters/tcl/8.6.nix
···44 release = "8.6";
55 version = "${release}.11";
6677+ # Note: when updating, the hash in pkgs/development/libraries/tk/8.6.nix must also be updated!
88+79 src = fetchurl {
810 url = "mirror://sourceforge/tcl/tcl${version}-src.tar.gz";
911 sha256 = "0n4211j80mxr6ql0xx52rig8r885rcbminfpjdb2qrw6hmk8c14c";
···11-WGET_ARGS=( https://download.kde.org/stable/frameworks/5.84/ -A '*.tar.xz' )
11+WGET_ARGS=( https://download.kde.org/stable/frameworks/5.85/ -A '*.tar.xz' )
···11{ lib, stdenv
22, fetchFromGitHub
33+, fetchpatch
34, cmake, pkg-config, unzip, zlib, pcre, hdf5
45, glog, boost, gflags, protobuf
56, config
···154155 # Ensures that we use the system OpenEXR rather than the vendored copy of the source included with OpenCV.
155156 patches = [
156157 ./cmake-don-t-use-OpenCVFindOpenEXR.patch
158158+ # Fix usage of deprecated version of protobuf' SetTotalBytesLimit. Remove with the next release.
159159+ (fetchpatch {
160160+ url = "https://github.com/opencv/opencv/commit/384875f4fcf1782b10699a379aa245a03cb27a04.patch";
161161+ sha256 = "1agwd0pm07m2dy8a62vmfl4n73dsmsdll2a73q6kara9wm3jlp41";
162162+ })
157163 ];
158164159165 # This prevents cmake from using libraries in impure paths (which
+6
pkgs/development/libraries/opencv/4.x.nix
···11{ lib
22, stdenv
33, fetchurl
44+, fetchpatch
45, fetchFromGitHub
56, cmake
67, pkg-config
···217218 # Ensures that we use the system OpenEXR rather than the vendored copy of the source included with OpenCV.
218219 patches = [
219220 ./cmake-don-t-use-OpenCVFindOpenEXR.patch
221221+ # Fix usage of deprecated version of protobuf' SetTotalBytesLimit. Remove with the next release.
222222+ (fetchpatch {
223223+ url = "https://github.com/opencv/opencv/commit/384875f4fcf1782b10699a379aa245a03cb27a04.patch";
224224+ sha256 = "1agwd0pm07m2dy8a62vmfl4n73dsmsdll2a73q6kara9wm3jlp41";
225225+ })
220226 ] ++ lib.optional enableCuda ./cuda_opt_flow.patch;
221227222228 # This prevents cmake from using libraries in impure paths (which
···11-{lib, stdenv, fetchurl, audiofile, libtiff}:
11+{ lib, stdenv, fetchurl, audiofile, libtiff, buildPackages }:
22stdenv.mkDerivation rec {
33 version = "0.0.6";
44 pname = "spandsp";
···88 };
991010 outputs = [ "out" "dev" ];
1111+ makeFlags = [
1212+ "CC=${stdenv.cc.targetPrefix}cc"
1313+ ];
11141515+ configureFlags = [
1616+ # This flag is required to prevent linking error in the cross-compilation case.
1717+ # I think it's fair to assume that realloc(NULL, size) will return a valid memory
1818+ # block for most libc implementation, so let's just assume that and hope for the best.
1919+ "ac_cv_func_malloc_0_nonnull=yes"
2020+ ];
2121+2222+ strictDeps = true;
2323+ depsBuildBuild = [ buildPackages.stdenv.cc ];
1224 propagatedBuildInputs = [audiofile libtiff];
1325 meta = {
1426 description = "A portable and modular SIP User-Agent with audio and video support";
+2-2
pkgs/development/libraries/sqlite/default.nix
···13131414stdenv.mkDerivation rec {
1515 pname = "sqlite";
1616- version = "3.35.5";
1616+ version = "3.36.0";
17171818 # NB! Make sure to update ./tools.nix src (in the same directory).
1919 src = fetchurl {
2020 url = "https://sqlite.org/2021/sqlite-autoconf-${archiveVersion version}.tar.gz";
2121- sha256 = "9StypcMZw+UW7XqS4SMTmm6Hrwii3EPXdXck9hMubbA=";
2121+ sha256 = "sha256-vZDD65a+6ZYga4O+cGXJzhmu84w/T7Uwc62g0LabvOM=";
2222 };
23232424 outputs = [ "bin" "dev" "out" ];
···33, openssl, json_c, curl, libgcrypt
44, cmocka, uthash, ibm-sw-tpm2, iproute2, procps, which
55}:
66+let
77+ # Avoid a circular dependency on Linux systems (systemd depends on tpm2-tss,
88+ # tpm2-tss tests depend on procps, procps depends on systemd by default). This
99+ # needs to be conditional based on isLinux because procps for other systems
1010+ # might not support the withSystemd option.
1111+ procpsWithoutSystemd = procps.override { withSystemd = false; };
1212+ procps_pkg = if stdenv.isLinux then procpsWithoutSystemd else procps;
1313+in
614715stdenv.mkDerivation rec {
816 pname = "tpm2-tss";
···2028 ];
2129 buildInputs = [ openssl json_c curl libgcrypt ];
2230 checkInputs = [
2323- cmocka uthash ibm-sw-tpm2 iproute2 procps which
3131+ cmocka uthash ibm-sw-tpm2 iproute2 procps_pkg which
2432 ];
25332634 preAutoreconf = "./bootstrap";
···11-With format string strictness, High Sierra also enforces that %n isn't used
22-in dynamic format strings, but we should just disable its use on darwin in
33-general.
44-55---- a/lib/vasnprintf.c 2017-06-22 15:19:15.000000000 -0700
66-+++ b/lib/vasnprintf.c 2017-06-22 15:20:20.000000000 -0700
77-@@ -4869,7 +4869,7 @@ VASNPRINTF (DCHAR_T *resultbuf, size_t *
88- #endif
99- *fbp = dp->conversion;
1010- #if USE_SNPRINTF
1111--# if !(((__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) && !defined __UCLIBC__) || ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__))
1212-+# if !defined(__APPLE__) && !(((__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 3)) && !defined __UCLIBC__) || ((defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__))
1313- fbp[1] = '%';
1414- fbp[2] = 'n';
1515- fbp[3] = '\0';
+2-13
pkgs/development/tools/misc/gnum4/default.nix
···7788stdenv.mkDerivation rec {
99 pname = "gnum4";
1010- version = "1.4.18";
1010+ version = "1.4.19";
11111212 src = fetchurl {
1313 url = "mirror://gnu/m4/m4-${version}.tar.bz2";
1414- sha256 = "1xkwwq0sgv05cla0g0a01yzhk0wpsn9y40w9kh9miiiv0imxfh36";
1414+ sha256 = "sha256-swapHA/ZO8QoDPwumMt6s5gf91oYe+oyk4EfRSyJqMg=";
1515 };
16161717 doCheck = false;
18181919 configureFlags = [ "--with-syscmd-shell=${stdenv.shell}" ];
2020-2121- # Upstream is aware of it; it may be in the next release.
2222- patches =
2323- [
2424- ./s_isdir.patch
2525- (fetchurl {
2626- url = "https://sources.debian.org/data/main/m/m4/1.4.18-2/debian/patches/01-fix-ftbfs-with-glibc-2.28.patch";
2727- sha256 = "12lmdnbml9lfvy0khpjc42riicddaz7li8wmbnsam7zsw6al11qk";
2828- })
2929- ]
3030- ++ lib.optional stdenv.isDarwin ./darwin-secure-format.patch;
31203221 meta = {
3322 homepage = "https://www.gnu.org/software/m4/";
-14
pkgs/development/tools/misc/gnum4/s_isdir.patch
···11-Fails to build with glibc 2.12.1 without this patch.
22-33-http://lists.gnu.org/archive/html/bug-m4/2010-05/msg00002.html
44-55---- a/src/path.c
66-+++ b/src/path.c
77-@@ -22,6 +22,7 @@
88- /* Handling of path search of included files via the builtins "include"
99- and "sinclude". */
1010-1111- #include "m4.h"
1212-+#include "sys/stat.h"
1313-1414- struct includes
···11+mergeNetBSDSourceDir() {
22+ # merge together all extra paths
33+ # there should be a better way to do this
44+ chmod -R u+w $BSDSRCDIR
55+ for path in $extraPaths; do
66+ rsync -Er --chmod u+w $path/ $BSDSRCDIR/
77+ done
88+}
99+1010+addNetBSDMakeFlags() {
1111+ makeFlags="INCSDIR=${!outputDev}/include $makeFlags"
1212+}
1313+1414+postUnpackHooks+=(mergeNetBSDSourceDir)
1515+preConfigureHooks+=(addNetBSDMakeFlags)
···11-From 8f619304804b02f4e9d7a340ca90359f96adc6e8 Mon Sep 17 00:00:00 2001
11+From 31732478745f7a200004fb8ec013f54dbc536f2e Mon Sep 17 00:00:00 2001
22From: Nikolay Amiantov <ab@fmap.me>
33Date: Thu, 25 Jul 2019 20:45:55 +0300
44Subject: [PATCH 14/19] systemd-shutdown: execute scripts in
···1010 1 file changed, 1 insertion(+), 1 deletion(-)
11111212diff --git a/src/shutdown/shutdown.c b/src/shutdown/shutdown.c
1313-index 0d07865542..26d974ef73 100644
1313+index a98cfc4d8a..b0b34edda7 100644
1414--- a/src/shutdown/shutdown.c
1515+++ b/src/shutdown/shutdown.c
1616@@ -312,7 +312,7 @@ int main(int argc, char *argv[]) {
···2323 /* The log target defaults to console, but the original systemd process will pass its log target in through a
2424 * command line argument, which will override this default. Also, ensure we'll never log to the journal or
2525--
2626-2.30.1
2626+2.32.0
2727
···11+From 5f17b65d30480e489e135b403a072b38535b2911 Mon Sep 17 00:00:00 2001
22+From: Andreas Rammhold <andreas@rammhold.de>
33+Date: Wed, 18 Aug 2021 19:10:08 +0200
44+Subject: [PATCH] core: handle lookup paths being symlinks
55+66+With a recent change paths leaving the statically known lookup paths
77+would be treated differently then those that remained within those. That
88+was done (AFAIK) to consistently handle alias names. Unfortunately that
99+means that on some distributions, especially those where /etc/ consists
1010+mostly of symlinks, would trigger that new detection for every single
1111+unit in /etc/systemd/system. The reason for that is that the units
1212+directory itself is already a symlink.
1313+---
1414+ src/basic/unit-file.c | 33 +++++++++++++++++++++++++++++++--
1515+ 1 file changed, 31 insertions(+), 2 deletions(-)
1616+1717+diff --git a/src/basic/unit-file.c b/src/basic/unit-file.c
1818+index 884a0674a9..3ae2a115d0 100644
1919+--- a/src/basic/unit-file.c
2020++++ b/src/basic/unit-file.c
2121+@@ -254,6 +254,7 @@ int unit_file_build_name_map(
2222+2323+ _cleanup_hashmap_free_ Hashmap *ids = NULL, *names = NULL;
2424+ _cleanup_set_free_free_ Set *paths = NULL;
2525++ _cleanup_strv_free_ char **expanded_search_paths = NULL;
2626+ uint64_t timestamp_hash;
2727+ char **dir;
2828+ int r;
2929+@@ -273,6 +274,34 @@ int unit_file_build_name_map(
3030+ return log_oom();
3131+ }
3232+3333++ /* Go over all our search paths, chase their symlinks and store the
3434++ * result in the expanded_search_paths list.
3535++ *
3636++ * This is important for cases where any of the unit directories itself
3737++ * are symlinks into other directories and would therefore cause all of
3838++ * the unit files to be recognized as linked units.
3939++ *
4040++ * This is important for distributions such as NixOS where most paths
4141++ * in /etc/ are symlinks to some other location on the filesystem (e.g.
4242++ * into /nix/store/).
4343++ */
4444++ STRV_FOREACH(dir, (char**) lp->search_path) {
4545++ _cleanup_free_ char *resolved_dir = NULL;
4646++ r = strv_extend(&expanded_search_paths, *dir);
4747++ if (r < 0)
4848++ return log_oom();
4949++
5050++ r = chase_symlinks(*dir, NULL, 0, &resolved_dir, NULL);
5151++ if (r < 0) {
5252++ if (r != -ENOENT)
5353++ log_warning_errno(r, "Failed to resolve symlink %s, ignoring: %m", *dir);
5454++ continue;
5555++ }
5656++
5757++ if (strv_consume(&expanded_search_paths, TAKE_PTR(resolved_dir)) < 0)
5858++ return log_oom();
5959++ }
6060++
6161+ STRV_FOREACH(dir, (char**) lp->search_path) {
6262+ struct dirent *de;
6363+ _cleanup_closedir_ DIR *d = NULL;
6464+@@ -351,11 +380,11 @@ int unit_file_build_name_map(
6565+ continue;
6666+ }
6767+6868+- /* Check if the symlink goes outside of our search path.
6969++ /* Check if the symlink goes outside of our (expanded) search path.
7070+ * If yes, it's a linked unit file or mask, and we don't care about the target name.
7171+ * Let's just store the link source directly.
7272+ * If not, let's verify that it's a good symlink. */
7373+- char *tail = path_startswith_strv(simplified, lp->search_path);
7474++ char *tail = path_startswith_strv(simplified, expanded_search_paths);
7575+ if (!tail) {
7676+ log_debug("%s: linked unit file: %s → %s",
7777+ __func__, filename, simplified);
7878+--
7979+2.32.0
8080+
···11+From 93413acd3ef3a637a0f31a1d133b103e1dc81fd6 Mon Sep 17 00:00:00 2001
22+From: Yu Watanabe <watanabe.yu+github@gmail.com>
33+Date: Mon, 23 Aug 2021 06:16:48 +0900
44+Subject: [PATCH] path-util: make find_executable() work without /proc mounted
55+66+Follow-up for 888f65ace6296ed61285d31db846babf1c11885e.
77+88+Hopefully fixes #20514.
99+---
1010+ src/basic/path-util.c | 6 +++++-
1111+ 1 file changed, 5 insertions(+), 1 deletion(-)
1212+1313+diff --git a/src/basic/path-util.c b/src/basic/path-util.c
1414+index d11f254a9f6a..a21981616b59 100644
1515+--- a/src/basic/path-util.c
1616++++ b/src/basic/path-util.c
1717+@@ -630,7 +630,11 @@ static int check_x_access(const char *path, int *ret_fd) {
1818+ return r;
1919+2020+ r = access_fd(fd, X_OK);
2121+- if (r < 0)
2222++ if (r == -ENOSYS) {
2323++ /* /proc is not mounted. Fallback to access(). */
2424++ if (access(path, X_OK) < 0)
2525++ return -errno;
2626++ } else if (r < 0)
2727+ return r;
2828+2929+ if (ret_fd)
+147-97
pkgs/os-specific/linux/systemd/default.nix
···3939, gnupg
4040, zlib
4141, xz
4242+, tpm2-tss
4243, libuuid
4344, libapparmor
4445, intltool
···5758, bashInteractive
5859, libmicrohttpd
59606161+ # the (optional) BPF feature requires bpftool, libbpf, clang and llmv-strip to be avilable during build time.
6262+ # Only libbpf should be a runtime dependency.
6363+, bpftools
6464+, libbpf
6565+, llvmPackages
6666+6067, withAnalyze ? true
6168, withApparmor ? true
6269, withCompression ? true # adds bzip2, lz4 and xz
···6471, withCryptsetup ? true
6572, withDocumentation ? true
6673, withEfi ? stdenv.hostPlatform.isEfi
7474+, withFido2 ? true
6775, withHomed ? false
6876, withHostnamed ? true
6977, withHwdb ? true
7078, withImportd ? true
7979+, withLibBPF ? false # currently fails while generating BPF objects
7180, withLocaled ? true
7281, withLogind ? true
7382, withMachined ? true
···8291, withShellCompletions ? true
8392, withTimedated ? true
8493, withTimesyncd ? true
9494+, withTpm2Tss ? true
8595, withUserDb ? true
8696, libfido2
8797, p11-kit
···106116107117assert withHomed -> withCryptsetup;
108118109109-assert withCryptsetup ->
110110-(cryptsetup != null);
119119+assert withCryptsetup -> (cryptsetup != null);
111120let
112121 wantCurl = withRemote || withImportd;
113113-122122+ version = "249.4";
114123in
115115-stdenv.mkDerivation rec {
116116- inherit pname;
117117- version = "247.6";
124124+stdenv.mkDerivation {
125125+ inherit pname version;
118126119127 # We use systemd/systemd-stable for src, and ship NixOS-specific patches inside nixpkgs directly
120128 # This has proven to be less error-prone than the previous systemd fork.
···122130 owner = "systemd";
123131 repo = "systemd-stable";
124132 rev = "v${version}";
125125- sha256 = "sha256-7XYEq3Qw25suwjbtPzx9lVPHUu9ZY/1bADXl2wQbkJc=";
133133+ sha256 = "0pqi9gbk9kgwvd0idf13ybxz7s4h5przn01bwj6fna44jr0wy41c";
126134 };
127135128136 # If these need to be regenerated, `git am path/to/00*.patch` them into a
···150158 ./0018-logind-seat-debus-show-CanMultiSession-again.patch
151159 ./0019-pkg-config-derive-prefix-from-prefix.patch
152160153153- # Fix -Werror=format.
154154- (fetchpatch {
155155- url = "https://github.com/systemd/systemd/commit/ab1aa6368a883bce88e3162fee2bea14aacedf23.patch";
156156- sha256 = "1b280l5jrjsg8qhsang199mpqjhkpix4c8bm3blknjnq9iv43add";
157157- })
161161+ # In v249 a bunch of meson files had been touched as part of the migration to
162162+ # jinja2 for templating. Unfortunately some of those files lost the `install_sysconfdir_samples` check.
163163+ # The following two patches are part of a PR that was filed to fix those cases.
164164+ # https://github.com/systemd/systemd/pull/20303
165165+ ./0020-core-respect-install_sysconfdir_samples-in-meson-fil.patch
166166+ ./0021-login-respect-install_sysconfdir_samples-in-meson-fi.patch
167167+168168+ # In v248 or v249 we started to get in trouble due to our /etc/systemd/sytem being
169169+ # a symlink and thus being treated differently by systemd. With the below
170170+ # patch we mitigate that effect by special casing all our root unit dirs
171171+ # if they are symlinks. This does exactly what we need (AFAICT).
172172+ ./0022-core-Handle-lookup-paths-being-symlinks.patch
158173159159- # Fix CVE-2021-33910, disclosed 2021-07-20
160160- (fetchpatch {
161161- name = "CVE-2021-33910.patch";
162162- url = "https://github.com/systemd/systemd/commit/441e0115646d54f080e5c3bb0ba477c892861ab9.patch";
163163- sha256 = "1g1lk95igaadg67kah9bpi4zsc01rg398sd1247ghjsvl5hxn4v4";
164164- })
174174+ # The way files are being tested for being executable changed in v248/v249
175175+ # which caused our confinement setup to fail as we do not mount /proc by
176176+ # default.
177177+ # The issue has been reported upstream and this patch carries the upstream
178178+ # fix for the same. Upstream now has a test for this scenario.
179179+ # https://github.com/systemd/systemd/issues/20514
180180+ ./0023-path-util-make-find_executable-work-without-proc-mounted.patch
165181 ];
166182167183 postPatch = ''
···175191 "find_program('${stdenv.cc.bintools.targetPrefix}objcopy'"
176192 '' + (
177193 let
178178- # The folllowing dlopen patches ensure that all the features that are
179179- # implemented via dlopen(3) are available (or explicitly deactivated) by
180180- # pointing dlopen to the absolute store path instead of relying on the
181181- # linkers runtime lookup code.
194194+ # The folllowing patches references to dynamic libraries to ensure that
195195+ # all the features that are implemented via dlopen(3) are available (or
196196+ # explicitly deactivated) by pointing dlopen to the absolute store path
197197+ # instead of relying on the linkers runtime lookup code.
182198 #
183183- # All of the dlopen calls have to be handled. When new ones are introduced
184184- # by upstream (or one of our patches) they must be explicitly declared,
185185- # otherwise the build will fail.
199199+ # All of the shared library references have to be handled. When new ones
200200+ # are introduced by upstream (or one of our patches) they must be
201201+ # explicitly declared, otherwise the build will fail.
186202 #
187203 # As of systemd version 247 we've seen a few errors like `libpcre2.… not
188204 # found` when using e.g. --grep with journalctl. Those errors should
···201217 # path location).
202218 #
203219 # To get a list of dynamically loaded libraries issue something like
204204- # `grep -ri 'dlopen("lib' $src` and update the below list.
205205- dlopenLibs = [
206206- # We did never provide support for libxkbcommon & qrencode
207207- { name = "libxkbcommon.so.0"; pkg = null; }
208208- { name = "libqrencode.so.4"; pkg = null; }
220220+ # `grep -ri '"lib[a-zA-Z0-9-]*\.so[\.0-9a-zA-z]*"'' $src` and update the below list.
221221+ dlopenLibs =
222222+ let
223223+ opt = condition: pkg: if condition then pkg else null;
224224+ in
225225+ [
226226+ # bpf compilation support
227227+ { name = "libbpf.so.0"; pkg = opt withLibBPF libbpf; }
228228+229229+ # We did never provide support for libxkbcommon & qrencode
230230+ { name = "libxkbcommon.so.0"; pkg = null; }
231231+ { name = "libqrencode.so.4"; pkg = null; }
209232210210- # We did not provide libpwquality before so it is safe to disable it for
211211- # now.
212212- { name = "libpwquality.so.1"; pkg = null; }
233233+ # We did not provide libpwquality before so it is safe to disable it for
234234+ # now.
235235+ { name = "libpwquality.so.1"; pkg = null; }
213236214214- # Only include cryptsetup if it is enabled. We might not be able to
215215- # provide it during "bootstrap" in e.g. the minimal systemd build as
216216- # cryptsetup has udev (aka systemd) in it's dependencies.
217217- { name = "libcryptsetup.so.12"; pkg = if withCryptsetup then cryptsetup else null; }
237237+ # Only include cryptsetup if it is enabled. We might not be able to
238238+ # provide it during "bootstrap" in e.g. the minimal systemd build as
239239+ # cryptsetup has udev (aka systemd) in it's dependencies.
240240+ { name = "libcryptsetup.so.12"; pkg = opt withCryptsetup cryptsetup; }
218241219219- # We are using libidn2 so we only provide that and ignore the others.
220220- # Systemd does this decision during configure time and uses ifdef's to
221221- # enable specific branches. We can safely ignore (nuke) the libidn "v1"
222222- # libraries.
223223- { name = "libidn2.so.0"; pkg = libidn2; }
224224- { name = "libidn.so.12"; pkg = null; }
225225- { name = "libidn.so.11"; pkg = null; }
242242+ # We are using libidn2 so we only provide that and ignore the others.
243243+ # Systemd does this decision during configure time and uses ifdef's to
244244+ # enable specific branches. We can safely ignore (nuke) the libidn "v1"
245245+ # libraries.
246246+ { name = "libidn2.so.0"; pkg = libidn2; }
247247+ { name = "libidn.so.12"; pkg = null; }
248248+ { name = "libidn.so.11"; pkg = null; }
226249227227- # journalctl --grep requires libpcre so lets provide it
228228- { name = "libpcre2-8.so.0"; pkg = pcre2; }
229229- ];
250250+ # journalctl --grep requires libpcre so lets provide it
251251+ { name = "libpcre2-8.so.0"; pkg = pcre2; }
252252+253253+ # Support for TPM2 in systemd-cryptsetup, systemd-repart and systemd-cryptenroll
254254+ { name = "libtss2-esys.so.0"; pkg = opt withTpm2Tss tpm2-tss; }
255255+ { name = "libtss2-rc.so.0"; pkg = opt withTpm2Tss tpm2-tss; }
256256+ { name = "libtss2-mu.so.0"; pkg = opt withTpm2Tss tpm2-tss; }
257257+ { name = "libfido2.so.1"; pkg = opt withFido2 libfido2; }
258258+ ];
230259231260 patchDlOpen = dl:
232261 let
···234263 in
235264 if dl.pkg == null then ''
236265 # remove the dependency on the library by replacing it with an invalid path
237237- for file in $(grep -lr 'dlopen("${dl.name}"' src); do
266266+ for file in $(grep -lr '"${dl.name}"' src); do
238267 echo "patching dlopen(\"${dl.name}\", …) in $file to an invalid store path ("/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-not-implemented/${dl.name}")…"
239239- substituteInPlace "$file" --replace 'dlopen("${dl.name}"' 'dlopen("/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-not-implemented/${dl.name}"'
268268+ substituteInPlace "$file" --replace '"${dl.name}"' '"/nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-not-implemented/${dl.name}"'
240269 done
241270 '' else ''
242271 # ensure that the library we provide actually exists
···245274 exit 1
246275 fi
247276 # make the path to the dependency explicit
248248- for file in $(grep -lr 'dlopen("${dl.name}"' src); do
277277+ for file in $(grep -lr '"${dl.name}"' src); do
249278 echo "patching dlopen(\"${dl.name}\", …) in $file to ${library}…"
250250- substituteInPlace "$file" --replace 'dlopen("${dl.name}"' 'dlopen("${library}"'
279279+ substituteInPlace "$file" --replace '"${dl.name}"' '"${library}"'
251280 done
281281+252282 '';
253283 in
254284 # patch all the dlopen calls to contain absolute paths to the libraries
255285 lib.concatMapStringsSep "\n" patchDlOpen dlopenLibs
256286 )
257257- # finally ensure that there are no left-over dlopen calls that we didn't handle
287287+ # finally ensure that there are no left-over dlopen calls (or rather strings pointing to shared libraries) that we didn't handle
258288 + ''
259259- if grep -qr 'dlopen("[^/]' src; then
260260- echo "Found unhandled dlopen calls: "
261261- grep -r 'dlopen("[^/]' src
289289+ if grep -qr '"lib[a-zA-Z0-9-]*\.so[\.0-9a-zA-z]*"' src; then
290290+ echo "Found unhandled dynamic library calls: "
291291+ grep -r '"lib[a-zA-Z0-9-]*\.so[\.0-9a-zA-z]*"' src
262292 exit 1
263293 fi
294294+ ''
295295+ # Finally patch shebangs that might need patching.
296296+ # Should no longer be necessary with v250.
297297+ # https://github.com/systemd/systemd/pull/19638
298298+ + ''
299299+ patchShebangs .
264300 '';
265301266302 outputs = [ "out" "man" "dev" ];
267303268268- nativeBuildInputs = [
269269- pkg-config
270270- gperf
271271- ninja
272272- meson
273273- glibcLocales
274274- getent
275275- m4
304304+ nativeBuildInputs =
305305+ [
306306+ pkg-config
307307+ gperf
308308+ ninja
309309+ meson
310310+ glibcLocales
311311+ getent
312312+ m4
276313277277- intltool
278278- gettext
314314+ intltool
315315+ gettext
279316280280- libxslt
281281- docbook_xsl
282282- docbook_xml_dtd_42
283283- docbook_xml_dtd_45
284284- (buildPackages.python3Packages.python.withPackages (ps: with ps; [ python3Packages.lxml ]))
285285- ];
317317+ libxslt
318318+ docbook_xsl
319319+ docbook_xml_dtd_42
320320+ docbook_xml_dtd_45
321321+ (buildPackages.python3Packages.python.withPackages (ps: with ps; [ lxml jinja2 ]))
322322+ ]
323323+ ++ lib.optional withLibBPF [
324324+ bpftools
325325+ llvmPackages.clang
326326+ llvmPackages.libllvm
327327+ ]
328328+ ;
286329287287- buildInputs = [
288288- acl
289289- audit
290290- glib
291291- kmod
292292- libcap
293293- libgcrypt
294294- libidn2
295295- libuuid
296296- linuxHeaders
297297- pam
298298- ]
330330+ buildInputs =
331331+ [
332332+ acl
333333+ audit
334334+ glib
335335+ kmod
336336+ libcap
337337+ libgcrypt
338338+ libidn2
339339+ libuuid
340340+ linuxHeaders
341341+ pam
342342+ ]
299343300300- ++ lib.optional withApparmor libapparmor
301301- ++ lib.optional wantCurl (lib.getDev curl)
302302- ++ lib.optionals withCompression [ bzip2 lz4 xz ]
303303- ++ lib.optional withCryptsetup (lib.getDev cryptsetup.dev)
304304- ++ lib.optional withEfi gnu-efi
305305- ++ lib.optional withKexectools kexec-tools
306306- ++ lib.optional withLibseccomp libseccomp
307307- ++ lib.optional withNetworkd iptables
308308- ++ lib.optional withPCRE2 pcre2
309309- ++ lib.optional withResolved libgpgerror
310310- ++ lib.optional withSelinux libselinux
311311- ++ lib.optional withRemote libmicrohttpd
312312- ++ lib.optionals withHomed [ p11-kit libfido2 ]
344344+ ++ lib.optional withApparmor libapparmor
345345+ ++ lib.optional wantCurl (lib.getDev curl)
346346+ ++ lib.optionals withCompression [ bzip2 lz4 xz ]
347347+ ++ lib.optional withCryptsetup (lib.getDev cryptsetup.dev)
348348+ ++ lib.optional withEfi gnu-efi
349349+ ++ lib.optional withKexectools kexec-tools
350350+ ++ lib.optional withLibseccomp libseccomp
351351+ ++ lib.optional withNetworkd iptables
352352+ ++ lib.optional withPCRE2 pcre2
353353+ ++ lib.optional withResolved libgpgerror
354354+ ++ lib.optional withSelinux libselinux
355355+ ++ lib.optional withRemote libmicrohttpd
356356+ ++ lib.optionals withHomed [ p11-kit ]
357357+ ++ lib.optionals (withHomed || withCryptsetup) [ libfido2 ]
358358+ ++ lib.optionals withLibBPF [ libbpf ]
313359 ;
314360315361 #dontAddPrefix = true;
316362317363 mesonFlags = [
364364+ "-Dversion-tag=${version}"
318365 "-Ddbuspolicydir=${placeholder "out"}/share/dbus-1/system.d"
319366 "-Ddbussessionservicedir=${placeholder "out"}/share/dbus-1/services"
320367 "-Ddbussystemservicedir=${placeholder "out"}/share/dbus-1/system-services"
···405452 "-Dnss-mymachines=false"
406453 "-Dnss-resolve=false"
407454 "-Dnss-systemd=false"
455455+ ] ++ lib.optionals withLibBPF [
456456+ "-Dbpf-framework=true"
408457 ];
409458410459 preConfigure = ''
···453502 --replace '"tar"' '"${gnutar}/bin/tar"'
454503 done
455504456456- substituteInPlace src/journal/catalog.c \
505505+506506+ substituteInPlace src/libsystemd/sd-journal/catalog.c \
457507 --replace /usr/lib/systemd/catalog/ $out/lib/systemd/catalog/
458508 '';
459509
+2-1
pkgs/os-specific/linux/tbs/default.nix
···1818 };
19192020in stdenv.mkDerivation {
2121- name = "tbs-2018.04.18-${kernel.version}";
2121+ pname = "tbs";
2222+ version = "2018.04.18-${kernel.version}";
22232324 srcs = [ media build ];
2425 sourceRoot = build.name;
···6677mkdir $out
8899-echo "export SHELL=$shell" > $out/setup
1010-echo "initialPath=\"$initialPath\"" >> $out/setup
1111-echo "defaultNativeBuildInputs=\"$defaultNativeBuildInputs\"" >> $out/setup
1212-echo "defaultBuildInputs=\"$defaultBuildInputs\"" >> $out/setup
1313-echo "$preHook" >> $out/setup
1414-cat "$setup" >> $out/setup
99+{
1010+ echo "export SHELL=$shell"
1111+ echo "initialPath=\"$initialPath\""
1212+ echo "defaultNativeBuildInputs=\"$defaultNativeBuildInputs\""
1313+ echo "defaultBuildInputs=\"$defaultBuildInputs\""
1414+ echo "$preHook"
1515+ cat "$setup"
1616+} > "$out/setup"
15171618# Allow the user to install stdenv using nix-env and get the packages
1719# in stdenv.
+77-71
pkgs/stdenv/generic/setup.sh
···11set -eu
22set -o pipefail
3344-if [ -n "${BASH_VERSINFO-}" ] && [ "${BASH_VERSINFO-}" -lt 4 ]; then
44+if [[ -n "${BASH_VERSINFO-}" && "${BASH_VERSINFO-}" -lt 4 ]]; then
55 echo "Detected Bash version that isn't supported by Nixpkgs (${BASH_VERSION})"
66 echo "Please install Bash 4 or greater to continue."
77 exit 1
···121121 set +e
122122123123 if [ -n "${showBuildStats:-}" ]; then
124124- times > "$NIX_BUILD_TOP/.times"
125125- local -a times=($(cat "$NIX_BUILD_TOP/.times"))
126126- # Print the following statistics:
127127- # - user time for the shell
128128- # - system time for the shell
129129- # - user time for all child processes
130130- # - system time for all child processes
131131- echo "build time elapsed: " "${times[@]}"
124124+ read -r -d '' -a buildTimes < <(times)
125125+ echo "build times:"
126126+ echo "user time for the shell ${buildTimes[0]}"
127127+ echo "system time for the shell ${buildTimes[1]}"
128128+ echo "user time for all child processes ${buildTimes[2]}"
129129+ echo "system time for all child processes ${buildTimes[3]}"
132130 fi
133131134132 if (( "$exitCode" != 0 )); then
···207205 exec {fd}< "$fn"
208206 read -r -n 4 -u "$fd" magic
209207 exec {fd}<&-
208208+209209+ # nix uses 'declare -F' in get-env.sh to retrieve the loaded functions.
210210+ # If we use the $'string' syntax instead of 'echo -ne' then 'declare' will print the raw characters and break nix.
211211+ # See https://github.com/NixOS/nixpkgs/pull/138334 and https://github.com/NixOS/nix/issues/5262.
212212+210213 # https://opensource.apple.com/source/lldb/lldb-310.2.36/examples/python/mach_o.py.auto.html
211211- if [[ "$magic" = $'\xfe\xed\xfa\xcf' || "$magic" = $'\xcf\xfa\xed\xfe' ]]; then
214214+ if [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xcf") || "$magic" = $(echo -ne "\xcf\xfa\xed\xfe") ]]; then
212215 # MH_MAGIC_64 || MH_CIGAM_64
213216 return 0;
214214- elif [[ "$magic" = $'\xfe\xed\xfa\xce' || "$magic" = $'\xce\xfa\xed\xfe' ]]; then
217217+ elif [[ "$magic" = $(echo -ne "\xfe\xed\xfa\xce") || "$magic" = $(echo -ne "\xce\xfa\xed\xfe") ]]; then
215218 # MH_MAGIC || MH_CIGAM
216219 return 0;
217217- elif [[ "$magic" = $'\xca\xfe\xba\xbe' || "$magic" = $'\xbe\xba\xfe\xca' ]]; then
220220+ elif [[ "$magic" = $(echo -ne "\xca\xfe\xba\xbe") || "$magic" = $(echo -ne "\xbe\xba\xfe\xca") ]]; then
218221 # FAT_MAGIC || FAT_CIGAM
219222 return 0;
220223 else
···329332330333declare -a pkgHookVarVars=(pkgBuildHookVars pkgHostHookVars pkgTargetHookVars)
331334335335+# those variables are declared here, since where and if they are used varies
336336+# shellcheck disable=SC2034
337337+declare -a preFixupHooks fixupOutputHooks preConfigureHooks postFixupHooks postUnpackHooks unpackCmdHooks
338338+332339# Add env hooks for all sorts of deps with the specified host offset.
333340addEnvHooks() {
334341 local depHostOffset="$1"
···370377# implements.
371378findInputs() {
372379 local -r pkg="$1"
373373- local -ri hostOffset="$2"
374374- local -ri targetOffset="$3"
380380+ local -r hostOffset="$2"
381381+ local -r targetOffset="$3"
375382376383 # Sanity check
377377- (( "$hostOffset" <= "$targetOffset" )) || exit -1
384384+ (( hostOffset <= targetOffset )) || exit -1
378385379379- local varVar="${pkgAccumVarVars[$hostOffset + 1]}"
380380- local varRef="$varVar[\$targetOffset - \$hostOffset]"
386386+ local varVar="${pkgAccumVarVars[hostOffset + 1]}"
387387+ local varRef="$varVar[$((targetOffset - hostOffset))]"
381388 local var="${!varRef}"
382389 unset -v varVar varRef
383390···404411 # offsets to current offset
405412 local -i mapOffsetResult
406413 function mapOffset() {
407407- local -ri inputOffset="$1"
408408- if (( "$inputOffset" <= 0 )); then
409409- local -ri outputOffset="$inputOffset + $hostOffset"
414414+ local -r inputOffset="$1"
415415+ if (( inputOffset <= 0 )); then
416416+ local -r outputOffset=$((inputOffset + hostOffset))
410417 else
411411- local -ri outputOffset="$inputOffset - 1 + $targetOffset"
418418+ local -r outputOffset=$((inputOffset - 1 + targetOffset))
412419 fi
413420 mapOffsetResult="$outputOffset"
414421 }
415422416423 # Host offset relative to that of the package whose immediate
417424 # dependencies we are currently exploring.
418418- local -i relHostOffset
425425+ local relHostOffset
419426 for relHostOffset in "${allPlatOffsets[@]}"; do
420427 # `+ 1` so we start at 0 for valid index
421421- local files="${propagatedDepFilesVars[$relHostOffset + 1]}"
428428+ local files="${propagatedDepFilesVars[relHostOffset + 1]}"
422429423430 # Host offset relative to the package currently being
424431 # built---as absolute an offset as will be used.
···496503# Add package to the future PATH and run setup hooks
497504activatePackage() {
498505 local pkg="$1"
499499- local -ri hostOffset="$2"
500500- local -ri targetOffset="$3"
506506+ local -r hostOffset="$2"
507507+ local -r targetOffset="$3"
501508502509 # Sanity check
503503- (( "$hostOffset" <= "$targetOffset" )) || exit -1
510510+ (( hostOffset <= targetOffset )) || exit -1
504511505512 if [ -f "$pkg" ]; then
506513 source "$pkg"
···517524 addToSearchPath _PATH "$pkg/bin"
518525 fi
519526520520- if [[ "$hostOffset" -le -1 ]]; then
527527+ if (( hostOffset <= -1 )); then
521528 addToSearchPath _XDG_DATA_DIRS "$pkg/share"
522529 fi
523530···531538}
532539533540_activatePkgs() {
534534- local -i hostOffset targetOffset
541541+ local hostOffset targetOffset
535542 local pkg
536543537544 for hostOffset in "${allPlatOffsets[@]}"; do
538538- local pkgsVar="${pkgAccumVarVars[$hostOffset + 1]}"
545545+ local pkgsVar="${pkgAccumVarVars[hostOffset + 1]}"
539546 for targetOffset in "${allPlatOffsets[@]}"; do
540540- (( "$hostOffset" <= "$targetOffset" )) || continue
547547+ (( hostOffset <= targetOffset )) || continue
541548 local pkgsRef="${pkgsVar}[$targetOffset - $hostOffset]"
542549 local pkgsSlice="${!pkgsRef}[@]"
543550 for pkg in ${!pkgsSlice+"${!pkgsSlice}"}; do
···559566# with this information to the relevant env hook array, but bash
560567# doesn't have closures, so it's easier to just pass this in.
561568_addToEnv() {
562562- local -i depHostOffset depTargetOffset
569569+ local depHostOffset depTargetOffset
563570 local pkg
564571565572 for depHostOffset in "${allPlatOffsets[@]}"; do
566566- local hookVar="${pkgHookVarVars[$depHostOffset + 1]}"
567567- local pkgsVar="${pkgAccumVarVars[$depHostOffset + 1]}"
573573+ local hookVar="${pkgHookVarVars[depHostOffset + 1]}"
574574+ local pkgsVar="${pkgAccumVarVars[depHostOffset + 1]}"
568575 for depTargetOffset in "${allPlatOffsets[@]}"; do
569569- (( "$depHostOffset" <= "$depTargetOffset" )) || continue
576576+ (( depHostOffset <= depTargetOffset )) || continue
570577 local hookRef="${hookVar}[$depTargetOffset - $depHostOffset]"
571578 if [[ -z "${strictDeps-}" ]]; then
572579···578585 #
579586 # TODO(@Ericson2314): Don't special-case native compilation
580587 for pkg in \
581581- ${pkgsBuildBuild+"${pkgsBuildBuild[@]}"} \
582582- ${pkgsBuildHost+"${pkgsBuildHost[@]}"} \
583583- ${pkgsBuildTarget+"${pkgsBuildTarget[@]}"} \
584584- ${pkgsHostHost+"${pkgsHostHost[@]}"} \
585585- ${pkgsHostTarget+"${pkgsHostTarget[@]}"} \
586586- ${pkgsTargetTarget+"${pkgsTargetTarget[@]}"}
588588+ "${pkgsBuildBuild[@]}" \
589589+ "${pkgsBuildHost[@]}" \
590590+ "${pkgsBuildTarget[@]}" \
591591+ "${pkgsHostHost[@]}" \
592592+ "${pkgsHostTarget[@]}" \
593593+ "${pkgsTargetTarget[@]}"
587594 do
588595 if [[ "$visitedPkgs" = *"$pkg"* ]]; then
589596 continue
···656663# means that we're supposed to try and auto-detect the number of
657664# available CPU cores at run-time.
658665659659-if [ -z "${NIX_BUILD_CORES:-}" ]; then
660660- NIX_BUILD_CORES="1"
661661-elif [ "$NIX_BUILD_CORES" -le 0 ]; then
662662- NIX_BUILD_CORES=$(nproc 2>/dev/null || true)
663663- if expr >/dev/null 2>&1 "$NIX_BUILD_CORES" : "^[0-9][0-9]*$"; then
664664- :
665665- else
666666- NIX_BUILD_CORES="1"
667667- fi
666666+NIX_BUILD_CORES="${NIX_BUILD_CORES:-1}"
667667+if ((NIX_BUILD_CORES <= 0)); then
668668+ guess=$(nproc 2>/dev/null || true)
669669+ ((NIX_BUILD_CORES = guess <= 0 ? 1 : guess))
668670fi
669671export NIX_BUILD_CORES
670672671673672674# Prevent SSL libraries from using certificates in /etc/ssl, unless set explicitly.
673675# Leave it in impure shells for convenience.
674674-if [ -z "${NIX_SSL_CERT_FILE:-}" ] && [ "${IN_NIX_SHELL:-}" != "impure" ]; then
676676+if [[ -z "${NIX_SSL_CERT_FILE:-}" && "${IN_NIX_SHELL:-}" != "impure" ]]; then
675677 export NIX_SSL_CERT_FILE=/no-cert-file.crt
676678fi
677679# Another variant left for compatibility.
678678-if [ -z "${SSL_CERT_FILE:-}" ] && [ "${IN_NIX_SHELL:-}" != "impure" ]; then
680680+if [[ -z "${SSL_CERT_FILE:-}" && "${IN_NIX_SHELL:-}" != "impure" ]]; then
679681 export SSL_CERT_FILE=/no-cert-file.crt
680682fi
681683···739741 printf "%s" "${!var}"
740742}
741743744744+# put the content of a file in a variable
745745+# fail loudly if provided with a binary (containing null bytes)
742746consumeEntire() {
743747 # read returns non-0 on EOF, so we want read to fail
744744- if IFS='' read -r -N 0 $1; then
748748+ if IFS='' read -r -d '' $1 ; then
745749 echo "consumeEntire(): ERROR: Input null bytes, won't process" >&2
746750 return 1
747751 fi
···10101014 configureFlags="${prefixKey:---prefix=}$prefix $configureFlags"
10111015 fi
1012101610131013- # Add --disable-dependency-tracking to speed up some builds.
10141014- if [ -z "${dontAddDisableDepTrack:-}" ]; then
10151015- if [ -f "$configureScript" ] && grep -q dependency-tracking "$configureScript"; then
10161016- configureFlags="--disable-dependency-tracking $configureFlags"
10171017+ if [[ -f "$configureScript" ]]; then
10181018+ # Add --disable-dependency-tracking to speed up some builds.
10191019+ if [ -z "${dontAddDisableDepTrack:-}" ]; then
10201020+ if grep -q dependency-tracking "$configureScript"; then
10211021+ configureFlags="--disable-dependency-tracking $configureFlags"
10221022+ fi
10171023 fi
10181018- fi
1019102410201020- # By default, disable static builds.
10211021- if [ -z "${dontDisableStatic:-}" ]; then
10221022- if [ -f "$configureScript" ] && grep -q enable-static "$configureScript"; then
10231023- configureFlags="--disable-static $configureFlags"
10251025+ # By default, disable static builds.
10261026+ if [ -z "${dontDisableStatic:-}" ]; then
10271027+ if grep -q enable-static "$configureScript"; then
10281028+ configureFlags="--disable-static $configureFlags"
10291029+ fi
10241030 fi
10251031 fi
10261032···10281034 # Old bash empty array hack
10291035 # shellcheck disable=SC2086
10301036 local flagsArray=(
10311031- $configureFlags ${configureFlagsArray+"${configureFlagsArray[@]}"}
10371037+ $configureFlags "${configureFlagsArray[@]}"
10321038 )
10331039 echoCmd 'configure flags' "${flagsArray[@]}"
10341040 # shellcheck disable=SC2086
···10581064 local flagsArray=(
10591065 ${enableParallelBuilding:+-j${NIX_BUILD_CORES} -l${NIX_BUILD_CORES}}
10601066 SHELL=$SHELL
10611061- $makeFlags ${makeFlagsArray+"${makeFlagsArray[@]}"}
10621062- $buildFlags ${buildFlagsArray+"${buildFlagsArray[@]}"}
10671067+ $makeFlags "${makeFlagsArray[@]}"
10681068+ $buildFlags "${buildFlagsArray[@]}"
10631069 )
1064107010651071 echoCmd 'build flags' "${flagsArray[@]}"
···10971103 local flagsArray=(
10981104 ${enableParallelChecking:+-j${NIX_BUILD_CORES} -l${NIX_BUILD_CORES}}
10991105 SHELL=$SHELL
11001100- $makeFlags ${makeFlagsArray+"${makeFlagsArray[@]}"}
11011101- ${checkFlags:-VERBOSE=y} ${checkFlagsArray+"${checkFlagsArray[@]}"}
11061106+ $makeFlags "${makeFlagsArray[@]}"
11071107+ ${checkFlags:-VERBOSE=y} "${checkFlagsArray[@]}"
11021108 ${checkTarget}
11031109 )
11041110···11231129 # shellcheck disable=SC2086
11241130 local flagsArray=(
11251131 SHELL=$SHELL
11261126- $makeFlags ${makeFlagsArray+"${makeFlagsArray[@]}"}
11271127- $installFlags ${installFlagsArray+"${installFlagsArray[@]}"}
11321132+ $makeFlags "${makeFlagsArray[@]}"
11331133+ $installFlags "${installFlagsArray[@]}"
11281134 ${installTargets:-install}
11291135 )
11301136···12311237 local flagsArray=(
12321238 ${enableParallelChecking:+-j${NIX_BUILD_CORES} -l${NIX_BUILD_CORES}}
12331239 SHELL=$SHELL
12341234- $makeFlags ${makeFlagsArray+"${makeFlagsArray[@]}"}
12351235- $installCheckFlags ${installCheckFlagsArray+"${installCheckFlagsArray[@]}"}
12401240+ $makeFlags "${makeFlagsArray[@]}"
12411241+ $installCheckFlags "${installCheckFlagsArray[@]}"
12361242 ${installCheckTarget:-installcheck}
12371243 )
12381244···12511257 # Old bash empty array hack
12521258 # shellcheck disable=SC2086
12531259 local flagsArray=(
12541254- $distFlags ${distFlagsArray+"${distFlagsArray[@]}"} ${distTarget:-dist}
12601260+ $distFlags "${distFlagsArray[@]}" ${distTarget:-dist}
12551261 )
1256126212571263 echo 'dist flags: %q' "${flagsArray[@]}"