diff --git a/www-apps/gitlab-ce/ChangeLog b/www-apps/gitlab-ce/ChangeLog
index 7b75535..202d72d 100644
--- a/www-apps/gitlab-ce/ChangeLog
+++ b/www-apps/gitlab-ce/ChangeLog
@@ -1,3 +1,9 @@
+*gitlab-ce-9.0.0 (28 Mar 2017)
+
+  28 Mar 2017; Manuel Friedli <manuel@fritteli.ch> +gitlab-ce-9.0.0.ebuild:
+  www-apps/gitlab-ce:   Added ebuild for Gitlab CE 9.0.0, dropping the ~arm
+  keyword due to the dependency to yarn, which is not available on unstable arm.
+
   19 Mar 2017; Manuel Friedli <manuel@fritteli.ch> gitlab-ce-9.0.0_rc4.ebuild,
   gitlab-ce-9999.ebuild:
   www-apps/gitlab-ce:  Updated ebuild for gitlab-ce-9999 and also cleaned
diff --git a/www-apps/gitlab-ce/Manifest b/www-apps/gitlab-ce/Manifest
index f28e2a1..dde7db5 100644
--- a/www-apps/gitlab-ce/Manifest
+++ b/www-apps/gitlab-ce/Manifest
@@ -23,6 +23,7 @@ DIST gitlab-ce-8.16.6.tar.gz 20901900 SHA256 5b88dd855afc44da2b8f059056321fc0dd4
 DIST gitlab-ce-8.17.0.tar.gz 22991847 SHA256 3883c2e505e511f83072f950b9d211783148b97e29f34144e57c8b180d7f4518 SHA512 e0ee1b1ab21a6ad262cccbb2abf544ccb18dafcaf61e83aa02bac0182bdd35a47a725741382876f3bb79f6f42764c59b7a992c16a916a1673a716417b34d8a87 WHIRLPOOL fe3c36e41d0fe3c3420a3e52dc61fc30f424d2832cd82587a6e50b6c6450ee9e99bb2897f87cc949b4663055a35e159cf7b6f471b6aa9046c6bb8b1fae526ab7
 DIST gitlab-ce-8.17.2.tar.gz 22995277 SHA256 6819b8e289b7c23ee1880d935f443bb63896e45f62e2d203dfd87f9b8f90d3ae SHA512 b66b3ee0233641aee27d6cd1748069df8b7a705414f7e5b41875d861f425382f4a7f31639219660db1811fdd0e0655526f7760fb49b4847efb486b37ced11205 WHIRLPOOL ab8c986a08c5cf86b5d4a3a56059827b6c1e561c7c76e72ba3433c589bd3514177019db587eee68aadc1ac0ed8b748e813ccdc2fea3fae9b773979e7829562d0
 DIST gitlab-ce-8.17.3.tar.gz 22821238 SHA256 85299a2e10e57ae988483d1a10503e17703d767f6b757f8b07093f0011c58fe5 SHA512 3d73d2b7d48237777871c0c062e8568e083389fae9ba75a0b648bb96ae638e6f4d1f9f0bddc6ab15c5ba21b5d92da792b0fdb83b94cb89b95824a0c937a32de8 WHIRLPOOL 8532172fd004d9b7831299ebcaa165eabbc732af21ace334f903a894ffd673b078be423f13de1734b1170f5e5c4b104847ae27a11d12802048dab1ba77b755b2
