diff options
Diffstat (limited to 'pkgs/applications/version-management/gitlab/default.nix')
-rw-r--r-- | pkgs/applications/version-management/gitlab/default.nix | 100 |
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; }; } |