From 8f27aedb46bbf91ce2cba3b43e016511b1a422a9 Mon Sep 17 00:00:00 2001 From: Domen Kožar Date: Tue, 7 Oct 2014 10:52:45 +0200 Subject: add redmine package --- .../redmine/2002_FHS_through_env_vars.patch | 100 +++++++ .../redmine/2003_externalize_session_config.patch | 72 +++++ .../redmine/2004_FHS_plugins_assets.patch | 11 + .../version-management/redmine/Gemfile.lock | 152 ++++++++++ .../version-management/redmine/Gemfile.nix | 332 +++++++++++++++++++++ .../applications/version-management/redmine/README | 6 + .../version-management/redmine/bootstrap.nix | 45 +++ .../version-management/redmine/default.nix | 73 +++++ .../redmine/generate_nix_requirements.rb | 56 ++++ 9 files changed, 847 insertions(+) create mode 100644 pkgs/applications/version-management/redmine/2002_FHS_through_env_vars.patch create mode 100644 pkgs/applications/version-management/redmine/2003_externalize_session_config.patch create mode 100644 pkgs/applications/version-management/redmine/2004_FHS_plugins_assets.patch create mode 100644 pkgs/applications/version-management/redmine/Gemfile.lock create mode 100644 pkgs/applications/version-management/redmine/Gemfile.nix create mode 100644 pkgs/applications/version-management/redmine/README create mode 100644 pkgs/applications/version-management/redmine/bootstrap.nix create mode 100644 pkgs/applications/version-management/redmine/default.nix create mode 100644 pkgs/applications/version-management/redmine/generate_nix_requirements.rb (limited to 'pkgs/applications/version-management') diff --git a/pkgs/applications/version-management/redmine/2002_FHS_through_env_vars.patch b/pkgs/applications/version-management/redmine/2002_FHS_through_env_vars.patch new file mode 100644 index 000000000000..889b8c930e73 --- /dev/null +++ b/pkgs/applications/version-management/redmine/2002_FHS_through_env_vars.patch @@ -0,0 +1,100 @@ +Description: FHS through env vars +Forwarded: not-needed +Author: Jérémy Lal +Last-Update: 2013-09-28 +--- redmine.orig/app/models/attachment.rb ++++ redmine/app/models/attachment.rb +@@ -46,10 +46,10 @@ class Attachment < ActiveRecord::Base + "LEFT JOIN #{Project.table_name} ON #{Document.table_name}.project_id = #{Project.table_name}.id"} + + cattr_accessor :storage_path +- @@storage_path = Redmine::Configuration['attachments_storage_path'] || File.join(Rails.root, "files") ++ @@storage_path = Redmine::Configuration['attachments_storage_path'] || ENV['RAILS_VAR'] ? File.join(ENV['RAILS_VAR'], "files") : File.join(Rails.root, "files") + + cattr_accessor :thumbnails_storage_path +- @@thumbnails_storage_path = File.join(Rails.root, "tmp", "thumbnails") ++ @@thumbnails_storage_path = ENV['RAILS_TMP'] ? File.join(ENV['RAILS_TMP'], "thumbnails") : File.join(Rails.root, "tmp", "thumbnails") + + before_save :files_to_final_location + after_destroy :delete_from_disk +--- redmine.orig/lib/redmine/configuration.rb ++++ redmine/lib/redmine/configuration.rb +@@ -32,7 +32,7 @@ module Redmine + # * :file: the configuration file to load (default: config/configuration.yml) + # * :env: the environment to load the configuration for (default: Rails.env) + def load(options={}) +- filename = options[:file] || File.join(Rails.root, 'config', 'configuration.yml') ++ filename = options[:file] || ENV['RAILS_ETC'] ? File.join(ENV['RAILS_ETC'], 'configuration.yml') : File.join(Rails.root, 'config', 'configuration.yml') + env = options[:env] || Rails.env + + @config = @defaults.dup +@@ -103,7 +103,7 @@ module Redmine + end + + def load_deprecated_email_configuration(env) +- deprecated_email_conf = File.join(Rails.root, 'config', 'email.yml') ++ deprecated_email_conf = ENV['RAILS_ETC'] ? File.join(ENV['RAILS_ETC'], 'email.yml') : File.join(Rails.root, 'config', 'email.yml') + if File.file?(deprecated_email_conf) + warn "Storing outgoing emails configuration in config/email.yml is deprecated. You should now store it in config/configuration.yml using the email_delivery setting." + @config.merge!({'email_delivery' => load_from_yaml(deprecated_email_conf, env)}) +--- redmine.orig/lib/redmine/export/pdf.rb ++++ redmine/lib/redmine/export/pdf.rb +@@ -38,7 +38,7 @@ module Redmine + attr_accessor :footer_date + + def initialize(lang, orientation='P') +- @@k_path_cache = Rails.root.join('tmp', 'pdf') ++ @@k_path_cache = ENV['RAILS_TMP'] ? File.join(ENV['RAILS_TMP'], 'pdf') : Rails.root.join('tmp', 'pdf') + FileUtils.mkdir_p @@k_path_cache unless File::exist?(@@k_path_cache) + set_language_if_valid lang + pdf_encoding = l(:general_pdf_encoding).upcase +--- redmine.orig/config/application.rb ++++ redmine/config/application.rb +@@ -52,8 +63,21 @@ module RedmineApp + # Do not include all helpers + config.action_controller.include_all_helpers = false + ++ # move tmp directory to RAILS_TMP ++ config.paths['tmp'] = ENV['RAILS_TMP'] ++ + config.session_store :cookie_store, :key => '_redmine_session' + ++ # log path ++ config.paths['log'] = File.join(ENV['RAILS_LOG'], "#{Rails.env}.log") unless !ENV['RAILS_LOG'] ++ ++ config.paths['public'] = ENV['RAILS_PUBLIC'] unless !ENV['RAILS_PUBLIC'] ++ ++ config.cache_store = :file_store, File.join(ENV['RAILS_TMP'], "cache") ++ ++ # Set Active Record's database.yml path ++ config.paths['config/database'] = File.join(ENV['RAILS_ETC'], 'database.yml') unless !ENV['RAILS_ETC'] ++ + if File.exists?(File.join(File.dirname(__FILE__), 'additional_environment.rb')) + instance_eval File.read(File.join(File.dirname(__FILE__), 'additional_environment.rb')) + end +--- redmine.orig/lib/plugins/rfpdf/lib/tcpdf.rb ++++ redmine/lib/plugins/rfpdf/lib/tcpdf.rb +@@ -89,10 +89,10 @@ class TCPDF + @@k_small_ratio = 2/3.0 + + cattr_accessor :k_path_cache +- @@k_path_cache = Rails.root.join('tmp') ++ @@k_path_cache = ENV['RAILS_TMP'] ? ENV['RAILS_TMP'] : Rails.root.join('tmp') + + cattr_accessor :k_path_url_cache +- @@k_path_url_cache = Rails.root.join('tmp') ++ @@k_path_url_cache = ENV['RAILS_TMP'] ? ENV['RAILS_TMP'] : Rails.root.join('tmp') + + attr_accessor :barcode + +--- redmine.orig/lib/redmine/scm/adapters/abstract_adapter.rb ++++ redmine/lib/redmine/scm/adapters/abstract_adapter.rb +@@ -222,7 +222,7 @@ module Redmine + if @stderr_log_file.nil? + writable = false + path = Redmine::Configuration['scm_stderr_log_file'].presence +- path ||= Rails.root.join("log/#{Rails.env}.scm.stderr.log").to_s ++ path ||= ENV['RAILS_LOG'] ? File.join(ENV['RAILS_LOG'], "#{Rails.env}.scm.stderr.log").to_s : Rails.root.join("log/#{Rails.env}.scm.stderr.log").to_s + if File.exists?(path) + if File.file?(path) && File.writable?(path) + writable = true diff --git a/pkgs/applications/version-management/redmine/2003_externalize_session_config.patch b/pkgs/applications/version-management/redmine/2003_externalize_session_config.patch new file mode 100644 index 000000000000..39af8e02e556 --- /dev/null +++ b/pkgs/applications/version-management/redmine/2003_externalize_session_config.patch @@ -0,0 +1,72 @@ +Description: Externalize session config to yml in /etc +Forwarded: not-needed +Author: Jérémy Lal +Last-Update: 2010-01-10 +--- redmine.orig/lib/tasks/initializers.rake ++++ redmine/lib/tasks/initializers.rake +@@ -1,11 +1,12 @@ + desc 'Generates a secret token for the application.' ++task :generate_secret_token do + +-file 'config/initializers/secret_token.rb' do +- path = File.join(Rails.root, 'config', 'initializers', 'secret_token.rb') +- secret = SecureRandom.hex(40) +- File.open(path, 'w') do |f| +- f.write <<"EOF" +-# This file was generated by 'rake generate_secret_token', and should ++filename = ENV['YML_SESSION_FILENAME'] ? ENV['YML_SESSION_FILENAME'] : 'session.yml' ++path = File.join(ENV['RAILS_ETC'] ? ENV['RAILS_ETC'] : File.join(Rails.root, 'config'), filename) ++secret = SecureRandom.hex(40) ++File.open(path, 'w') do |f| ++ f.write <<"EOF" ++# This file was generated by 'rake generate_session_store', + # not be made visible to public. + # If you have a load-balancing Redmine cluster, you will need to use the + # same version of this file on each machine. And be sure to restart your +@@ -15,10 +18,18 @@ file 'config/initializers/secret_token.r + # change this key, all old sessions will become invalid! Make sure the + # secret is at least 30 characters and all random, no regular words or + # you'll be exposed to dictionary attacks. +-RedmineApp::Application.config.secret_token = '#{secret}' ++ ++production: ++ key: _redmine_ ++ secret: #{secret} ++ ++development: ++ key: _redmine_ ++ secret: #{secret} ++ ++test: ++ key: _redmine_ ++ secret: #{secret} + EOF + end + end +- +-desc 'Generates a secret token for the application.' +-task :generate_secret_token => ['config/initializers/secret_token.rb'] +--- redmine.orig/config/application.rb ++++ redmine/config/application.rb +@@ -66,7 +66,20 @@ module RedmineApp + # move tmp directory to RAILS_TMP + config.paths['tmp'] = ENV['RAILS_TMP'] + +- config.session_store :cookie_store, :key => '_redmine_session' ++ # loads cookie based session session and secret keys ++ # this is needed here because initializers are loaded after plugins, ++ # and some plugins initialize ActionController which requires a secret to be set. ++ # crash if file not found ++ relativeUrlRoot = ENV['RAILS_RELATIVE_URL_ROOT'] ++ filename = ENV['RAILS_ETC'] ? File.join(ENV['RAILS_ETC'], 'session.yml') : File.join(File.dirname(__FILE__), '..', 'session.yml') ++ if File.exists?(filename) ++ sessionconfig = YAML::load_file(filename) ++ config.session_store :cookie_store, :key => sessionconfig[Rails.env]['key'], :path => (relativeUrlRoot.blank?) ? '/' : relativeUrlRoot ++ config.secret_token = sessionconfig[Rails.env]['secret'] ++ else ++ # temporary settings before session.yml is created ++ config.session_store :cookie_store, :key => '_redmine_session', :path => (relativeUrlRoot.blank?) ? '/' : relativeUrlRoot ++ end + + # log path + config.paths['log'] = File.join(ENV['RAILS_LOG'], "#{Rails.env}.log") unless !ENV['RAILS_LOG'] diff --git a/pkgs/applications/version-management/redmine/2004_FHS_plugins_assets.patch b/pkgs/applications/version-management/redmine/2004_FHS_plugins_assets.patch new file mode 100644 index 000000000000..d9a6844a6a35 --- /dev/null +++ b/pkgs/applications/version-management/redmine/2004_FHS_plugins_assets.patch @@ -0,0 +1,11 @@ +--- redmine.orig/lib/redmine/plugin.rb ++++ redmine/lib/redmine/plugin.rb +@@ -47,7 +47,7 @@ module Redmine #:nodoc: + self.directory = File.join(Rails.root, 'plugins') + + cattr_accessor :public_directory +- self.public_directory = File.join(Rails.root, 'public', 'plugin_assets') ++ self.public_directory = ENV['RAILS_TMP'] ? File.join(ENV['RAILS_TMP'], 'plugin_assets') : File.join(Rails.root, 'public', 'plugin_assets') + + @registered_plugins = {} + class << self diff --git a/pkgs/applications/version-management/redmine/Gemfile.lock b/pkgs/applications/version-management/redmine/Gemfile.lock new file mode 100644 index 000000000000..7d83583c019d --- /dev/null +++ b/pkgs/applications/version-management/redmine/Gemfile.lock @@ -0,0 +1,152 @@ +GEM + remote: https://rubygems.org/ + specs: + actionmailer (3.2.19) + actionpack (= 3.2.19) + mail (~> 2.5.4) + actionpack (3.2.19) + activemodel (= 3.2.19) + activesupport (= 3.2.19) + builder (~> 3.0.0) + erubis (~> 2.7.0) + journey (~> 1.0.4) + rack (~> 1.4.5) + rack-cache (~> 1.2) + rack-test (~> 0.6.1) + sprockets (~> 2.2.1) + activemodel (3.2.19) + activesupport (= 3.2.19) + builder (~> 3.0.0) + activerecord (3.2.19) + activemodel (= 3.2.19) + activesupport (= 3.2.19) + arel (~> 3.0.2) + tzinfo (~> 0.3.29) + activeresource (3.2.19) + activemodel (= 3.2.19) + activesupport (= 3.2.19) + activesupport (3.2.19) + i18n (~> 0.6, >= 0.6.4) + multi_json (~> 1.0) + arel (3.0.3) + awesome_nested_set (2.1.6) + activerecord (>= 3.0.0) + builder (3.0.0) + capybara (2.1.0) + mime-types (>= 1.16) + nokogiri (>= 1.3.3) + rack (>= 1.0.0) + rack-test (>= 0.5.4) + xpath (~> 2.0) + childprocess (0.5.5) + ffi (~> 1.0, >= 1.0.11) + coderay (1.1.0) + erubis (2.7.0) + fastercsv (1.5.5) + ffi (1.9.5) + hike (1.2.3) + i18n (0.6.11) + journey (1.0.4) + jquery-rails (2.0.3) + railties (>= 3.1.0, < 5.0) + thor (~> 0.14) + json (1.8.1) + mail (2.5.4) + mime-types (~> 1.16) + treetop (~> 1.4.8) + metaclass (0.0.4) + mime-types (1.25.1) + mini_portile (0.6.0) + mocha (1.0.0) + metaclass (~> 0.0.1) + multi_json (1.10.1) + net-ldap (0.3.1) + nokogiri (1.6.3.1) + mini_portile (= 0.6.0) + pg (0.17.1) + polyglot (0.3.5) + rack (1.4.5) + rack-cache (1.2) + rack (>= 0.4) + rack-openid (1.4.2) + rack (>= 1.1.0) + ruby-openid (>= 2.1.8) + rack-ssl (1.3.4) + rack + rack-test (0.6.2) + rack (>= 1.0) + rails (3.2.19) + actionmailer (= 3.2.19) + actionpack (= 3.2.19) + activerecord (= 3.2.19) + activeresource (= 3.2.19) + activesupport (= 3.2.19) + bundler (~> 1.0) + railties (= 3.2.19) + railties (3.2.19) + actionpack (= 3.2.19) + activesupport (= 3.2.19) + rack-ssl (~> 1.3.2) + rake (>= 0.8.7) + rdoc (~> 3.4) + thor (>= 0.14.6, < 2.0) + rake (10.1.1) + rdoc (3.12.2) + json (~> 1.4) + redcarpet (2.3.0) + rmagick (2.13.3) + ruby-openid (2.3.0) + rubyzip (1.1.6) + selenium-webdriver (2.43.0) + childprocess (~> 0.5) + multi_json (~> 1.0) + rubyzip (~> 1.0) + websocket (~> 1.0) + shoulda (3.3.2) + shoulda-context (~> 1.0.1) + shoulda-matchers (~> 1.4.1) + shoulda-context (1.0.2) + shoulda-matchers (1.4.1) + activesupport (>= 3.0.0) + sprockets (2.2.2) + hike (~> 1.2) + multi_json (~> 1.0) + rack (~> 1.0) + tilt (~> 1.1, != 1.3.0) + thor (0.19.1) + tilt (1.4.1) + treetop (1.4.15) + polyglot + polyglot (>= 0.3.1) + tzinfo (0.3.41) + websocket (1.2.1) + xpath (2.0.0) + nokogiri (~> 1.3) + yard (0.8.7.4) + +PLATFORMS + ruby + +DEPENDENCIES + activerecord-jdbc-adapter (~> 1.3.2) + activerecord-jdbcpostgresql-adapter + awesome_nested_set (= 2.1.6) + builder (= 3.0.0) + capybara (~> 2.1.0) + coderay (~> 1.1.0) + fastercsv (~> 1.5.0) + jquery-rails (~> 2.0.2) + mime-types + mocha (~> 1.0.0) + net-ldap (~> 0.3.1) + pg (>= 0.11.0) + rack-openid + rails (= 3.2.19) + rake (~> 10.1.1) + rdoc (>= 2.4.2) + redcarpet (~> 2.3.0) + rmagick (>= 2.0.0) + ruby-openid (~> 2.3.0) + selenium-webdriver + shoulda (~> 3.3.2) + yard diff --git a/pkgs/applications/version-management/redmine/Gemfile.nix b/pkgs/applications/version-management/redmine/Gemfile.nix new file mode 100644 index 000000000000..a7339097b146 --- /dev/null +++ b/pkgs/applications/version-management/redmine/Gemfile.nix @@ -0,0 +1,332 @@ +[ +{ +name = "actionmailer"; +hash = "cd9f0b22f755b0adeae13cf949adaf63fa1c068c72d0a100572c6a11aecd3ba7"; +url = "http://rubygems.org/downloads/actionmailer-3.2.19.gem"; +version = "3.2.19"; +} +{ +name = "actionpack"; +hash = "c58ca2342aff2062f4f478551ce46d81918ac93200bc62d099764d2cd7499fcd"; +url = "http://rubygems.org/downloads/actionpack-3.2.19.gem"; +version = "3.2.19"; +} +{ +name = "activemodel"; +hash = "4ea3abf790eca9ee8228e9e2a465350e258294270a639b63f0e1dfad236fe70e"; +url = "http://rubygems.org/downloads/activemodel-3.2.19.gem"; +version = "3.2.19"; +} +{ +name = "activerecord"; +hash = "052945ad510744aaa3e35a817a6f515a2316e7dd96df6460f75b36067bb60372"; +url = "http://rubygems.org/downloads/activerecord-3.2.19.gem"; +version = "3.2.19"; +} +{ +name = "activeresource"; +hash = "8617d24537ca937cc67aac46aaa29782510d66136605426d0a23a3585a839daf"; +url = "http://rubygems.org/downloads/activeresource-3.2.19.gem"; +version = "3.2.19"; +} +{ +name = "activesupport"; +hash = "2c837a59250da14b12a6b0cfb6774f0afae90aa749fd96ad4347344d8417ad3d"; +url = "http://rubygems.org/downloads/activesupport-3.2.19.gem"; +version = "3.2.19"; +} +{ +name = "arel"; +hash = "c0006e2169deee3b8cc2d258296388822eeb2db59832450b9b7316e1387d0da4"; +url = "http://rubygems.org/downloads/arel-3.0.3.gem"; +version = "3.0.3"; +} +{ +name = "awesome_nested_set"; +hash = "0dcd801aea5048f5ab907b62b4174b6763b191eaa4e1e11bb83f996f01349af8"; +url = "http://rubygems.org/downloads/awesome_nested_set-2.1.6.gem"; +version = "2.1.6"; +} +{ +name = "builder"; +hash = "fbd3e15e5de02245f7d649b3415b2c2875cdc9a14dccde89aa30fc14a314618e"; +url = "http://rubygems.org/downloads/builder-3.0.0.gem"; +version = "3.0.0"; +} +{ +name = "capybara"; +hash = "a9a19f8d6bb2dfcb1f05ea3e1727cb556d1cba0d234d1712b481e8d4f7bbb91e"; +url = "http://rubygems.org/downloads/capybara-2.1.0.gem"; +version = "2.1.0"; +} +{ +name = "childprocess"; +hash = "9b583295a11932d2eeffa1e8f5b8fb2fb0064a2f0111ad98c3b752b94f80bf33"; +url = "http://rubygems.org/downloads/childprocess-0.5.5.gem"; +version = "0.5.5"; +} +{ +name = "coderay"; +hash = "5a943c59e36f7ef9dd2677855735656413af02e3f302431e9c548aabe89f3c15"; +url = "http://rubygems.org/downloads/coderay-1.1.0.gem"; +version = "1.1.0"; +} +{ +name = "erubis"; +hash = "63653f5174a7997f6f1d6f465fbe1494dcc4bdab1fb8e635f6216989fb1148ba"; +url = "http://rubygems.org/downloads/erubis-2.7.0.gem"; +version = "2.7.0"; +} +{ +name = "fastercsv"; +hash = "d098199e62e4e10eec436a9ea9b8c189dacd5c06f2825f00d1e0f1c29fdbc3b5"; +url = "http://rubygems.org/downloads/fastercsv-1.5.5.gem"; +version = "1.5.5"; +} +{ +name = "ffi"; +hash = "0d2ef90163eef8545689e8dfc27fb1245a2d82e3500d587de1e38290629e662f"; +url = "http://rubygems.org/downloads/ffi-1.9.5.gem"; +version = "1.9.5"; +} +{ +name = "hike"; +hash = "154e2f2593845e5bcd8ed2ba3092600c55c6ad8c630722857de3fdaf334ccc44"; +url = "http://rubygems.org/downloads/hike-1.2.3.gem"; +version = "1.2.3"; +} +{ +name = "i18n"; +hash = "b37dda25b30484f2674a851e24ae098a38564a61c976fa91a34bf8fceaa3923b"; +url = "http://rubygems.org/downloads/i18n-0.6.11.gem"; +version = "0.6.11"; +} +{ +name = "journey"; +hash = "7454b8612530784000fbb17ea2df749a71b70702a0ac8ebef4a1e7f05aecc10f"; +url = "http://rubygems.org/downloads/journey-1.0.4.gem"; +version = "1.0.4"; +} +{ +name = "jquery-rails"; +hash = "cc4eab342fb3b1fcbb2fc1c9a61b09ecd86d795b1f74d607994b0bc6fd5ef444"; +url = "http://rubygems.org/downloads/jquery-rails-2.0.3.gem"; +version = "2.0.3"; +} +{ +name = "json"; +hash = "961bfbbfa9fda1e857e9c791e964e6664e0d43bf687b19669dfbc7cdbc5e0200"; +url = "http://rubygems.org/downloads/json-1.8.1.gem"; +version = "1.8.1"; +} +{ +name = "mail"; +hash = "446585c38b062121252688dcc9cc70af1f470822e30db021bb97d185969e257c"; +url = "http://rubygems.org/downloads/mail-2.5.4.gem"; +version = "2.5.4"; +} +{ +name = "metaclass"; +hash = "8569685c902108b1845be4e5794d646f2a8adcb0280d7651b600dab0844fe942"; +url = "http://rubygems.org/downloads/metaclass-0.0.4.gem"; +version = "0.0.4"; +} +{ +name = "mime-types"; +hash = "88ef3c596481678710ffd4018fa40f1999b02d97babea39682ba7d5badd21f56"; +url = "http://rubygems.org/downloads/mime-types-1.25.1.gem"; +version = "1.25.1"; +} +{ +name = "mini_portile"; +hash = "762b3e241362de24b2eb2bb1b98638399b931e9e51bece5f8e2df7611eb16c26"; +url = "http://rubygems.org/downloads/mini_portile-0.6.0.gem"; +version = "0.6.0"; +} +{ +name = "mocha"; +hash = "788fd93c8009a7e0eebd155509953e5987f4681902aad666a294283baa09899a"; +url = "http://rubygems.org/downloads/mocha-1.0.0.gem"; +version = "1.0.0"; +} +{ +name = "multi_json"; +hash = "2c98979877e87df0b338ebf5c86091b390f53d62c11a8232bd51ca007e0b82d2"; +url = "http://rubygems.org/downloads/multi_json-1.10.1.gem"; +version = "1.10.1"; +} +{ +name = "net-ldap"; +hash = "953551665fb0d398740a72a26314c6d34bd70fa35419c96dc58351f17d9a5081"; +url = "http://rubygems.org/downloads/net-ldap-0.3.1.gem"; +version = "0.3.1"; +} +{ +name = "nokogiri"; +hash = "91761a654439406b5bed71adf6092d49829e26332b4c0e7c8a23a2e628442585"; +url = "http://rubygems.org/downloads/nokogiri-1.6.3.1.gem"; +version = "1.6.3.1"; +} +{ +name = "pg"; +hash = "e7933e8f7f184c28e820ed85ddfb3ad8a13933b2b2ab8656aa8f81cb0aa610a6"; +url = "http://rubygems.org/downloads/pg-0.17.1.gem"; +version = "0.17.1"; +} +{ +name = "polyglot"; +hash = "59d66ef5e3c166431c39cb8b7c1d02af419051352f27912f6a43981b3def16af"; +url = "http://rubygems.org/downloads/polyglot-0.3.5.gem"; +version = "0.3.5"; +} +{ +name = "rack"; +hash = "f7bf3faa8e09a2ff26475372de36a724e7470d6bdc33d189a0ec34b49605f308"; +url = "http://rubygems.org/downloads/rack-1.4.5.gem"; +version = "1.4.5"; +} +{ +name = "rack-cache"; +hash = "02bfed05f8b3266db804f2fa445801636ca2c6d211a3137ec796f88af5756e1c"; +url = "http://rubygems.org/downloads/rack-cache-1.2.gem"; +version = "1.2"; +} +{ +name = "rack-openid"; +hash = "8cd2305e738463a7da98791f9ac4df4cf3f6ed27908d982350430694ac2fe869"; +url = "http://rubygems.org/downloads/rack-openid-1.4.2.gem"; +version = "1.4.2"; +} +{ +name = "rack-ssl"; +hash = "d703764fa2a0d44a2163d6add65be89f5dba4477d1959b90d3727682a9c37dcf"; +url = "http://rubygems.org/downloads/rack-ssl-1.3.4.gem"; +version = "1.3.4"; +} +{ +name = "rack-test"; +hash = "7e920b6aac888e4a3846e5997fb1cbf456bdb5846322b58dc31697a54a38b306"; +url = "http://rubygems.org/downloads/rack-test-0.6.2.gem"; +version = "0.6.2"; +} +{ +name = "rails"; +hash = "33b64cf78dfcf3206d961ce03e8fe6d260081da696e60da39d0b2a4a160fe22b"; +url = "http://rubygems.org/downloads/rails-3.2.19.gem"; +version = "3.2.19"; +} +{ +name = "railties"; +hash = "c569009ee5c005190d208ac228087fdc094b10c6f0cf209f1d12c552b447cc10"; +url = "http://rubygems.org/downloads/railties-3.2.19.gem"; +version = "3.2.19"; +} +{ +name = "rake"; +hash = "85e446590871dd3469c80dfe70a0296c20b76a9006af6b728c1f47d0b460412d"; +url = "http://rubygems.org/downloads/rake-10.1.1.gem"; +version = "10.1.1"; +} +{ +name = "rdoc"; +hash = "a8e2b78f7e5ec4cc4716cd863975645f2f2377dc6db267a15e427e5fae2633ed"; +url = "http://rubygems.org/downloads/rdoc-3.12.2.gem"; +version = "3.12.2"; +} +{ +name = "redcarpet"; +hash = "5c9bcc307fba97ff5a25eec74f08365c17e929d2a5c707db32d6fc99ec81f0b9"; +url = "http://rubygems.org/downloads/redcarpet-2.3.0.gem"; +version = "2.3.0"; +} +{ +name = "rmagick"; +hash = "109f3b8be90afdea9abbdd2a79a955cd808b5cad65d937ed12676da22870d3b4"; +url = "http://rubygems.org/downloads/rmagick-2.13.3.gem"; +version = "2.13.3"; +} +{ +name = "ruby-openid"; +hash = "f69ed004e95f7094e23bfd8bc9ebfb1dc88a7b46637252ca2907a1189870ea7b"; +url = "http://rubygems.org/downloads/ruby-openid-2.3.0.gem"; +version = "2.3.0"; +} +{ +name = "rubyzip"; +hash = "a996435ee9698be6a09d3748f4d23ee15aaf45cbfef1749def165af6ea3c0a9e"; +url = "http://rubygems.org/downloads/rubyzip-1.1.6.gem"; +version = "1.1.6"; +} +{ +name = "selenium-webdriver"; +hash = "09fe4374d1541cb45403ad1238c2d88129f3afb985218635af087a06c99a521a"; +url = "http://rubygems.org/downloads/selenium-webdriver-2.43.0.gem"; +version = "2.43.0"; +} +{ +name = "shoulda"; +hash = "52e70b71cbfb7c01dace14e268a62d86c21ddd1e5ec0116c8b1e632d8e04e412"; +url = "http://rubygems.org/downloads/shoulda-3.3.2.gem"; +version = "3.3.2"; +} +{ +name = "shoulda-context"; +hash = "ee5559aa13248c70fdec6868a3c144adf7438c904c59d1a76b04a002e5151de5"; +url = "http://rubygems.org/downloads/shoulda-context-1.0.2.gem"; +version = "1.0.2"; +} +{ +name = "shoulda-matchers"; +hash = "c35693cbfa84213212dffbc2c87487427ef364927340151329a842f0a06086b9"; +url = "http://rubygems.org/downloads/shoulda-matchers-1.4.1.gem"; +version = "1.4.1"; +} +{ +name = "sprockets"; +hash = "fae893b7e86e83c1936f6f2a64db3550510f86eabdd5fa9f0f23fb25d7e0cf96"; +url = "http://rubygems.org/downloads/sprockets-2.2.2.gem"; +version = "2.2.2"; +} +{ +name = "thor"; +hash = "9ff834f031b5550c743bb8a3139317fefdae9cdebd02d60de376658f427fe522"; +url = "http://rubygems.org/downloads/thor-0.19.1.gem"; +version = "0.19.1"; +} +{ +name = "tilt"; +hash = "39820562c4f5db45fe18de87ccc30a0e77a998bf5334b1d8c10a2f7dbc1f5903"; +url = "http://rubygems.org/downloads/tilt-1.4.1.gem"; +version = "1.4.1"; +} +{ +name = "treetop"; +hash = "ffa68f201c0f62c26b0a1d13233d73194400596964696843f87ebb5d812f12ff"; +url = "http://rubygems.org/downloads/treetop-1.4.15.gem"; +version = "1.4.15"; +} +{ +name = "tzinfo"; +hash = "381b22fd1744a35d0a0239f563f505773681e626e6d900063b14cb9b1b68e98c"; +url = "http://rubygems.org/downloads/tzinfo-0.3.41.gem"; +version = "0.3.41"; +} +{ +name = "websocket"; +hash = "e626c8c3e8593735d900265fb1fc3439fd06b394069860177d8f40733b12ae9e"; +url = "http://rubygems.org/downloads/websocket-1.2.1.gem"; +version = "1.2.1"; +} +{ +name = "xpath"; +hash = "9ca4a1cc88d9ab16c591468cce7b5d00ee06a8a76b841f8438970c7a44c86c12"; +url = "http://rubygems.org/downloads/xpath-2.0.0.gem"; +version = "2.0.0"; +} +{ +name = "yard"; +hash = "e65a26f9b9dc6e2aa9b1d1d2e1a45bee3edf540a6a7e6c30fa6aa1df7f7a29b4"; +url = "http://rubygems.org/downloads/yard-0.8.7.4.gem"; +version = "0.8.7.4"; +} +] diff --git a/pkgs/applications/version-management/redmine/README b/pkgs/applications/version-management/redmine/README new file mode 100644 index 000000000000..1cc4772568a4 --- /dev/null +++ b/pkgs/applications/version-management/redmine/README @@ -0,0 +1,6 @@ +to regenerate Gemfile.nix and Gemfile.lock you need to + + % nix-build bootstrap.nix + % cp result/Gemfile.nix ./ + % cp result/Gemfile.lock ./ + diff --git a/pkgs/applications/version-management/redmine/bootstrap.nix b/pkgs/applications/version-management/redmine/bootstrap.nix new file mode 100644 index 000000000000..4b4359603c9b --- /dev/null +++ b/pkgs/applications/version-management/redmine/bootstrap.nix @@ -0,0 +1,45 @@ +{ pkgs ? import {} +}: + +with pkgs; + +let + +in stdenv.mkDerivation rec { + version = "2.5.2"; + name = "redmine-${version}"; + __noChroot = true; + src = fetchurl { + url = "http://www.redmine.org/releases/${name}.tar.gz"; + sha256 = "0x0zwxyj4dwbk7l64s3lgny10mjf0ba8jwrbafsm4d72sncmacv0"; + }; + buildInputs = [ + ruby rubyLibs.bundler libiconv libxslt libxml2 pkgconfig + libffi imagemagickBig postgresql which stdenv + ]; + installPhase = '' + unset http_proxy + unset ftp_proxy + + cp -R . $out + cp ${./generate_nix_requirements.rb} $out/generate_nix_requirements.rb + cd $out + + cat > config/database.yml < config/database.yml <> Gemfile + + # make rails server happy + mkdir -p tmp/pids + + # cleanup + rm config/database.yml + ''; + + meta = with stdenv.lib; { + homepage = http://www.redmine.org/; + platforms = platforms.linux; + maintainers = [ maintainers.garbas ]; + license = licenses.gpl2; + }; +} diff --git a/pkgs/applications/version-management/redmine/generate_nix_requirements.rb b/pkgs/applications/version-management/redmine/generate_nix_requirements.rb new file mode 100644 index 000000000000..ed47d52c9c1b --- /dev/null +++ b/pkgs/applications/version-management/redmine/generate_nix_requirements.rb @@ -0,0 +1,56 @@ +#!/usr/bin/env ruby + +require 'rubygems' +require 'bundler' +require 'fileutils' +require 'net/http' +require 'net/https' +require 'uri' + +TMP_DIR = "/tmp/gems" + +FileUtils.rm_rf(TMP_DIR) if File.exists?(TMP_DIR) +FileUtils.mkdir TMP_DIR + +GEMSERVER = "http://rubygems.org" + +# inspect Gemfile.lock +lockfile = Bundler::LockfileParser.new(Bundler.read_file("Gemfile.lock")) + +to_mirror = {} + +uri = URI(GEMSERVER) +http = Net::HTTP.new(uri.host, uri.port) +http.use_ssl = uri.scheme == 'https' + +requirements = {} + +lockfile.specs.each do |s| + possible_gem_name = "#{s.name}-#{s.version.to_s}.gem" + + Dir.chdir TMP_DIR do + filename = `gem fetch #{s.name} -v #{s.version.to_s}`.split()[1] + hash = `sha256sum #{filename}.gem` + url = "#{GEMSERVER}/downloads/#{filename}.gem" + puts url + requirements[s.name] = { :version => s.version.to_s, + :hash => hash.split().first, + :url => url,} + + end +end + +filename = 'Gemfile.nix' + +File.open(filename, 'w') do |file| + file.puts "[" + requirements.each do |name, info| + file.puts "{" + file.puts ['name = ', '"', name, '";'].join('') + file.puts ['hash = ', '"', info[:hash], '";'].join('') + file.puts ['url = ', '"', info[:url], '";'].join('') + file.puts ['version = ', '"', info[:version], '";'].join('') + file.puts "}" + end + file.puts "]" +end -- cgit 1.4.1