+DIST gitlab-ce-9.0.0.tar.gz 26260333 SHA256 73012a8d31b2d92a49f0957c78525069e11d5d7bf19ca67bcbabd44b37c8c36a SHA512 b8a48bf538691d0bb1b636f4be6b71010583b4784093ec5f5b3196bebeefd9e7fcfc05cfd48523eb2139ff9e0bd458e20e8174d8c8892cb510d55c2fb154ee32 WHIRLPOOL 5d10e6fed7a9de5db7513afaf29940cadf41a37397249a78b2f3dc0aadde25f73e9f4eb3d18f913c8ad13cbdfecec811cf2246c2ef377017dfe3f021b09a2125
 DIST gitlab-ce-9.0.0_rc4.tar.gz 26270878 SHA256 f47ddcf6f4f0336228dd1ef03085c9ea6116157887e8216038d23b69cf7a4d89 SHA512 f4694ebf4ffe38e6c5495f3658eb8003d28b3ac5d67f4533ddc1932afca412a40ea786cd8d99e2891fdf9bacd7b198b29493b97d6d02455d4f4139d4e60a0d63 WHIRLPOOL 81f47820043445e9ff69ae0ad3bcd1e094ab1e3527eec279096ae16a767cec5451b2d94af4dd87cd2939eb2e64368a1a0e543ce40e0e9fd5a716eeef04741c54
 EBUILD gitlab-ce-8.15.4.ebuild 11982 SHA256 db794f18bc0d023a8b6adf49b82c2e37fd38b7206b064a7700289c0cfa16961c SHA512 ca30780d28ffc0242ac5f6ccad178cc44464a81f2d44cb13e53ddf06700d0f39b9fee9b77e356735435079b34090049d50d9019af71e92d6d8faaf3767a39dc5 WHIRLPOOL 42ee8b8e5a2c6fba69ecdbf6e306a87f369fa193f721c73481edc744953bfd210cb4495bc603ba01566efb2b0869ec71284a1f1b1c34d1a124bd08546829ca37
 EBUILD gitlab-ce-8.15.7.ebuild 11982 SHA256 fab225a8a8a9373898b5c604ce41ed65c4648c46131798315df833326b006fb7 SHA512 ea17dc9927336aed09ba21e0e1c9c4df2998f941a05ff30e9ef9951b5318bcdfb1d332fa8d285a27f26356a9fa9a5f72da45882ab8edbfa6046ec96764dae47f WHIRLPOOL d51629d3c67f8be2636a2e5cb4bb4d4a7b0402394f47aaa01fc182c29f1d3ee916a2d5bb8086bbe871f41294e348ec024d81a775ba9c30028d8b97d93d637620
@@ -32,7 +33,8 @@ EBUILD gitlab-ce-8.16.6.ebuild 11982 SHA256 2cc7b8f06153f28ebcc34a5ff8e24be79168
 EBUILD gitlab-ce-8.17.0.ebuild 12831 SHA256 9556fe5712044ebe473b7ff8b847a4daa5ca1818a0ac714f22afc5725199da72 SHA512 4aaa00f4eac87a4bbe598cde792997e25b137eea9fdaf7e7c8394ec5e2abc54302ed5432efe1c7055dc195ca2599f9027463480c943f108bb399daa2eee833f5 WHIRLPOOL aec29db1dc7236f60d2723ec97444fa437a4f8b3092cbf53305f3cddbb6851a40b1a77a306daf4c9780ffe9a8eed760c580371bf95da66b18d884a32c3e48cd5
 EBUILD gitlab-ce-8.17.2.ebuild 12831 SHA256 b57a4f683a5eafaa5d0149b0256833e329a757ad470e24bba163c57ba841eeeb SHA512 ed84da9ab62d0893b36a2ade744248b663634c5b05b8e8b608d064068c31a3d19a0e4917f932a0a2caee48a8f509359e50cc982c43bd5d1d958343ea5c5637d9 WHIRLPOOL dfb96d29b45adf5d03313fd9dd6cbc39c70a1736272867737f0bf8d429510add4e3fcd77b329690b9393cc506c9387f4342bed001c2bda50901ba9480fe241d5
 EBUILD gitlab-ce-8.17.3.ebuild 12928 SHA256 8e79b5c6724ef50b00f1c6eb607af6c4dc44a8ea5a7b2735c016726247043c3e SHA512 7d32ef8db701c1d4570b4071a55e61611f3bbff3f308adee84594c43f4089befc1a8ade8d66f7f36a4f9f6fd0f1f3c8fe6172eda663a5e2bd277646d4e1fdfa7 WHIRLPOOL 36a8c32bddeb51e89da1e314375bec1765e238d4fc1f658a492601b2a46d838993dde921570956e6c43086d9d3e09727b83f99e99168cfe95ef2e4fba6b69e6b
