From e525b687f43d724b617f1b7f0f6a04cbb9229aac Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Sun, 22 Jan 2023 20:52:42 +0000 Subject: [PATCH] iconv: init (portable attribute for iconv(1)) This obsoletes this pattern: if stdenv.isDarwin then libiconv else buildPackages.stdenv.cc.libc Which was not portable, as some platforms don't have libiconv in libc, and some of those that do still don't have iconv(1) in their libc package. --- pkgs/tools/inputmethods/skk/skk-dicts/default.nix | 9 +++------ pkgs/tools/text/cmigemo/default.nix | 11 ++--------- pkgs/top-level/all-packages.nix | 8 ++++++++ 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/pkgs/tools/inputmethods/skk/skk-dicts/default.nix b/pkgs/tools/inputmethods/skk/skk-dicts/default.nix index f20e2899f185..bb974fbc8b58 100644 --- a/pkgs/tools/inputmethods/skk/skk-dicts/default.nix +++ b/pkgs/tools/inputmethods/skk/skk-dicts/default.nix @@ -1,4 +1,4 @@ -{ lib, stdenv, fetchurl, buildPackages, libiconv, skktools }: +{ lib, stdenv, fetchurl, buildPackages, iconv, skktools }: let # kana to kanji @@ -25,15 +25,13 @@ let url = "https://raw.githubusercontent.com/skk-dev/dict/8b35d07a7d2044d48b063d2774d9f9d00bb7cb48/SKK-JISYO.assoc"; sha256 = "1smcbyv6srrhnpl7ic9nqds9nz3g2dgqngmhzkrdlwmvcpvakp1v"; }; - - iconvBin = if stdenv.isDarwin then libiconv else buildPackages.stdenv.cc.libc; in stdenv.mkDerivation { pname = "skk-dicts-unstable"; version = "2020-03-24"; srcs = [ small medium large edict assoc ]; - nativeBuildInputs = [ skktools ] ++ lib.optional stdenv.isDarwin libiconv; + nativeBuildInputs = [ iconv skktools ]; strictDeps = true; @@ -51,8 +49,7 @@ stdenv.mkDerivation { for src in $srcs; do dst=$out/share/$(dictname $src) echo ";;; -*- coding: utf-8 -*-" > $dst # libskk requires this on the first line - ${lib.getBin iconvBin}/bin/iconv \ - -f EUC-JP -t UTF-8 $src | skkdic-expr2 >> $dst + iconv -f EUC-JP -t UTF-8 $src | skkdic-expr2 >> $dst done # combine .L .edict and .assoc for convenience diff --git a/pkgs/tools/text/cmigemo/default.nix b/pkgs/tools/text/cmigemo/default.nix index 1f9ef7701ba1..7b2598a9cfb2 100644 --- a/pkgs/tools/text/cmigemo/default.nix +++ b/pkgs/tools/text/cmigemo/default.nix @@ -1,11 +1,8 @@ { lib, stdenv, fetchFromGitHub, buildPackages -, libiconv, nkf, perl, which +, iconv, nkf, perl, which , skk-dicts }: -let - iconvBin = if stdenv.isDarwin then libiconv else buildPackages.stdenv.cc.libc; -in stdenv.mkDerivation { pname = "cmigemo"; version = "1.3e"; @@ -17,7 +14,7 @@ stdenv.mkDerivation { sha256 = "00a6kdmxp16b8x0p04ws050y39qspd1bqlfq74bkirc55b77a2m1"; }; - nativeBuildInputs = [ libiconv nkf perl which ]; + nativeBuildInputs = [ iconv nkf perl which ]; postUnpack = '' cp ${skk-dicts}/share/SKK-JISYO.L source/dict/ @@ -27,10 +24,6 @@ stdenv.mkDerivation { makeFlags = [ "INSTALL=install" ]; - preBuild = '' - makeFlagsArray+=(FILTER_UTF8="${lib.getBin iconvBin}/bin/iconv -t utf-8 -f cp932") - ''; - buildFlags = [ (if stdenv.isDarwin then "osx-all" else "gcc-all") ]; installTargets = [ (if stdenv.isDarwin then "osx-install" else "gcc-install") ]; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 1df342fa13dd..9a5ba7591385 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -21163,6 +21163,14 @@ with pkgs; libiconvReal = callPackage ../development/libraries/libiconv { }; + iconv = + if lib.elem stdenv.hostPlatform.libc [ "glibc" "musl" ] then + lib.getBin stdenv.cc.libc + else if stdenv.hostPlatform.isDarwin then + lib.getBin darwin.libiconv + else + lib.getBin libiconvReal; + # On non-GNU systems we need GNU Gettext for libintl. libintl = if stdenv.hostPlatform.libc != "glibc" then gettext else null;