From f21993fbeaa4a4efe8fa56168a417924e920d82a Mon Sep 17 00:00:00 2001
From: Manuel Friedli <manuel@fritteli.ch>
Date: Tue, 23 Sep 2014 21:41:50 +0200
Subject: [PATCH 1/6] added initial version of the ebuild. it CAN NOT possibly
 work out yet :)

---
 www-apps/gitlab-ci/Manifest               |   2 +
 www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild | 319 ++++++++++++++++++++++
 2 files changed, 321 insertions(+)
 create mode 100644 www-apps/gitlab-ci/Manifest
 create mode 100644 www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild

diff --git a/www-apps/gitlab-ci/Manifest b/www-apps/gitlab-ci/Manifest
new file mode 100644
index 0000000..4a410d6
--- /dev/null
+++ b/www-apps/gitlab-ci/Manifest
@@ -0,0 +1,2 @@
+DIST gitlab-ci-5.0.1.tar.gz 610120 SHA256 16e0b543ce475cc3bbef8247d4ad0f81e37cb55b4b8f763a249944f22eb029b9 SHA512 a83968a2eca5710b951a5c809abc33148c9ee76500772159d9a2dfc5843e04968944301d322b591851410d0a7669146dc9b1f97de2cafba752492d961fdb54d2 WHIRLPOOL ef54a54df557fa9e397753c6781127d7900b45461c1c4a94351c5c3bd4c869c16ec29145004340356607c16d60ce318ac29b153f0488756aa675d16a7ac4f384
+EBUILD gitlab-ci-5.0.1.ebuild 8899 SHA256 919d2b0b742e798aa01c9a3510c39a1cc781b79732c44393b127565a41c4055e SHA512 73d1ff1d174af7f8d83280f03dbbe3ddafc589aedcf1901932ff3178b6ee2d5241e427ce21da876e97bdb96b126cec5517a339f090286f5aa00c7a8c7f410204 WHIRLPOOL d66f50a39cd4a983e5afcd171702179baaa2079d4f9d5e15ccaac2bfa0758a7d503a463c3df44ebd40686f08f5574180dd38ac8d7e94f1a021f64203a5aca9b4
diff --git a/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild b/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild
new file mode 100644
index 0000000..bea3027
--- /dev/null
+++ b/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild
@@ -0,0 +1,319 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+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="ruby19 ruby20 ruby21"
+PYTHON_DEPEND="2:2.7"
+
+inherit eutils python ruby-ng user
+
+DESCRIPTION="GitLab CI is a continuous integration server that is tightly integrated with GitLab"
+HOMEPAGE="https://gitlab.com/gitlab-org/gitlab-ci"
+SRC_URI="https://gitlab.com/gitlab-org/gitlab-ci/repository/archive.tar.gz?ref=v${PV} -> ${P}.tar.gz"
+
+RESTRICT="mirror"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="mysql +postgres +unicorn"
+
+## 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-base
+#   mysql				virtual/mysql
+#
+
+#	dev-libs/icu
+#	dev-libs/libxml2
+#	dev-libs/libxslt
+#	dev-util/cmake
+#	dev-util/ragel
+#	net-libs/nodejs
+
+
+GEMS_DEPEND="
+	postgres? ( dev-db/postgresql-base )
+	mysql? ( virtual/mysql )
+	virtual/pkgconfig"
+DEPEND="${GEMS_DEPEND}
+	dev-vcs/git"
+RDEPEND="${DEPEND}
+	dev-db/redis
+	virtual/mta"
+ruby_add_bdepend "
+	virtual/rubygems
+	>=dev-ruby/bundler-1.0"
+
+#
+RUBY_PATCHES=(
+)
+
+MY_NAME="gitlab-ci"
+MY_USER="gitlab_ci"
+
+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-ci/blob/v${PV}/script/background_jobs
+SIDEKIQ_QUEUES="runner,common,default"
+
+all_ruby_prepare() {
+
+	# fix paths
+	sed -i -E \
+		-e "s|redis://redis.example.com:6379|unix:/run/redis/redis.sock|" \
+		config/resque.yml.example || die "failed to filter resque.yml.example"
+	local run_path=/run/${MY_NAME}
+	sed -i -E \
+		-e "s|/home/gitlab_ci/gitlab-ci/tmp/(pids|sockets)|${run_path}|" \
+		-e "s|/home/gitlab_ci/gitlab-ci/log/|${LOGS_DIR}|" \
+		-e "s|/home/gitlab_ci/gitlab-ci|${DEST_DIR}|" \
+		config/unicorn.rb.example || die "failed to filter unicorn.rb.example"
+
+	
+	sed -i \
+		-e "s|/home/gitlab_ci/gitlab-ci/tmp/sockets|${run_path}|" \
+		-e "s|/home/gitlab_ci/gitlab-ci/public|${DEST_DIR}/public|" \
+		lib/support/nginx/gitlab_ci || die "failed to filter nginx/gitlab_ci"
+	
+	# modify default database settings for PostgreSQL
+	sed -i -E \
+		-e 's|(username:).*|\1 gitlab|' \
+		-e 's|(password:).*|\1 gitlab|' \
+		-e 's|(socket:).*|/run/postgresql/.s.PGSQL.5432|' \
+		config/database.yml.postgresql \
+		|| die "failed to filter database.yml.postgresql"
+	# modify default database settings for MySQL
+	sed -i -E \
+		-e "s|/tmp/mysql.sock|/run/mysqld/mysqld.sock|" \
+		config/database.yml.mysql || die "failed to filter database.yml.mysql"
+
+	# rename config files
+	mv config/application.yml.example config/application.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/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}
+
+	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; do
+		without+="$(use $flag || echo ' '$flag)"
+	done
+	local bundle_args="--deployment ${without:+--without ${without}}"
+
+	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
+
+	# fix permissions
+	fowners -R ${MY_USER}:${MY_USER} ${dest} ${temp} ${logs}
+
+	## RC script ##
+
+	local rcscript=gitlab-ci-sidekiq.init
+	use unicorn && rcscript=gitlab-ci-unicorn.init
+
+	cp "${FILESDIR}/${rcscript}" "${T}" || die
+	sed -i \
+		-e "s|@USER@|${MY_USER}|" \
+		-e "s|@SLOT@|${SLOT}|" \
+		-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}"
+}
+
+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
+
+
+	local email_from="$(ryaml ${CONF_DIR}/application.yml production gitlab_CI 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
+
+	else
+		local update=false
+
+		einfo "Initializing database ..."
+		exec_rake setup
+
+		einfo "Setting up cron schedules ..."
+		exec_rake whenever -w
+	fi
+	
+	if [ "${update}" = 'true' ]; then
+		ewarn
+		ewarn "This configuration script runs only common migration tasks."
+		ewarn "Please read guides on"
+		ewarn "    https://gitlab.com/gitlab-org/gitlab-ci/tree/v${PV}/doc/update"
+		ewarn "for any additional migration tasks specific to your previous GitLab CI"
+		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 $@"
+}