+EBUILD gitlab-ce-9.0.0.ebuild 12928 SHA256 55c3b39745547beac38b04d52b1c41caf2965179fa6d23cb0856f886fbe20431 SHA512 1557d9be66a033e1a9e94eb657342035f47f044cc4defd7eff35701554e47372794de5d7e1d1a94aa7ba7355990845ef8ac779aa449f06276ef52cafc9294d55 WHIRLPOOL e665021ba141205db52a8cf4be5a7f38c897967393a6f122fcbe93789008a991bfd2e6ced57873315434183898f21a5f13dc44a662e5cea309fd2f710895235b
 EBUILD gitlab-ce-9.0.0_rc4.ebuild 12910 SHA256 8851160b4454845fb33ce0b9a9dd3e070bed07d3a0e5c5f753c77b0ef301ded0 SHA512 9d109a3ea8fa7a7bb33440b4b21bf988745c4eefb62b834ad88825f3ffa28881eceaf402ec09241b74d91e778258c1a18daae6c86254625af4f54bf6189b32f2 WHIRLPOOL 67aa480b4cf1209a3d7af3bffb1f7f774bf2c6d18bf40960478e13459813ebb9472adc5aec3b84252157b0c3e74f9e7f74cb0d57395983c02ba4c976ffae106f
 EBUILD gitlab-ce-9999.ebuild 12869 SHA256 4a1e486e7386aa942bbd22c29457850584dab007b64715fc6f316ce5c98fcaf8 SHA512 ed66b809ca6e04956a9d4f5ef027aa9e174bad5cd80131a30fc34a1011f0221483b6fb52e893394b429d70919fc65496711a9c700c630c2ff31665827912df82 WHIRLPOOL b1b2582dcb1f600f199216c1bb532eac524ff3cce594e052039be29547164557997c65573f943c00240ab0986b0f1c1315602c3a65a0986e9f64a2df1827288e
-MISC ChangeLog 15202 SHA256 7c046e4a1eb5758af274515808d274d4bc661347a0816c4eba2d0aa2f37ca6c3 SHA512 f0010ab40b1aa883dda0276e9ed056e8db3a57a51ed5dc9b9072668fead23750f80ed8e9e1518550f3d1d0b1c25908bd73a2fd5440ed15217bc916ad72ba5b4c WHIRLPOOL 7bd06cafa247df448c64bc6f3b02f2c63cb825aa6a2347bef18112f91c007a13457678bf829ac90f5a031af8a329a935459554a87ea9b0fb92631f6c2606dda6
+MISC ChangeLog 15468 SHA256 9b1d58203f8bed64a16e907729532cfa77161c49e3bb0738fe6f658e1366de86 SHA512 9f5197f4738b168864932ea485e2cb7231eb7666c66a7cd9062bcb2e7e13d929c2c9fefbcca4c87554da537d2001419519836517ebf7ab895e799e8b8acf40e4 WHIRLPOOL e2cb644de2d3928ac354fbbb0e4b72a01133c491fcc4b8f85054c359f5ce4a26d4e67db4d91ddcd4212acefddb8d9d1a8ec423f4d009f0ea07013a7ced846b3e
 MISC metadata.xml 665 SHA256 2a0cd67ad42f0cc6d8b88391cf6e3153a9883dab31aae8227c57c95f3f68890d SHA512 64b8fbae373d0a057f705f64c1d097dbfab893bd585e1db65ccdb06cda9569211c9b63fa168ac8de9f6d512a17759ecd20b54d818d2790a6f4c99d0ca73fddc3 WHIRLPOOL a81b21bb46aad9757a502628033eba546c686b83bbf1d651ecabba273c454cfb64574affc180db8358ced87eb638e8ad13d7c79c4cfb9a31e72c577d21ab433e
