diff options
author | github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> | 2022-10-11 06:17:43 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-10-11 06:17:43 +0000 |
commit | aabca3ed54b53b5b797032801983dafeed0f5ebb (patch) | |
tree | 7b8771df1d6d3f3a071a91d2b0d2c06810ba4a6c /pkgs/applications/version-management | |
parent | 5d957f3dbadfebd9c86c1e996af2c6eee391f742 (diff) | |
parent | 161b9eb6a142b87b62507d40d6e9fbee5d37efd7 (diff) |
Merge staging-next into staging
Diffstat (limited to 'pkgs/applications/version-management')
-rw-r--r-- | pkgs/applications/version-management/p4/default.nix | 114 | ||||
-rw-r--r-- | pkgs/applications/version-management/p4d/default.nix | 2 |
2 files changed, 100 insertions, 16 deletions
diff --git a/pkgs/applications/version-management/p4/default.nix b/pkgs/applications/version-management/p4/default.nix index 4f61be6669aa1..8a54d4eb77bf2 100644 --- a/pkgs/applications/version-management/p4/default.nix +++ b/pkgs/applications/version-management/p4/default.nix @@ -1,31 +1,115 @@ -{ stdenv, fetchurl, lib, autoPatchelfHook }: +{ stdenv +, fetchurl +, fetchzip +, lib +, emptyDirectory +, linkFarm +, symlinkJoin +, jam +, libcxx +, libcxxabi +, openssl +, xcbuild +, CoreServices +, Foundation +, Security +}: +let + opensslStatic = openssl.override { + static = true; + }; + androidZlibContrib = + let + src = fetchzip { + url = "https://android.googlesource.com/platform/external/zlib/+archive/61174f4fd262c6075f88768465f308aae95a2f04.tar.gz"; + sha256 = "sha256-EMzKAHcEWOUugcHKH2Fj3ZaIHC9UlgO4ULKe3RvgxvI="; + stripRoot = false; + }; + in + linkFarm "android-zlib-contrib" [ + # We only want to keep the contrib directory as the other files conflict + # with p4's own zlib files. (For the same reason, we can't use the + # cone-based Git sparse checkout, either.) + { name = "contrib"; path = "${src}/contrib"; } + ]; + libcxxUnified = symlinkJoin { + inherit (libcxx) name; + paths = [ libcxx libcxxabi ]; + }; +in stdenv.mkDerivation rec { pname = "p4"; - version = "2021.2.2201121"; + version = "2022.1.2305383"; src = fetchurl { - # actually https://cdist2.perforce.com/perforce/r21.2/bin.linux26x86_64/helix-core-server.tgz but upstream deletes releases - url = "https://web.archive.org/web/20211118024943/https://cdist2.perforce.com/perforce/r21.2/bin.linux26x86_64/helix-core-server.tgz"; - sha256 = "sha256-SrfI2ZD7KDyttCd8+fo8g4UZKljYYO/SbzqrS9tAcC8="; + # Upstream replaces minor versions, so use archived URL. + url = "https://web.archive.org/web/20220901184735id_/https://ftp.perforce.com/perforce/r22.1/bin.tools/p4source.tgz"; + sha256 = "27ab3ddd7b178b05cf0b710e941650dac0688d294110ebafda9027732c0944c6"; }; - sourceRoot = "."; + nativeBuildInputs = [ jam ]; + + buildInputs = lib.optionals stdenv.isDarwin [ CoreServices Foundation Security ]; + + outputs = [ "out" "bin" "dev" ]; - dontBuild = true; + hardeningDisable = lib.optionals stdenv.isDarwin [ "strictoverflow" ]; - nativeBuildInputs = [ autoPatchelfHook ]; + jamFlags = + [ + "-sEXEC=bin.unix" + "-sCROSS_COMPILE=${stdenv.cc.targetPrefix}" + "-sMALLOC_OVERRIDE=no" + "-sSSLINCDIR=${lib.getDev opensslStatic}/include" + "-sSSLLIBDIR=${lib.getLib opensslStatic}/lib" + ] + ++ lib.optionals stdenv.cc.isClang [ "-sOSCOMP=clang" "-sCLANGVER=${stdenv.cc.cc.version}" ] + ++ lib.optionals stdenv.cc.isGNU [ "-sOSCOMP=gcc" "-sGCCVER=${stdenv.cc.cc.version}" ] + ++ lib.optionals stdenv.isLinux [ "-sOSVER=26" ] + ++ lib.optionals stdenv.isDarwin [ + "-sOSVER=1013" + "-sMACOSX_SDK=${emptyDirectory}" + "-sLIBC++DIR=${libcxxUnified}/lib" + ]; + + CCFLAGS = + # The file contrib/optimizations/slide_hash_neon.h is missing from the + # upstream distribution. It comes from the Android/Chromium sources. + lib.optionals stdenv.isAarch64 [ "-I${androidZlibContrib}" ]; + + "C++FLAGS" = + # Avoid a compilation error that only occurs for 4-byte longs. + lib.optionals stdenv.isi686 [ "-Wno-narrowing" ] + # See the "Header dependency changes" section of + # https://www.gnu.org/software/gcc/gcc-11/porting_to.html for more + # information on why we need to include these. + ++ lib.optionals + (stdenv.cc.isClang || (stdenv.cc.isGNU && lib.versionAtLeast stdenv.cc.cc.version "11.0.0")) + [ "-include" "limits" "-include" "thread" ]; + + buildPhase = '' + runHook preBuild + jam $jamFlags -j$NIX_BUILD_CORES p4 + jam $jamFlags -j$NIX_BUILD_CORES -sPRODUCTION=yes p4api.tar + runHook postBuild + ''; installPhase = '' - install -D --target $out/bin p4 p4broker p4d p4p + runHook preInstall + mkdir -p $bin/bin $dev $out + cp bin.unix/p4 $bin/bin + cp -r bin.unix/p4api-${version}/include $dev + cp -r bin.unix/p4api-${version}/lib $out + runHook postInstall ''; - meta = { - description = "Perforce Command-Line Client"; + meta = with lib; { + description = "Perforce Helix Core command-line client and APIs"; homepage = "https://www.perforce.com"; - sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; - license = lib.licenses.unfree; - platforms = [ "x86_64-linux" ]; - maintainers = with lib.maintainers; [ corngood ]; + license = licenses.bsd2; + mainProgram = "p4"; + platforms = platforms.unix; + maintainers = with maintainers; [ corngood impl ]; }; } diff --git a/pkgs/applications/version-management/p4d/default.nix b/pkgs/applications/version-management/p4d/default.nix index 5b98131303d3b..e2cf8e1013c3d 100644 --- a/pkgs/applications/version-management/p4d/default.nix +++ b/pkgs/applications/version-management/p4d/default.nix @@ -47,6 +47,6 @@ stdenv.mkDerivation { license = licenses.unfree; mainProgram = "p4d"; platforms = builtins.attrNames srcs; - maintainers = with maintainers; [ impl ]; + maintainers = with maintainers; [ corngood impl ]; }; } |