diff options
author | roblabla <robinlambertz+dev@gmail.com> | 2017-07-05 23:53:31 +0200 |
---|---|---|
committer | roblabla <robinlambertz+dev@gmail.com> | 2017-07-06 13:29:49 +0200 |
commit | 0c7c421baa25782a658581fb609240a91400523d (patch) | |
tree | d1c936ca10fc7c1aaea466430931ba7d49421305 /pkgs/applications/version-management/gitlab/default.nix | |
parent | 8dee8d5f5c04b4b9fe39d1e6cdffcd0c881bf0fc (diff) | |
download | nixlib-0c7c421baa25782a658581fb609240a91400523d.tar nixlib-0c7c421baa25782a658581fb609240a91400523d.tar.gz nixlib-0c7c421baa25782a658581fb609240a91400523d.tar.bz2 nixlib-0c7c421baa25782a658581fb609240a91400523d.tar.lz nixlib-0c7c421baa25782a658581fb609240a91400523d.tar.xz nixlib-0c7c421baa25782a658581fb609240a91400523d.tar.zst nixlib-0c7c421baa25782a658581fb609240a91400523d.zip |
gitlab: 8.17.6 -> 9.3.4
Diffstat (limited to 'pkgs/applications/version-management/gitlab/default.nix')
-rw-r--r-- | pkgs/applications/version-management/gitlab/default.nix | 86 |
1 files changed, 78 insertions, 8 deletions
diff --git a/pkgs/applications/version-management/gitlab/default.nix b/pkgs/applications/version-management/gitlab/default.nix index 9929c94198d9..0266c04aab50 100644 --- a/pkgs/applications/version-management/gitlab/default.nix +++ b/pkgs/applications/version-management/gitlab/default.nix @@ -1,12 +1,73 @@ -{ stdenv, lib, bundler, fetchurl, fetchFromGitHub, bundlerEnv, libiconv, ruby -, tzdata, git, nodejs, procps, dpkg +{ pkgs, stdenv, lib, bundler, fetchurl, fetchFromGitHub, bundlerEnv, libiconv +, ruby, tzdata, git, nodejs, procps, dpkg, yarn }: /* When updating the Gemfile add `gem "activerecord-nulldb-adapter"` to allow building the assets without a database */ let - env = bundlerEnv { + # 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"; inherit ruby; gemdir = ./.; @@ -18,7 +79,7 @@ let }; }; - version = "8.17.6"; + version = "9.3.4"; gitlabDeb = fetchurl { url = "https://packages.gitlab.com/gitlab/gitlab-ce/packages/debian/jessie/gitlab-ce_${version}-ce.0_amd64.deb/download"; @@ -31,14 +92,14 @@ stdenv.mkDerivation rec { name = "gitlab-${version}"; buildInputs = [ - env ruby bundler tzdata git nodejs procps dpkg + ruby-env ruby bundler tzdata git nodejs procps dpkg yarn ]; src = fetchFromGitHub { owner = "gitlabhq"; repo = "gitlabhq"; rev = "v${version}"; - sha256 = "1yyyn2j0a457q2xbcxz6b33r23myr8kxbm9whj2dwrrbp4p273hr"; + sha256 = "18mx0pfny26s0vv92w1lmmikhfn966bd6s2zzcdmsd1j3cxxdwbg"; }; patches = [ @@ -79,7 +140,16 @@ stdenv.mkDerivation rec { export GITLAB_DATABASE_ADAPTER=nulldb export SKIP_STORAGE_VALIDATION=true - rake assets:precompile RAILS_ENV=production + # ;_; + #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/ + + 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 + rake gettext:compile RAILS_ENV=production mv config/gitlab.yml config/gitlab.yml.example rm config/secrets.yml @@ -98,7 +168,7 @@ stdenv.mkDerivation rec { ''; passthru = { - inherit env; + inherit ruby-env; inherit ruby; }; } |