Merge #33948: {llvm,clang}-{4,5}: better man-pages

Don't rebuild entire projects just to get manpages.

+92 -46
+23 -14
pkgs/development/compilers/llvm/4/clang/default.nix
··· 5 5 6 6 let 7 7 gcc = if stdenv.cc.isGNU then stdenv.cc.cc else stdenv.cc.cc.gcc; 8 - self = stdenv.mkDerivation { 8 + self = stdenv.mkDerivation ({ 9 9 name = "clang-${version}"; 10 10 11 11 unpackPhase = '' ··· 37 37 38 38 patches = [ ./purity.patch ]; 39 39 40 - postBuild = stdenv.lib.optionalString enableManpages '' 41 - cmake --build . --target docs-clang-man 42 - ''; 40 + # XXX: TODO: This should be removed on next rebuild 41 + postBuild = ""; 43 42 44 43 postPatch = '' 45 44 sed -i -e 's/Args.hasArg(options::OPT_nostdlibinc)/true/' lib/Driver/Tools.cpp ··· 49 48 sed -i '1s,^,find_package(Sphinx REQUIRED)\n,' docs/CMakeLists.txt 50 49 ''; 51 50 52 - outputs = [ "out" "lib" "python" ] 53 - ++ stdenv.lib.optional enableManpages "man"; 51 + outputs = [ "out" "lib" "python" ]; 54 52 55 53 # Clang expects to find LLVMgold in its own prefix 56 54 # Clang expects to find sanitizer libraries in its own prefix ··· 69 67 fi 70 68 mv $out/share/clang/*.py $python/share/clang 71 69 rm $out/bin/c-index-test 72 - '' 73 - + stdenv.lib.optionalString enableManpages '' 74 - # Manually install clang manpage 75 - cp docs/man/*.1 $out/share/man/man1/ 76 - 77 - # Move it and other man pages to 'man' output 78 - moveToOutput "share/man" "$man" 79 70 ''; 80 71 81 72 enableParallelBuilding = true; ··· 93 84 license = stdenv.lib.licenses.ncsa; 94 85 platforms = stdenv.lib.platforms.all; 95 86 }; 96 - }; 87 + } // stdenv.lib.optionalAttrs enableManpages { 88 + name = "clang-manpages-${version}"; 89 + 90 + buildPhase = '' 91 + make docs-clang-man 92 + ''; 93 + 94 + installPhase = '' 95 + mkdir -p $out/share/man/man1 96 + # Manually install clang manpage 97 + cp docs/man/*.1 $out/share/man/man1/ 98 + ''; 99 + 100 + outputs = [ "out" ]; 101 + 102 + doCheck = false; 103 + 104 + meta.description = "man page for Clang ${version}"; 105 + }); 97 106 in self
+1 -1
pkgs/development/compilers/llvm/4/default.nix
··· 20 20 # Add man output without introducing extra dependencies. 21 21 overrideManOutput = drv: 22 22 let drv-manpages = drv.override { enableManpages = true; }; in 23 - drv // { man = drv-manpages.man; /*outputs = drv.outputs ++ ["man"];*/ }; 23 + drv // { man = drv-manpages.out; /*outputs = drv.outputs ++ ["man"];*/ }; 24 24 25 25 llvm = callPackage ./llvm.nix { 26 26 inherit compiler-rt_src stdenv;
+22 -8
pkgs/development/compilers/llvm/4/llvm.nix
··· 27 27 # Used when creating a version-suffixed symlink of libLLVM.dylib 28 28 shortVersion = with stdenv.lib; 29 29 concatStringsSep "." (take 2 (splitString "." release_version)); 30 - in stdenv.mkDerivation rec { 30 + in stdenv.mkDerivation (rec { 31 31 name = "llvm-${version}"; 32 32 33 33 unpackPhase = '' ··· 39 39 ''; 40 40 41 41 outputs = [ "out" ] 42 - ++ stdenv.lib.optional enableSharedLibraries "lib" 43 - ++ stdenv.lib.optional enableManpages "man"; 42 + ++ stdenv.lib.optional enableSharedLibraries "lib"; 44 43 45 44 nativeBuildInputs = [ perl groff cmake python ] 46 45 ++ stdenv.lib.optional enableManpages python.pkgs.sphinx; ··· 129 128 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD/lib 130 129 ''; 131 130 132 - postInstall = stdenv.lib.optionalString enableManpages '' 133 - moveToOutput "share/man" "$man" 134 - '' 135 - + stdenv.lib.optionalString enableSharedLibraries '' 131 + postInstall = stdenv.lib.optionalString enableSharedLibraries '' 136 132 moveToOutput "lib/libLLVM-*" "$lib" 137 133 moveToOutput "lib/libLLVM${stdenv.hostPlatform.extensions.sharedLibrary}" "$lib" 138 134 substituteInPlace "$out/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake" \ ··· 160 156 maintainers = with stdenv.lib.maintainers; [ lovek323 raskin viric dtzWill ]; 161 157 platforms = stdenv.lib.platforms.all; 162 158 }; 163 - } 159 + } // stdenv.lib.optionalAttrs enableManpages { 160 + name = "llvm-manpages-${version}"; 161 + 162 + buildPhase = '' 163 + make docs-llvm-man 164 + ''; 165 + 166 + propagatedBuildInputs = [ ]; 167 + 168 + installPhase = '' 169 + make -C docs install 170 + ''; 171 + 172 + outputs = [ "out" ]; 173 + 174 + doCheck = false; 175 + 176 + meta.description = "man pages for LLVM ${version}"; 177 + })
+23 -14
pkgs/development/compilers/llvm/5/clang/default.nix
··· 5 5 6 6 let 7 7 gcc = if stdenv.cc.isGNU then stdenv.cc.cc else stdenv.cc.cc.gcc; 8 - self = stdenv.mkDerivation { 8 + self = stdenv.mkDerivation ({ 9 9 name = "clang-${version}"; 10 10 11 11 unpackPhase = '' ··· 37 37 38 38 patches = [ ./purity.patch ]; 39 39 40 - postBuild = stdenv.lib.optionalString enableManpages '' 41 - cmake --build . --target docs-clang-man 42 - ''; 40 + # XXX: TODO: This should be removed on next rebuild 41 + postBuild = ""; 43 42 44 43 postPatch = '' 45 44 sed -i -e 's/DriverArgs.hasArg(options::OPT_nostdlibinc)/true/' \ ··· 50 49 sed -i '1s,^,find_package(Sphinx REQUIRED)\n,' docs/CMakeLists.txt 51 50 ''; 52 51 53 - outputs = [ "out" "lib" "python" ] 54 - ++ stdenv.lib.optional enableManpages "man"; 52 + outputs = [ "out" "lib" "python" ]; 55 53 56 54 # Clang expects to find LLVMgold in its own prefix 57 55 # Clang expects to find sanitizer libraries in its own prefix ··· 70 68 fi 71 69 mv $out/share/clang/*.py $python/share/clang 72 70 rm $out/bin/c-index-test 73 - '' 74 - + stdenv.lib.optionalString enableManpages '' 75 - # Manually install clang manpage 76 - cp docs/man/*.1 $out/share/man/man1/ 77 - 78 - # Move it and other man pages to 'man' output 79 - moveToOutput "share/man" "$man" 80 71 ''; 81 72 82 73 enableParallelBuilding = true; ··· 94 85 license = stdenv.lib.licenses.ncsa; 95 86 platforms = stdenv.lib.platforms.all; 96 87 }; 97 - }; 88 + } // stdenv.lib.optionalAttrs enableManpages { 89 + name = "clang-manpages-${version}"; 90 + 91 + buildPhase = '' 92 + make docs-clang-man 93 + ''; 94 + 95 + installPhase = '' 96 + mkdir -p $out/share/man/man1 97 + # Manually install clang manpage 98 + cp docs/man/*.1 $out/share/man/man1/ 99 + ''; 100 + 101 + outputs = [ "out" ]; 102 + 103 + doCheck = false; 104 + 105 + meta.description = "man page for Clang ${version}"; 106 + }); 98 107 in self
+1 -1
pkgs/development/compilers/llvm/5/default.nix
··· 20 20 # Add man output without introducing extra dependencies. 21 21 overrideManOutput = drv: 22 22 let drv-manpages = drv.override { enableManpages = true; }; in 23 - drv // { man = drv-manpages.man; /*outputs = drv.outputs ++ ["man"];*/ }; 23 + drv // { man = drv-manpages.out; /*outputs = drv.outputs ++ ["man"];*/ }; 24 24 25 25 llvm = callPackage ./llvm.nix { 26 26 inherit compiler-rt_src stdenv;
+22 -8
pkgs/development/compilers/llvm/5/llvm.nix
··· 27 27 # Used when creating a version-suffixed symlink of libLLVM.dylib 28 28 shortVersion = with stdenv.lib; 29 29 concatStringsSep "." (take 2 (splitString "." release_version)); 30 - in stdenv.mkDerivation rec { 30 + in stdenv.mkDerivation (rec { 31 31 name = "llvm-${version}"; 32 32 33 33 unpackPhase = '' ··· 39 39 ''; 40 40 41 41 outputs = [ "out" ] 42 - ++ stdenv.lib.optional enableSharedLibraries "lib" 43 - ++ stdenv.lib.optional enableManpages "man"; 42 + ++ stdenv.lib.optional enableSharedLibraries "lib"; 44 43 45 44 nativeBuildInputs = [ perl groff cmake python ] 46 45 ++ stdenv.lib.optional enableManpages python.pkgs.sphinx; ··· 123 122 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD/lib 124 123 ''; 125 124 126 - postInstall = stdenv.lib.optionalString enableManpages '' 127 - moveToOutput "share/man" "$man" 128 - '' 129 - + stdenv.lib.optionalString enableSharedLibraries '' 125 + postInstall = stdenv.lib.optionalString enableSharedLibraries '' 130 126 moveToOutput "lib/libLLVM-*" "$lib" 131 127 moveToOutput "lib/libLLVM${stdenv.hostPlatform.extensions.sharedLibrary}" "$lib" 132 128 substituteInPlace "$out/lib/cmake/llvm/LLVMExports-${if debugVersion then "debug" else "release"}.cmake" \ ··· 154 150 maintainers = with stdenv.lib.maintainers; [ lovek323 raskin viric dtzWill ]; 155 151 platforms = stdenv.lib.platforms.all; 156 152 }; 157 - } 153 + } // stdenv.lib.optionalAttrs enableManpages { 154 + name = "llvm-manpages-${version}"; 155 + 156 + buildPhase = '' 157 + make docs-llvm-man 158 + ''; 159 + 160 + propagatedBuildInputs = []; 161 + 162 + installPhase = '' 163 + make -C docs install 164 + ''; 165 + 166 + outputs = [ "out" ]; 167 + 168 + doCheck = false; 169 + 170 + meta.description = "man pages for LLVM ${version}"; 171 + })