diff --git a/www-apps/gitlab-ce/gitlab-ce-9.0.0.ebuild b/www-apps/gitlab-ce/gitlab-ce-9.0.0.ebuild
new file mode 100644
index 0000000..54a483a
--- /dev/null
+++ b/www-apps/gitlab-ce/gitlab-ce-9.0.0.ebuild
@@ -0,0 +1,420 @@
+# Copyright 1999-2017 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 ruby23"
+
+inherit eutils ruby-ng user systemd
+
+MY_PV="v${PV/_/-}"
+MY_GIT_COMMIT="cf020e66dff606f6ea2d2dbaeb7bef43d446c536"
+
+GITLAB_PAGES_VERSION="0.4.0"
+GITLAB_SHELL_VERSION="5.0.0"
+GITLAB_WORKHORSE_VERSION="1.4.1"
+
+DESCRIPTION="GitLab is a free project and repository management application"
+HOMEPAGE="https://about.gitlab.com/"
+SRC_URI="https://gitlab.com/gitlab-org/${PN}/repository/archive.tar.gz?ref=${MY_PV} -> ${P}.tar.gz"
+RUBY_S="${PN}-${MY_PV}-${MY_GIT_COMMIT}"
+
+RESTRICT="mirror"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~x86 ~arm64"
+IUSE="kerberos mysql +postgres +unicorn systemd pages 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-4.3.0
+	>=sys-apps/yarn-0.17.0
+	postgres? ( >=dev-db/postgresql-9.1:* )
+	mysql? ( virtual/mysql )
+	kerberos? ( virtual/krb5 )"
+CDEPEND="
+	dev-util/cmake
+	virtual/pkgconfig"
+COMMON_DEPEND="
+	${GEMS_DEPEND}
+	~dev-vcs/gitlab-shell-${GITLAB_SHELL_VERSION}
+	>=dev-vcs/git-2.8.4
+	~dev-vcs/gitlab-workhorse-${GITLAB_WORKHORSE_VERSION}
+	kerberos? ( !app-crypt/heimdal )
+	rugged_use_system_libraries? ( net-libs/http-parser dev-libs/libgit2:0/24 )
+	pages? ( ~www-servers/gitlab-pages-${GITLAB_PAGES_VERSION} )"
+DEPEND="
+	${CDEPEND}
+	${COMMON_DEPEND}"
+RDEPEND="
+	${COMMON_DEPEND}
+	>=dev-db/redis-2.8
+	virtual/mta
+	systemd? ( sys-apps/systemd:0= )"
+# required bundler >= 1.14.2
+ruby_add_bdepend "
+	virtual/rubygems
+	>=dev-ruby/bundler-1.13.7"
+
+#
+# fix-sendmail-config:
+#     Fix default settings to work with ssmtp that doesn't know '-t' argument.
+# fix-redis-config-path:
+#     Point to the absolute location of redis_config.rb
+#
+RUBY_PATCHES=(
+	"01-${PN}-8.7.5-fix-sendmail-config.patch"
+	"02-${PN}-9.0.0-fix-redis-config-path.patch"
+	"03-${PN}-8.17.0-database.yml.patch"
+	"04-${PN}-8.12.7-fix-check-task.patch"
+	"05-${PN}-9.0.0-replace-sys-filesystem.patch"
+	"06-${PN}-8.17.0-fix-webpack-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}"
+
+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}
+
+	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"
+
+	einfo "Cleaning old gems ..."
+	${RUBY} /usr/bin/bundle clean
+
+	# clean gems cache
+	rm -Rf vendor/bundle/ruby/*/cache
+	rm -Rf vendor/bundle/ruby/*/bundler/gems/charlock_holmes-dde194609b35/.git
+
+	## RC script ##
+
+	if use systemd ; then
+		ewarn "Beware: systemd support has not been tested, use at your own risk!"
+		systemd_newunit "${FILESDIR}/gitlab-8.13.0-sidekiq.service" "gitlab-sidekiq.service"
+		systemd_dounit "${FILESDIR}/gitlab-unicorn.service"
+		systemd_dounit "${FILESDIR}/gitlab-workhorse.service"
+		systemd_dounit "${FILESDIR}/gitlab-mailroom.service"
+		systemd_dotmpfilesd "${FILESDIR}/gitlab.conf"
+	else
+		local rcscript=gitlab-8.13.3-sidekiq.init
+		use unicorn && rcscript=gitlab-8.13.3-unicorn.init
+
+		cp "${FILESDIR}/${rcscript}" "${T}" || die
+		sed -i \
+			-e "s|@USER@|${MY_USER}|" \
+			-e "s|@GITLAB_BASE@|${dest}|" \
+			-e "s|@LOGS_DIR@|${logs}|" \
+			"${T}/${rcscript}" \
+			|| die "failed to filter ${rcscript}"
+
+		newinitd "${T}/${rcscript}" "${MY_NAME}"
+	fi
+
+	# fix permissions
+	fowners -R ${MY_USER}:${MY_USER} ${dest} ${temp} ${logs}
+}
+
+pkg_postinst() {
+	elog "If this is an update from a previous version, stop your GitLab"
+	elog "instance and issue the following command to perform all required"
+	elog "migrations:"
+	elog "       emerge --config \"=${CATEGORY}/${PF}\""
+	elog "PLEASE NOTE: It's HIGHLY recommended to backup your database"
+	elog "before running the config phase. Run these commands (as root):"
+	elog
+	elog "    cd /opt/gitlab"
+	elog "    sudo -u git -H bundle exec rake gitlab:backup:create RAILS_ENV=production"
+	elog
+	elog "If this was a fresh install, follow these steps:"
+	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 initialize the environment:"
+	elog "       emerge --config \"=${CATEGORY}/${PF}\""
+	elog "   Note: Do not forget to start Redis server first!"
+	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."
+	if use postgres; then
+		elog "Please note: As of GitLab 8.6, users of PostgreSQL need to enable the"
+		elog "`pg_trgm` extension by running the following command as a PostgreSQL"
+		elog "super user for *every* GitLab database:"
+		elog "      CREATE EXTENSION IF NOT EXISTS pg_trgm;"
+		elog "For details, see the documentation at the GitLab website."
+	fi
+}
+
+pkg_config() {
+	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}/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
+
+	su -l ${MY_USER} -c "git config --global repack.writeBitmaps true"
+
+	# determine whether this is an update or a fresh install. we do this by
+	# checking whether the ${DEST_DIR}/.git directory exists or not
+	# 
+	if [ -d "${DEST_DIR}/.git" ]; then
+		local update=true
+	else
+		local update=false
+	fi
+
+	## Initialize app ##
+
+	local RAILS_ENV="production"
+	local RUBY=${RUBY:-/usr/bin/ruby}
+	local BUNDLE="${RUBY} /usr/bin/bundle"
+
+	# FIXME: this line existed in older ebuilds, but the variable is
+	# never used. what was it for!?
+	# local dbname="$(ryaml ${CONF_DIR}/database.yml production database)"
+
+	if [ "${update}" = 'true' ]; then
+		einfo "Migrating database ..."
+		exec_rake db:migrate
+
+		# https://github.com/gitlabhq/gitlabhq/issues/5311#issuecomment-31656496
+		einfo "Migrating iids ..."
+		exec_rake migrate_iids
+
+		einfo "Installing npm modules ..."
+		exec_npm install
+
+		einfo "Cleaning old precompiled assets ..."
+		exec_rake gitlab:assets:clean
+
+		einfo "Cleaning cache ..."
+		exec_rake cache:clear
+	else
+		# 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
+
+		einfo "Initializing database ..."
+		exec_rake gitlab:setup
+
+		einfo "Installing npm modules ..."
+		exec_npm install
+	fi
+
+	einfo "Precompiling assests ..."
+	exec_rake gitlab:assets:compile
+
+	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."
+		if use mysql ; then
+			ewarn "PLEASE also read this document about needed migrations on MySQL:"
+			ewarn "https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/install/database_mysql.md"
+		fi
+	fi
+	elog
+	elog "If you want to make sure that the install/upgrade was successful, start"
+	elog "Gitlab now and then run these commands (as root):"
+	elog
+	elog "    cd /opt/gitlab"
+	elog "    sudo -u git -H bundle exec rake gitlab:env:info RAILS_ENV=production"
+	elog "    sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production"
+	elog
+	if ! use systemd ; then
+		elog "You may also run"
+		elog "    /etc/init.d/gitlab check"
+		elog " for convenience."
+	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} NODE_ENV=${RAILS_ENV}"
+
+	echo "   ${command}"
+	su -l ${MY_USER} -c "
+		export LANG=en_US.UTF-8; export LC_ALL=en_US.UTF-8; export NODE_PATH=${DEST_DIR}/node_modules
+		cd ${DEST_DIR}
+		${command}" \
+		|| die "failed to run rake $@"
+}
+
+exec_npm() {
+	local command="npm $@ --${RAILS_ENV}"
+
+	echo "   ${command}"
+	su -l ${MY_USER} -c "
+		export LANG=en_US.UTF-8; export LC_ALL=en_US.UTF-8; export NODE_PATH=${DEST_DIR}/node_modules
+		cd ${DEST_DIR}
+		${command}" \
+		|| die "failed to run npm $@"
+}