diff --git a/www-apps/gitlabhq/Manifest b/www-apps/gitlabhq/Manifest index 8f70733..bfe856f 100644 --- a/www-apps/gitlabhq/Manifest +++ b/www-apps/gitlabhq/Manifest @@ -9,17 +9,20 @@ AUX gitlab-unicorn.service 773 SHA256 010c9e223a30400d9155b39499eb0d7efad23b66ba AUX gitlab.conf 27 SHA256 cd9be088bbb67a5400407fc6f63c061eb224f16748b7d0812ff2c101f43ca263 SHA512 909c49fee6d050c1e94b2559ff2a9d54c5c346492be0e2920b50d56d69eaddbed67e3ac12e012d2a9601b5596640ebf33c8dc68fc588a03ca370d963294be37f WHIRLPOOL fa436e8d7d2643d450259d26b6e7b24dae69df47ed22e5ef2a567f37aa785fbf3b0eb1129ae7c8bf8986c29559fc3b744a34064375e5245dce2b10053cd715d9 AUX gitlabhq-7.13.1-fix-gemfile.patch 1478 SHA256 99050e17841670f03e9430e1f0409cb0194b49ef3235b90c13a4bd66a2648ad6 SHA512 9b0ef71867d4049970295f1ac015e3a4917a24c61edab3452f75f9652e21b94f3dd859247bb28622cd032fe33d4ebcec7b262488841540b48e387f11399c9a8b WHIRLPOOL 9db14e3339e1038dbaff9344f3472c6e23209fa6edbeca35c3108723fd39cb93420361ffdade21fc7019a1e873283524db6e38868ee247ca11a5814832083aa0 AUX gitlabhq-8.0.2-fix-gemfile.patch 1586 SHA256 c91945e0e639b1297519d7165a3aa03fe203a29cde1d195f277be6cba71c67e1 SHA512 6eb15935292902b3090e856e00a972ee2e442eadbf2e42fbde1e4727d75d65e0e06c6be54be8fcd7aeebb5e0616c8d5123f60ebabebd7e02531f0fbc7b03d760 WHIRLPOOL 985e86c5bcb1ea059b41f1f08d3528afd3ab31d71eb81df79a2b454a0e2fb24dbf08b4a1c9197e56864550842baa60599db631bbd2a3603caaea9b7d6743e3d1 +AUX gitlabhq-8.1.0-fix-gemfile.patch 1585 SHA256 5e5a17fe241547f79e9992a43dc87c2be09ef5021072002c5172f9bc84858ab6 SHA512 f7de8760a1da1d8829b8b481fe0dafe0c379476406d2e0eac92b3085d4a95bbaa75124e592e724dd78add6cc603c3622ddffed6a337ac93ed510ec96045d7345 WHIRLPOOL 3dde3a4aad28d70cfcc3f379e6c3e29aa86fb508e18e01722877cb1d842ee8580d1a74ed6d2325f8790e27e38bb7b5ffc50adc265337e1557156c9806314a750 AUX gitlabhq-fix-sendmail-config.patch 731 SHA256 51f0d0af2a7c048d7cff56cf27955632f340ca67f9d460af840cf34ed60ca574 SHA512 b10d5b8d89927404d25345e17ba37ca4e7848b04c2ca20c5eef14eaac43d9ba14b62ae4c0d532eefaf6f9a2944578e84eb65a3420335d32495855c4807eec356 WHIRLPOOL 66f6443f311f2355ffd4efaea914f462816a1966a715b3b5ffaaa26b41bdced928b9905b8606f06fac3c2ccf20741553cfed2615430287bede01cf376aae2a60 DIST gitlabhq-7.14.3.tar.gz 6393535 SHA256 3814a3bdff9610b269be15b8cf35701fcdd78a5a80fb1b366269acc49b23f5e4 SHA512 f2088c151b424cbca0fbc65073c1198ea9c3619570ca3543cf5f0ddd193a6105941608df418eeb506bde83f2c0bbd34cea267caaed70092afcca54219e84004d WHIRLPOOL 70574a135eb426e93086502ad7a0d5b73e1070a19c529852fe2aa60c2081d27bbb4289340b73b469ecfd489779cc409bb56de263e47aaa07859ed0a14dd51f44 DIST gitlabhq-8.0.2.tar.gz 8238940 SHA256 e17a889f33c85b86744ea7be7cabb69feb340b82a4f01706360a985ceb6fd0f3 SHA512 901d0841075514af6e5f1a5a1064f81347769d024b1d0a5527de069ba29de1746ec3c27045529acd7fd993ad53ea65a08d24f3fc3fcbb2fafebc4b7c75490f97 WHIRLPOOL 19e9c1f4ea7e0106dea552bc875e2bfd1f518fe6aeefa6934772ebb29ba388eaad0715e36fa53f22fdc7e90203eea380ae62fc0dc8b7ce999efb2ee05d0cc63b DIST gitlabhq-8.0.3.tar.gz 8238927 SHA256 b299b100f8963f86aaeab01ad4ba49ac034cf77e803cff0fa710065e3464a049 SHA512 e247b3677ca86f43e665623c3a2602ab33843860537813fa64e3cd33b408698f0482e1ce437a4a30976b0656977f86890173ca044b7d07bfdfda3d269d311802 WHIRLPOOL 710f473d8b6c06fff9e72258102653f24035d5533f257d2d6d842ae0598fb048c6e76f9706e3662a93a9d1ec34ef67a67686fdee7439fb776de686eae19120ea DIST gitlabhq-8.0.4.tar.gz 8238901 SHA256 644b4bc98907bb171a1281ae73ac510f1bc6d379d39020f61e1697bb73547ae8 SHA512 41d4e8088221beb4aab731cf0ddccba0be2e4746ece0e33f92ec5488a4ed759f1e18788efed2351f5a643c31f47b4138a33077313b27e4e4567c9e9ad8dc79e5 WHIRLPOOL 08157b0f82150a5245cb2985b704026dab5f6342ab9e080c3149850ea37be5482d2dfc330a8d441957c1d8383528d3e65eb41c70ccfbb4a49e4a442f6f24a56e DIST gitlabhq-8.0.5.tar.gz 8238566 SHA256 476185a191bfe8757ca1a981419ff5d31449136e76029daa77e89086539d30c6 SHA512 af9d11f0ed744d0c92c9329ba94fe51534996f18dbb2c110d70912cd3ce9e60c3a127b7c8597c95b010b0e2251f98aabdddc314ddae53ab26a44c19b4ba7a7d7 WHIRLPOOL 6e4bc8c43cbfe215efd21a87a5d0395abde4f9998564fc0295d946ffa6a7021d2b5bc2ea625482fb400088bcc57431b3969a6c9dfa0f2121420356d153d297f0 +DIST gitlabhq-8.1.0.tar.gz 8503954 SHA256 f02e599436737b803482f4554abedd743e2f53c8c610e46115f71682da46276a SHA512 40f984a95f679f7695663e1118b119883a466ef0c65ee5aa4eac5053945a4111243c3aecc6181e0b1acf33c4df446ed7169a2e760a2b48596f314967bb3bff5b WHIRLPOOL ef2d418f167623cd17d2b4773d6cdab5f94d693ae4c785b7a621461b330908a680fb2bb4d720ef6ed1de3d80b1aea2e6a612146f9719f248c38e5588132d52dc EBUILD gitlabhq-7.14.3.ebuild 11037 SHA256 41ef6da353b308ddf94dea245cee85b8fa0a16d15d20cfd210ec8b908ea1a123 SHA512 c88df7c472fef7fc609bc4c4f622dfb7c9d7288a21859b3794305a100be013153a1058cd111c0e880094626b620cda72cc29632661e0c3c4f2b325beec555e97 WHIRLPOOL 795038d6d9443e242175132638bf32bf3bb191ec876f6abc3874ee68fce15c32b86e6574158ab6561c3693ecfce6457a0da619c9405fc447cbebf1c8732ac0e8 EBUILD gitlabhq-8.0.2.ebuild 11109 SHA256 802e5ec6fdc8a2219d8f812b0541916807fe0793b5874b7cdbafa760ee62e14f SHA512 a70346d7dafc62ccdd5a5fe11b55845d056f0c2fc8ca7c2dd0a6e67d80f91398ce5fda2c7b5f61bb5bf5bc65dd1c5e27d3959dc47de793475e98009c483b25a0 WHIRLPOOL 0df933fe9c57d9b8cca6cf2a8334c91443481942593b214c6ba4781eca70002181367095aa66e50ddce754751c1c71ea8c071d7766a815337a48cb9d7bb1c5fa EBUILD gitlabhq-8.0.3.ebuild 11116 SHA256 7e5335681c66070aacecb1d64f58ef09e8cbd1934e8f7bea4d457c380fbe5029 SHA512 9c77b4ec65ccae2451f47fa50c443e3f6647268f8d6570e9c4f6ced1dfe881ff9f385404545c2db02f93eda8adba898a12eac27276f216da2dea2a164b27b6cd WHIRLPOOL 1bc6d1e7e6d89f03fec11696a905ac26792acc6be2115b348090d499c2dfdeb9cc1db8f257af316d38de6a770e9ebba2a5e6c529013a35f75863a56751a24c2b EBUILD gitlabhq-8.0.4-r1.ebuild 11192 SHA256 3f4ec010d0d19d331921ceaf49ed197d0ed359cdebc49e44edfcd135ef837ae6 SHA512 f916c54d3891568361aadddf5827e4f631af84e4534399e3e98ec7456d2554d3d817527ee5dd043ab658fc17ee65f91337ad8aa115937b4451afa8f22a15ad66 WHIRLPOOL 5afbebf340525ee64ec8e15f8a6142abe7873d14e09f16cac3a2f0706e3fdf993e39d76c3931d8cecc379aacd28162e7db38e822bc9bd403e84a37653f4b9abc EBUILD gitlabhq-8.0.4.ebuild 11116 SHA256 7e5335681c66070aacecb1d64f58ef09e8cbd1934e8f7bea4d457c380fbe5029 SHA512 9c77b4ec65ccae2451f47fa50c443e3f6647268f8d6570e9c4f6ced1dfe881ff9f385404545c2db02f93eda8adba898a12eac27276f216da2dea2a164b27b6cd WHIRLPOOL 1bc6d1e7e6d89f03fec11696a905ac26792acc6be2115b348090d499c2dfdeb9cc1db8f257af316d38de6a770e9ebba2a5e6c529013a35f75863a56751a24c2b EBUILD gitlabhq-8.0.5.ebuild 11234 SHA256 297ccc9bfc1a4f06498a9ac1653caf445426e5605b79eab4bad0b0aa556b99fd SHA512 60d14b1c9726e8c3421e9aeaf46fff3180fed0bad951fa616d9591ca8739f98e0fef7823b74fa52e9f2303f462a18a283314a80f3657858893ee7e2a628bcb5f WHIRLPOOL e0b35b857cab028cccb475af879b53c00c01a22f1bbd718dc498a0475e2baa68b71f15769c5ceab89f2a5ddac5aff2cc1e80dbb99e30ca9c05eae4b32ecea2ae +EBUILD gitlabhq-8.1.0.ebuild 11117 SHA256 14a8cfc6b6c9694687cd01db027ce85f202df16c5dadcaf2fe1a408da964d65e SHA512 b028ba2749c546b19b4c9b13dc3edc71a3c76745409d5c6599f9c5c4f18436325d233f2cb978ae76c256217e9dfc89eaf0f7d141e3900cb8213b714763b08630 WHIRLPOOL 1063b0eba5487f42a31566d922fe1d4df495164c1753ee35cf0627ee885687e5885cec85c86e6a423fd5cc91c54672cee3d6bc482fad3ba32fe6cea33bf5a5f5 EBUILD gitlabhq-9999.ebuild 11087 SHA256 565d2f2a530d232bed74ab7c9699788e186d69159e5b201a2b9e9990f558083d SHA512 c8eb9b1a667e78404949835ef92d8ca9ef74738379a0b2de9d64ce3dc0510635f575d43fc13efc52076afd8b85a3955e8614a41503e6ca1deb0847d1f23c2ad2 WHIRLPOOL a9889adc7f162bfc032914252f4f689e417e06b06149695f2f370daa7806bc33ccba6a2767f79d512cd9cc7dcbd8ffbfbdb2a71ec40cb16c2dfbec4900804dc6 MISC metadata.xml 545 SHA256 1b7fc44d811e1ab7638fe4a40253f49d5f1071872d3020c22c4f67662750cb2f SHA512 86f47d297892bccfefa087d93936296f5647993a9ec8e3f47907a6859cbf385e5bc6f00502d7836c9e8d9efef2b6725bf145b0150924c2082b2bd164469ef6ea WHIRLPOOL 6bfb8a55684d68c8bfa6e025a0be965f7b815394ee0896dd2a13cfb524e3cf3f3149acc9072897e30a1842060389576aac07ea8beb4a8b0bfc3e8eab3723f2a1 diff --git a/www-apps/gitlabhq/files/gitlabhq-8.1.0-fix-gemfile.patch b/www-apps/gitlabhq/files/gitlabhq-8.1.0-fix-gemfile.patch new file mode 100644 index 0000000..58f345b --- /dev/null +++ b/www-apps/gitlabhq/files/gitlabhq-8.1.0-fix-gemfile.patch @@ -0,0 +1,56 @@ +diff --git a/Gemfile b/Gemfile +index 9254ce2..94acb3d 100644 +--- a/Gemfile ++++ b/Gemfile +@@ -174,6 +174,9 @@ gem "underscore-rails", "~> 1.4.4" + # Sanitize user input + gem "sanitize", '~> 2.0' + ++# The newer revision of charlock_holmes that is finally fixed to be compatible with Gentoo ++gem "charlock_holmes", git: "https://github.com/brianmario/charlock_holmes.git", ref: "dde194609b3513b0d2369ce8f916ae52566154b4" ++ + # Protect against bruteforcing + gem "rack-attack", '~> 4.3.0' + +@@ -183,9 +186,6 @@ gem 'ace-rails-ap', '~> 2.0.1' + # Keyboard shortcuts + gem 'mousetrap-rails', '~> 1.4.6' + +-# Detect and convert string character encoding +-gem 'charlock_holmes', '~> 0.6.9.4' +- + gem "sass-rails", '~> 4.0.5' + gem "coffee-rails", '~> 4.1.0' + gem "uglifier", '~> 2.7.2' +diff --git a/Gemfile.lock b/Gemfile.lock +index 5312289..586bd90 100644 +--- a/Gemfile.lock ++++ b/Gemfile.lock +@@ -1,3 +1,10 @@ ++GIT ++ remote: https://github.com/brianmario/charlock_holmes.git ++ revision: dde194609b3513b0d2369ce8f916ae52566154b4 ++ ref: dde194609b3513b0d2369ce8f916ae52566154b4 ++ specs: ++ charlock_holmes (0.6.9.4) ++ + GEM + remote: https://rubygems.org/ + specs: +@@ -108,7 +115,6 @@ GEM + json (>= 1.7) + celluloid (0.16.0) + timers (~> 4.0.0) +- charlock_holmes (0.6.9.4) + chunky_png (1.3.4) + cliver (0.3.2) + coderay (1.1.0) +@@ -800,7 +806,7 @@ DEPENDENCIES + capybara (~> 2.4.0) + capybara-screenshot (~> 1.0.0) + carrierwave (~> 0.9.0) +- charlock_holmes (~> 0.6.9.4) ++ charlock_holmes! + coffee-rails (~> 4.1.0) + colored (~> 1.2) + colorize (~> 0.5.8) diff --git a/www-apps/gitlabhq/gitlabhq-8.1.0.ebuild b/www-apps/gitlabhq/gitlabhq-8.1.0.ebuild new file mode 100644 index 0000000..0a07fb1 --- /dev/null +++ b/www-apps/gitlabhq/gitlabhq-8.1.0.ebuild @@ -0,0 +1,369 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI="5" + +# Maintainer notes: +# - This ebuild uses Bundler to download and install all gems in deployment mode +# (i.e. into isolated directory inside application). That's not Gentoo way how +# it should be done, but GitLab has too many dependencies that it will be too +# difficult to maintain them via ebuilds. +# + +USE_RUBY="ruby21" +PYTHON_COMPAT=( python2_7 ) + +inherit eutils python-r1 ruby-ng user systemd + +DESCRIPTION="GitLab is a free project and repository management application" +HOMEPAGE="https://about.gitlab.com/" +SRC_URI="https://github.com/gitlabhq/gitlabhq/archive/v${PV}.tar.gz -> ${P}.tar.gz" + +RESTRICT="mirror" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="kerberos mysql +postgres +unicorn systemd rugged_use_system_libraries" + +## Gems dependencies: +# charlock_holmes dev-libs/icu +# grape, capybara dev-libs/libxml2, dev-libs/libxslt +# rugged dev-util/cmake, virtual/pkgconfig +# json dev-util/ragel +# pygments.rb python 2.7+ +# execjs net-libs/nodejs, or any other JS runtime +# pg dev-db/postgresql +# mysql virtual/mysql +# +GEMS_DEPEND=" + dev-libs/icu + dev-libs/libxml2 + dev-libs/libxslt + dev-util/ragel + net-libs/nodejs + postgres? ( >=dev-db/postgresql-9.1:* ) + mysql? ( virtual/mysql ) + kerberos? ( virtual/krb5 )" +CDEPEND=" + dev-util/cmake + virtual/pkgconfig" +DEPEND="${GEMS_DEPEND} + >=dev-vcs/gitlab-shell-2.6.5 + dev-vcs/git + ~dev-vcs/gitlab-git-http-server-0.3.0 + kerberos? ( !app-crypt/heimdal ) + rugged_use_system_libraries? ( net-libs/http-parser dev-libs/libgit2:0/22 )" +RDEPEND="${DEPEND} + dev-db/redis + virtual/mta + systemd? ( sys-apps/systemd:0= )" +ruby_add_bdepend " + virtual/rubygems + >=dev-ruby/bundler-1.0" + +# +# fix-gemfile: +# Remove therubyracer that doesn't compile well on Gentoo (we're using +# nodejs instead that is faster and better). Also replace broken +# charlock_holmes version with fixed one. +# +# fix-sendmail-config: +# Fix default settings to work with ssmtp that doesn't know '-t' argument. +# +RUBY_PATCHES=( + "${P}-fix-gemfile.patch" + "${PN}-fix-sendmail-config.patch" +) + +MY_NAME="gitlab" +MY_USER="git" # should be same as in gitlab-shell + +DEST_DIR="/opt/${MY_NAME}" +CONF_DIR="/etc/${MY_NAME}" +LOGS_DIR="/var/log/${MY_NAME}" +TEMP_DIR="/var/tmp/${MY_NAME}" + +# When updating ebuild to newer version, check list of the queues in +# https://gitlab.com/gitlab-org/gitlab-ce/blob/v${PV}/bin/background_jobs +SIDEKIQ_QUEUES="post_receive,mailer,archive_repo,system_hook,project_web_hook,gitlab_shell,common,default" + +all_ruby_prepare() { + # fix paths + local satellites_path="${TEMP_DIR}/repo_satellites" + local repos_path=/var/lib/git/repositories + local shell_path=/usr/share/gitlab-shell + sed -i -E \ + -e "/satellites:$/,/\w:$/ s|(\s*path:\s).*|\1${satellites_path}/|" \ + -e "/gitlab_shell:$/,/\w:$/ s|(\s*path:\s).*|\1${shell_path}/|" \ + -e "/gitlab_shell:$/,/\w:$/ s|(\s*repos_path:\s).*|\1${repos_path}/|" \ + -e "/gitlab_shell:$/,/\w:$/ s|(\s*hooks_path:\s).*|\1${shell_path}/hooks/|" \ + config/gitlab.yml.example || die "failed to filter gitlab.yml.example" + + local run_path=/run/${MY_NAME} + sed -i -E \ + -e "s|/home/git/gitlab/tmp/(pids\|sockets)|${run_path}|" \ + -e "s|/home/git/gitlab/log|${LOGS_DIR}|" \ + -e "s|/home/git/gitlab|${DEST_DIR}|" \ + config/unicorn.rb.example || die "failed to filter unicorn.rb.example" + + sed -i \ + -e "s|/home/git/gitlab/tmp/sockets|${run_path}|" \ + lib/support/nginx/gitlab || die "failed to filter nginx/gitlab" + + # modify default database settings for PostgreSQL + sed -i -E \ + -e 's|(username:).*|\1 gitlab|' \ + -e 's|(password:).*|\1 gitlab|' \ + -e 's|(socket:).*|\1 /run/postgresql/.s.PGSQL.5432|' \ + config/database.yml.postgresql \ + || die "failed to filter database.yml.postgresql" + + # rename config files + mv config/gitlab.yml.example config/gitlab.yml + mv config/unicorn.rb.example config/unicorn.rb + + local dbconf=config/database.yml + if use postgres && ! use mysql; then + mv ${dbconf}.postgresql ${dbconf} + rm ${dbconf}.mysql + elif use mysql && ! use postgres; then + mv ${dbconf}.mysql ${dbconf} + rm ${dbconf}.postgresql + fi + + # remove useless files + rm -r lib/support/{deploy,init.d} + use unicorn || rm config/unicorn.rb +} + +all_ruby_install() { + local dest=${DEST_DIR} + local conf=${CONF_DIR} + local logs=${LOGS_DIR} + local temp=${TEMP_DIR} + + # prepare directories + diropts -m750 + dodir ${logs} ${temp} ${temp}/repo_satellites + + diropts -m755 + dodir ${conf} ${dest}/public/uploads + + dosym ${temp} ${dest}/tmp + dosym ${logs} ${dest}/log + + # install configs + insinto ${conf} + doins -r config/* + dosym ${conf} ${dest}/config + + echo 'export RAILS_ENV=production' > "${D}/${dest}/.profile" + + # remove needless dirs + rm -Rf config tmp log + + # install the rest files + # using cp 'cause doins is slow + cp -Rl * "${D}/${dest}"/ + + # install logrotate config + dodir /etc/logrotate.d + cat > "${D}/etc/logrotate.d/${MY_NAME}" <<-EOF + ${logs}/*.log { + missingok + delaycompress + compress + copytruncate + } + EOF + + ## Install gems via bundler ## + + cd "${D}/${dest}" + + local without="development test aws" + local flag; for flag in mysql postgres unicorn kerberos; do + without+="$(use $flag || echo ' '$flag)" + done + local bundle_args="--deployment ${without:+--without ${without}}" + + use "rugged_use_system_libraries" && export RUGGED_USE_SYSTEM_LIBRARIES="YES" + + einfo "Running bundle install ${bundle_args} ..." + ${RUBY} /usr/bin/bundle install ${bundle_args} || die "bundler failed" + + # clean gems cache + rm -Rf vendor/bundle/ruby/*/cache + rm -Rf vendor/bundle/ruby/*/bundler/gems/charlock_holmes-dde194609b35/.git + + # fix permissions + fowners -R ${MY_USER}:${MY_USER} ${dest} ${temp} ${logs} + + ## RC script ## + + if use systemd ; then + ewarn "Beware: systemd support has not been tested, use at your own risk!" + systemd_dounit "${FILESDIR}/gitlab-sidekiq.service" + systemd_dounit "${FILESDIR}/gitlab-unicorn.service" + systemd_dounit "${FILESDIR}/gitlab-git-http.service" + systemd_dounit "${FILESDIR}/gitlab-mailroom.service" + systemd_dotmpfilesd "${FILESDIR}/gitlab.conf" + else + local rcscript=gitlab-sidekiq-8.init + use unicorn && rcscript=gitlab-unicorn-8.init + + cp "${FILESDIR}/${rcscript}" "${T}" || die + sed -i \ + -e "s|@USER@|${MY_USER}|" \ + -e "s|@GITLAB_BASE@|${dest}|" \ + -e "s|@LOGS_DIR@|${logs}|" \ + -e "s|@QUEUES@|${SIDEKIQ_QUEUES}|" \ + "${T}/${rcscript}" \ + || die "failed to filter ${rcscript}" + + newinitd "${T}/${rcscript}" "${MY_NAME}" + fi +} + +pkg_postinst() { + elog + elog "1. Configure your GitLab's settings in ${CONF_DIR}/gitlab.yml." + elog + elog "2. Configure your database settings in ${CONF_DIR}/database.yml" + elog " for \"production\" environment." + elog + elog "3. Then you should create a database for your GitLab instance, if you" + elog "haven't done so already." + elog + if use postgres; then + elog "If you have local PostgreSQL running, just copy&run:" + elog " su postgres" + elog " psql -c \"CREATE ROLE gitlab PASSWORD 'gitlab' \\" + elog " NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;\"" + elog " createdb -E UTF-8 -O gitlab gitlabhq_production" + elog " Note: You should change your password to something more random..." + elog + fi + elog "4. Finally execute the following command to initlize environment:" + elog " emerge --config \"=${CATEGORY}/${PF}\"" + elog " Note: Do not forget to start Redis server first!" + elog + elog "If this is an update from previous version, it's HIGHLY recommended" + elog "to backup your database before running the config phase!" + elog + elog "If you're running GitLab behind an SSL proxy such as nginx or Apache and" + elog "you can't login after the upgrade, be sure to read the section about the" + elog "verification of the CSRF token in GitLab's trouble-shooting guide at" + elog "http://goo.gl/5XGRGv." +} + +pkg_config() { + local shell_conf='/etc/gitlab-shell.yml' + + einfo "Checking configuration files" + + if [ ! -r "${CONF_DIR}/database.yml" ]; then + eerror "Copy ${CONF_DIR}/database.yml.* to" + eerror "${CONF_DIR}/database.yml and edit this file in order to configure your" + eerror "database settings for \"production\" environment."; die + fi + + # check gitlab-shell configuration + if [ -r ${shell_conf} ]; then + local shell_repos_path="$(ryaml ${shell_conf} repos_path)" + local gitlab_repos_path="$(ryaml ${CONF_DIR}/gitlab.yml \ + production gitlab_shell repos_path)" + + if [ ! "${shell_repos_path}" -ef "${gitlab_repos_path}" ]; then + eerror "repos_path in ${CONF_DIR}/gitlab.yml and ${shell_conf}" + eerror "must points to the same location! Fix the repos_path location and" + eerror "run this again."; die + fi + else + ewarn "GitLab Shell checks skipped, could not find config file at" + ewarn "${shell_conf}. Make sure that you have gitlab-shell properly" + ewarn "installed and that repos_path is the same as in GitLab." + fi + + local email_from="$(ryaml ${CONF_DIR}/gitlab.yml production gitlab email_from)" + local git_home="$(egethome ${MY_USER})" + + # configure Git global settings + if [ ! -e "${git_home}/.gitconfig" ]; then + einfo "Setting git user" + su -l ${MY_USER} -c " + git config --global user.email '${email_from}'; + git config --global user.name 'GitLab'" \ + || die "failed to setup git name and email" + fi + + if [ ! -d "${DEST_DIR}/.git" ]; then + # create dummy git repo as workaround for + # https://github.com/bundler/bundler/issues/2039 + einfo "Initializing dummy git repository to avoid false errors from bundler" + su -l ${MY_USER} -c " + cd ${DEST_DIR} + git init + git add README.md + git commit -m 'Dummy repository'" >/dev/null + fi + + ## Initialize app ## + + local RAILS_ENV="production" + local RUBY=${RUBY:-/usr/bin/ruby} + local BUNDLE="${RUBY} /usr/bin/bundle" + + local dbname="$(ryaml ${CONF_DIR}/database.yml production database)" + + if [ -f "${DEST_DIR}/.secret" ]; then + local update=true + + einfo "Migrating database ..." + exec_rake db:migrate + + # https://github.com/gitlabhq/gitlabhq/issues/5311#issuecomment-31656496 + einfo "Migrating iids ..." + exec_rake migrate_iids + + einfo "Cleaning old precompiled assets ..." + exec_rake assets:clean + + einfo "Cleaning cache ..." + exec_rake cache:clear + else + local update=false + + einfo "Initializing database ..." + exec_rake gitlab:setup + fi + + einfo "Precompiling assests ..." + exec_rake assets:precompile + + if [ "${update}" = 'true' ]; then + ewarn + ewarn "This configuration script runs only common migration tasks." + ewarn "Please read guides on" + ewarn " https://github.com/gitlabhq/gitlabhq/blob/master/doc/update/" + ewarn "for any additional migration tasks specific to your previous GitLab" + ewarn "version." + fi +} + +ryaml() { + ruby -ryaml -e 'puts ARGV[1..-1].inject(YAML.load(File.read(ARGV[0]))) {|acc, key| acc[key] }' "$@" +} + +exec_rake() { + local command="${BUNDLE} exec rake $@ RAILS_ENV=${RAILS_ENV}" + + echo " ${command}" + su -l ${MY_USER} -c " + export LANG=en_US.UTF-8; export LC_ALL=en_US.UTF-8 + cd ${DEST_DIR} + ${command}" \ + || die "failed to run rake $@" +}