Merge branch 'master' into move-workhorse-to-servers

This commit is contained in:
Manuel Friedli 2017-05-25 11:14:46 +02:00
commit 61fea39e39
2 changed files with 425 additions and 0 deletions

View file

@ -21,12 +21,14 @@ DIST gitlab-ce-8.17.4.tar.gz 22825573 SHA256 daa0d5d75295a896f7aa230bd965e12e852
DIST gitlab-ce-9.0.0_rc4.tar.gz 26270878 SHA256 f47ddcf6f4f0336228dd1ef03085c9ea6116157887e8216038d23b69cf7a4d89 SHA512 f4694ebf4ffe38e6c5495f3658eb8003d28b3ac5d67f4533ddc1932afca412a40ea786cd8d99e2891fdf9bacd7b198b29493b97d6d02455d4f4139d4e60a0d63 WHIRLPOOL 81f47820043445e9ff69ae0ad3bcd1e094ab1e3527eec279096ae16a767cec5451b2d94af4dd87cd2939eb2e64368a1a0e543ce40e0e9fd5a716eeef04741c54
DIST gitlab-ce-9.0.1.tar.gz 26350693 SHA256 94549d69650383347256b9f3f0c11f200e0e4f29118a54a99e137d895db083ed SHA512 b7eed360beab1459da5c56b911e527335f2ec7bf595649c8d0327255488d765971a612987d7b3d10f2b017bf93adfb52f739a20c6d3e251552d82f04ddcf1bea WHIRLPOOL e061946cf9831daa61809b14d71e907717e0840cc8263b5461813795871cd2bd479ddff0d3c4afeda06edfca9f819c333e0be1a0961a1dbf9c86c9d8e0315ee1
DIST gitlab-ce-9.0.2.tar.gz 26349628 SHA256 2b8913a1ed5f49c59314ce1aa5874d917d38c3c663a981aac3374ced8a123629 SHA512 563450eb22dc2eb7d8aec52b7fb2ec58339bf59f0b46e59fa2a98ff8e2634d95948b9872afc1e64bff840985ed15b8efd588661f075c27cdb984c125ea41624e WHIRLPOOL 3660dde5cadb279f48d2c43e4fb3ba47b7d7a07c38e25940d55b8cb8bf4d750ca97088db73d1f808b3ff5ef8b3867d45ec0289e1ff1e0c5e362994ed38fc9eb9
DIST gitlab-ce-9.0.7.tar.gz 26358937 SHA256 e70d1f3926f3b7e872353da2d21a7a6b44ed51a3b145e237f4768f8190eaeb08 SHA512 c3f28ef81eb546727f895d92a120e1e459b8eceb1c1068888ec9972444355c02d441bd8d85c360e684f0389b0c6f2ffae57a69a220639fa9ffe7f8c63730daad WHIRLPOOL 04380783f5074fcfe905b129e6e457da44e9dbd1d6d43d70309ea0f55fa8f916af28f52460dc68b1b588feb8d99b8ba543e52bffdee93f3115efa3473c8728ce
EBUILD gitlab-ce-8.15.8.ebuild 11986 SHA256 6c86e66d4b568b88dd44ec52401e25c33b2d5e61d9a76e77180320d40ef57132 SHA512 91e1dc1cd8b9b77ea039e7e194b06c44900511b9e7787a714faec14746f96da6d00aa66bd16763732c468d8a46815e29fe761349a0a0d712db21bd4a12d31e06 WHIRLPOOL 50923df1fdda85abf7c7984a49d73d6486628439612de18ec3914274f3a053ce98ffbffec0f6ca9f2f9ba1ca9491467de0762d2d4a31ea480f32eb68222c79f9
EBUILD gitlab-ce-8.16.8.ebuild 11986 SHA256 0d5bdaf00e45fd5f48af3873cf4c9782d038338e8aa0e3a5a6fdb00ae868f771 SHA512 973a44e9d631203bf33596cfd5be1c999bbbff1ce25ff0cddd2707e59c9d98321c5efe0bbc2d62995b7b4f32c7a75b43f4bb4b3cfb10e25a64eaef5319b8ddf2 WHIRLPOOL 367b66c83a8a9356d5b76a2a03f1bd8e38714f8d7c4228d9b2f019f6ec63bff66be93c2ce657c43ae970bc693ed94fdd5b2e32488222dcae0cacbfcc15b3cb1b
EBUILD gitlab-ce-8.17.4.ebuild 12932 SHA256 17cb7cc858d71085d69e6ccca5b3802244e4db92bb5092e0717b53f21564e50b SHA512 3ee082772b29b6efbd90870bf92bdf9bd2ca8821bdba724574a2c58b39e5acbc5fa8bfa4463c1ab350f5633c8f821f2f7a90952b765aacf7ff381bb7ce77b9b7 WHIRLPOOL dded31fed93b7c2a553a6a8cc07a883302a76df85d804b03ae6dfce6be447b090c54f639d9894c6d56819c409b32a8ccd1280a054ec48120b2eb58ea0890c731
EBUILD gitlab-ce-9.0.0_rc4.ebuild 12914 SHA256 72a4b8dfc10acbef389c4af00dcdc8012fe7a5607f526e04e33e1625447302bf SHA512 d7888cd9a460c5d334309799b2d036678f0efca8acd516d968089331f51d8d5e812edc4b8c597ef6950f298586ec54fac698901c66b6ddba0207cc9e8010147c WHIRLPOOL 177ad04e770355f9cba863a6f6f4012f9d16e96aefc7148ae1bf9b2994691a49ef593122d7fbc8b937f207ea31d9b67d965b651d4267ca1df9f25a9c136c372b
EBUILD gitlab-ce-9.0.1-r1.ebuild 13087 SHA256 4dda1de15a8fb05d2fc5b97a99113fe93bb1feddbe46dc97ef3c945aa1715841 SHA512 1f44da05e954cbe8e50acc217e4c6f098f5e7aa5e31f0faf97e48df800e5b6d560b7911aaf0bf0e86bb1f267d7674895f93d908f2e9f4544fadab32d5d2b7e23 WHIRLPOOL b02d9d5d48a695e25fc6d422c49436b191a57807da5eb36ccff78287e4f38175d6958e9ae8a965433d42d26b84607beb833db79822068a4dd0a0d9bb4b60d463
EBUILD gitlab-ce-9.0.2.ebuild 13087 SHA256 f8705f07c62a4988b10b1c83ddb743032d1838f24b562a0f69df72ba690ed1f3 SHA512 c0cf1b1228e5499c7643811f80db010dce67d20da5aefd6a40ef2a537bb4ed7b589e8f878307a06ec1fb8d053a3e2ea00a97c66a7edb6e4845f92b493fad9b82 WHIRLPOOL 2df17352ea8ea15fbb74a10b1941b369d642f65453d10599d599925cc46d5f71e9a6149dc56acf15a501750228dc1eecceeb19d72890f3835a514c891f84dcc6
EBUILD gitlab-ce-9.0.7.ebuild 13083 SHA256 df9f2ed4673ffa02cb5345b91ab4a58ff0e37f57c6dbba359232bf5ddde17b83 SHA512 dd1d8079b8de44b2f4f43a93c7bf66cb9ca5156f15a5cb5708f36ce785e241c0298db21b612dad66c9d80383c88f76327b575fc1859774e35aae27b6f6a60680 WHIRLPOOL 5d6f84409e63da3575fecf31d26e3142101177adaacc59855d8aba4aa3ebec55a4f6da4537bbb98445c874695b61288333762f0232071040852d428cc2ac81ee
EBUILD gitlab-ce-9999.ebuild 13029 SHA256 b4a010ff86baa4f2a7cf1349e74f49e763b88bb675f01acdbaf16c204597859d SHA512 6cdfdbf27a3ccec276ce06c25dc5a76cba6fb25f807650f5e2e5ed600fd03e487a60de3481719c53fffb43d3f7d2a0e8258a41dd0e461be1e82252eb59105372 WHIRLPOOL 0994bab6308ac1c466e17d53b7057f51e472b4b5cc0ca1d91b11217d0caf9448d3a69d769732c2acb4194f3eb5a94b8bb3c98441ec99ca94066900c7fe5e85ac
MISC ChangeLog 17683 SHA256 a05dba61c9719acba11ea9e78ea5b12eb9c605df0fe2a4ad492a2e33bd171bd4 SHA512 b313183f8ebac4786b95e32700835991ae099e1b63bac7ccb7849e9528396393d97f71a77233d991b89017b0dadb54f0a125703d4525d28ec78bf7c70e14ad1d WHIRLPOOL ffedfd7f64939496a8607a99ea845baa410c3579b0d023ff407d4364f8009aad3e982403eabebc9f013dafb6a093ac37454e7f1c07f9b1c4d9c0d5f89aa9f0ad
MISC metadata.xml 801 SHA256 3dc7486a12903f47f65968d524c93500ba30a4a09fa57e5a9dacf356509b44bb SHA512 e132754b72e64246531fa883400a0cf1a473ac5a6a49623db58ccf118a038b7cf37df03d9550f37b4a25f9ddbb1dcc5652ec9a4f2259d8e3ce202692c4025f41 WHIRLPOOL e9d961681fd790008eaf80fa07ce2c55a00a58f2e920d759793783ca8c8f508602a777e94c0cb65fe87c7dbef0cabdf26e4f4082584421097d939cbab20c4ac6

View file

@ -0,0 +1,423 @@
# 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="ruby23"
inherit eutils ruby-ng user systemd
MY_PV="v${PV/_/-}"
MY_GIT_COMMIT="810cc51be37e03ebbe99711a53663956e4ffde8c"
GITALY_VERSION="0.3.0"
GITLAB_PAGES_VERSION="0.4.0"
GITLAB_SHELL_VERSION="5.0.0"
GITLAB_WORKHORSE_VERSION="1.4.2"
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 -gitaly 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} )
gitaly? ( ~www-servers/gitaly-${GITALY_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
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"
ewarn "Failing to follow those instructions may make the config phase fail!"
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_yarn 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_yarn 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."
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_yarn() {
local command="yarn $@ --${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 yarn $@"
}