summary refs log tree commit diff
path: root/pkgs/development/go-modules
diff options
context:
space:
mode:
authorzowoq <59103226+zowoq@users.noreply.github.com>2022-07-30 16:25:04 +1000
committerzowoq <59103226+zowoq@users.noreply.github.com>2022-08-07 18:26:01 +1000
commit9a49ca9f9aeed500aa3872a94c9f566ec003cfdc (patch)
treecbba4291843bcdaa4025dc0c677f1493cfd8c0b9 /pkgs/development/go-modules
parent621cc6c8138347c83859320aafb8c78cfecb871a (diff)
downloadnixpkgs-9a49ca9f9aeed500aa3872a94c9f566ec003cfdc.tar
nixpkgs-9a49ca9f9aeed500aa3872a94c9f566ec003cfdc.tar.gz
nixpkgs-9a49ca9f9aeed500aa3872a94c9f566ec003cfdc.tar.bz2
nixpkgs-9a49ca9f9aeed500aa3872a94c9f566ec003cfdc.tar.lz
nixpkgs-9a49ca9f9aeed500aa3872a94c9f566ec003cfdc.tar.xz
nixpkgs-9a49ca9f9aeed500aa3872a94c9f566ec003cfdc.tar.zst
nixpkgs-9a49ca9f9aeed500aa3872a94c9f566ec003cfdc.zip
buildGo{Module,Package}: move to build-support/go
Diffstat (limited to 'pkgs/development/go-modules')
-rw-r--r--pkgs/development/go-modules/generic/default.nix311
1 files changed, 0 insertions, 311 deletions
diff --git a/pkgs/development/go-modules/generic/default.nix b/pkgs/development/go-modules/generic/default.nix
deleted file mode 100644
index 8b5185979e4..00000000000
--- a/pkgs/development/go-modules/generic/default.nix
+++ /dev/null
@@ -1,311 +0,0 @@
-{ go, cacert, git, lib, stdenv }:
-
-{ name ? "${args'.pname}-${args'.version}"
-, src
-, buildInputs ? []
-, nativeBuildInputs ? []
-, passthru ? {}
-, patches ? []
-
-# Go linker flags, passed to go via -ldflags
-, ldflags ? []
-
-# Go tags, passed to go via -tag
-, tags ? []
-
-# A function to override the go-modules derivation
-, overrideModAttrs ? (_oldAttrs : {})
-
-# path to go.mod and go.sum directory
-, modRoot ? "./"
-
-# vendorHash is the SRI hash of the vendored dependencies
-#
-# if vendorHash is null, then we won't fetch any dependencies and
-# rely on the vendor folder within the source.
-, vendorHash ? "_unset"
-# same as vendorHash, but outputHashAlgo is hardcoded to sha256
-# so regular base32 sha256 hashes work
-, vendorSha256 ? "_unset"
-# Whether to delete the vendor folder supplied with the source.
-, deleteVendor ? false
-# Whether to fetch (go mod download) and proxy the vendor directory.
-# This is useful if your code depends on c code and go mod tidy does not
-# include the needed sources to build or if any dependency has case-insensitive
-# conflicts which will produce platform dependant `vendorHash` checksums.
-, proxyVendor ? false
-
-# We want parallel builds by default
-, enableParallelBuilding ? true
-
-# Do not enable this without good reason
-# IE: programs coupled with the compiler
-, allowGoReference ? false
-
-, CGO_ENABLED ? go.CGO_ENABLED
-
-, meta ? {}
-
-# Not needed with buildGoModule
-, goPackagePath ? ""
-
-# needed for buildFlags{,Array} warning
-, buildFlags ? ""
-, buildFlagsArray ? ""
-
-, ... }@args':
-
-with builtins;
-
-assert goPackagePath != "" -> throw "`goPackagePath` is not needed with `buildGoModule`";
-assert (vendorSha256 == "_unset" && vendorHash == "_unset") -> throw "either `vendorHash` or `vendorSha256` is required";
-assert (vendorSha256 != "_unset" && vendorHash != "_unset") -> throw "both `vendorHash` and `vendorSha256` set. only one can be set.";
-
-let
-  hasAnyVendorHash = (vendorSha256 != null && vendorSha256 != "_unset") || (vendorHash != null && vendorHash != "_unset");
-  vendorHashType =
-    if hasAnyVendorHash then
-      if vendorSha256 != null && vendorSha256 != "_unset" then
-        "sha256"
-      else
-        "sri"
-    else
-      null;
-
-  args = removeAttrs args' [ "overrideModAttrs" "vendorSha256" "vendorHash" ];
-
-  go-modules = if hasAnyVendorHash then stdenv.mkDerivation (let modArgs = {
-
-    name = "${name}-go-modules";
-
-    nativeBuildInputs = (args.nativeBuildInputs or []) ++ [ go git cacert ];
-
-    inherit (args) src;
-    inherit (go) GOOS GOARCH;
-
-    patches = args.patches or [];
-    patchFlags = args.patchFlags or [];
-    preBuild = args.preBuild or "";
-    sourceRoot = args.sourceRoot or "";
-
-    GO111MODULE = "on";
-
-    impureEnvVars = lib.fetchers.proxyImpureEnvVars ++ [
-      "GIT_PROXY_COMMAND" "SOCKS_SERVER" "GOPROXY"
-    ];
-
-    configurePhase = args.modConfigurePhase or ''
-      runHook preConfigure
-      export GOCACHE=$TMPDIR/go-cache
-      export GOPATH="$TMPDIR/go"
-      cd "${modRoot}"
-      runHook postConfigure
-    '';
-
-    buildPhase = args.modBuildPhase or ''
-      runHook preBuild
-    '' + lib.optionalString (deleteVendor == true) ''
-      if [ ! -d vendor ]; then
-        echo "vendor folder does not exist, 'deleteVendor' is not needed"
-        exit 10
-      else
-        rm -rf vendor
-      fi
-    '' + ''
-      if [ -d vendor ]; then
-        echo "vendor folder exists, please set 'vendorHash = null;' or 'vendorSha256 = null;' in your expression"
-        exit 10
-      fi
-
-    ${if proxyVendor then ''
-      mkdir -p "''${GOPATH}/pkg/mod/cache/download"
-      go mod download
-    '' else ''
-      if (( "''${NIX_DEBUG:-0}" >= 1 )); then
-        goModVendorFlags+=(-v)
-      fi
-      go mod vendor "''${goModVendorFlags[@]}"
-    ''}
-
-      mkdir -p vendor
-
-      runHook postBuild
-    '';
-
-    installPhase = args.modInstallPhase or ''
-      runHook preInstall
-
-    ${if proxyVendor then ''
-      rm -rf "''${GOPATH}/pkg/mod/cache/download/sumdb"
-      cp -r --reflink=auto "''${GOPATH}/pkg/mod/cache/download" $out
-    '' else ''
-      cp -r --reflink=auto vendor $out
-    ''}
-
-      runHook postInstall
-    '';
-
-    dontFixup = true;
-  }; in modArgs // (
-      {
-        outputHashMode = "recursive";
-      } // (if (vendorHashType == "sha256") then {
-        outputHashAlgo = "sha256";
-        outputHash = vendorSha256;
-      } else {
-        outputHash = vendorHash;
-      }) // (lib.optionalAttrs (vendorHashType == "sri" && vendorHash == "") {
-        outputHashAlgo = "sha256";
-      })
-  ) // overrideModAttrs modArgs) else "";
-
-  package = stdenv.mkDerivation (args // {
-    nativeBuildInputs = [ go ] ++ nativeBuildInputs;
-
-    inherit (go) GOOS GOARCH;
-
-    GO111MODULE = "on";
-    GOFLAGS = lib.optionals (!proxyVendor) [ "-mod=vendor" ] ++ lib.optionals (!allowGoReference) [ "-trimpath" ];
-    inherit CGO_ENABLED;
-
-    configurePhase = args.configurePhase or ''
-      runHook preConfigure
-
-      export GOCACHE=$TMPDIR/go-cache
-      export GOPATH="$TMPDIR/go"
-      export GOPROXY=off
-      export GOSUMDB=off
-      cd "$modRoot"
-    '' + lib.optionalString hasAnyVendorHash ''
-      ${if proxyVendor then ''
-        export GOPROXY=file://${go-modules}
-      '' else ''
-        rm -rf vendor
-        cp -r --reflink=auto ${go-modules} vendor
-      ''}
-    '' + ''
-
-      runHook postConfigure
-    '';
-
-    buildPhase = args.buildPhase or ''
-      runHook preBuild
-
-      exclude='\(/_\|examples\|Godeps\|testdata'
-      if [[ -n "$excludedPackages" ]]; then
-        IFS=' ' read -r -a excludedArr <<<$excludedPackages
-        printf -v excludedAlternates '%s\\|' "''${excludedArr[@]}"
-        excludedAlternates=''${excludedAlternates%\\|} # drop final \| added by printf
-        exclude+='\|'"$excludedAlternates"
-      fi
-      exclude+='\)'
-
-      buildGoDir() {
-        local cmd="$1" dir="$2"
-
-        . $TMPDIR/buildFlagsArray
-
-        declare -a flags
-        flags+=($buildFlags "''${buildFlagsArray[@]}")
-        flags+=(''${tags:+-tags=${lib.concatStringsSep "," tags}})
-        flags+=(''${ldflags:+-ldflags="$ldflags"})
-        flags+=("-v" "-p" "$NIX_BUILD_CORES")
-
-        if [ "$cmd" = "test" ]; then
-          flags+=($checkFlags)
-        fi
-
-        local OUT
-        if ! OUT="$(go $cmd "''${flags[@]}" $dir 2>&1)"; then
-          if ! echo "$OUT" | grep -qE '(no( buildable| non-test)?|build constraints exclude all) Go (source )?files'; then
-            echo "$OUT" >&2
-            return 1
-          fi
-        fi
-        if [ -n "$OUT" ]; then
-          echo "$OUT" >&2
-        fi
-        return 0
-      }
-
-      getGoDirs() {
-        local type;
-        type="$1"
-        if [ -n "$subPackages" ]; then
-          echo "$subPackages" | sed "s,\(^\| \),\1./,g"
-        else
-          find . -type f -name \*$type.go -exec dirname {} \; | grep -v "/vendor/" | sort --unique | grep -v "$exclude"
-        fi
-      }
-
-      if (( "''${NIX_DEBUG:-0}" >= 1 )); then
-        buildFlagsArray+=(-x)
-      fi
-
-      if [ ''${#buildFlagsArray[@]} -ne 0 ]; then
-        declare -p buildFlagsArray > $TMPDIR/buildFlagsArray
-      else
-        touch $TMPDIR/buildFlagsArray
-      fi
-      if [ -z "$enableParallelBuilding" ]; then
-          export NIX_BUILD_CORES=1
-      fi
-      for pkg in $(getGoDirs ""); do
-        echo "Building subPackage $pkg"
-        buildGoDir install "$pkg"
-      done
-    '' + lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) ''
-      # normalize cross-compiled builds w.r.t. native builds
-      (
-        dir=$GOPATH/bin/${go.GOOS}_${go.GOARCH}
-        if [[ -n "$(shopt -s nullglob; echo $dir/*)" ]]; then
-          mv $dir/* $dir/..
-        fi
-        if [[ -d $dir ]]; then
-          rmdir $dir
-        fi
-      )
-    '' + ''
-      runHook postBuild
-    '';
-
-    doCheck = args.doCheck or true;
-    checkPhase = args.checkPhase or ''
-      runHook preCheck
-      # We do not set trimpath for tests, in case they reference test assets
-      export GOFLAGS=''${GOFLAGS//-trimpath/}
-
-      for pkg in $(getGoDirs test); do
-        buildGoDir test "$pkg"
-      done
-
-      runHook postCheck
-    '';
-
-    installPhase = args.installPhase or ''
-      runHook preInstall
-
-      mkdir -p $out
-      dir="$GOPATH/bin"
-      [ -e "$dir" ] && cp -r $dir $out
-
-      runHook postInstall
-    '';
-
-    strictDeps = true;
-
-    disallowedReferences = lib.optional (!allowGoReference) go;
-
-    passthru = passthru // { inherit go go-modules vendorSha256 vendorHash; };
-
-    enableParallelBuilding = enableParallelBuilding;
-
-    meta = {
-      # Add default meta information
-      platforms = go.meta.platforms or lib.platforms.all;
-    } // meta;
-  });
-in
-lib.warnIf (buildFlags != "" || buildFlagsArray != "")
-  "Use the `ldflags` and/or `tags` attributes instead of `buildFlags`/`buildFlagsArray`"
-  package