diff options
author | Jaka Hudoklin <jakahudoklin@gmail.com> | 2015-01-07 02:40:55 +0100 |
---|---|---|
committer | Matej Cotman <cotman.matej@gmail.com> | 2015-02-07 15:32:20 +0100 |
commit | ae34f923f7ff67ad9c39fa00ccf812b41426c1f1 (patch) | |
tree | 07dff84f3582fe21c3b09629e65bf1947ebca8f0 /pkgs/applications/networking | |
parent | 8c79a2df6335d979f523b76f5f5153afe8f594bc (diff) | |
download | nixlib-ae34f923f7ff67ad9c39fa00ccf812b41426c1f1.tar nixlib-ae34f923f7ff67ad9c39fa00ccf812b41426c1f1.tar.gz nixlib-ae34f923f7ff67ad9c39fa00ccf812b41426c1f1.tar.bz2 nixlib-ae34f923f7ff67ad9c39fa00ccf812b41426c1f1.tar.lz nixlib-ae34f923f7ff67ad9c39fa00ccf812b41426c1f1.tar.xz nixlib-ae34f923f7ff67ad9c39fa00ccf812b41426c1f1.tar.zst nixlib-ae34f923f7ff67ad9c39fa00ccf812b41426c1f1.zip |
panamax: simplify, refactor, add test
Diffstat (limited to 'pkgs/applications/networking')
-rw-r--r-- | pkgs/applications/networking/cluster/panamax/api.nix | 181 | ||||
-rw-r--r-- | pkgs/applications/networking/cluster/panamax/ui.nix | 147 |
2 files changed, 124 insertions, 204 deletions
diff --git a/pkgs/applications/networking/cluster/panamax/api.nix b/pkgs/applications/networking/cluster/panamax/api.nix index 80e515873d3f..6345e7fd10bb 100644 --- a/pkgs/applications/networking/cluster/panamax/api.nix +++ b/pkgs/applications/networking/cluster/panamax/api.nix @@ -1,139 +1,86 @@ -{ stdenv, buildEnv, fetchgit, fetchurl, ruby_2_1, rubygemsFun, libxslt, libxml2 -, sqlite, openssl, cacert, writeScriptBin, docker +{ stdenv, buildEnv, fetchgit, fetchurl, makeWrapper +, ruby, rubygemsFun, libxslt, libxml2, sqlite, openssl, cacert, docker , dataDir ? "/var/lib/panamax-api" }: -let - ruby = ruby_2_1; - rubygems = rubygemsFun ruby_2_1; - - gemspec = map (gem: fetchurl { url=gem.url; sha256=gem.hash; }) (import ./Gemfile-api.nix); - - srcs = { - bundler = fetchurl { - url = "http://rubygems.org/downloads/bundler-1.7.9.gem"; - sha256 = "1gd201rh17xykab9pbqp0dkxfm7b9jri02llyvmrc0c5bz2vhycm"; - }; - }; - - panamax_api = stdenv.mkDerivation rec { - name = "panamax-api-${version}"; - version = "0.2.11"; - - src = fetchgit { - rev = "refs/tags/v${version}"; - url = "git://github.com/CenturyLinkLabs/panamax-api"; - sha256 = "01sz7jibn1rqfga85pr4p8wk6jfldzfaxj1726vs6znmcwhfkcgj"; - }; - - buildInputs = [ sqlite openssl ruby ]; - - installPhase = '' - mkdir -p $out/share/panamax-api - cp -R . $out/share/panamax-api - cd $out/share/panamax-api - - export HOME=$PWD - export GEM_HOME=$PWD - export PATH="${rubygems}/bin:$PATH" - export RAILS_ENV=production - find . -type f -exec sed -e 's|/usr/bin/docker|${docker}/bin/docker|g' -i "{}" \; +with stdenv.lib; - mkdir -p vendor/cache - ${stdenv.lib.concatStrings (map (gem: "ln -s ${gem} vendor/cache/${gem.name};") gemspec)} - - ${"ln -s ${srcs.bundler} vendor/cache/${srcs.bundler.name};"} - gem install --local vendor/cache/${srcs.bundler.name} - - ln -sf ${database_yml} config/database.yml - - - bin/bundle install -j4 --verbose --local --deployment - - rm -f ./bin/* +let + database_yml = builtins.toFile "database.yml" '' + production: + adapter: sqlite3 + database: <%= ENV["PANAMAX_DATABASE_PATH"] || "${dataDir}/db/mnt/db.sqlite3" %> + timeout: 5000 + ''; - ./gems/bundler-*/bin/bundle exec rake rails:update:bin +in stdenv.mkDerivation rec { + name = "panamax-api-${version}"; + version = "0.2.11"; - rm -rf log - ln -sf ${dataDir}/state/log . - ln -sf ${dataDir}/state/tmp . - mv ./db ./_db - ln -sf ${dataDir}/db . - ''; + bundler = fetchurl { + url = "http://rubygems.org/downloads/bundler-1.7.9.gem"; + sha256 = "1gd201rh17xykab9pbqp0dkxfm7b9jri02llyvmrc0c5bz2vhycm"; }; - panamax_api_init = writeScriptBin "panamax-api-init" '' - #!${stdenv.shell} - - test -d ${dataDir}/db && exit 0 + src = fetchgit { + rev = "refs/tags/v${version}"; + url = "git://github.com/CenturyLinkLabs/panamax-api"; + sha256 = "01sz7jibn1rqfga85pr4p8wk6jfldzfaxj1726vs6znmcwhfkcgj"; + }; - cd ${panamax_api}/share/panamax-api + gemspec = map (gem: fetchurl { url=gem.url; sha256=gem.hash; }) (import ./Gemfile-api.nix); - export HOME=$PWD - export GEM_HOME=$PWD - export PATH="${panamax_api}/share/panamax-api/bin:${ruby}/bin:$PATH" - export OPENSSL_X509_CERT_FILE="${cacert}/etc/ca-bundle.crt" - export RAILS_ENV=production + buildInputs = [ makeWrapper sqlite openssl ruby (rubygemsFun ruby) ]; - mkdir -p ${dataDir}/state/log - mkdir -p ${dataDir}/db/mnt - ln -sf ${panamax_api}/share/panamax-api/_db/schema.rb ${dataDir}/db/ - ln -sf ${panamax_api}/share/panamax-api/_db/seeds.rb ${dataDir}/db/ - ln -sf ${panamax_api}/share/panamax-api/_db/migrate ${dataDir}/db/ + setSourceRoot = '' + mkdir -p $out/share + cp -R git-export $out/share/panamax-api + export sourceRoot="$out/share/panamax-api" + ''; - bundle exec rake db:setup - bundle exec rake db:seed - bundle exec rake panamax:templates:load + postPatch = '' + find . -type f -exec sed -e 's|/usr/bin/docker|${docker}/bin/docker|g' -i "{}" \; ''; - panamax_api_run = writeScriptBin "panamax-api-run" '' - #!${stdenv.shell} - cd ${panamax_api}/share/panamax-api - mkdir -p ${dataDir}/state/tmp + configurePhase = '' export HOME=$PWD export GEM_HOME=$PWD - export PATH="${panamax_api}/share/panamax-api/bin:${ruby}/bin:${docker}/bin:$PATH" export RAILS_ENV=production - export SSL_CERT_FILE="${cacert}/etc/ca-bundle.crt" - bin/bundle exec rails s $@ + + mkdir -p vendor/cache + ${concatStrings (map (gem: "ln -s ${gem} vendor/cache/${gem.name};") gemspec)} + ln -s ${bundler} vendor/cache/${bundler.name} + ln -sf ${database_yml} config/database.yml ''; - database_yml = builtins.toFile "database.yml" '' - development: - adapter: sqlite3 - database: ${dataDir}/db/mnt/development.sqlite3 - pool: 5 - timeout: 5000 + buildPhase = '' + gem install --local vendor/cache/${bundler.name} + bin/bundle install -j4 --verbose --local --deployment --without development test + ''; - # See corresponding schema load in spec/support/in_memory_database - test: - adapter: sqlite3 - database: ":memory:" - verbosity: quiet + installPhase = '' + rm -rf log tmp + mv ./db ./_db + ln -sf ${dataDir}/{db,state/log,state/tmp} . + + mkdir -p $out/bin + makeWrapper bin/bundle "$out/bin/bundle" \ + --run "cd $out/share/panamax-api" \ + --prefix "PATH" : "$out/share/panamax-api/bin:${ruby}/bin:$PATH" \ + --prefix "HOME" : "$out/share/panamax-api" \ + --prefix "GEM_HOME" : "$out/share/panamax-api" \ + --prefix "OPENSSL_X509_CERT_FILE" : "${cacert}/etc/ca-bundle.crt" \ + --prefix "SSL_CERT_FILE" : "${cacert}/etc/ca-bundle.crt" + ''; - production: - adapter: sqlite3 - database: ${dataDir}/db/mnt/production.sqlite3 - pool: 5 - timeout: 5000 + postFixup = '' + rm -r vendor/cache/* ''; -in - stdenv.mkDerivation rec { - name = panamax_api.name; - - unpackPhase = "true"; - - installPhase = '' - mkdir -p $out/bin - ln -s ${panamax_api_init}/bin/* $out/bin - ln -s ${panamax_api_run}/bin/* $out/bin - ''; - - meta = with stdenv.lib; { - homepage = https://github.com/CenturyLinkLabs/panamax-api; - description = "The API behind The Panamax UI"; - license = licenses.asl20; - maintainers = with maintainers; [ matejc ]; - platforms = platforms.linux; - }; - } + meta = with stdenv.lib; { + homepage = https://github.com/CenturyLinkLabs/panamax-api; + description = "The API behind The Panamax UI"; + license = licenses.asl20; + maintainers = with maintainers; [ matejc offline ]; + platforms = platforms.linux; + }; +} diff --git a/pkgs/applications/networking/cluster/panamax/ui.nix b/pkgs/applications/networking/cluster/panamax/ui.nix index bc520f60d6d4..3181fb976e03 100644 --- a/pkgs/applications/networking/cluster/panamax/ui.nix +++ b/pkgs/applications/networking/cluster/panamax/ui.nix @@ -1,101 +1,74 @@ -{ stdenv, buildEnv, fetchgit, fetchurl, ruby_2_1, rubygemsFun -, libxml2, libxslt, openssl, writeScriptBin, sqlite -, dataDir ? "/var/lib/panamax-ui" }: -let - ruby = ruby_2_1; - rubygems = rubygemsFun ruby_2_1; +{ stdenv, fetchgit, fetchurl, makeWrapper +, ruby, rubygemsFun, openssl, sqlite, dataDir ? "/var/lib/panamax-ui"}: - gemspec = map (gem: fetchurl { url=gem.url; sha256=gem.hash; }) (import ./Gemfile-ui.nix); - - srcs = { - bundler = fetchurl { - url = "http://rubygems.org/downloads/bundler-1.7.9.gem"; - sha256 = "1gd201rh17xykab9pbqp0dkxfm7b9jri02llyvmrc0c5bz2vhycm"; - }; - }; - - panamax_ui = stdenv.mkDerivation rec { - name = "panamax-ui-${version}"; - version = "0.2.11"; - - src = fetchgit { - rev = "refs/tags/v${version}"; - url = "git://github.com/CenturyLinkLabs/panamax-ui"; - sha256 = "17j5ac8fzp377bzg7f239jdcc9j0c63bkx0ill5nl10i3h05z7jh"; - }; - - buildInputs = [ ruby openssl sqlite ]; - installPhase = '' - mkdir -p $out/share/panamax-ui - cp -R . $out/share/panamax-ui - cd $out/share/panamax-ui - - find . -type f -iname "*.haml" -exec sed -e 's|CoreOS Journal|NixOS Journal|g' -i "{}" \; - find . -type f -iname "*.haml" -exec sed -e 's|CoreOS Local|NixOS Local|g' -i "{}" \; - find . -type f -iname "*.haml" -exec sed -e 's|CoreOS Host|NixOS Host|g' -i "{}" \; - sed -e 's|CoreOS Local|NixOS Local|g' -i "spec/features/manage_application_spec.rb" - - export HOME=$PWD - export GEM_HOME=$PWD - export PATH="${rubygems}/bin:$PATH" - - mkdir -p vendor/cache - ${stdenv.lib.concatStrings (map (gem: "ln -s ${gem} vendor/cache/${gem.name};") gemspec)} - - ${"ln -s ${srcs.bundler} vendor/cache/${srcs.bundler.name};"} - gem install --local vendor/cache/${srcs.bundler.name} +with stdenv.lib; - bin/bundle install --verbose --local --without development test +stdenv.mkDerivation rec { + name = "panamax-ui-${version}"; + version = "0.2.11"; - rm -f ./bin/* - - ./gems/bundler-*/bin/bundle exec rake rails:update:bin - - rm -rf log - ln -sf ${dataDir}/state/log . - rm -rf tmp - ln -sf ${dataDir}/state/tmp . - rm -rf db - ln -sf ${dataDir}/db . - ''; + bundler = fetchurl { + url = "http://rubygems.org/downloads/bundler-1.7.9.gem"; + sha256 = "1gd201rh17xykab9pbqp0dkxfm7b9jri02llyvmrc0c5bz2vhycm"; }; - panamax_ui_run = writeScriptBin "panamax-ui-run" '' - #!${stdenv.shell} + src = fetchgit { + rev = "refs/tags/v${version}"; + url = "git://github.com/CenturyLinkLabs/panamax-ui"; + sha256 = "17j5ac8fzp377bzg7f239jdcc9j0c63bkx0ill5nl10i3h05z7jh"; + }; - cd ${panamax_ui}/share/panamax-ui - export PATH="${panamax_ui}/share/panamax-ui/bin:${ruby}/bin:$PATH" - export RAILS_ENV="production" - export HOME="${panamax_ui}/share/panamax-ui" - export GEM_HOME="${panamax_ui}/share/panamax-ui" - export GEM_PATH="${panamax_ui}/share/panamax-ui" + gemspec = map (gem: fetchurl { url=gem.url; sha256=gem.hash; }) (import ./Gemfile-ui.nix); - echo ${panamax_ui}/share/panamax-ui + buildInputs = [ makeWrapper ruby openssl sqlite (rubygemsFun ruby) ]; - mkdir -p ${dataDir}/state/log - mkdir -p ${dataDir}/state/tmp - mkdir -p ${dataDir}/db + setSourceRoot = '' + mkdir -p $out/share + cp -R git-export $out/share/panamax-ui + export sourceRoot="$out/share/panamax-ui" + ''; - export PMX_API_PORT_3000_TCP_ADDR=localhost - bin/rails server $@ + postPatch = '' + find . -type f -iname "*.haml" -exec sed -e 's|CoreOS Journal|NixOS Journal|g' -i "{}" \; + find . -type f -iname "*.haml" -exec sed -e 's|CoreOS Local|NixOS Local|g' -i "{}" \; + find . -type f -iname "*.haml" -exec sed -e 's|CoreOS Host|NixOS Host|g' -i "{}" \; + sed -e 's|CoreOS Local|NixOS Local|g' -i "spec/features/manage_application_spec.rb" ''; -in - stdenv.mkDerivation rec { - name = panamax_ui.name; + configurePhase = '' + export HOME=$PWD + export GEM_HOME=$PWD - unpackPhase = "true"; + mkdir -p vendor/cache + ${concatStrings (map (gem: "ln -s ${gem} vendor/cache/${gem.name};") gemspec)} + ln -s ${bundler} vendor/cache/${bundler.name} + ''; - installPhase = '' - mkdir -p $out/bin - ln -s ${panamax_ui_run}/bin/* $out/bin - ''; + buildPhase = '' + gem install --local vendor/cache/${bundler.name} + bin/bundle install --verbose --local --without development test + rm -f ./bin/* + ruby ./gems/bundler-*/bin/bundle exec rake rails:update:bin + ''; - meta = with stdenv.lib; { - homepage = https://github.com/CenturyLinkLabs/panamax-ui; - description = "The Web GUI for Panamax"; - license = licenses.asl20; - maintainers = with maintainers; [ matejc ]; - platforms = platforms.linux; - }; - } + installPhase = '' + rm -rf log tmp db + ln -sf ${dataDir}/{db,state/log,state/tmp} . + + mkdir -p $out/bin + makeWrapper bin/bundle "$out/bin/bundle" \ + --run "cd $out/share/panamax-ui" \ + --prefix "PATH" : "$out/share/panamax-ui/bin:${ruby}/bin:$PATH" \ + --prefix "HOME" : "$out/share/panamax-ui" \ + --prefix "GEM_HOME" : "$out/share/panamax-ui" \ + --prefix "GEM_PATH" : "$out/share/panamax-ui" + ''; + + meta = with stdenv.lib; { + homepage = https://github.com/CenturyLinkLabs/panamax-ui; + description = "The Web GUI for Panamax"; + license = licenses.asl20; + maintainers = with maintainers; [ matejc offline ]; + platforms = platforms.linux; + }; +} |