From 8e1cfd593dc3bcb4e434ea8a8f11b7e381e8b0db Mon Sep 17 00:00:00 2001
From: Manuel Friedli <manuel@fritteli.ch>
Date: Tue, 23 Sep 2014 21:56:30 +0200
Subject: [PATCH 2/6] fixed some bugs in the ebuild

---
 www-apps/gitlab-ci/Manifest               | 4 ++--
 www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild | 7 +++----
 2 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/www-apps/gitlab-ci/Manifest b/www-apps/gitlab-ci/Manifest
index 4a410d6..74e82fa 100644
--- a/www-apps/gitlab-ci/Manifest
+++ b/www-apps/gitlab-ci/Manifest
@@ -1,2 +1,2 @@
-DIST gitlab-ci-5.0.1.tar.gz 610120 SHA256 16e0b543ce475cc3bbef8247d4ad0f81e37cb55b4b8f763a249944f22eb029b9 SHA512 a83968a2eca5710b951a5c809abc33148c9ee76500772159d9a2dfc5843e04968944301d322b591851410d0a7669146dc9b1f97de2cafba752492d961fdb54d2 WHIRLPOOL ef54a54df557fa9e397753c6781127d7900b45461c1c4a94351c5c3bd4c869c16ec29145004340356607c16d60ce318ac29b153f0488756aa675d16a7ac4f384
-EBUILD gitlab-ci-5.0.1.ebuild 8899 SHA256 919d2b0b742e798aa01c9a3510c39a1cc781b79732c44393b127565a41c4055e SHA512 73d1ff1d174af7f8d83280f03dbbe3ddafc589aedcf1901932ff3178b6ee2d5241e427ce21da876e97bdb96b126cec5517a339f090286f5aa00c7a8c7f410204 WHIRLPOOL d66f50a39cd4a983e5afcd171702179baaa2079d4f9d5e15ccaac2bfa0758a7d503a463c3df44ebd40686f08f5574180dd38ac8d7e94f1a021f64203a5aca9b4
+DIST gitlab-ci-5.0.1.tar.gz 610139 SHA256 5ed7d6de964a05641e14ae6a7bd63e6f32fec345d8f2ea42e6882c67c2228bc1 SHA512 a10f4341001f12f9796594ba2bf1008cbead8ab3f5d98f9de2b56a3f2fc84322841b5bb3cbd596e46bba3ce0285e438ca7597c9f57b84d6231742f8aa64df736 WHIRLPOOL 7b62af01e1202542a3a3c5d947444ebbcee986d2c0c87ebf4191ef2c6e283d261cba675eb405343febd2cdabf028096dc62d7ab0eafa500d05d2033faeadf102
+EBUILD gitlab-ci-5.0.1.ebuild 8881 SHA256 17d3454e7d3ce9360e88c8044bc00e613e5c864319c1a0ed20331865405a42bd SHA512 5f0ecbf6af458d2d1a580b880ebf696d5d1e51759802c3e24766cadc923c4d99972646c254054ab112c14a0982fac939cf69e7cf7f0f03c248a7c51f666591b9 WHIRLPOOL c9f062fd8238b9fd384dd81f5ed3e7077ab27dace8d3bd84f01b52552b3c1411d9765c6de4059bde77d8646e81da1f65e14f16c8cf4a30e730375b64d2fb9812
diff --git a/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild b/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild
index bea3027..9fb6934 100644
--- a/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild
+++ b/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild
@@ -18,7 +18,7 @@ inherit eutils python ruby-ng user
 
 DESCRIPTION="GitLab CI is a continuous integration server that is tightly integrated with GitLab"
 HOMEPAGE="https://gitlab.com/gitlab-org/gitlab-ci"
