about summary refs log tree commit diff
path: root/pkgs/applications/version-management/gitlab/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/applications/version-management/gitlab/default.nix')
-rw-r--r--pkgs/applications/version-management/gitlab/default.nix100
1 files changed, 19 insertions, 81 deletions
diff --git a/pkgs/applications/version-management/gitlab/default.nix b/pkgs/applications/version-management/gitlab/default.nix
index 156ff4628183..993d61dc9ac3 100644
--- a/pkgs/applications/version-management/gitlab/default.nix
+++ b/pkgs/applications/version-management/gitlab/default.nix
@@ -1,74 +1,13 @@
 { pkgs, stdenv, lib, bundler, fetchurl, fetchFromGitHub, bundlerEnv, libiconv
-, ruby, tzdata, git, nodejs, procps, dpkg, yarn
+, ruby, tzdata, git, procps, dpkg, nettools
 }:
 
 /* When updating the Gemfile add `gem "activerecord-nulldb-adapter"`
    to allow building the assets without a database */
 
 let
-  # Taken from yarn2nix
-  buildYarnPackageDeps = {
-    name,
-    packageJson,
-    yarnLock,
-    yarnNix,
-    pkgConfig ? {},
-    yarnFlags ? []
-  }:
-    let
-      offlineCache = (pkgs.callPackage yarnNix {}).offline_cache;
-      extraBuildInputs = (lib.flatten (builtins.map (key:
-        pkgConfig.${key} . buildInputs or []
-      ) (builtins.attrNames pkgConfig)));
-      postInstall = (builtins.map (key:
-        if (pkgConfig.${key} ? postInstall) then
-          ''
-            for f in $(find -L -path '*/node_modules/${key}' -type d); do
-              (cd "$f" && (${pkgConfig.${key}.postInstall}))
-            done
-          ''
-        else
-          ""
-      ) (builtins.attrNames pkgConfig));
-    in
-    stdenv.mkDerivation {
-      name = "${name}-modules";
-
-      phases = ["buildPhase"];
-      buildInputs = [ yarn nodejs ] ++ extraBuildInputs;
-
-      buildPhase = ''
-        # Yarn writes cache directories etc to $HOME.
-        export HOME=`pwd`/yarn_home
-        cp ${packageJson} ./package.json
-        cp ${yarnLock} ./yarn.lock
-        chmod +w ./yarn.lock
-        yarn config --offline set yarn-offline-mirror ${offlineCache}
-        # Do not look up in the registry, but in the offline cache.
-        # TODO: Ask upstream to fix this mess.
-        sed -i -E 's|^(\s*resolved\s*")https?://.*/|\1|' yarn.lock
-        yarn install ${lib.escapeShellArgs yarnFlags}
-        ${lib.concatStringsSep "\n" postInstall}
-        mkdir $out
-        mv node_modules $out/
-        patchShebangs $out
-      '';
-    };
-  node-env = buildYarnPackageDeps {
-    name = "gitlab";
-    packageJson = ./package.json;
-    yarnLock = ./yarn.lock;
-    yarnNix = ./yarn.nix;
-    yarnFlags = [
-      "--offline"
-      "--frozen-lockfile"
-      "--ignore-engines"
-      "--ignore-scripts"
-    ];
-    # pkgConfig might need to come from node-packages ?
-  };
-  ruby-env = bundlerEnv {
-    name = "gitlab-env-0.2";
+  rubyEnv = bundlerEnv {
+    name = "gitlab-env-${version}";
     inherit ruby;
     gemdir = ./.;
     meta = with lib; {
@@ -79,7 +18,12 @@ let
     };
   };
 
-  version = "9.4.5";
+  version = "9.5.2";
+
+  gitlabDeb = fetchurl {
+    url = "https://packages.gitlab.com/gitlab/gitlab-ce/packages/debian/jessie/gitlab-ce_${version}-ce.0_amd64.deb/download";
+    sha256 = "0h0cmhs1bz5248vqxq5x3grggw2x53n6kbinlsyhnvcyds0vk0pa";
+  };
 
 in
 
@@ -87,19 +31,20 @@ stdenv.mkDerivation rec {
   name = "gitlab-${version}";
 
   buildInputs = [
-    ruby-env ruby bundler tzdata git nodejs procps dpkg yarn
+    rubyEnv ruby bundler tzdata git procps dpkg nettools
   ];
 
   src = fetchFromGitHub {
     owner = "gitlabhq";
     repo = "gitlabhq";
     rev = "v${version}";
-    sha256 = "1jdvgpzkrap9n9pclyi5ln5l5qfhj4y8ygb1w90jkgrd785bg573";
+    sha256 = "0ljqimdzxw5pvif2jrzjdihypa30595nb02h12a4gw3wz3qrrxdc";
   };
 
   patches = [
     ./remove-hardcoded-locations.patch
     ./nulladapter.patch
+    ./fix-36783.patch
   ];
 
   postPatch = ''
@@ -129,27 +74,20 @@ stdenv.mkDerivation rec {
   buildPhase = ''
     mv config/gitlab.yml.example config/gitlab.yml
 
-    # Emulate yarn install --production --pure-lockfile
-    mkdir -p node_modules/
-    ln -s ${node-env}/node_modules/* node_modules/
-    ln -s ${node-env}/node_modules/.bin node_modules/
-
-    # Compile assets. We skip the yarn check because it fails
-    export GITLAB_DATABASE_ADAPTER=nulldb
-    export SKIP_STORAGE_VALIDATION=true
-    rake gettext:compile RAILS_ENV=production
-    rake rake:assets:precompile RAILS_ENV=production NODE_ENV=production
-    rake webpack:compile RAILS_ENV=production NODE_ENV=production
-    rake gitlab:assets:fix_urls RAILS_ENV=production NODE_ENV=production
+    dpkg -x ${gitlabDeb} .
+    mv -v opt/gitlab/embedded/service/gitlab-rails/public/assets public
+    rm -rf opt
 
     mv config/gitlab.yml config/gitlab.yml.example
-    rm config/secrets.yml
+    rm -f config/secrets.yml
     mv config config.dist
   '';
 
   installPhase = ''
     mkdir -p $out/share
     cp -r . $out/share/gitlab
+    rm -rf $out/share/gitlab/log
+    ln -sf /run/gitlab/log $out/share/gitlab/log
     ln -sf /run/gitlab/uploads $out/share/gitlab/public/uploads
     ln -sf /run/gitlab/config $out/share/gitlab/config
 
@@ -159,7 +97,7 @@ stdenv.mkDerivation rec {
   '';
 
   passthru = {
-    inherit ruby-env;
+    inherit rubyEnv;
     inherit ruby;
   };
 }