From 33dc78e7e0138114177f637727e19a89b9e916e6 Mon Sep 17 00:00:00 2001 From: Randy Eckenrode Date: Wed, 27 Mar 2024 17:09:25 -0400 Subject: [PATCH 1/3] libiconv: use libiconvReal on Darwin with compat ABI --- pkgs/top-level/all-packages.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b92751cf6120..7aa063a7d7f1 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -22711,7 +22711,7 @@ with pkgs; # GNU libc provides libiconv so systems with glibc don't need to # build libiconv separately. Additionally, Apple forked/repackaged - # libiconv so we use that instead of the vanilla version on that OS, + # libiconv, so build and use the upstream one with a compatible ABI, # and BSDs include libiconv in libc. # # We also provide `libiconvReal`, which will always be a standalone libiconv, @@ -22722,7 +22722,7 @@ with pkgs; then libcCross else stdenv.cc.libc) else if stdenv.hostPlatform.isDarwin - then darwin.libiconv + then libiconvReal.override { enableDarwinABICompat = true; } else libiconvReal; libcIconv = libc: let @@ -22739,7 +22739,7 @@ with pkgs; if lib.elem stdenv.hostPlatform.libc [ "glibc" "musl" ] then lib.getBin stdenv.cc.libc else if stdenv.hostPlatform.isDarwin then - lib.getBin darwin.libiconv + lib.getBin libiconv else lib.getBin libiconvReal; From 521ea079b9e39d6bd66a919cb3449493d975ab6d Mon Sep 17 00:00:00 2001 From: Randy Eckenrode Date: Wed, 27 Mar 2024 17:27:44 -0400 Subject: [PATCH 2/3] darwin.libiconv: remove and add to darwin-aliases --- pkgs/applications/editors/vim/macvim.nix | 3 +- pkgs/by-name/fr/frankenphp/package.nix | 3 +- .../json-stream-rs-tokenizer/default.nix | 4 +- .../darwin/apple-source-releases/default.nix | 3 -- .../libiconv/default.nix | 38 ------------------- .../apple-source-releases/macos-11.0.1.nix | 1 - pkgs/top-level/darwin-aliases.nix | 4 ++ pkgs/top-level/python-packages.nix | 6 +-- 8 files changed, 11 insertions(+), 51 deletions(-) delete mode 100644 pkgs/os-specific/darwin/apple-source-releases/libiconv/default.nix diff --git a/pkgs/applications/editors/vim/macvim.nix b/pkgs/applications/editors/vim/macvim.nix index ce83128e98b1..64aa5b639a9b 100644 --- a/pkgs/applications/editors/vim/macvim.nix +++ b/pkgs/applications/editors/vim/macvim.nix @@ -11,6 +11,7 @@ , perl , luajit , darwin +, libiconv , python3 }: @@ -127,7 +128,7 @@ stdenv.mkDerivation { --replace " -L${stdenv.cc.libc}/lib" "" \ --replace " -L${darwin.libobjc}/lib" "" \ --replace " -L${darwin.libunwind}/lib" "" \ - --replace " -L${darwin.libiconv}/lib" "" + --replace " -L${libiconv}/lib" "" # All the libraries we stripped have -osx- in their name as of this time. # Assert now that this pattern no longer appears in config.mk. diff --git a/pkgs/by-name/fr/frankenphp/package.nix b/pkgs/by-name/fr/frankenphp/package.nix index e6ce4c97d2b0..27ee46f0cbaa 100644 --- a/pkgs/by-name/fr/frankenphp/package.nix +++ b/pkgs/by-name/fr/frankenphp/package.nix @@ -7,6 +7,7 @@ , testers , frankenphp , darwin +, libiconv , pkg-config , makeBinaryWrapper , runCommand @@ -64,7 +65,7 @@ in buildGoModule rec { '' + lib.optionalString stdenv.isDarwin '' # replace hard-code homebrew path substituteInPlace ../frankenphp.go \ - --replace "-L/opt/homebrew/opt/libiconv/lib" "-L${darwin.libiconv}/lib" + --replace "-L/opt/homebrew/opt/libiconv/lib" "-L${libiconv}/lib" ''; preFixup = '' diff --git a/pkgs/development/python-modules/json-stream-rs-tokenizer/default.nix b/pkgs/development/python-modules/json-stream-rs-tokenizer/default.nix index 9609d68c6961..ce2a48bae9c8 100644 --- a/pkgs/development/python-modules/json-stream-rs-tokenizer/default.nix +++ b/pkgs/development/python-modules/json-stream-rs-tokenizer/default.nix @@ -2,7 +2,7 @@ , stdenv , buildPythonPackage , cargo -, darwin +, libiconv , fetchFromGitHub , json-stream , json-stream-rs-tokenizer @@ -45,7 +45,7 @@ buildPythonPackage rec { ]; buildInputs = lib.optionals stdenv.isDarwin [ - darwin.libiconv + libiconv ]; # Tests depend on json-stream, which depends on this package. diff --git a/pkgs/os-specific/darwin/apple-source-releases/default.nix b/pkgs/os-specific/darwin/apple-source-releases/default.nix index ab13e91e3735..90b3bdee80d5 100644 --- a/pkgs/os-specific/darwin/apple-source-releases/default.nix +++ b/pkgs/os-specific/darwin/apple-source-releases/default.nix @@ -8,7 +8,6 @@ let versions = { "osx-10.12.6" = { xnu = "3789.70.16"; - libiconv = "50"; Libnotify = "165.20.1"; objc4 = "709.1"; dyld = "433.5"; @@ -35,7 +34,6 @@ let dtrace = "168"; xnu = "3248.60.10"; libpthread = "138.10.4"; - libiconv = "44"; Libnotify = "150.40.1"; objc4 = "680"; eap8021x = "222.40.1"; @@ -269,7 +267,6 @@ developerToolsPackages_11_3_1 // macosPackages_11_0_1 // { }; libclosure = applePackage "libclosure" "osx-10.11.6" "sha256-L5rQ+UBpf3B+W1U+gZKk7fXulslHsc8lxnCsplV+nr0=" {}; libdispatch = applePackage "libdispatch" "osx-10.10.5" "sha256-jfAEk0OLrJa9AIZVikIoHomd+l+4rCfc320Xh50qK5M=" {}; - libiconv = applePackage "libiconv" "osx-10.12.6" "sha256-ZzPFkchK3EU95UQUVVrR0t8iilhi/VnIkjjtP6KT2oI=" {}; Libinfo = applePackage "Libinfo" "osx-10.11.6" "sha256-6F7wiwerv4nz/xXHtp1qCHSaFzZgzcRN+jbmXA5oWOQ=" {}; Libm = applePackage "Libm" "osx-10.7.4" "sha256-KjMETfT4qJm0m0Ux/F6Rq8bI4Q4UVnFx6IKbKxXd+Es=" {}; Libnotify = applePackage "Libnotify" "osx-10.12.6" "sha256-6wvMBxAUfiYcQtmlfYCj1d3kFmFM/jdboTd7hRvi3e4=" {}; diff --git a/pkgs/os-specific/darwin/apple-source-releases/libiconv/default.nix b/pkgs/os-specific/darwin/apple-source-releases/libiconv/default.nix deleted file mode 100644 index 6a3bddc211e9..000000000000 --- a/pkgs/os-specific/darwin/apple-source-releases/libiconv/default.nix +++ /dev/null @@ -1,38 +0,0 @@ -{ stdenv, appleDerivation, lib -, enableStatic ? stdenv.hostPlatform.isStatic -, enableShared ? !stdenv.hostPlatform.isStatic -}: - -appleDerivation { - postUnpack = "sourceRoot=$sourceRoot/libiconv"; - - preConfigure = lib.optionalString stdenv.hostPlatform.isiOS '' - sed -i 's/darwin\*/ios\*/g' configure libcharset/configure - ''; - - configureFlags = [ - (lib.enableFeature enableStatic "static") - (lib.enableFeature enableShared "shared") - ]; - - postInstall = lib.optionalString enableShared '' - mv $out/lib/libiconv.dylib $out/lib/libiconv-nocharset.dylib - ${stdenv.cc.bintools.targetPrefix}install_name_tool -id $out/lib/libiconv-nocharset.dylib $out/lib/libiconv-nocharset.dylib - - # re-export one useless symbol; ld will reject a dylib that only reexports other dylibs - echo 'void dont_use_this(){}' | ${stdenv.cc.bintools.targetPrefix}clang -dynamiclib -x c - -current_version 2.4.0 \ - -compatibility_version 7.0.0 -current_version 7.0.0 -o $out/lib/libiconv.dylib \ - -Wl,-reexport_library -Wl,$out/lib/libiconv-nocharset.dylib \ - -Wl,-reexport_library -Wl,$out/lib/libcharset.dylib - ''; - - setupHooks = [ - ../../../../build-support/setup-hooks/role.bash - ../../../../development/libraries/libiconv/setup-hook.sh - ]; - - meta = { - mainProgram = "iconv"; - platforms = lib.platforms.darwin; - }; -} diff --git a/pkgs/os-specific/darwin/apple-source-releases/macos-11.0.1.nix b/pkgs/os-specific/darwin/apple-source-releases/macos-11.0.1.nix index 0a70e648695d..c1bcde77ffe3 100644 --- a/pkgs/os-specific/darwin/apple-source-releases/macos-11.0.1.nix +++ b/pkgs/os-specific/darwin/apple-source-releases/macos-11.0.1.nix @@ -27,7 +27,6 @@ file_cmds = applePackage' "file_cmds" "321.40.3" "macos-11.0.1" "0p077lnbcy8266m hfs = applePackage' "hfs" "556.41.1" "macos-11.0.1" "0a0s6b12b0q07wslfifna0bj51dml9v098i4crr2m1vivnx4xj75" {}; libclosure = applePackage' "libclosure" "78" "macos-11.0.1" "0vf9n0k3m8dbprv1bf45zqg0g43bidy2i5z1v9a826bsf8lv7am7" {}; libdispatch = applePackage' "libdispatch" "1271.40.12" "macos-11.0.1" "1ck5srcjapg18vqb8wl08gacs7ndc6xr067qjn3ngx39q1jdcywz" {}; -libiconv = applePackage' "libiconv" "59" "macos-11.0.1" "0lwa4brdwm4lvrdnxylzsn1yph4m7csgri2zkc4xb4xiisz32pwp" {}; libmalloc = applePackage' "libmalloc" "317.40.8" "macos-11.0.1" "sha256-Tdhb0mq3w4Hwvp3xHB79Vr22hCOQK6h28HCsd7jvITI=" {}; libplatform = applePackage' "libplatform" "254.40.4" "macos-11.0.1" "1qf3ri0yd8b1xjln1j1gyx7ks6k3a2jhd63blyvfby75y9s7flky" {}; libpthread = applePackage' "libpthread" "454.40.3" "macos-11.0.1" "0zljbw8mpb80n1if65hhi9lkgwbgjr8vc9wvf7q1nl3mzyl35f8p" {}; diff --git a/pkgs/top-level/darwin-aliases.nix b/pkgs/top-level/darwin-aliases.nix index 2466cae23ed8..694389f08238 100644 --- a/pkgs/top-level/darwin-aliases.nix +++ b/pkgs/top-level/darwin-aliases.nix @@ -50,4 +50,8 @@ mapAliases ({ ### B ### builder = throw "'darwin.builder' has been changed and renamed to 'darwin.linux-builder'. The default ssh port is now 31022. Please update your configuration or override the port back to 22. See https://nixos.org/manual/nixpkgs/unstable/#sec-darwin-builder"; # added 2023-07-06 + + ### L ### + + libiconv = pkgs.libiconv; # 2024-03-27 }) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 496add388462..9d3a6a879ec0 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -2513,7 +2513,6 @@ self: super: with self; { cryptodatahub = callPackage ../development/python-modules/cryptodatahub { }; cryptography = callPackage ../development/python-modules/cryptography { - inherit (pkgs.darwin) libiconv; inherit (pkgs.darwin.apple_sdk.frameworks) Security; }; @@ -2538,7 +2537,6 @@ self: super: with self; { css-html-js-minify = callPackage ../development/python-modules/css-html-js-minify { }; css-inline = callPackage ../development/python-modules/css-inline { - inherit (pkgs.darwin) libiconv; inherit (pkgs.darwin.apple_sdk.frameworks) Security SystemConfiguration; }; @@ -11459,9 +11457,7 @@ self: super: with self; { pyreaderwriterlock = callPackage ../development/python-modules/pyreaderwriterlock { }; - pyreadstat = callPackage ../development/python-modules/pyreadstat { - inherit (pkgs.darwin) libiconv; - }; + pyreadstat = callPackage ../development/python-modules/pyreadstat { }; pyrealsense2 = toPythonModule (pkgs.librealsense.override { enablePython = true; From 71a67fc4a839781d5895033fe5db43bb945264f1 Mon Sep 17 00:00:00 2001 From: Randy Eckenrode Date: Thu, 28 Mar 2024 17:52:59 -0400 Subject: [PATCH 3/3] libiconv: use --replace-fail instead of --replace --- pkgs/development/libraries/libiconv/default.nix | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pkgs/development/libraries/libiconv/default.nix b/pkgs/development/libraries/libiconv/default.nix index 44f4b025e50e..ed162d115298 100644 --- a/pkgs/development/libraries/libiconv/default.nix +++ b/pkgs/development/libraries/libiconv/default.nix @@ -37,12 +37,12 @@ stdenv.mkDerivation rec { + lib.optionalString enableDarwinABICompat '' for iconv_h_in in iconv.h.in iconv.h.build.in; do substituteInPlace "include/$iconv_h_in" \ - --replace "#define iconv libiconv" "" \ - --replace "#define iconv_close libiconv_close" "" \ - --replace "#define iconv_open libiconv_open" "" \ - --replace "#define iconv_open_into libiconv_open_into" "" \ - --replace "#define iconvctl libiconvctl" "" \ - --replace "#define iconvlist libiconvlist" "" + --replace-fail "#define iconv libiconv" "" \ + --replace-fail "#define iconv_close libiconv_close" "" \ + --replace-fail "#define iconv_open libiconv_open" "" \ + --replace-fail "#define iconv_open_into libiconv_open_into" "" \ + --replace-fail "#define iconvctl libiconvctl" "" \ + --replace-fail "#define iconvlist libiconvlist" "" done '';