-SRC_URI="https://gitlab.com/gitlab-org/gitlab-ci/repository/archive.tar.gz?ref=v${PV} -> ${P}.tar.gz"
+SRC_URI="https://github.com/gitlabhq/gitlab-ci/archive/v${PV}.tar.gz -> ${P}.tar.gz"
 
 RESTRICT="mirror"
 
@@ -83,11 +83,10 @@ all_ruby_prepare() {
 		config/resque.yml.example || die "failed to filter resque.yml.example"
 	local run_path=/run/${MY_NAME}
 	sed -i -E \
-		-e "s|/home/gitlab_ci/gitlab-ci/tmp/(pids|sockets)|${run_path}|" \
-		-e "s|/home/gitlab_ci/gitlab-ci/log/|${LOGS_DIR}|" \
+		-e "s|/home/gitlab_ci/gitlab-ci/tmp/(pids\|sockets)|${run_path}|" \
+		-e "s|/home/gitlab_ci/gitlab-ci/log|${LOGS_DIR}|" \
 		-e "s|/home/gitlab_ci/gitlab-ci|${DEST_DIR}|" \
 		config/unicorn.rb.example || die "failed to filter unicorn.rb.example"
-
 	
 	sed -i \
 		-e "s|/home/gitlab_ci/gitlab-ci/tmp/sockets|${run_path}|" \

From 352c65e98c90b55e6f2daf90d4cbd5046af6b7b9 Mon Sep 17 00:00:00 2001
From: Manuel Friedli <manuel@fritteli.ch>
Date: Tue, 23 Sep 2014 22:05:34 +0200
Subject: [PATCH 3/6] added some dependencies

---
 www-apps/gitlab-ci/Manifest               |  2 +-
 www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild | 18 ++++--------------
 2 files changed, 5 insertions(+), 15 deletions(-)

diff --git a/www-apps/gitlab-ci/Manifest b/www-apps/gitlab-ci/Manifest
index 74e82fa..fa5238f 100644
--- a/www-apps/gitlab-ci/Manifest
+++ b/www-apps/gitlab-ci/Manifest
@@ -1,2 +1,2 @@
 DIST gitlab-ci-5.0.1.tar.gz 610139 SHA256 5ed7d6de964a05641e14ae6a7bd63e6f32fec345d8f2ea42e6882c67c2228bc1 SHA512 a10f4341001f12f9796594ba2bf1008cbead8ab3f5d98f9de2b56a3f2fc84322841b5bb3cbd596e46bba3ce0285e438ca7597c9f57b84d6231742f8aa64df736 WHIRLPOOL 7b62af01e1202542a3a3c5d947444ebbcee986d2c0c87ebf4191ef2c6e283d261cba675eb405343febd2cdabf028096dc62d7ab0eafa500d05d2033faeadf102
-EBUILD gitlab-ci-5.0.1.ebuild 8881 SHA256 17d3454e7d3ce9360e88c8044bc00e613e5c864319c1a0ed20331865405a42bd SHA512 5f0ecbf6af458d2d1a580b880ebf696d5d1e51759802c3e24766cadc923c4d99972646c254054ab112c14a0982fac939cf69e7cf7f0f03c248a7c51f666591b9 WHIRLPOOL c9f062fd8238b9fd384dd81f5ed3e7077ab27dace8d3bd84f01b52552b3c1411d9765c6de4059bde77d8646e81da1f65e14f16c8cf4a30e730375b64d2fb9812
+EBUILD gitlab-ci-5.0.1.ebuild 8645 SHA256 19a795fc65b5d31a7848c821d2aef3a03ce432e7785df6e02c0b7cf58b13087e SHA512 2b94867f565fb322c2534234ac1738792a3f93b2b2cce463d86a0afe2ad8e8286c4f55103bd6e902fc051ec89f48ce2f6f6545275ed578d71fef72a40e108c77 WHIRLPOOL 95835598a0bee7db68b2c7213042016b543dac0ca4b8644ac28654c1d9577e0c2f7f7a65aae7fada7fbede68b8e2e2208033f95297a94e4ce7799a65baa822ca
diff --git a/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild b/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild
index 9fb6934..6fda1e3 100644
--- a/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild
+++ b/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild
@@ -30,26 +30,16 @@ IUSE="mysql +postgres +unicorn"
 ## 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-base
 #   mysql				virtual/mysql
 #
 
-#	dev-libs/icu
-#	dev-libs/libxml2
-#	dev-libs/libxslt
-#	dev-util/cmake
-#	dev-util/ragel
-#	net-libs/nodejs
-
-
 GEMS_DEPEND="
+	dev-libs/icu
+	dev-libs/libxml2
+	dev-libs/libxslt
 	postgres? ( dev-db/postgresql-base )
-	mysql? ( virtual/mysql )
-	virtual/pkgconfig"
+	mysql? ( virtual/mysql )"
 DEPEND="${GEMS_DEPEND}
 	dev-vcs/git"
 RDEPEND="${DEPEND}

From 48ea5c20733ecc2c078d2b4764748325574c9948 Mon Sep 17 00:00:00 2001
From: Manuel Friedli <manuel@fritteli.ch>
Date: Tue, 23 Sep 2014 22:11:27 +0200
Subject: [PATCH 4/6] create new group and user

---
 www-apps/gitlab-ci/Manifest               | 2 +-
 www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild | 5 +++++
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/www-apps/gitlab-ci/Manifest b/www-apps/gitlab-ci/Manifest
index fa5238f..e9cf784 100644
--- a/www-apps/gitlab-ci/Manifest
+++ b/www-apps/gitlab-ci/Manifest
@@ -1,2 +1,2 @@
 DIST gitlab-ci-5.0.1.tar.gz 610139 SHA256 5ed7d6de964a05641e14ae6a7bd63e6f32fec345d8f2ea42e6882c67c2228bc1 SHA512 a10f4341001f12f9796594ba2bf1008cbead8ab3f5d98f9de2b56a3f2fc84322841b5bb3cbd596e46bba3ce0285e438ca7597c9f57b84d6231742f8aa64df736 WHIRLPOOL 7b62af01e1202542a3a3c5d947444ebbcee986d2c0c87ebf4191ef2c6e283d261cba675eb405343febd2cdabf028096dc62d7ab0eafa500d05d2033faeadf102
-EBUILD gitlab-ci-5.0.1.ebuild 8645 SHA256 19a795fc65b5d31a7848c821d2aef3a03ce432e7785df6e02c0b7cf58b13087e SHA512 2b94867f565fb322c2534234ac1738792a3f93b2b2cce463d86a0afe2ad8e8286c4f55103bd6e902fc051ec89f48ce2f6f6545275ed578d71fef72a40e108c77 WHIRLPOOL 95835598a0bee7db68b2c7213042016b543dac0ca4b8644ac28654c1d9577e0c2f7f7a65aae7fada7fbede68b8e2e2208033f95297a94e4ce7799a65baa822ca
+EBUILD gitlab-ci-5.0.1.ebuild 8745 SHA256 af5493be5fb752db94bb7ef8444f974ae138639111b37b9d9aa9dc352871f833 SHA512 d41ca7c04a11ad32819924f0ce8290011056f164ee899de2c1da29f7999e8bb2ceab5924df974fadf6cc57762930b21da6a02391c4d35b5513218d1fbfce47d6 WHIRLPOOL 8eab84fdf811edd79ad97dd3a62f68667fa1b18349e5af964902ed16b2e15165bd03af54d22a1ea6490f2f268b1aaceaeb50dba5ddc6b6525b97074ae8720c10
diff --git a/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild b/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild
index 6fda1e3..98e4afa 100644
--- a/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild
+++ b/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild
@@ -65,6 +65,11 @@ TEMP_DIR="/var/tmp/${MY_NAME}"
 # https://gitlab.com/gitlab-org/gitlab-ci/blob/v${PV}/script/background_jobs
 SIDEKIQ_QUEUES="runner,common,default"
 
+pkg_setup() {
+	enewgroup gitlab_ci
+	enewuser gitlab_ci -1 /dev/null ${DEST_DIR} "gitlab_ci,cron"
+}
+
 all_ruby_prepare() {
 
 	# fix paths

From 002fc0acfdf4315cb9c344b4a43374f80c438c81 Mon Sep 17 00:00:00 2001
From: Manuel Friedli <manuel@fritteli.ch>
Date: Tue, 23 Sep 2014 23:37:15 +0200
Subject: [PATCH 5/6] updated ebuild and added init file

---
 www-apps/gitlab-ci/Manifest                   |  3 +-
 .../files/rcscript-gitlab-ci-unicorn.init     | 67 +++++++++++++++++++
 www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild     | 42 +++++-------
 3 files changed, 86 insertions(+), 26 deletions(-)
 create mode 100755 www-apps/gitlab-ci/files/rcscript-gitlab-ci-unicorn.init

diff --git a/www-apps/gitlab-ci/Manifest b/www-apps/gitlab-ci/Manifest
index e9cf784..dd076b0 100644
--- a/www-apps/gitlab-ci/Manifest
+++ b/www-apps/gitlab-ci/Manifest
@@ -1,2 +1,3 @@
+AUX rcscript-gitlab-ci-unicorn.init 1684 SHA256 13887832ca41bf45037918824c7ead731ac812eaeba7fcf2149b981f5649ec9a SHA512 8842684dae88331353fdd09554c7404a470238a0e66597a01b4b9dd875db7b5580b082fb4e230fd85e8fd66c276e789473e88c61584845c2b236c00ba79ea9ac WHIRLPOOL 745d07b9eb116dc5742981b3e0b0b36371bdd2e1629bb988643f806b0ace8927d3f16ead0536285272b4508c4961e8dd1583037871782958283aaaf6d1992fb0
 DIST gitlab-ci-5.0.1.tar.gz 610139 SHA256 5ed7d6de964a05641e14ae6a7bd63e6f32fec345d8f2ea42e6882c67c2228bc1 SHA512 a10f4341001f12f9796594ba2bf1008cbead8ab3f5d98f9de2b56a3f2fc84322841b5bb3cbd596e46bba3ce0285e438ca7597c9f57b84d6231742f8aa64df736 WHIRLPOOL 7b62af01e1202542a3a3c5d947444ebbcee986d2c0c87ebf4191ef2c6e283d261cba675eb405343febd2cdabf028096dc62d7ab0eafa500d05d2033faeadf102
-EBUILD gitlab-ci-5.0.1.ebuild 8745 SHA256 af5493be5fb752db94bb7ef8444f974ae138639111b37b9d9aa9dc352871f833 SHA512 d41ca7c04a11ad32819924f0ce8290011056f164ee899de2c1da29f7999e8bb2ceab5924df974fadf6cc57762930b21da6a02391c4d35b5513218d1fbfce47d6 WHIRLPOOL 8eab84fdf811edd79ad97dd3a62f68667fa1b18349e5af964902ed16b2e15165bd03af54d22a1ea6490f2f268b1aaceaeb50dba5ddc6b6525b97074ae8720c10
+EBUILD gitlab-ci-5.0.1.ebuild 8381 SHA256 2813bfcc373a7aaf52e78612bd922ddc39b52094de253a15f07af5384667713d SHA512 1ed0a1798ccb76d4f3d40cae7b133947652b50602de542de07b92a091e4cc6535590d6165b83efc5add4392f89ad2dd20268cbc7f4f9c40068469d39f506cc61 WHIRLPOOL 7ae43ff7213d76cc95903980a43300cbe8f6d1049013dfe7419951a4564af5c718d91627091dafa11433ad8fc5240053ef9866df5f85af2391f31d190adb44db
diff --git a/www-apps/gitlab-ci/files/rcscript-gitlab-ci-unicorn.init b/www-apps/gitlab-ci/files/rcscript-gitlab-ci-unicorn.init
new file mode 100755
index 0000000..bd89114
--- /dev/null
+++ b/www-apps/gitlab-ci/files/rcscript-gitlab-ci-unicorn.init
@@ -0,0 +1,67 @@
+#!/sbin/runscript
+
+name="GitLab CI"
+description="GitLab CI on Unicorns"
+
+: ${gitlab_ci_user:=@USER@}
+: ${gitlab_ci_base:="@GITLAB_CI_BASE@"}
+: ${rails_env:=production}
+
+: ${server_pidfile:="@RUN_DIR@/unicorn.pid"}
+
+: ${sidekiq_pidfile:="@RUN_DIR@/sidekiq.pid"}
+: ${sidekiq_logfile:="@LOGS_DIR@/sidekiq.log"}
+: ${sidekiq_queues:="@QUEUES@"}
+
+server_command="/usr/bin/bundle"
+server_command_args="exec unicorn_rails -c ${gitlab_ci_base}/config/unicorn.rb -E ${rails_env} -D"
+
+sidekiq_command="/usr/bin/bundle"
+sidekiq_command_args="exec sidekiq -q ${sidekiq_queues} -P ${sidekiq_pidfile} -L ${sidekiq_logfile}"
+
+depend() {
+	provide gitlab-ci
+	need redis
+	use net
+}
+
+start() {
+	ebegin "Starting ${name} - Unicorn servers"
+
+	checkpath -d -o ${gitlab_ci_user} -m755 "$(dirname "${server_pidfile}")"
+	checkpath -d -o ${gitlab_ci_user} -m755 "$(dirname "${sidekiq_pidfile}")"
+
+	start-stop-daemon --start \
+		--chdir "${gitlab_ci_base}" \
+		--user=${gitlab_ci_user} \
+		--pidfile="${server_pidfile}" \
+		--env RAILS_ENV=${rails_env} \
+		--exec ${server_command} -- ${server_command_args}
+	eend $?
+
+	ebegin "Starting ${name} - Sidekiq"
+
+	start-stop-daemon --start \
+		--background --quiet \
+		--chdir "${gitlab_ci_base}" \
+		--user=${gitlab_ci_user} \
+		--pidfile="${sidekiq_pidfile}" \
+		--env RAILS_ENV=${rails_env} \
+		--exec ${sidekiq_command} -- ${sidekiq_command_args}
+	eend $?
+}
+
+stop() {
+	ebegin "Stopping ${name} - Sidekiq"
+	start-stop-daemon --stop \
+		--pidfile=${sidekiq_pidfile} \
+		--exec ${sidekiq_command}
+	eend $?
+
+	ebegin "Stopping ${name} - Unicorn servers"
+	start-stop-daemon --stop \
+		--signal QUIT \
+		--pidfile=${server_pidfile} \
+		--exec ${server_command}
+	eend $?
+}
diff --git a/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild b/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild
index 98e4afa..90916d1 100644
--- a/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild
+++ b/www-apps/gitlab-ci/gitlab-ci-5.0.1.ebuild
@@ -25,7 +25,7 @@ RESTRICT="mirror"
 LICENSE="MIT"
 SLOT="0"
 KEYWORDS="~amd64 ~x86"
-IUSE="mysql +postgres +unicorn"
+IUSE="mysql +postgres"
 
 ## Gems dependencies:
 #   charlock_holmes		dev-libs/icu
@@ -60,6 +60,7 @@ DEST_DIR="/opt/${MY_NAME}"
 CONF_DIR="/etc/${MY_NAME}"
 LOGS_DIR="/var/log/${MY_NAME}"
 TEMP_DIR="/var/tmp/${MY_NAME}"
+RUN_DIR="/run/${MY_NAME}"
 
 # When updating ebuild to newer version, check list of the queues in
 # https://gitlab.com/gitlab-org/gitlab-ci/blob/v${PV}/script/background_jobs
@@ -76,15 +77,14 @@ all_ruby_prepare() {
 	sed -i -E \
 		-e "s|redis://redis.example.com:6379|unix:/run/redis/redis.sock|" \
 		config/resque.yml.example || die "failed to filter resque.yml.example"
-	local run_path=/run/${MY_NAME}
 	sed -i -E \
-		-e "s|/home/gitlab_ci/gitlab-ci/tmp/(pids\|sockets)|${run_path}|" \
+		-e "s|/home/gitlab_ci/gitlab-ci/tmp/(pids\|sockets)|${RUN_DIR}|" \
 		-e "s|/home/gitlab_ci/gitlab-ci/log|${LOGS_DIR}|" \
 		-e "s|/home/gitlab_ci/gitlab-ci|${DEST_DIR}|" \
 		config/unicorn.rb.example || die "failed to filter unicorn.rb.example"
 	
 	sed -i \
-		-e "s|/home/gitlab_ci/gitlab-ci/tmp/sockets|${run_path}|" \
+		-e "s|/home/gitlab_ci/gitlab-ci/tmp/sockets|${RUN_DIR}|" \
 		-e "s|/home/gitlab_ci/gitlab-ci/public|${DEST_DIR}/public|" \
 		lib/support/nginx/gitlab_ci || die "failed to filter nginx/gitlab_ci"
 	
@@ -115,7 +115,6 @@ all_ruby_prepare() {
 	
 	# remove useless files
 	rm -r lib/support/init.d
-	use unicorn || rm config/unicorn.rb
 }
 
 all_ruby_install() {
@@ -123,6 +122,7 @@ all_ruby_install() {
 	local conf=${CONF_DIR}
 	local logs=${LOGS_DIR}
 	local temp=${TEMP_DIR}
+	local runs=${RUN_DIR}
 
 	# prepare directories
 	diropts -m750
@@ -164,7 +164,7 @@ all_ruby_install() {
 	cd "${D}/${dest}"
 
 	local without="development test aws"
-	local flag; for flag in mysql postgres unicorn; do
+	local flag; for flag in mysql postgres; do
 		without+="$(use $flag || echo ' '$flag)"
 	done
 	local bundle_args="--deployment ${without:+--without ${without}}"
@@ -180,15 +180,14 @@ all_ruby_install() {
 
 	## RC script ##
 
-	local rcscript=gitlab-ci-sidekiq.init
-	use unicorn && rcscript=gitlab-ci-unicorn.init
+	local rcscript=gitlab-ci-unicorn.init
 
 	cp "${FILESDIR}/${rcscript}" "${T}" || die
 	sed -i \
 		-e "s|@USER@|${MY_USER}|" \
-		-e "s|@SLOT@|${SLOT}|" \
-		-e "s|@GITLAB_BASE@|${dest}|" \
+		-e "s|@GITLAB_CI_BASE@|${dest}|" \
 		-e "s|@LOGS_DIR@|${logs}|" \
+		-e "s|@RUN_DIR@|${runs}|" \
 		-e "s|@QUEUES@|${SIDEKIQ_QUEUES}|" \
 		"${T}/${rcscript}" \
 		|| die "failed to filter ${rcscript}"
@@ -198,20 +197,20 @@ all_ruby_install() {
 
 pkg_postinst() {
 	elog
-	elog "1. Configure your GitLab's settings in ${CONF_DIR}/gitlab.yml."
+	elog "1. Configure your GitLab CI's settings in ${CONF_DIR}/application.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 "3. Then you should create a database for your GitLab CI 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 "      psql -c \"CREATE ROLE gitlab_ci PASSWORD 'gitlab_ci' \\"
         elog "          NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;\""
-        elog "      createdb -E UTF-8 -O gitlab gitlabhq_production"
+        elog "      createdb -E UTF-8 -O gitlab_ci gitlab_ci_production"
 		elog "  Note: You should change your password to something more random..."
 		elog
 	fi
@@ -221,16 +220,9 @@ pkg_postinst() {
 	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
@@ -240,15 +232,15 @@ pkg_config() {
 	fi
 
 
-	local email_from="$(ryaml ${CONF_DIR}/application.yml production gitlab_CI email_from)"
-	local git_home="$(egethome ${MY_USER})"
+	local email_from="$(ryaml ${CONF_DIR}/application.yml production gitlab_ci email_from)"
+	local gitlab_ci_home="$(egethome ${MY_USER})"
 	
 	# configure Git global settings
-#	if [ ! -e "${git_home}/.gitconfig" ]; then
+#	if [ ! -e "${gitlab_ci_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'" \
+#			git config --global user.name 'GitLab CI'" \
 #			|| die "failed to setup git name and email"
 #	fi
 

From b238fc18153fd78c75ae42e8889a890c8090ecdf Mon Sep 17 00:00:00 2001
From: Manuel Friedli <manuel@fritteli.ch>
Date: Tue, 23 Sep 2014 23:48:53 +0200
Subject: [PATCH 6/6] renamed init file

---
 www-apps/gitlab-ci/Manifest                                     | 2 +-
 .../{rcscript-gitlab-ci-unicorn.init => gitlab-ci-unicorn.init} | 0
 2 files changed, 1 insertion(+), 1 deletion(-)
 rename www-apps/gitlab-ci/files/{rcscript-gitlab-ci-unicorn.init => gitlab-ci-unicorn.init} (100%)

diff --git a/www-apps/gitlab-ci/Manifest b/www-apps/gitlab-ci/Manifest
index dd076b0..19be0eb 100644
--- a/www-apps/gitlab-ci/Manifest
+++ b/www-apps/gitlab-ci/Manifest
@@ -1,3 +1,3 @@
-AUX rcscript-gitlab-ci-unicorn.init 1684 SHA256 13887832ca41bf45037918824c7ead731ac812eaeba7fcf2149b981f5649ec9a SHA512 8842684dae88331353fdd09554c7404a470238a0e66597a01b4b9dd875db7b5580b082fb4e230fd85e8fd66c276e789473e88c61584845c2b236c00ba79ea9ac WHIRLPOOL 745d07b9eb116dc5742981b3e0b0b36371bdd2e1629bb988643f806b0ace8927d3f16ead0536285272b4508c4961e8dd1583037871782958283aaaf6d1992fb0
+AUX gitlab-ci-unicorn.init 1684 SHA256 13887832ca41bf45037918824c7ead731ac812eaeba7fcf2149b981f5649ec9a SHA512 8842684dae88331353fdd09554c7404a470238a0e66597a01b4b9dd875db7b5580b082fb4e230fd85e8fd66c276e789473e88c61584845c2b236c00ba79ea9ac WHIRLPOOL 745d07b9eb116dc5742981b3e0b0b36371bdd2e1629bb988643f806b0ace8927d3f16ead0536285272b4508c4961e8dd1583037871782958283aaaf6d1992fb0
 DIST gitlab-ci-5.0.1.tar.gz 610139 SHA256 5ed7d6de964a05641e14ae6a7bd63e6f32fec345d8f2ea42e6882c67c2228bc1 SHA512 a10f4341001f12f9796594ba2bf1008cbead8ab3f5d98f9de2b56a3f2fc84322841b5bb3cbd596e46bba3ce0285e438ca7597c9f57b84d6231742f8aa64df736 WHIRLPOOL 7b62af01e1202542a3a3c5d947444ebbcee986d2c0c87ebf4191ef2c6e283d261cba675eb405343febd2cdabf028096dc62d7ab0eafa500d05d2033faeadf102
 EBUILD gitlab-ci-5.0.1.ebuild 8381 SHA256 2813bfcc373a7aaf52e78612bd922ddc39b52094de253a15f07af5384667713d SHA512 1ed0a1798ccb76d4f3d40cae7b133947652b50602de542de07b92a091e4cc6535590d6165b83efc5add4392f89ad2dd20268cbc7f4f9c40068469d39f506cc61 WHIRLPOOL 7ae43ff7213d76cc95903980a43300cbe8f6d1049013dfe7419951a4564af5c718d91627091dafa11433ad8fc5240053ef9866df5f85af2391f31d190adb44db
diff --git a/www-apps/gitlab-ci/files/rcscript-gitlab-ci-unicorn.init b/www-apps/gitlab-ci/files/gitlab-ci-unicorn.init
similarity index 100%
rename from www-apps/gitlab-ci/files/rcscript-gitlab-ci-unicorn.init
rename to www-apps/gitlab-ci/files/gitlab-ci-unicorn.init