Skip to content

Commit

Permalink
itstool: fix double-shebang issue on macOS
Browse files Browse the repository at this point in the history
(cherry picked from commit 9761d5a)
  • Loading branch information
burke authored and LnL7 committed Apr 5, 2020
1 parent e79a142 commit 6e14cf0
Showing 1 changed file with 17 additions and 1 deletion.
18 changes: 17 additions & 1 deletion pkgs/development/tools/misc/itstool/default.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{ stdenv, fetchurl, python3 }:
{ stdenv, lib, fetchurl, python3 }:

stdenv.mkDerivation rec {
name = "itstool-2.0.6";
Expand All @@ -10,6 +10,22 @@ stdenv.mkDerivation rec {

buildInputs = [ (python3.withPackages(ps: with ps; [ libxml2 ])) ];

# bin/itstool's shebang is "#!${python3.withPackages(...)/bin/python} -s"
# withPackages' shebang is "#!#{bash}/bin/bash -e
#
# macOS won't allow the target of a shebang to be an interpreted script,
# causing bin/itstool to get interpreted as bash.
#
# By prefixing /usr/bin/env to the shebang, we have env fork/exec the python
# wrapper, which is perfectly happy to execute an interpreted script.
#
# However, we don't want to do this on Linux, which only allows one argument
# in a shebang.
postFixup = lib.optionalString stdenv.isDarwin ''
substituteInPlace $out/bin/itstool \
--replace "#!/" "#!/usr/bin/env /"
'';

meta = {
homepage = http://itstool.org/;
description = "XML to PO and back again";
Expand Down

0 comments on commit 6e14cf0

Please sign in to comment.