diff options
Diffstat (limited to 'nixpkgs/pkgs/development/libraries/libidn2')
-rw-r--r-- | nixpkgs/pkgs/development/libraries/libidn2/default.nix | 46 | ||||
-rw-r--r-- | nixpkgs/pkgs/development/libraries/libidn2/no-bootstrap-reference.nix | 30 |
2 files changed, 76 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/development/libraries/libidn2/default.nix b/nixpkgs/pkgs/development/libraries/libidn2/default.nix new file mode 100644 index 000000000000..0782f94f41e5 --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/libidn2/default.nix @@ -0,0 +1,46 @@ +{ fetchurl, lib, stdenv, libiconv, libunistring, help2man, texinfo, buildPackages }: + +# Note: this package is used for bootstrapping fetchurl, and thus +# cannot use fetchpatch! All mutable patches (generated by GitHub or +# cgit) that are needed here should be included directly in Nixpkgs as +# files. + +stdenv.mkDerivation rec { + pname = "libidn2"; + version = "2.3.4"; + + src = fetchurl { + url = "https://ftp.gnu.org/gnu/libidn/${pname}-${version}.tar.gz"; + sha256 = "sha256-k8q6crTgUdH41PWgdqtjyZt3+u4Bm3K5eDsmeYbbtF8="; + }; + + strictDeps = true; + # Beware: non-bootstrap libidn2 is overridden by ./hack.nix + outputs = [ "bin" "dev" "out" "info" "devdoc" ]; + + enableParallelBuilding = true; + + # The above patch causes the documentation to be regenerated, so the + # documentation tools are required. + nativeBuildInputs = lib.optionals stdenv.isDarwin [ help2man texinfo ]; + buildInputs = [ libunistring ] ++ lib.optional stdenv.isDarwin libiconv; + depsBuildBuild = [ buildPackages.stdenv.cc ]; + + meta = { + homepage = "https://www.gnu.org/software/libidn/#libidn2"; + description = "Free software implementation of IDNA2008 and TR46"; + + longDescription = '' + Libidn2 is believed to be a complete IDNA2008 and TR46 implementation, + but has yet to be as extensively used as the IDNA2003 Libidn library. + + The installed C library libidn2 is dual-licensed under LGPLv3+|GPLv2+, + while the rest of the package is GPLv3+. See the file COPYING for + detailed information. + ''; + + license = with lib.licenses; [ lgpl3Plus gpl2Plus gpl3Plus ]; + platforms = lib.platforms.all; + maintainers = with lib.maintainers; [ fpletz ]; + }; +} diff --git a/nixpkgs/pkgs/development/libraries/libidn2/no-bootstrap-reference.nix b/nixpkgs/pkgs/development/libraries/libidn2/no-bootstrap-reference.nix new file mode 100644 index 000000000000..e5922073437d --- /dev/null +++ b/nixpkgs/pkgs/development/libraries/libidn2/no-bootstrap-reference.nix @@ -0,0 +1,30 @@ +{ stdenv, lib, libidn2, libunistring, runCommandLocal, patchelf }: +# Construct a copy of libidn2.* where all (transitive) libc references (in .bin) +# get replaced by a new one, so that there's no reference to bootstrap tools. +runCommandLocal + "${libidn2.pname}-${libidn2.version}" + { + outputs = [ "bin" "dev" "out" ]; + passthru = { + inherit (libidn2) out info devdoc; # no need to touch these store paths + }; + } + '' + cp -r '${libidn2.bin}' "$bin" + chmod +w "$bin"/bin/* + patchelf \ + --set-interpreter '${stdenv.cc.bintools.dynamicLinker}' \ + --set-rpath '${lib.concatMapStringsSep ":" (p: lib.getLib p + "/lib") + [ stdenv.cc.libc libunistring libidn2 ]}' \ + "$bin"/bin/* + + cp -r '${libidn2.dev}' "$dev" + chmod +w "$dev"/nix-support/propagated-build-inputs + substituteInPlace "$dev"/nix-support/propagated-build-inputs \ + --replace '${libidn2.bin}' "$bin" + substituteInPlace "$dev"/lib/pkgconfig/libidn2.pc \ + --replace '${libidn2.dev}' "$dev" + + ln -s '${libidn2.out}' "$out" # it's hard to be without any $out + '' + |