| Version | EAPI | Keywords | Slot |
|---|---|---|---|
| 14.47.0 | 8 | ~amd64 ~x86 ~arm | 0 |
# Copyright 2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
EGIT_REPO_URI="https://gitlab.com/gitlab-org/gitlab-shell.git"
EGIT_COMMIT="v${PV}"
USE_RUBY="ruby31 ruby32"
inherit git-r3 ruby-single
DESCRIPTION="SSH access for GitLab"
HOMEPAGE="https://gitlab.com/gitlab-org/gitlab-shell"
LICENSE="MIT"
SLOT="0"
KEYWORDS="~amd64 ~x86 ~arm"
IUSE="-relative_url"
RESTRICT="network-sandbox"
BDEPEND="
${RUBY_DEPS}
>=dev-ruby/bundler-2:2"
DEPEND="
acct-user/git[gitlab]
acct-group/git
|| ( >=dev-vcs/git-2.46.0[pcre] www-apps/gitlab[gitaly_git] )
>=dev-lang/go-1.22
virtual/krb5
virtual/ssh
dev-db/redis"
RDEPEND="${DEPEND}"
GIT_USER="git"
GIT_GROUP="git"
GIT_HOME="/var/lib/gitlab"
BASE_DIR="/opt/gitlab"
GITLAB_SHELL="${BASE_DIR}/${PN}"
CONF_DIR="/etc/${PN}"
RAILS_ENV=${RAILS_ENV:-production}
REDIS_URL="unix:/run/redis/redis.sock"
REPO_DIR="${HOME}/repositories"
AUTH_FILE="${GIT_HOME}/.ssh/authorized_keys"
KEY_DIR="${GIT_HOME}/.ssh/"
GITLAB_URL="${BASE_DIR}/gitlab/tmp/sockets/gitlab-workhorse.socket"
src_prepare() {
eapply_user
local gitlab_url_encoded=$(echo "${GITLAB_URL}" | sed -s 's|/|%2F|g')
sed -i \
-e "s|\(user:\).*|\1 ${GIT_USER}|" \
-e "s|\(gitlab_url:\).*|\1 \"http+unix://${gitlab_url_encoded}\"|" \
-e "s|\(auth_file:\).*|\1 \"${AUTH_FILE}\"|" \
-e "s|log_level: .*|log_level: WARN|" \
-e "s|/home/git/|${GIT_HOME}/|g" \
config.yml.example || die "failed to filter config.yml.example"
if use relative_url; then
sed -i \
-e "s|^# gitlab_relative_url_root: \"/\"|gitlab_relative_url_root: \"/gitlab\"|" \
config.yml.example || die "failet to filter config.yml.example"
fi
}
src_compile() {
emake compile || die "failed to run make compile"
}
src_install() {
insinto "${CONF_DIR}"
newins config.yml.example config.yml
# the gitlab-shell binary searches config in its base dir
dosym "${CONF_DIR}/config.yml" "${GITLAB_SHELL}/config.yml"
insinto ${GITLAB_SHELL}
doins CHANGELOG README.md CONTRIBUTING.md LICENSE VERSION config.yml.example
doins -r support
touch gitlab-shell.log
doins gitlab-shell.log || die "failed to install gitlab-shell.log"
emake DESTDIR="${D}" PREFIX="${GITLAB_SHELL}" install || die "failed to run make install"
fowners ${GIT_USER} ${GITLAB_SHELL}/gitlab-shell.log
fowners ${GIT_USER} ${GITLAB_SHELL} || die
}
pkg_postinst() {
dodir "${REPO_DIR}" || die
if [[ ! -d "${KEY_DIR}" ]] ; then
mkdir "${KEY_DIR}" || die
chmod 0700 "${KEY_DIR}" || die
chown ${GIT_USER}:${GIT_GROUP} "${KEY_DIR}" -R || die
fi
if [[ ! -e "${AUTH_FILE}" ]] ; then
touch "${AUTH_FILE}" || die
chmod 0600 "${AUTH_FILE}" || die
chown ${GIT_USER}:${GIT_GROUP} "${AUTH_FILE}" || die
fi
if [[ ! -d "${REPO_DIR}" ]] ; then
mkdir "${REPO_DIR}"
chmod ug+rwX,o-rwx "${REPO_DIR}" -R || die
chmod ug-s,o-rwx "${REPO_DIR}" -R || die
chown ${GIT_USER}:${GIT_GROUP} "${REPO_DIR}" -R || die
fi
elog "Edit ${CONF_DIR}/config.yml to configure your GitLab-Shell settings."
}
acct-user/git[gitlab] acct-group/git || ( >=dev-vcs/git-2.46.0[pcre] www-apps/gitlab[gitaly_git] ) >=dev-lang/go-1.22 virtual/krb5 virtual/ssh dev-db/redis
acct-user/git[gitlab] acct-group/git || ( >=dev-vcs/git-2.46.0[pcre] www-apps/gitlab[gitaly_git] ) >=dev-lang/go-1.22 virtual/krb5 virtual/ssh dev-db/redis
${RUBY_DEPS}
>=dev-ruby/bundler-2:2