added ebuild for gitlab 7.3.2

This commit is contained in:
Manuel Friedli 2014-10-19 22:43:39 +02:00
parent 0d5cee0f76
commit 9f6c1379fa
2 changed files with 360 additions and 0 deletions

View file

@ -46,6 +46,7 @@ DIST gitlabhq-7.2.0.tar.gz 2694271 SHA256 5333b5da7d54a3b714a6d2e438414c1a7c3435
DIST gitlabhq-7.2.1.tar.gz 2694643 SHA256 4ef07e8d9db33b95a9016f6b66b4c90a3a5f84c607812255564a41c8fb4beb44 SHA512 f3c6ff968225b3dc3a35cd0d5e81262d2e1b4b195913e146e60aea6006be0928ca4b39b0f4148a4cdf20f5ff0daebdfe4a2c66c027019da002e26dfbff412542 WHIRLPOOL 53286bfb5c2f9ef5525bb3e781c29894286c794dc93dde29ad86de429860f814dd7be12e6ea71d209a60f55bf51241113e113ad9397d40b3ba5d5d5b5f1a4085
DIST gitlabhq-7.3.0.tar.gz 2719960 SHA256 799791397b86f447e81aebedab1b98ef5161807fbd1b03b88776bd479e5a59c9 SHA512 b08dcf572793622796e7f9cbdec5a37071eb950424923e365d224392fd2614539249f672b1e62ed546e076eafdd64bbe7da3b785d1b43d3a3d982064b7021342 WHIRLPOOL d72b918ada104a92781613e0d90c93f1692ee60eaf7ce7b7bfb6f17865b67d57330d154192b0113835e4ed713f08c29954ffa70637f9f002f08eb4aa9b87d2b0
DIST gitlabhq-7.3.1.tar.gz 2720648 SHA256 6a0ca2764be820d2951268cbaca43e4d064d8b51bb6b0d4ad6409c66226ca86e SHA512 e2f5d131c1939ec51f27c4aaf092181ec749f6137b96e0e4128f2b1e61d3e1a249ee62df28350d9ace6744a313e7a8ed3b6ba12d49314b824caa30fb5341d27d WHIRLPOOL 9b56f5922a1b31c271ec99790a465a3142ee03b4ec4f113b41c58bde21972edc44f71661eeaf9f016182cc2e60e4f8cab45b39600123ff35f5fad0a1db928361
DIST gitlabhq-7.3.2.tar.gz 2720541 SHA256 31b97e1c4a2d30c40ca39e94e1f1adb087cb2c87633ee0f75f335d3463b093c8 SHA512 073ed1e4c83f6cb6d88e853fd1db9814ebd40202f375caf8db0a3acb476b444bbbebbc57ca9a246d024699d25306bc5bef4a01096e203bfa0b7dc0439ebd8afd WHIRLPOOL 9e9917eb56389b234cf664d4a228c33615f4abc0b9b7b70fe89fef125e426f068d3499bbe5b5a82f906b5345350039fbc05960e14e814ff048b161af654055c2
EBUILD gitlabhq-6.7.5.ebuild 10983 SHA256 79fe5e03f1f03625a27d5ef398bb4d40e991c71490eda27913529bcdebf03b5d SHA512 73d035742868747f4d1dbbdce0d2892e29bbea3fd2938a66d16c9c72e3ec6075c9faa855b8a46b7970a8879e9633a25b65d70f3cc9eb77a2656bcbcca64f6008 WHIRLPOOL b8a9531f544799a141b7c6ddfaea6cce5d2643832c38326ff13bb3ed37f009b0bb1aeeba3d1d2434d2e59b43747c380ea505fbebb1a082da94a4e2322f20f4bf
EBUILD gitlabhq-6.8.2.ebuild 10605 SHA256 5a7e869aee5481f5c610c81a130ea677de4977d4fc184839b3f7ce16152dacb4 SHA512 3f63b20e111e74d183e36acaa9499287801b18e53f4a1f0e0271f2d93625bf9b311e3a1634e2426965cefd7fe9d2a86114b71ba32f91abded11bd0234ebc87f8 WHIRLPOOL 3f77d6e351f6552932efbe40af389069bda3e44933a0ab426663574ff490665e7ae9a8cfc2726e378073816de7423e8c8269e3cee01b0a64299044a1f99d4811
EBUILD gitlabhq-6.9.2.ebuild 10626 SHA256 24d0e4410d93bce5bf9675a14b8618cc5590dc78b4b16a2a1b0b055b8d88fc6f SHA512 cb5b956a0b0699100704a66fff30c9d1706194b32f31208284b2622b81b3f612ceab17e9f6873cc97e0556f7eb009d0e9727595e72172b98b6fb91d483b3e5e4 WHIRLPOOL a7013e0dfc2ef18ad95eb060ebe301dc417e50420dad54f078625c699d0a4620ffc883ecb847030f7b2d4e590bfd2d901b72712f4a0af55bbf0ef6a78c139deb
@ -56,3 +57,4 @@ EBUILD gitlabhq-7.2.0.ebuild 10567 SHA256 fbe4a327e30778e370e26d43912559453ac5ad
EBUILD gitlabhq-7.2.1.ebuild 10605 SHA256 d4979a32b01078be601df5f8fca4a7922101e0167b8bb0777beaeff84063d911 SHA512 cc225f4311c2cf018cfa9526a3201b52bc0558dd2f0e4911f6b3016229c514c2366194f38f2a5c4093078b46cfa55421e404828bd37f88b61bcf7434e5d7a0d9 WHIRLPOOL 7e1cb74e25996e4f6762d4cc301d5d5d64f2158b9580cc4110a13412fe3d818bd0d8cb4c57f5b822322040af2a51ac656783c9f7f6333627f08004ffde6f24e4
EBUILD gitlabhq-7.3.0.ebuild 10564 SHA256 b0477536e7f991f6fefa54f5b09e9ad9a7a64cb49bbc89d410065527b9f1f50e SHA512 9fc89405bbb008ebae5388324a4e9f4a088e81ad57655ec896d4e3625aa1b0ebf5aee1f31db84e8c57234023a4d277e29564566b5044e0ae7ec8c18a2b4fc9d3 WHIRLPOOL 5c7704d4ea5552da104a9929deaf27692819b9bdea507982a73355eb469e677109fc0bcc0c70a59cb1434d750ff2da0a26d8ceb9e08ffb2037ed1d1fdd9610e9
EBUILD gitlabhq-7.3.1.ebuild 10564 SHA256 b0477536e7f991f6fefa54f5b09e9ad9a7a64cb49bbc89d410065527b9f1f50e SHA512 9fc89405bbb008ebae5388324a4e9f4a088e81ad57655ec896d4e3625aa1b0ebf5aee1f31db84e8c57234023a4d277e29564566b5044e0ae7ec8c18a2b4fc9d3 WHIRLPOOL 5c7704d4ea5552da104a9929deaf27692819b9bdea507982a73355eb469e677109fc0bcc0c70a59cb1434d750ff2da0a26d8ceb9e08ffb2037ed1d1fdd9610e9
EBUILD gitlabhq-7.3.2.ebuild 10564 SHA256 d2e894525cd6e0363185ccd435ecb3c32032c2e6bb61daf8be6b370031e4c5ad SHA512 54325d333d62260aaa7631f128f0ad6fef9f3b88c0f49f8b9d61bcec4e83a33344f1a84dfc0a18f874be37be7477283f51a1f5da5ce08faa2f83e1e235fc28fc WHIRLPOOL 20ea44e9d6a205c9b936c3291c80aa4af2107b4aeaa3317326784c2d99b25237a73085ed54c82dcb53ad7326cc0fbaca8f97ff76802282b34526d4c0e6d4f022

View file

@ -0,0 +1,358 @@
# 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="ruby20 ruby21"
PYTHON_DEPEND="2:2.7"
inherit eutils python ruby-ng user
DESCRIPTION="GitLab is a free project and repository management application"
HOMEPAGE="https://github.com/gitlabhq/gitlabhq"
SRC_URI="https://github.com/gitlabhq/gitlabhq/archive/v${PV}.tar.gz -> ${P}.tar.gz"
RESTRICT="mirror"
LICENSE="MIT"
SLOT="6"
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
#
GEMS_DEPEND="
dev-libs/icu
dev-libs/libxml2
dev-libs/libxslt
dev-util/cmake
dev-util/ragel
net-libs/nodejs
postgres? ( dev-db/postgresql-base )
mysql? ( virtual/mysql )
virtual/pkgconfig"
DEPEND="${GEMS_DEPEND}
>=dev-vcs/gitlab-shell-2.0.1
dev-vcs/git"
RDEPEND="${DEPEND}
dev-db/redis
virtual/mta"
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-project-name-regex:
# Allow project name to contain non-ASCII characters.
#
# fix-sendmail-config:
# Fix default settings to work with ssmtp that doesn't know '-t' argument.
#
RUBY_PATCHES=(
"${PN}-7.1.1-fix-gemfile.patch"
"${PN}-7.1.1-fix-project-name-regex.patch"
"${PN}-6.0.2-fix-sendmail-config.patch"
"${PN}-7.0.0-email-custom-reply_to.patch"
)
MY_NAME="gitlab"
MY_USER="git" # should be same as in gitlab-shell
DEST_DIR="/opt/${MY_NAME}-${SLOT}"
CONF_DIR="/etc/${MY_NAME}-${SLOT}"
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,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:).*|/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; 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-sidekiq.init
use unicorn && rcscript=gitlab-unicorn-6.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}-${SLOT}"
}
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 $@"
}