Merge branch 'feature/gitlab813' into 'master'

added ebuild for www-apps/gitlabhq-8.1.3



See merge request !19
This commit is contained in:
Manuel Friedli 2015-11-07 02:45:01 +01:00
commit d5ffc2f59d
2 changed files with 371 additions and 0 deletions

View file

@ -18,6 +18,7 @@ DIST gitlabhq-8.0.4.tar.gz 8238901 SHA256 644b4bc98907bb171a1281ae73ac510f1bc6d3
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
DIST gitlabhq-8.1.2.tar.gz 8503168 SHA256 ab903b0c487aaf43dca4dfd3ac80e76ef344f403c8a02579a285c2658b80bc6c SHA512 f6c2f304c4be6fea6a36bce1ded5ec4352fb84e93922d152481fcc9788d2a505e843d05947962021ddba9629dbf9d55b8931cf576dccf396a561c55a0a16a883 WHIRLPOOL def94175936275e0b8c18c6238e473dae59f235e14c32cdb5c7a886d0f69538db57aee35844234a05b342925364d86aae9737f7c13a55dd2d74dda233af15a61
DIST gitlabhq-8.1.3.tar.gz 8761928 SHA256 35dba9917762b1760ee9ba8e8e6982a9af0be6cbb5119741334987d167076707 SHA512 81076587a471eefab1e9f5addba254a6b8e4b6eaac2ce7a01885a04adf31687e0cc52ce3919da6390efc34c8bbc54068a473db984b0376239800a09a0675f373 WHIRLPOOL adabf431d94f611c0f52053bb3bf989fdaf210ec74ef389d552f72fde92873722f5857e397a4dc50c2fdc593b8f6ac3257701c4df8c902ac8a9a6ccf0f1c8f7f
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
@ -26,5 +27,6 @@ EBUILD gitlabhq-8.0.4.ebuild 11116 SHA256 7e5335681c66070aacecb1d64f58ef09e8cbd1
EBUILD gitlabhq-8.0.5.ebuild 11234 SHA256 297ccc9bfc1a4f06498a9ac1653caf445426e5605b79eab4bad0b0aa556b99fd SHA512 60d14b1c9726e8c3421e9aeaf46fff3180fed0bad951fa616d9591ca8739f98e0fef7823b74fa52e9f2303f462a18a283314a80f3657858893ee7e2a628bcb5f WHIRLPOOL e0b35b857cab028cccb475af879b53c00c01a22f1bbd718dc498a0475e2baa68b71f15769c5ceab89f2a5ddac5aff2cc1e80dbb99e30ca9c05eae4b32ecea2ae
EBUILD gitlabhq-8.1.0.ebuild 11139 SHA256 22df51beb9e37253d4f4a5cf8a3ae05d331185b9279fa97d36ad05a62d278d7a SHA512 bf21771ed99d8f9db3c87524e201817a2ba3b77a42d0ac226a309d87b1a950cd9cc3226bd1e4fd88200f2109592b166b4f1bcfd2d9455d1a9f7ac48e74a26d77 WHIRLPOOL 486efcefbcbcc389451e4a6e65d11c37b0386ad8f978cf99d52603c1e68dcdd0e18c4bc2d9cc8bd1e46548ccc1ac59bdda9d27fc09e2b0856200c023affec831
EBUILD gitlabhq-8.1.2.ebuild 11146 SHA256 92d30ab8bbe8c79aba9c7e42ae95ac811dbbb80a327f12b866d5417ecebfed1b SHA512 7bd64088b646abda915a51e756e9870ed35c610c936254620d397787770046cda4aeaab146a2066fa69d267895cbcd9192ca23d2c7d365233558bdbadbf0e99c WHIRLPOOL 89d5c9b5b4da52b66bcac99f3a3b18adf0c992e3a676b39584f6fe89fce5ae2a15076678116ba0e79f45cd7339a5a21abde040877697c80b5a5a6795f3afe801
EBUILD gitlabhq-8.1.3.ebuild 11146 SHA256 92d30ab8bbe8c79aba9c7e42ae95ac811dbbb80a327f12b866d5417ecebfed1b SHA512 7bd64088b646abda915a51e756e9870ed35c610c936254620d397787770046cda4aeaab146a2066fa69d267895cbcd9192ca23d2c7d365233558bdbadbf0e99c WHIRLPOOL 89d5c9b5b4da52b66bcac99f3a3b18adf0c992e3a676b39584f6fe89fce5ae2a15076678116ba0e79f45cd7339a5a21abde040877697c80b5a5a6795f3afe801
EBUILD gitlabhq-9999.ebuild 11087 SHA256 565d2f2a530d232bed74ab7c9699788e186d69159e5b201a2b9e9990f558083d SHA512 c8eb9b1a667e78404949835ef92d8ca9ef74738379a0b2de9d64ce3dc0510635f575d43fc13efc52076afd8b85a3955e8614a41503e6ca1deb0847d1f23c2ad2 WHIRLPOOL a9889adc7f162bfc032914252f4f689e417e06b06149695f2f370daa7806bc33ccba6a2767f79d512cd9cc7dcbd8ffbfbdb2a71ec40cb16c2dfbec4900804dc6
MISC metadata.xml 545 SHA256 1b7fc44d811e1ab7638fe4a40253f49d5f1071872d3020c22c4f67662750cb2f SHA512 86f47d297892bccfefa087d93936296f5647993a9ec8e3f47907a6859cbf385e5bc6f00502d7836c9e8d9efef2b6725bf145b0150924c2082b2bd164469ef6ea WHIRLPOOL 6bfb8a55684d68c8bfa6e025a0be965f7b815394ee0896dd2a13cfb524e3cf3f3149acc9072897e30a1842060389576aac07ea8beb4a8b0bfc3e8eab3723f2a1

View file

@ -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=(
"${PN}-8.1.0-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,incoming_email,runner,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 $@"
}