diff --git a/.gitignore b/.gitignore index beabd4b..cfa454c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1 @@ /nix-2.31.2.tar.gz -/nix-2.24.15.tar.gz diff --git a/13995.patch b/13995.patch new file mode 100644 index 0000000..354ba10 --- /dev/null +++ b/13995.patch @@ -0,0 +1,218 @@ +From dd1a554aba720c5f23a529ddc32f1c7127b62af9 Mon Sep 17 00:00:00 2001 +From: Jens Petersen +Date: Mon, 15 Sep 2025 14:38:08 +0800 +Subject: [PATCH] meson: add soversion with nix version to give SONAME to libs + (#13960, #13979) + +remove 'pre' version suffix for non-releases (chokes Darwin ld) +--- + src/libcmd/meson.build | 1 + + src/libexpr-c/meson.build | 1 + + src/libexpr-test-support/meson.build | 1 + + src/libexpr/meson.build | 1 + + src/libfetchers-c/meson.build | 1 + + src/libfetchers/meson.build | 1 + + src/libflake-c/meson.build | 1 + + src/libflake/meson.build | 1 + + src/libmain-c/meson.build | 1 + + src/libmain/meson.build | 1 + + src/libstore-c/meson.build | 1 + + src/libstore-test-support/meson.build | 1 + + src/libstore/meson.build | 1 + + src/libutil-c/meson.build | 1 + + src/libutil-test-support/meson.build | 1 + + src/libutil/meson.build | 1 + + 16 files changed, 16 insertions(+) + +diff --git a/src/libcmd/meson.build b/src/libcmd/meson.build +index 24e0752462c..b259182c266 100644 +--- a/src/libcmd/meson.build ++++ b/src/libcmd/meson.build +@@ -95,6 +95,7 @@ this_library = library( + 'nixcmd', + sources, + config_priv_h, ++ soversion : meson.project_version().replace('pre', ''), + dependencies : deps_public + deps_private + deps_other, + include_directories : include_dirs, + link_args : linker_export_flags, +diff --git a/src/libexpr-c/meson.build b/src/libexpr-c/meson.build +index 7c014d61d37..95c2c8ac92c 100644 +--- a/src/libexpr-c/meson.build ++++ b/src/libexpr-c/meson.build +@@ -50,6 +50,7 @@ subdir('nix-meson-build-support/windows-version') + this_library = library( + 'nixexprc', + sources, ++ soversion : meson.project_version().replace('pre', ''), + dependencies : deps_public + deps_private + deps_other, + include_directories : include_dirs, + link_args : linker_export_flags, +diff --git a/src/libexpr-test-support/meson.build b/src/libexpr-test-support/meson.build +index d762eb85e32..1d874320a51 100644 +--- a/src/libexpr-test-support/meson.build ++++ b/src/libexpr-test-support/meson.build +@@ -44,6 +44,7 @@ subdir('nix-meson-build-support/windows-version') + this_library = library( + 'nix-expr-test-support', + sources, ++ soversion : meson.project_version().replace('pre', ''), + dependencies : deps_public + deps_private + deps_other, + include_directories : include_dirs, + # TODO: Remove `-lrapidcheck` when https://github.com/emil-e/rapidcheck/pull/326 +diff --git a/src/libexpr/meson.build b/src/libexpr/meson.build +index 40d3f390b4b..dc43a97420d 100644 +--- a/src/libexpr/meson.build ++++ b/src/libexpr/meson.build +@@ -181,6 +181,7 @@ this_library = library( + parser_tab, + lexer_tab, + generated_headers, ++ soversion : meson.project_version().replace('pre', ''), + dependencies : deps_public + deps_private + deps_other, + include_directories : include_dirs, + link_args : linker_export_flags, +diff --git a/src/libfetchers-c/meson.build b/src/libfetchers-c/meson.build +index 8542744b4da..a381c792af9 100644 +--- a/src/libfetchers-c/meson.build ++++ b/src/libfetchers-c/meson.build +@@ -53,6 +53,7 @@ subdir('nix-meson-build-support/windows-version') + this_library = library( + 'nixfetchersc', + sources, ++ soversion : meson.project_version().replace('pre', ''), + dependencies : deps_public + deps_private + deps_other, + include_directories : include_dirs, + link_args : linker_export_flags, +diff --git a/src/libfetchers/meson.build b/src/libfetchers/meson.build +index 922a2c49199..e5f5bd19210 100644 +--- a/src/libfetchers/meson.build ++++ b/src/libfetchers/meson.build +@@ -61,6 +61,7 @@ subdir('nix-meson-build-support/windows-version') + this_library = library( + 'nixfetchers', + sources, ++ soversion : meson.project_version().replace('pre', ''), + dependencies : deps_public + deps_private + deps_other, + include_directories : include_dirs, + link_args : linker_export_flags, +diff --git a/src/libflake-c/meson.build b/src/libflake-c/meson.build +index 933e06d9037..83729178693 100644 +--- a/src/libflake-c/meson.build ++++ b/src/libflake-c/meson.build +@@ -53,6 +53,7 @@ subdir('nix-meson-build-support/windows-version') + this_library = library( + 'nixflakec', + sources, ++ soversion : meson.project_version().replace('pre', ''), + dependencies : deps_public + deps_private + deps_other, + include_directories : include_dirs, + link_args : linker_export_flags, +diff --git a/src/libflake/meson.build b/src/libflake/meson.build +index 191d8f0680c..a962258e723 100644 +--- a/src/libflake/meson.build ++++ b/src/libflake/meson.build +@@ -58,6 +58,7 @@ this_library = library( + 'nixflake', + sources, + generated_headers, ++ soversion : meson.project_version().replace('pre', ''), + dependencies : deps_public + deps_private + deps_other, + include_directories : include_dirs, + link_args : linker_export_flags, +diff --git a/src/libmain-c/meson.build b/src/libmain-c/meson.build +index 9e26ad8adf3..61ec4d54b53 100644 +--- a/src/libmain-c/meson.build ++++ b/src/libmain-c/meson.build +@@ -45,6 +45,7 @@ subdir('nix-meson-build-support/windows-version') + this_library = library( + 'nixmainc', + sources, ++ soversion : meson.project_version().replace('pre', ''), + dependencies : deps_public + deps_private + deps_other, + include_directories : include_dirs, + link_args : linker_export_flags, +diff --git a/src/libmain/meson.build b/src/libmain/meson.build +index 4a90d2d83b6..d465dd6a40f 100644 +--- a/src/libmain/meson.build ++++ b/src/libmain/meson.build +@@ -77,6 +77,7 @@ this_library = library( + 'nixmain', + sources, + config_priv_h, ++ soversion : meson.project_version().replace('pre', ''), + dependencies : deps_public + deps_private + deps_other, + include_directories : include_dirs, + link_args : linker_export_flags, +diff --git a/src/libstore-c/meson.build b/src/libstore-c/meson.build +index f8eaef80395..b73822b0cb7 100644 +--- a/src/libstore-c/meson.build ++++ b/src/libstore-c/meson.build +@@ -46,6 +46,7 @@ subdir('nix-meson-build-support/windows-version') + this_library = library( + 'nixstorec', + sources, ++ soversion : meson.project_version().replace('pre', ''), + dependencies : deps_public + deps_private + deps_other, + include_directories : include_dirs, + link_args : linker_export_flags, +diff --git a/src/libstore-test-support/meson.build b/src/libstore-test-support/meson.build +index b2977941f86..90fef8489ad 100644 +--- a/src/libstore-test-support/meson.build ++++ b/src/libstore-test-support/meson.build +@@ -44,6 +44,7 @@ subdir('nix-meson-build-support/windows-version') + this_library = library( + 'nix-store-test-support', + sources, ++ soversion : meson.project_version().replace('pre', ''), + dependencies : deps_public + deps_private + deps_other, + include_directories : include_dirs, + # TODO: Remove `-lrapidcheck` when https://github.com/emil-e/rapidcheck/pull/326 +diff --git a/src/libstore/meson.build b/src/libstore/meson.build +index 7aeacbab79b..95dcf08bd0d 100644 +--- a/src/libstore/meson.build ++++ b/src/libstore/meson.build +@@ -363,6 +363,7 @@ this_library = library( + generated_headers, + sources, + config_priv_h, ++ soversion : meson.project_version().replace('pre', ''), + dependencies : deps_public + deps_private + deps_other, + include_directories : include_dirs, + link_args : linker_export_flags, +diff --git a/src/libutil-c/meson.build b/src/libutil-c/meson.build +index 8131c517cd8..b214266a13a 100644 +--- a/src/libutil-c/meson.build ++++ b/src/libutil-c/meson.build +@@ -53,6 +53,7 @@ this_library = library( + 'nixutilc', + sources, + config_priv_h, ++ soversion : meson.project_version().replace('pre', ''), + dependencies : deps_public + deps_private + deps_other, + include_directories : include_dirs, + link_args : linker_export_flags, +diff --git a/src/libutil-test-support/meson.build b/src/libutil-test-support/meson.build +index 910f1d88164..da2b443ec54 100644 +--- a/src/libutil-test-support/meson.build ++++ b/src/libutil-test-support/meson.build +@@ -41,6 +41,7 @@ subdir('nix-meson-build-support/windows-version') + this_library = library( + 'nix-util-test-support', + sources, ++ soversion : meson.project_version().replace('pre', ''), + dependencies : deps_public + deps_private + deps_other, + include_directories : include_dirs, + # TODO: Remove `-lrapidcheck` when https://github.com/emil-e/rapidcheck/pull/326 +diff --git a/src/libutil/meson.build b/src/libutil/meson.build +index cdffc892ae7..ff8b042c7ec 100644 +--- a/src/libutil/meson.build ++++ b/src/libutil/meson.build +@@ -197,6 +197,7 @@ subdir('nix-meson-build-support/windows-version') + this_library = library( + 'nixutil', + sources, ++ soversion : meson.project_version().replace('pre', ''), + dependencies : deps_public + deps_private + deps_other, + include_directories : include_dirs, + link_args : linker_export_flags, diff --git a/14001.patch b/14001.patch new file mode 100644 index 0000000..456aff4 --- /dev/null +++ b/14001.patch @@ -0,0 +1,246 @@ +From 86bb7c958a4ed46411da74a4498581a0cdc454a0 Mon Sep 17 00:00:00 2001 +From: Jens Petersen +Date: Tue, 16 Sep 2025 12:54:30 +0800 +Subject: [PATCH] meson: refactor nix_soversion into + nix-meson-build-support/common + +This is a follow-on to #13995 which added soversion to the libraries +--- + nix-meson-build-support/common/meson.build | 3 +++ + src/libcmd/meson.build | 2 +- + src/libexpr-c/meson.build | 2 +- + src/libexpr-test-support/meson.build | 2 +- + src/libexpr/meson.build | 2 +- + src/libfetchers-c/meson.build | 2 +- + src/libfetchers/meson.build | 2 +- + src/libflake-c/meson.build | 2 +- + src/libflake/meson.build | 2 +- + src/libmain-c/meson.build | 2 +- + src/libmain/meson.build | 2 +- + src/libstore-c/meson.build | 2 +- + src/libstore-test-support/meson.build | 2 +- + src/libstore/meson.build | 2 +- + src/libutil-c/meson.build | 2 +- + src/libutil-test-support/meson.build | 2 +- + src/libutil/meson.build | 2 +- + 17 files changed, 19 insertions(+), 16 deletions(-) + +diff --git a/nix-meson-build-support/common/meson.build b/nix-meson-build-support/common/meson.build +index fd686f1407f..5a29ff61d94 100644 +--- a/nix-meson-build-support/common/meson.build ++++ b/nix-meson-build-support/common/meson.build +@@ -40,3 +40,6 @@ if cxx.get_id() == 'clang' and ('address' in get_option('b_sanitize') or 'undefi + )) + add_project_link_arguments('-shared-libasan', language : 'cpp') + endif ++ ++# Darwin ld doesn't like "X.Y.Zpre" ++nix_soversion = meson.project_version().strip('pre') +diff --git a/src/libcmd/meson.build b/src/libcmd/meson.build +index b259182c266..f553afa0ba1 100644 +--- a/src/libcmd/meson.build ++++ b/src/libcmd/meson.build +@@ -95,7 +95,7 @@ this_library = library( + 'nixcmd', + sources, + config_priv_h, +- soversion : meson.project_version().replace('pre', ''), ++ soversion : nix_soversion, + dependencies : deps_public + deps_private + deps_other, + include_directories : include_dirs, + link_args : linker_export_flags, +diff --git a/src/libexpr-c/meson.build b/src/libexpr-c/meson.build +index 95c2c8ac92c..c47704ce411 100644 +--- a/src/libexpr-c/meson.build ++++ b/src/libexpr-c/meson.build +@@ -50,7 +50,7 @@ subdir('nix-meson-build-support/windows-version') + this_library = library( + 'nixexprc', + sources, +- soversion : meson.project_version().replace('pre', ''), ++ soversion : nix_soversion, + dependencies : deps_public + deps_private + deps_other, + include_directories : include_dirs, + link_args : linker_export_flags, +diff --git a/src/libexpr-test-support/meson.build b/src/libexpr-test-support/meson.build +index 1d874320a51..df28661b7e7 100644 +--- a/src/libexpr-test-support/meson.build ++++ b/src/libexpr-test-support/meson.build +@@ -44,7 +44,7 @@ subdir('nix-meson-build-support/windows-version') + this_library = library( + 'nix-expr-test-support', + sources, +- soversion : meson.project_version().replace('pre', ''), ++ soversion : nix_soversion, + dependencies : deps_public + deps_private + deps_other, + include_directories : include_dirs, + # TODO: Remove `-lrapidcheck` when https://github.com/emil-e/rapidcheck/pull/326 +diff --git a/src/libexpr/meson.build b/src/libexpr/meson.build +index dc43a97420d..55a36c1bd58 100644 +--- a/src/libexpr/meson.build ++++ b/src/libexpr/meson.build +@@ -181,7 +181,7 @@ this_library = library( + parser_tab, + lexer_tab, + generated_headers, +- soversion : meson.project_version().replace('pre', ''), ++ soversion : nix_soversion, + dependencies : deps_public + deps_private + deps_other, + include_directories : include_dirs, + link_args : linker_export_flags, +diff --git a/src/libfetchers-c/meson.build b/src/libfetchers-c/meson.build +index a381c792af9..db415d9173e 100644 +--- a/src/libfetchers-c/meson.build ++++ b/src/libfetchers-c/meson.build +@@ -53,7 +53,7 @@ subdir('nix-meson-build-support/windows-version') + this_library = library( + 'nixfetchersc', + sources, +- soversion : meson.project_version().replace('pre', ''), ++ soversion : nix_soversion, + dependencies : deps_public + deps_private + deps_other, + include_directories : include_dirs, + link_args : linker_export_flags, +diff --git a/src/libfetchers/meson.build b/src/libfetchers/meson.build +index e5f5bd19210..792a0fdbf41 100644 +--- a/src/libfetchers/meson.build ++++ b/src/libfetchers/meson.build +@@ -61,7 +61,7 @@ subdir('nix-meson-build-support/windows-version') + this_library = library( + 'nixfetchers', + sources, +- soversion : meson.project_version().replace('pre', ''), ++ soversion : nix_soversion, + dependencies : deps_public + deps_private + deps_other, + include_directories : include_dirs, + link_args : linker_export_flags, +diff --git a/src/libflake-c/meson.build b/src/libflake-c/meson.build +index 83729178693..fddb39bdf96 100644 +--- a/src/libflake-c/meson.build ++++ b/src/libflake-c/meson.build +@@ -53,7 +53,7 @@ subdir('nix-meson-build-support/windows-version') + this_library = library( + 'nixflakec', + sources, +- soversion : meson.project_version().replace('pre', ''), ++ soversion : nix_soversion, + dependencies : deps_public + deps_private + deps_other, + include_directories : include_dirs, + link_args : linker_export_flags, +diff --git a/src/libflake/meson.build b/src/libflake/meson.build +index a962258e723..58916ecd9ab 100644 +--- a/src/libflake/meson.build ++++ b/src/libflake/meson.build +@@ -58,7 +58,7 @@ this_library = library( + 'nixflake', + sources, + generated_headers, +- soversion : meson.project_version().replace('pre', ''), ++ soversion : nix_soversion, + dependencies : deps_public + deps_private + deps_other, + include_directories : include_dirs, + link_args : linker_export_flags, +diff --git a/src/libmain-c/meson.build b/src/libmain-c/meson.build +index 61ec4d54b53..36332fdb70a 100644 +--- a/src/libmain-c/meson.build ++++ b/src/libmain-c/meson.build +@@ -45,7 +45,7 @@ subdir('nix-meson-build-support/windows-version') + this_library = library( + 'nixmainc', + sources, +- soversion : meson.project_version().replace('pre', ''), ++ soversion : nix_soversion, + dependencies : deps_public + deps_private + deps_other, + include_directories : include_dirs, + link_args : linker_export_flags, +diff --git a/src/libmain/meson.build b/src/libmain/meson.build +index d465dd6a40f..2ac59924e59 100644 +--- a/src/libmain/meson.build ++++ b/src/libmain/meson.build +@@ -77,7 +77,7 @@ this_library = library( + 'nixmain', + sources, + config_priv_h, +- soversion : meson.project_version().replace('pre', ''), ++ soversion : nix_soversion, + dependencies : deps_public + deps_private + deps_other, + include_directories : include_dirs, + link_args : linker_export_flags, +diff --git a/src/libstore-c/meson.build b/src/libstore-c/meson.build +index b73822b0cb7..c6b6174c775 100644 +--- a/src/libstore-c/meson.build ++++ b/src/libstore-c/meson.build +@@ -46,7 +46,7 @@ subdir('nix-meson-build-support/windows-version') + this_library = library( + 'nixstorec', + sources, +- soversion : meson.project_version().replace('pre', ''), ++ soversion : nix_soversion, + dependencies : deps_public + deps_private + deps_other, + include_directories : include_dirs, + link_args : linker_export_flags, +diff --git a/src/libstore-test-support/meson.build b/src/libstore-test-support/meson.build +index 90fef8489ad..5873680eae2 100644 +--- a/src/libstore-test-support/meson.build ++++ b/src/libstore-test-support/meson.build +@@ -44,7 +44,7 @@ subdir('nix-meson-build-support/windows-version') + this_library = library( + 'nix-store-test-support', + sources, +- soversion : meson.project_version().replace('pre', ''), ++ soversion : nix_soversion, + dependencies : deps_public + deps_private + deps_other, + include_directories : include_dirs, + # TODO: Remove `-lrapidcheck` when https://github.com/emil-e/rapidcheck/pull/326 +diff --git a/src/libstore/meson.build b/src/libstore/meson.build +index 95dcf08bd0d..556616181ae 100644 +--- a/src/libstore/meson.build ++++ b/src/libstore/meson.build +@@ -363,7 +363,7 @@ this_library = library( + generated_headers, + sources, + config_priv_h, +- soversion : meson.project_version().replace('pre', ''), ++ soversion : nix_soversion, + dependencies : deps_public + deps_private + deps_other, + include_directories : include_dirs, + link_args : linker_export_flags, +diff --git a/src/libutil-c/meson.build b/src/libutil-c/meson.build +index b214266a13a..1806dbb6f9a 100644 +--- a/src/libutil-c/meson.build ++++ b/src/libutil-c/meson.build +@@ -53,7 +53,7 @@ this_library = library( + 'nixutilc', + sources, + config_priv_h, +- soversion : meson.project_version().replace('pre', ''), ++ soversion : nix_soversion, + dependencies : deps_public + deps_private + deps_other, + include_directories : include_dirs, + link_args : linker_export_flags, +diff --git a/src/libutil-test-support/meson.build b/src/libutil-test-support/meson.build +index da2b443ec54..64231107eb6 100644 +--- a/src/libutil-test-support/meson.build ++++ b/src/libutil-test-support/meson.build +@@ -41,7 +41,7 @@ subdir('nix-meson-build-support/windows-version') + this_library = library( + 'nix-util-test-support', + sources, +- soversion : meson.project_version().replace('pre', ''), ++ soversion : nix_soversion, + dependencies : deps_public + deps_private + deps_other, + include_directories : include_dirs, + # TODO: Remove `-lrapidcheck` when https://github.com/emil-e/rapidcheck/pull/326 +diff --git a/src/libutil/meson.build b/src/libutil/meson.build +index ff8b042c7ec..f4b8dbb613b 100644 +--- a/src/libutil/meson.build ++++ b/src/libutil/meson.build +@@ -197,7 +197,7 @@ subdir('nix-meson-build-support/windows-version') + this_library = library( + 'nixutil', + sources, +- soversion : meson.project_version().replace('pre', ''), ++ soversion : nix_soversion, + dependencies : deps_public + deps_private + deps_other, + include_directories : include_dirs, + link_args : linker_export_flags, diff --git a/14005.patch b/14005.patch new file mode 100644 index 0000000..768a732 --- /dev/null +++ b/14005.patch @@ -0,0 +1,23 @@ +From ca23c819e0492272a695f3f87467a05c152ac77d Mon Sep 17 00:00:00 2001 +From: Jens Petersen +Date: Tue, 16 Sep 2025 18:31:40 +0800 +Subject: [PATCH] nix-meson-build-support/common nix_soversion: fixup removal + of 'pre' + +.strip() removes individual chars whereas .replace() affects whole substring + +Thanks @keszybz +--- + nix-meson-build-support/common/meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/nix-meson-build-support/common/meson.build b/nix-meson-build-support/common/meson.build +index 5a29ff61d94..a46715193c6 100644 +--- a/nix-meson-build-support/common/meson.build ++++ b/nix-meson-build-support/common/meson.build +@@ -42,4 +42,4 @@ if cxx.get_id() == 'clang' and ('address' in get_option('b_sanitize') or 'undefi + endif + + # Darwin ld doesn't like "X.Y.Zpre" +-nix_soversion = meson.project_version().strip('pre') ++nix_soversion = meson.project_version().replace('pre', '') diff --git a/14018.patch b/14018.patch new file mode 100644 index 0000000..8ae9278 --- /dev/null +++ b/14018.patch @@ -0,0 +1,24 @@ +From 7dbfe9f5761662efdd7de8c00d940749af276240 Mon Sep 17 00:00:00 2001 +From: Sergei Zimmerman +Date: Thu, 18 Sep 2025 23:34:27 +0300 +Subject: [PATCH] meson: Fix SONAME for unstable versions + +Replacing the string is not enough [^] for e.g. nixpkgs precise versions: + +`2.31pre20250712_b1245123` + +[^]: https://github.com/NixOS/nixpkgs/pull/444089 +--- + nix-meson-build-support/common/meson.build | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/nix-meson-build-support/common/meson.build b/nix-meson-build-support/common/meson.build +index a46715193c6..f08fb3d8439 100644 +--- a/nix-meson-build-support/common/meson.build ++++ b/nix-meson-build-support/common/meson.build +@@ -42,4 +42,4 @@ if cxx.get_id() == 'clang' and ('address' in get_option('b_sanitize') or 'undefi + endif + + # Darwin ld doesn't like "X.Y.Zpre" +-nix_soversion = meson.project_version().replace('pre', '') ++nix_soversion = meson.project_version().split('pre')[0] diff --git a/14593.patch b/14593.patch new file mode 100644 index 0000000..e406e61 --- /dev/null +++ b/14593.patch @@ -0,0 +1,61 @@ +From ef6dbe76dc25e67b47dc9a8caa6dd29ff5996a20 Mon Sep 17 00:00:00 2001 +From: Jens Petersen +Date: Wed, 19 Nov 2025 15:50:43 +0800 +Subject: [PATCH] docs: fixup some rellinks to use ./ prefix for consistency + +"./" prefix is already used almost everywhere +--- + doc/manual/source/command-ref/nix-build.md | 6 +++--- + doc/manual/source/command-ref/nix-instantiate.md | 2 +- + src/nix/profile-diff-closures.md | 2 +- + 3 files changed, 5 insertions(+), 5 deletions(-) + +diff --git a/doc/manual/source/command-ref/nix-build.md b/doc/manual/source/command-ref/nix-build.md +index 3bb59cbed12..860a1fc9745 100644 +--- a/doc/manual/source/command-ref/nix-build.md ++++ b/doc/manual/source/command-ref/nix-build.md +@@ -36,7 +36,7 @@ to a temporary location. The tarball must include a single top-level + directory containing at least a file named `default.nix`. + + `nix-build` is essentially a wrapper around +-[`nix-instantiate`](nix-instantiate.md) (to translate a high-level Nix ++[`nix-instantiate`](./nix-instantiate.md) (to translate a high-level Nix + expression to a low-level [store derivation]) and [`nix-store + --realise`](@docroot@/command-ref/nix-store/realise.md) (to build the store + derivation). +@@ -52,8 +52,8 @@ derivation). + # Options + + All options not listed here are passed to +-[`nix-store --realise`](nix-store/realise.md), +-except for `--arg` and `--attr` / `-A` which are passed to [`nix-instantiate`](nix-instantiate.md). ++[`nix-store --realise`](./nix-store/realise.md), ++except for `--arg` and `--attr` / `-A` which are passed to [`nix-instantiate`](./nix-instantiate.md). + + - [`--no-out-link`](#opt-no-out-link) + +diff --git a/doc/manual/source/command-ref/nix-instantiate.md b/doc/manual/source/command-ref/nix-instantiate.md +index 38454515d57..bac9f365933 100644 +--- a/doc/manual/source/command-ref/nix-instantiate.md ++++ b/doc/manual/source/command-ref/nix-instantiate.md +@@ -32,7 +32,7 @@ standard input. + + - `--add-root` *path* + +- See the [corresponding option](nix-store.md) in `nix-store`. ++ See the [corresponding option](./nix-store.md) in `nix-store`. + + - `--parse` + +diff --git a/src/nix/profile-diff-closures.md b/src/nix/profile-diff-closures.md +index 295d1252bcd..1cfed160f31 100644 +--- a/src/nix/profile-diff-closures.md ++++ b/src/nix/profile-diff-closures.md +@@ -23,6 +23,6 @@ R""( + + This command shows the difference between the closures of subsequent + versions of a profile. See [`nix store +-diff-closures`](nix3-store-diff-closures.md) for details. ++diff-closures`](./nix3-store-diff-closures.md) for details. + + )"" diff --git a/changelog b/changelog new file mode 100644 index 0000000..e5e06d1 --- /dev/null +++ b/changelog @@ -0,0 +1,68 @@ +* Mon Oct 27 2025 Jens Petersen - 2.31.2-8 +- drop redundant sysusers and tmpfiles.d scriptlets (#2388768) +- add obsoletes for petersen/nix copr subpackages + +* Sat Oct 25 2025 Jens Petersen - 2.31.2-7 +- recommends nix-daemon if systemd + +* Sat Oct 25 2025 Jens Petersen - 2.31.2-6 +- rename users subpackage to system +- improve /nix/var dirs ownership and perms +- rename sysusers file to nix.conf +- move nix-daemon tmpfiles.d to nix-daemon + +* Sat Oct 25 2025 Jens Petersen - 2.31.2-5 +- split nix-users from nix-daemon and drop nix-singleuser +- drop all conflicts + +* Fri Oct 24 2025 Jens Petersen - 2.31.2-4 +- drop filesystem subpackage and ghost singleuser dirs +- nix-daemon and nix-singleuser conflict with each other + +* Thu Oct 23 2025 Jens Petersen - 2.31.2-3 +- use tmpfiles.d for nix-filesystem +- improve the readme +- list bin files explicitly +- nix-singleuser now owns its dirs +- add nix-daemon conflicts for ostree and containers +- add nix-singleuser recommends for containers + +* Sat Oct 18 2025 Jens Petersen - 2.31.2-2 +- FHS Exception for /nix was approved (https://pagure.io/fesco/issue/3473) +- add multiuser setup to daemon subpackage +- add singleuser and nix-filesystem subpackages + +* Mon Sep 22 2025 Jens Petersen - 2.31.2-1 +- update to 2.31.2 + +* Wed Sep 17 2025 Jens Petersen - 2.31.1-6 +- list .so files explicitly without globbing (#2388768) +- disable /usr/lib/tmpfiles.d/nix-daemon.conf for now (#2388768) + +* Mon Sep 15 2025 Jens Petersen - 2.31.1-5 +- set the soversion to the nix version (#13995, #14001, #14005) + +* Sun Sep 14 2025 Jens Petersen - 2.31.1-4 +- add simple check with LD_LIBRARY_PATH + +* Fri Sep 12 2025 Jens Petersen - 2.31.1-3 +- revert to shared libs, add libs subpackage and restore devel +- apply upstream submitted PR to enable soname versioning (#13966) + +* Thu Sep 11 2025 Jens Petersen - 2.31.1-2 +- noarch nix-daemon subpackage cannot use _isa requires + +* Wed Sep 10 2025 Jens Petersen - 2.31.1-1 +- https://github.com/NixOS/nix/blob/2.31.1/doc/manual/source/release-notes/rl-2.31.md +- rename nix-core to base package +- use readline (#2388768) +- improve MESON_OPTS setup (zbyszek, #2388768) +- use static libs and drop devel package +- disable perl binding + +* Sat Aug 16 2025 Jens Petersen - 2.30.2-2 +- fix nix-devel requires +- add systemd scriptlets for nix-daemon + +* Fri Aug 15 2025 Jens Petersen - 2.30.2-1 +- initial packaging of nix programs without /nix diff --git a/examples/flake/flake.nix b/examples/flake/flake.nix index e7e63c1..8f8c3f9 100644 --- a/examples/flake/flake.nix +++ b/examples/flake/flake.nix @@ -1,20 +1,13 @@ { - description = "A basic dev shell for a single system."; - - inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05"; - }; - - outputs = { self, nixpkgs, builtins }: - let - # or hardcode "x86_64-linux" - system = builtins.currentSystem; - pkgs = import nixpkgs { inherit system; }; - in - { - devShells.${system}.default = pkgs.mkShell { - packages = with pkgs; [ hello ]; - }; - }; + outputs = { self, nixpkgs, flake-utils }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = import nixpkgs { inherit system; }; + in + { + devShells.default = pkgs.mkShell { + packages = with pkgs; [ hello ]; + }; + }); } # Run with: nix develop diff --git a/nix-disable-mdbook.patch b/nix-disable-mdbook.patch new file mode 100644 index 0000000..1453525 --- /dev/null +++ b/nix-disable-mdbook.patch @@ -0,0 +1,46 @@ +--- nix-2.31.2/doc/manual/meson.build~ 2025-09-18 04:25:38.000000000 +0800 ++++ nix-2.31.2/doc/manual/meson.build 2025-11-13 00:26:04.673032194 +0800 +@@ -7,7 +7,7 @@ + + nix = find_program('nix', native : true) + +-mdbook = find_program('mdbook', native : true) ++# mdbook = find_program('mdbook', native : true) + bash = find_program('bash', native : true) + rsync = find_program('rsync', required : true, native : true) + +@@ -89,13 +89,12 @@ +- @0@ @INPUT1@ summary @2@ < @CURRENT_SOURCE_DIR@/source/SUMMARY.md.in > @2@/source/SUMMARY.md +- sed -e 's|@version@|@3@|g' < @INPUT2@ > @2@/book.toml + @4@ -r --include='*.md' @CURRENT_SOURCE_DIR@/ @2@/ +- (cd @2@; RUST_LOG=warn @1@ build -d @2@ 3>&2 2>&1 1>&3) | { grep -Fv "because fragment resolution isn't implemented" || :; } 3>&2 2>&1 1>&3 +- rm -rf @2@/manual +- mv @2@/html @2@/manual +- find @2@/manual -iname meson.build -delete ++ # (cd @2@; RUST_LOG=warn @1@ build -d @2@ 3>&2 2>&1 1>&3) | { grep -Fv "because fragment resolution isn't implemented" || :; } 3>&2 2>&1 1>&3 ++ #rm -rf @2@/manual ++ #mv @2@/html @2@/manual ++ #find @2@/manual -iname meson.build -delete ++ ln -s source @2@/markdown + '''.format( + python.full_path(), +- mdbook.full_path(), ++ 'no-mdbk', + meson.current_build_dir(), + meson.project_version(), + rsync.full_path(), +@@ -130,10 +130,10 @@ + manual_html = manual[0] + manual_md = manual[1] + +-install_subdir( +- manual_html.full_path(), +- install_dir : get_option('datadir') / 'doc/nix', +-) ++# install_subdir( ++# manual_html.full_path(), ++# install_dir : get_option('datadir') / 'doc/nix', ++# ) + + nix_nested_manpages = [ + [ diff --git a/nix-manual-disable.patch b/nix-manual-disable.patch deleted file mode 100644 index f18b17d..0000000 --- a/nix-manual-disable.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- nix-2.24.15/doc/manual/local.mk~ 2025-06-24 22:08:50.000000000 +0800 -+++ nix-2.24.15/doc/manual/local.mk 2025-11-28 23:39:25.782547420 +0800 -@@ -179,7 +179,7 @@ - echo "Could not open the manual in a browser. Please open '$<'" >&2; \ - false; \ - } --install: $(docdir)/manual/index.html -+# install: $(docdir)/manual/index.html - - # Generate 'nix' manpages. - .PHONY: manpages diff --git a/nix.conf b/nix.conf index 723bbe4..fd3e6cc 100644 --- a/nix.conf +++ b/nix.conf @@ -5,4 +5,3 @@ bash-prompt-prefix = (nix:$name)\040 experimental-features = nix-command flakes extra-nix-path = nixpkgs=flake:nixpkgs max-jobs = auto -system = @ARCH@-linux diff --git a/nix.spec b/nix.spec index f8afdea..0be06a0 100644 --- a/nix.spec +++ b/nix.spec @@ -1,15 +1,16 @@ %global nixbld_group nixbld -# we patch out manual below (needs mdbook) +# needs mdbook: https://bugzilla.redhat.com/show_bug.cgi?id=2332609 %bcond docs 1 # test failures complain NIX_STORE undefined # and missing rapidcheck %bcond tests 0 Name: nix -# 2.25 needs libgit2-1.9 -Version: 2.24.15 -Release: 1%{?dist} +# 2.32 needs boost >= 1.87 (https://bugzilla.redhat.com/show_bug.cgi?id=2406036) +# (https://github.com/NixOS/nix/pull/14340) +Version: 2.31.2 +Release: %autorelease Summary: A purely functional package manager License: LGPL-2.1-or-later @@ -20,24 +21,39 @@ Source2: registry.json Source3: README.md Source4: nix.sysusers Source5: nix-filesystem.conf -Patch0: nix-manual-disable.patch +# soversion patches: +# https://github.com/NixOS/nix/pull/13995 +Patch0: https://patch-diff.githubusercontent.com/raw/NixOS/nix/pull/13995.patch +# https://github.com/NixOS/nix/pull/14001 +Patch1: https://patch-diff.githubusercontent.com/raw/NixOS/nix/pull/14001.patch +# https://github.com/NixOS/nix/pull/14005 +Patch2: https://patch-diff.githubusercontent.com/raw/NixOS/nix/pull/14005.patch +# https://github.com/NixOS/nix/pull/14018 +Patch3: https://patch-diff.githubusercontent.com/raw/NixOS/nix/pull/14018.patch +# disable mdbook +# https://github.com/NixOS/nix/issues/14548 +Patch4: nix-disable-mdbook.patch +# https://github.com/NixOS/nix/pull/14593 +Patch5: https://patch-diff.githubusercontent.com/raw/NixOS/nix/pull/14593.patch # https://nixos.org/manual/nix/unstable/installation/prerequisites-source # missing aws-cpp-sdk-s3 aws-c-auth aws-c-s3 #BuildRequires: aws-c-common -BuildRequires: autoconf-archive -BuildRequires: automake BuildRequires: bison BuildRequires: blake3-devel BuildRequires: bzip2-devel BuildRequires: boost-devel +BuildRequires: boost-url BuildRequires: brotli-devel -# %%ifarch x86_64 aarch64 ppc64le -# BuildRequires: busybox -# %%endif +%ifarch x86_64 aarch64 ppc64le +BuildRequires: busybox +%endif # needed for toml11 -BuildRequires: chrpath BuildRequires: cmake +%if %{with docs} +BuildRequires: doxygen +BuildRequires: rsync +%endif BuildRequires: flex BuildRequires: gc-devel BuildRequires: gcc-c++ @@ -58,8 +74,7 @@ BuildRequires: libseccomp-devel BuildRequires: libsodium-devel BuildRequires: lowdown BuildRequires: lowdown-devel -BuildRequires: make -BuildRequires: man-db +BuildRequires: meson BuildRequires: openssl-devel %if %{with tests} #BuildRequires: rapidcheck-devel @@ -88,8 +103,9 @@ See the README.fedora.md file for setup instructions. %package core Summary: Core nix tool +Requires: nix-libs%{?_isa} = %{version}-%{release} %ifarch x86_64 aarch64 ppc64le -#Recommends: busybox +Recommends: busybox %endif %description core @@ -114,7 +130,7 @@ This package provides nix-daemon and associated files. %package devel Summary: Development files for nix -Requires: nix%{?_isa} = %{version}-%{release} +Requires: nix-libs%{?_isa} = %{version}-%{release} %description devel This package contains library and header files for @@ -123,16 +139,28 @@ developing applications that use nix. Note the API is considered unstable and upstream does not recommend its usage. +%if %{with docs} +%package doc +Summary: Documentation files for nix +BuildArch: noarch + +%description doc +This package contains documentation files for nix. +%endif + + %package filesystem Summary: Filesystem for nix BuildArch: noarch +# added at f43 +Obsoletes: nix-singleuser < %{version}-%{release} %description filesystem The package provides the /nix root directory for the nix package manager. %package legacy -Summary: Nix classical commands +Summary: nix classical commands BuildArch: noarch Requires: nix-core = %{version}-%{release} @@ -140,6 +168,13 @@ Requires: nix-core = %{version}-%{release} This package provides the symlinks for the older nix-* commands. +%package libs +Summary: Runtime libraries for nix + +%description libs +The package provides the the runtime libraries for nix. + + %if %{with tests} %package test Summary: Nix test programs @@ -164,25 +199,42 @@ This package sets up the nix directories and sysusers. install -p -m 0644 %{SOURCE3} README.fedora.md +# https://github.com/NixOS/nix/issues/14666 +# remove unicode RLO (0x202E) characters +sed -i 's/\xe2\x80\xae//g' doc/manual/source/release-notes/rl-2.26.md + %build -autoreconf -i -# epel10 does not have libcpuid: https://bugzilla.redhat.com/show_bug.cgi?id=2368495 -%configure --localstatedir=/nix/var --docdir=%{_defaultdocdir}/%{name}-doc-%{version} --disable-unit-tests --with-readline-flavor=readline --disable-cpuid %{!?with_docs:--disable-doc-gen} -make %{?_smp_mflags} +MESON_OPTS=( + --sysconfdir=%{_sysconfdir} + --localstatedir=/nix/var + --libexecdir=%{_libexecdir} + -Dbindings=false + -Ddoc-gen=%[%{with docs}?"true":"false"] + -Dlibcmd:readline-flavor=readline + -Dlibstore:sandbox-shell=%{_bindir}/busybox + -Dnix:profile-dir=%{_sysconfdir}/profile.d + -Dunit-tests=%[%{with tests}?"true":"false"] +%ifarch x86_64 +# missing from epel10: https://bugzilla.redhat.com/show_bug.cgi?id=2368495 +%if %{undefined fedora} + -Dlibutil:cpuid=disabled +%endif +%else + -Dlibutil:cpuid=disabled +%endif + ) + +%meson "${MESON_OPTS[@]}" +%meson_build %install -make DESTDIR=%{buildroot} install - -find %{buildroot} -name '*.la' -exec rm -f {} ';' +%meson_install # nix config mkdir -p %{buildroot}/etc/nix -# for older nix to avoid "error: system string 'linux' with 1 component is ambiguous" -cat %{SOURCE1} | sed -e "s/@ARCH@/%{_arch}/" > %{buildroot}/etc/nix/nix.conf -cp %{SOURCE2} %{buildroot}/etc/nix/ - +cp %{SOURCE1} %{SOURCE2} %{buildroot}/etc/nix/ # Nix has multiuser and singleuser installation modes # https://nix.dev/manual/nix/stable/installation/nix-security.html @@ -194,15 +246,11 @@ mkdir -p %{buildroot}/nix/var/nix install -p -D -m 0644 %{SOURCE4} %{buildroot}%{_sysusersdir}/nix.conf install -p -D -m 0644 %{SOURCE5} %{buildroot}%{_tmpfilesdir}/nix-filesystem.conf -# replace absolute symlink -ln -sf ../../bin/nix %{buildroot}%{_libexecdir}/nix/build-remote - -rm %{buildroot}%{_sysconfdir}/init/nix-daemon.conf -rm %{buildroot}%{_mandir}/man1/nix3-manpages - -( cd %{buildroot}%{_libdir} - chrpath --delete ../bin/nix libnixcmd.so libnixexpr.so libnixexprc.so libnixfetchers.so libnixflake.so libnixmain.so libnixstore.so libnixstorec.so libnixutilc.so -) +# filter out relative doc links +# https://bugzilla.redhat.com/show_bug.cgi?id=2415126 +# https://github.com/kristapsdz/lowdown/issues/170 +# (sed expression generated by Gemini Pro: removes pairs of .UR and .UE lines) +sed -i -e '/^\.UR [@#.]/,/^\.UE/{ /^\.UR [@#.]/d; /^\.UE/d}' %{buildroot}%{_mandir}/man*/* %check @@ -225,31 +273,12 @@ LD_LIBRARY_PATH=%{buildroot}%{_libdir} %{buildroot}%{_bindir}/nix --help %systemd_postun_with_restart nix-daemon.service -%pre filesystem -%tmpfiles_create_package nix-filesystem %SOURCE5 - - -%pre system -%sysusers_create_package nix-system %SOURCE4 - - %files %files core %doc README.md README.fedora.md %{_bindir}/nix -%{_libdir}/libnixcmd.so -%{_libdir}/libnixexpr.so -%{_libdir}/libnixexprc.so -%{_libdir}/libnixfetchers.so -%{_libdir}/libnixflake.so -%{_libdir}/libnixmain.so -# %%{_libdir}/libnixmainc.so -%{_libdir}/libnixstore.so -%{_libdir}/libnixstorec.so -%{_libdir}/libnixutil.so -%{_libdir}/libnixutilc.so %{_libexecdir}/nix %config(noreplace) %{_sysconfdir}/nix/nix.conf %config(noreplace) %{_sysconfdir}/nix/registry.json @@ -282,9 +311,30 @@ LD_LIBRARY_PATH=%{buildroot}%{_libdir} %{buildroot}%{_bindir}/nix --help %files devel %{_includedir}/nix +%{_includedir}/nix_api_*.h +%{_includedir}/nix_api_*.hh +%{_libdir}/libnixcmd.so +%{_libdir}/libnixexpr.so +%{_libdir}/libnixexprc.so +%{_libdir}/libnixfetchers.so +%{_libdir}/libnixfetchersc.so +%{_libdir}/libnixflake.so +%{_libdir}/libnixflakec.so +%{_libdir}/libnixmain.so +%{_libdir}/libnixmainc.so +%{_libdir}/libnixstore.so +%{_libdir}/libnixstorec.so +%{_libdir}/libnixutil.so +%{_libdir}/libnixutilc.so %{_libdir}/pkgconfig/*.pc +%if %{with docs} +%files doc +%{_defaultdocdir}/nix +%endif + + %files filesystem # FHS Exception: https://pagure.io/fesco/issue/3473 %{_tmpfilesdir}/nix-filesystem.conf @@ -310,6 +360,23 @@ LD_LIBRARY_PATH=%{buildroot}%{_libdir} %{buildroot}%{_bindir}/nix --help %endif +%files libs +%license COPYING +%{_libdir}/libnixcmd.so.%{version} +%{_libdir}/libnixexpr.so.%{version} +%{_libdir}/libnixexprc.so.%{version} +%{_libdir}/libnixfetchers.so.%{version} +%{_libdir}/libnixfetchersc.so.%{version} +%{_libdir}/libnixflake.so.%{version} +%{_libdir}/libnixflakec.so.%{version} +%{_libdir}/libnixmain.so.%{version} +%{_libdir}/libnixmainc.so.%{version} +%{_libdir}/libnixstore.so.%{version} +%{_libdir}/libnixstorec.so.%{version} +%{_libdir}/libnixutil.so.%{version} +%{_libdir}/libnixutilc.so.%{version} + + %files system %{_sysusersdir}/nix.conf %dir %attr(1775,root,%{nixbld_group}) /nix/store @@ -333,5 +400,4 @@ LD_LIBRARY_PATH=%{buildroot}%{_libdir} %{buildroot}%{_bindir}/nix --help %changelog -* Wed Nov 26 2025 Jens Petersen - 2.24.15-1 -- initial epel10 package +%autochangelog diff --git a/sources b/sources index 1bd2674..5485fe4 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (nix-2.24.15.tar.gz) = d731b8dee5cd43670c117922c2d550fc8ba42791072928839fbcb81c7ef5d7b4908d02c0daf91ad923ee1e32030c9f319b1fccec3ae1027682770fccb9b79b88 +SHA512 (nix-2.31.2.tar.gz) = ba2aa53cfb2527c7702340ac862a427a07d4a7bac8149cfc24d34ce2e0f980a8e70103e1ddf1c231cb5cd0bf4ddfe56a6fa618cd561501a03b8b064cea84bfcf