From 1421404d425ec3af31f9d3f53a69fd94b1b88657 Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Mon, 22 Jun 2020 09:32:57 +0000 Subject: [PATCH] stdenv: fix backward multiple outputs conditional This is supposed to shareDocName to a fallback value if it can't be determined from looking at the configure script. But the conditional checked whether shareDocName was set, rather than if it wasn't. This meant that if shareDocName had been detected from a configure script, it would be immediately overridden by the package name, and if it couldn't be detected, shareDocName would remain unset. This resulted in QEMU installing files like $out/share/doc/index.html, which should of course have been in $out/share/doc/qemu/index.html. An interesting side effect of this is that, since 9f8751528cd89d343258dd718afa56f8590917bb when this code was added, the detected package name has never actually been used for installing documentation, because it would always be overridden. So this patch will actually enable that for the first time, four years later. Fixes: https://github.com/NixOS/nixpkgs/issues/90486 --- pkgs/build-support/setup-hooks/multiple-outputs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/build-support/setup-hooks/multiple-outputs.sh b/pkgs/build-support/setup-hooks/multiple-outputs.sh index 2e95495c96f..bfa47e3b20e 100644 --- a/pkgs/build-support/setup-hooks/multiple-outputs.sh +++ b/pkgs/build-support/setup-hooks/multiple-outputs.sh @@ -61,7 +61,7 @@ _multioutConfig() { local shareDocName="$(sed -n "s/^PACKAGE_TARNAME='\(.*\)'$/\1/p" < "$confScript")" fi # PACKAGE_TARNAME sometimes contains garbage. - if [ -n "$shareDocName" ] || echo "$shareDocName" | grep -q '[^a-zA-Z0-9_-]'; then + if [ -z "$shareDocName" ] || echo "$shareDocName" | grep -q '[^a-zA-Z0-9_-]'; then shareDocName="$(echo "$name" | sed 's/-[^a-zA-Z].*//')" fi fi