# Maintainer: Pavol (Lopo) Hluchy # Contributor: Jonas Heinrich # Contributor: Massimiliano Torromeo # Contributor: Tobias Hunger # Contributor: Stefan Tatschner # Contributor: Caleb Maclennan pkgname=gitlab pkgver=8.7.0 pkgrel=2 pkgdesc="Project management and code hosting application" arch=('i686' 'x86_64') url="http://gitlab.org/gitlab-ce" license=('MIT') depends=('ruby2.1' 'git>=2.7.4' 'ruby2.1-bundler>=1.5.2' 'gitlab-shell=2.7.2' 'openssh' 'redis>=2.8' 'libxslt' 'icu' 'nodejs') makedepends=('cmake') optdepends=( 'gitlab-workhorse=0.7.1: for http(s) access' 'mariadb: database backend' 'postgresql>=9.1: database backend' 'mysql>=5.5.14: database backend' 'python2-docutils: reStructuredText markup language support' 'postfix: mail server in order to receive mail notifications' ) backup=( "etc/webapps/${pkgname}/application.rb" "etc/webapps/${pkgname}/gitlab.yml" "etc/webapps/${pkgname}/database.yml" "etc/webapps/${pkgname}/resque.yml" "etc/webapps/${pkgname}/unicorn.rb" "etc/logrotate.d/${pkgname}" ) #source=("$pkgname-$pkgver.tar.gz::https://gitlab.com/gitlab-org/gitlab-ce/repository/archive.tar.gz?ref=v${pkgver}" source=("$pkgname-$pkgver.tar.gz::https://github.com/gitlabhq/gitlabhq/archive/v${pkgver}.tar.gz" gitlab-unicorn.service gitlab-sidekiq.service gitlab-backup.service gitlab-mailroom.service gitlab-backup.timer gitlab.target gitlab.tmpfiles.d gitlab.logrotate apache.conf.example apache-ssl.conf.example apache2.2.conf.example apache2.2-ssl.conf.example nginx.conf.example nginx-ssl.conf.example lighttpd.conf.example ) install='gitlab.install' sha512sums=('9d31b2ce618400e0da26a578a14b04ff8750a2759e2c04884823ed4a895b4de2cc33dd7d879fe831fb157783e970ef5df6ae10663202cb426eef26aeee48f925' '30dad68383eef226599ec21d1635021f6ed4202325b66be227301143973cd333b2dd0c381b45a01506acae5e62157f1bdb13fb0bdf2b58907a9f5defece23291' '4a69a82fa8da4363074cc91838403643d0b214e64f424ffd8573643ad785163970a1234ae2aa4ad1370f31738ac5b1668f394eb9b888e97e583ee2e59dc15dcc' 'c22439ee4cb34adf42de7619a2b83b02359cada38cbe99dd3031e6e72225ec4b2c2d6306331eadfc1c2044609b7a7e8bceddf7be213b5d4dbcaff86b35fe1ce7' '6ccd4398c99fd637a4eae519a9313b0f4442439615d05fd2be7ee8b03809009a182e456ad71781dbca3afc47180452f1c3bd18fe0ed261502318dfa921a6cd3a' 'c11d2c59da8325551a465227096e8d39b0e4bcd5b1db21565cf3439e431838c04bc00aa6f07f4d493f3f47fd6b4e25aeb0fe0fc1a05756064706bf5708c960ec' 'c519a51d31300074ea12594fbcc8e9610d991ef04b1dac94d93a2b201df3465999cc7c6ac7f3896e02b117c2366d61dea1ef2f6b9cd7b18998385a7f26e5700f' '4fe532dabea64189bf25d271cccc11481b22451704e10efac01c7ca4ad76a532fce82088b5eea9546aa80c1141d716820bb23de81c9093dac87f70c94910fb02' '20b93eab504e82cc4401685b59e6311b4d2c0285bc594d47ce4106d3f418a3e2ba92c4f49732748c0ba913aa3e3299126166e37d2a2d5b4d327d66bae4b8abda' '441585489fb992d5e893f14bf0770df04ada95ffdbfcc80bb98a44eda7db520d12c985f600d003d80a196562654d2231598f8481ff9bf664bb5889f564e897e7' '99f31439d348e21f764875b6207db8663b47f3224ad6a9f35b89c8a2ed29a9e831a974aa6b9429a3882fb74c1c9d42ed5c38b2d16ae122b5d55d5873a0c57cd3' '624eb1f13e0265522290faa8c22b4150e6081ca2580391c9dfd871f1ee1b9c1c745c95d3d8f7fdbf85038990060141b844c3d8097c577ab68e5506bfa2d2dddb' '248d47b44fa5ed65e2a940f2b60d0482c481b3a438357ca510848221370367ffbc0d83ce046d688bebbbc75d4e321b140f6a5ce1a9d7ec0b034fafcf92dee107' '53a9d6d6f87874b29e48a8fb2e207094ebc1a80af478562ec4b591926d59e135a3166c20966704aa948ca7063ba63c1ec4ac290a343832fa18025ec3d85081ba' '6d3006da591acefcc534c6e3f1da8e812d0b3b21fc416bfaa8678b8e2d922be6b17d1c92b0d7164de3b8ad864139253707107ca082f78e823d23f3b65fcb5914' 'c78b6f46abcf603d8db6e38cf50868e14145928422ddfe17c88e2f006b5b910dddf456ec5d6d724b250994530643963809688a98f7e12ebd5b5dabf7f96f0e06') _homedir="/var/lib/${pkgname}" _datadir="/usr/share/webapps/${pkgname}" _logdir="/var/log/${pkgname}" _srcdir="gitlabhq-${pkgver}" _etcdir="/etc/webapps/${pkgname}" _wo=() if [[ `pacman -T libmariadbclient` != '' ]]; then _wo+=('mysql') else warning "detected libmariadbclient" fi if [[ `pacman -T postgresql-libs` != '' ]]; then _wo+=('postgres') else warning "detected postgresql-libs" fi prepare() { if [[ ${#_wo[@]} == 2 ]]; then error "Usable DB libs not found" msg2 "Install at least libmariadbclient or postgresql-libs" return 1 fi cd "${srcdir}/${_srcdir}" # Patching config files: msg2 "Patching paths and username in gitlab.yml..." sed -e "s|# user: git|user: gitlab|" \ -e "s|/home/git/repositories|${_homedir}/repositories|" \ -e "s|/home/git/gitlab-satellites|${_homedir}/satellites|" \ -e "s|/home/git/gitlab-shell|/usr/share/webapps/gitlab-shell|" \ -e "s|tmp/backups|${_homedir}/backups|" \ config/gitlab.yml.example > config/gitlab.yml msg2 "Patching paths and timeout in unicorn.rb..." sed -e "s|/home/git/gitlab/tmp/.*/|/run/gitlab/|g" \ -e "s|/var/run/|/run/|g" \ -e "s|/home/git/gitlab|${_datadir}|g" \ -e "s|timeout 30|timeout 300|" \ -e "s|${_datadir}/log/|${_logdir}/|g" \ config/unicorn.rb.example > config/unicorn.rb msg2 "Patching username in database.yml..." sed -e "s|username: git|username: gitlab|" \ config/database.yml.mysql > config/database.yml msg2 "Pathing redis connection in resque.yml" sed -e "s|production: unix:/var/run/redis/redis.sock|production: redis://localhost:6379|" \ config/resque.yml.example > config/resque.yml msg2 "Patching redis_config path" sed -i "s|require_relative '../lib|require '${_datadir}/lib|g" config/application.rb sed -i "s|require_relative \"lib|require \"${_datadir}/lib|g" config/mail_room.yml msg2 "setting up systemd service files ..." for __srv in gitlab-sidekiq.service gitlab-unicorn.service gitlab.logrotate gitlab.tmpfiles.d gitlab-backup.service gitlab-mailroom.service; do sed -i "s||${_homedir}|g" "${srcdir}/${__srv}" sed -i "s||${_datadir}|g" "${srcdir}/${__srv}" sed -i "s||${_logdir}|g" "${srcdir}/${__srv}" done } build() { cd "${srcdir}/${_srcdir}" msg "Fetching bundled gems..." # Gems will be installed into vendor/bundle bundle-2.1 config build.nokogiri --use-system-libraries cpus=$(nproc) if [[ $cpus -ge 3 ]]; then bundle-2.1 install -j$(( $cpus - 1 )) --no-cache --deployment --without development test aws kerberos ${_wo[@]} else bundle-2.1 install --no-cache --deployment --without development test aws kerberos ${_wo[@]} fi } package() { cd "${srcdir}/${_srcdir}" install -d "${pkgdir}/usr/share/webapps" cp -r "${srcdir}/${_srcdir}" "${pkgdir}${_datadir}" # Creating directories install -d \ "${pkgdir}${_etcdir}" \ "${pkgdir}/usr/share/doc/${pkgname}" \ "${pkgdir}${_homedir}/www" \ "${pkgdir}${_homedir}/satellites" \ "${pkgdir}${_datadir}/www" \ "${pkgdir}${_homedir}/builds" ln -fs /run/gitlab "${pkgdir}${_homedir}/pids" ln -fs /run/gitlab "${pkgdir}${_homedir}/sockets" ln -fs ${_datadir}/log "${pkgdir}${_homedir}/log" ln -fs "${_etcdir}/secret" "${pkgdir}${_datadir}/.secret" rm -rf "${pkgdir}${_datadir}/public/uploads" && ln -fs "${_homedir}/uploads" "${pkgdir}${_datadir}/public/uploads" rm -rf "${pkgdir}${_datadir}/public/assets" && ln -fs "${_homedir}/assets" "${pkgdir}${_datadir}/public/assets" rm -rf "${pkgdir}${_datadir}/builds" && ln -fs "${_homedir}/builds" "${pkgdir}${_datadir}/builds" # We are using PrivateTmp=true to start unicorn, so this is safe: rm -rf "${pkgdir}${_datadir}/tmp" && ln -fs /var/tmp "${pkgdir}${_datadir}/tmp" rm -rf "${pkgdir}${_datadir}/log" && ln -fs "${_logdir}" "${pkgdir}${_datadir}/log" ln -fs /etc/webapps/gitlab-shell/secret "${pkgdir}${_datadir}/.gitlab_shell_secret" # Install config files for _file in application.rb gitlab.yml unicorn.rb database.yml resque.yml; do mv "config/${_file}" "${pkgdir}${_etcdir}/" [[ -f "${pkgdir}${_datadir}/config/${_file}" ]] && rm "${pkgdir}${_datadir}/config/${_file}" ln -fs "${_etcdir}/${_file}" "${pkgdir}${_datadir}/config/" done # Install license and help files mv README.md MAINTENANCE.md CONTRIBUTING.md CHANGELOG config/*.{example,mysql,postgresql} "${pkgdir}/usr/share/doc/${pkgname}" install -D "LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" rm "${pkgdir}${_datadir}/LICENSE" # https://gitlab.com/gitlab-org/gitlab-ce/issues/765 cp -r "${pkgdir}${_datadir}/doc" "${pkgdir}${_datadir}/public/help" find "${pkgdir}${_datadir}/public/help" -name "*.md" -exec rm {} \; find "${pkgdir}${_datadir}/public/help/" -depth -type d -empty -exec rmdir {} \; # Install systemd service files for _file in gitlab-unicorn.service gitlab-sidekiq.service gitlab-backup.service gitlab-backup.timer gitlab.target gitlab-mailroom.service; do install -Dm0644 "${srcdir}/${_file}" "${pkgdir}/usr/lib/systemd/system/${_file}" done install -Dm644 "${srcdir}/gitlab.tmpfiles.d" "${pkgdir}/usr/lib/tmpfiles.d/gitlab.conf" install -Dm644 "${srcdir}/gitlab.logrotate" "${pkgdir}/etc/logrotate.d/gitlab" # Install webserver config templates for __cfg in apache apache-ssl apache2.2 apache2.2-ssl nginx nginx-ssl lighttpd; do install -m644 "${srcdir}/${__cfg}.conf.example" "${pkgdir}${_etcdir}" done } # vim:set ts=4 sw=4 et: