commit:     b2f32465e14bc0f9a96193f576dae300fe59ad87
Author:     Marc Schiffbauer <mschiff <AT> gentoo <DOT> org>
AuthorDate: Wed May 21 22:48:57 2014 +0000
Commit:     Marc Schiffbauer <mschiff <AT> gentoo <DOT> org>
CommitDate: Wed May 21 22:48:57 2014 +0000
URL:        
http://git.overlays.gentoo.org/gitweb/?p=dev/mschiff.git;a=commit;h=b2f32465

added gitlab-shell ebuild (based on cvut overlay)

---
 dev-vcs/gitlab-shell/Manifest                      |   4 +
 .../gitlab-shell-1.7.1-paths-from-config.patch     |  39 +++++++
 .../files/gitlab-shell-1.8.0-redis-db-option.patch |  21 ++++
 dev-vcs/gitlab-shell/gitlab-shell-1.8.0.ebuild     | 122 +++++++++++++++++++++
 4 files changed, 186 insertions(+)

diff --git a/dev-vcs/gitlab-shell/Manifest b/dev-vcs/gitlab-shell/Manifest
new file mode 100644
index 0000000..0a6f8d2
--- /dev/null
+++ b/dev-vcs/gitlab-shell/Manifest
@@ -0,0 +1,4 @@
+AUX gitlab-shell-1.7.1-paths-from-config.patch 1725 SHA256 
b730b953f5cbb7b1c248cf56074832018f78a8bdcc20f2e3869fd30be03b03e4 SHA512 
ac214bdcf4d6c63d61914c11d14b24136b4eb0cda4bd09476b58e6bfedfd5a5245a5d20f128d57d05b945afa03fa56f85c4c4df8508767443720596c7beaeddc
 WHIRLPOOL 
bed74d3544be5132818a9a42770c9c9775e6b491811ff23eb186f8ea19a86912dbc399c8f92ff7d6c5f951dafd21f4f893495d3d622d5be6af02205ed3b77e06
+AUX gitlab-shell-1.8.0-redis-db-option.patch 625 SHA256 
e707b05a5f81b3769ca8125695617335a9a90eb6ad6b0fd48d99a92f70c235ee SHA512 
d5fc946937cb6fcff313c2c620ce24b66c0b6226b298214a36915fa5023ae33f348698ad2505e7e441adc80137dc092dd689d066dac9abbe4261a448ad85f753
 WHIRLPOOL 
fc6365a20089cdb923af210c1f8b825e0bdb7dd539ba272efa224c214237d61bac0d9d0730f8bc9436be16fa874752aba5938e380ab1466f2a3baafaf2bc52cc
+DIST gitlab-shell-1.8.0.tar.gz 14912 SHA256 
ac75e2a5d234f4e64760e2eda5a94c633ec2b31c269deda01e69c6bbc0a25feb SHA512 
ab829b597e4610675c773be83035506a97dc623c41f294c94b57fc7351d7985156c5882ba9b1c84d140fe0e0b5c613ab138f8161eee82c4727d049aa39e17efe
 WHIRLPOOL 
72896d55d828d7c9539168391206a908c4a899079eb9bd1461fcdca4947abd806ca91a098d6c4bd67e1f15089636b960704f89285613b86588d039e7b4df4912
+EBUILD gitlab-shell-1.8.0.ebuild 3344 SHA256 
85869536daa29d5316a6050bde97d39f707ecaf9078f535f262b35e0e8c509d5 SHA512 
0e314f5b32a303b3637d574a89be908fdd756eca1ee257fd12b3722fc5e3bd16624f0c26f90d6522e84d222fcfaa004a92aafbd9a63cf3f1aba91b2575b243a9
 WHIRLPOOL 
67149f996b6c71e26fd06d6b22ff7f159e1aa46c457b603f873542769631c51b96bbde90b90e0642e0f09f20010a7355591a38bb4e20a36bf99d1c84564e0052

diff --git 
a/dev-vcs/gitlab-shell/files/gitlab-shell-1.7.1-paths-from-config.patch 
b/dev-vcs/gitlab-shell/files/gitlab-shell-1.7.1-paths-from-config.patch
new file mode 100644
index 0000000..2f79e10
--- /dev/null
+++ b/dev-vcs/gitlab-shell/files/gitlab-shell-1.7.1-paths-from-config.patch
@@ -0,0 +1,39 @@
+--- a/support/rewrite-hooks.sh 2013-08-26 11:59:22.000000000 +0200
++++ b/support/rewrite-hooks.sh 2013-09-10 21:31:30.135841009 +0200
+@@ -1,13 +1,14 @@
+ #!/bin/bash
+ 
+ # $1 is an optional argument specifying the location of the repositories 
directory.
+-# Defaults to /home/git/repositories if not provided
++# If no argument is provided then path is readed from /etc/gitlab-shell.yml
+ 
+-home_dir="/home/git"
+-src=${1:-"$home_dir/repositories"}
++base_path="$(realpath `dirname $(readlink -f "$0")`/..)"
++repos_path="$(ruby -ryaml -e 'puts 
YAML::load_file("/etc/gitlab-shell.yml")["repos_path"]')"
++src=${1:-"$repos_path"}
+ 
+ function create_link_in {
+-  ln -s -f "$home_dir/gitlab-shell/hooks/update" "$1/hooks/update"
++  ln -s -f "$base_path/hooks/update" "$1/hooks/update"
+ }
+ 
+ for dir in `ls "$src/"`
+--- a/support/truncate_repositories.sh 2013-08-26 11:59:22.000000000 +0200
++++ b/support/truncate_repositories.sh 2013-09-10 21:31:30.135841009 +0200
+@@ -1,12 +1,12 @@
+ #!/bin/bash
+ 
+-home_dir="/home/git"
++repos_path="$(ruby -ryaml -e 'puts 
YAML::load_file("/etc/gitlab-shell.yml")["repos_path"]')"
+ 
+ echo "Danger!!! Data Loss"
+ while true; do
+-  read -p "Do you wish to delete all directories (except gitolite-admin.git) 
from $home_dir/repositories/ (y/n) ?:  " yn
++  read -p "Do you wish to delete all directories (except gitolite-admin.git) 
from $repos_path (y/n) ?:  " yn
+   case $yn in
+-    [Yy]* ) sh -c "find $home_dir/repositories/. -maxdepth 1  -not -name 
'gitolite-admin.git' -not -name '.' | xargs rm -rf"; break;;
++    [Yy]* ) sh -c "find $repos_path/. -maxdepth 1  -not -name 
'gitolite-admin.git' -not -name '.' | xargs rm -rf"; break;;
+     [Nn]* ) exit;;
+     * ) echo "Please answer yes or no.";;
+   esac

diff --git 
a/dev-vcs/gitlab-shell/files/gitlab-shell-1.8.0-redis-db-option.patch 
b/dev-vcs/gitlab-shell/files/gitlab-shell-1.8.0-redis-db-option.patch
new file mode 100644
index 0000000..4ff7d60
--- /dev/null
+++ b/dev-vcs/gitlab-shell/files/gitlab-shell-1.8.0-redis-db-option.patch
@@ -0,0 +1,21 @@
+--- a/lib/gitlab_config.rb
++++ b/lib/gitlab_config.rb
+@@ -53,7 +53,7 @@ class GitlabConfig
+       if redis.has_key?("socket")
+         %W(#{redis['bin']} -s #{redis['socket']})
+       else
+-        %W(#{redis['bin']} -h #{redis['host']} -p #{redis['port']})
++        %W(#{redis['bin']} -h #{redis['host']} -p #{redis['port']} -n 
#{redis['db']})
+       end
+     end
+   end
+--- a/config.yml.example
++++ b/config.yml.example
+@@ -25,6 +25,7 @@ redis:
+   bin: /usr/bin/redis-cli
+   host: 127.0.0.1
+   port: 6379
++  # db: 0
+   # socket: /tmp/redis.socket # Only define this if you want to use sockets
+   namespace: resque:gitlab
+ 

diff --git a/dev-vcs/gitlab-shell/gitlab-shell-1.8.0.ebuild 
b/dev-vcs/gitlab-shell/gitlab-shell-1.8.0.ebuild
new file mode 100644
index 0000000..9d28d06
--- /dev/null
+++ b/dev-vcs/gitlab-shell/gitlab-shell-1.8.0.ebuild
@@ -0,0 +1,122 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: $
+
+EAPI="5"
+
+USE_RUBY="ruby19 ruby20"
+
+inherit eutils ruby-ng user
+
+DESCRIPTION="SSH access and repository management for GitLab"
+HOMEPAGE="https://github.com/gitlabhq/gitlab-shell";
+SRC_URI="https://github.com/gitlabhq/gitlab-shell/archive/v${PV}.tar.gz -> 
${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="amd64 x86"
+IUSE=""
+
+DEPEND=""
+RDEPEND="
+       dev-vcs/git
+       dev-db/redis
+       virtual/ssh"
+ruby_add_bdepend "
+       virtual/ruby-ssl"
+
+MERGE_TYPE="binary"
+
+RUBY_PATCHES=(
+       "${PN}-1.7.1-paths-from-config.patch"
+       "${PN}-1.8.0-redis-db-option.patch"
+)
+
+GIT_USER="git"
+DEST_DIR="/usr/share/${PN}"
+DATA_DIR="/var/lib/git"
+LOGS_DIR="/var/log/gitlab"
+CONF_FILE="/etc/gitlab-shell.yml"
+
+pkg_setup() {
+       enewgroup ${GIT_USER}
+       enewuser ${GIT_USER} -1 /bin/bash ${DATA_DIR} "${GIT_USER}"
+
+       local git_shell=$(egetshell ${GIT_USER})
+       if [ ! ${git_shell} -ef '/bin/bash' ]; then
+               ewarn "User ${GIT_USER} already exists, but with the shell 
${git_shell}."
+               ewarn "Changing shell to /bin/bash ..."
+
+               usermod -s /bin/bash ${GIT_USER} \
+                       || die "failed to change login shell for ${GIT_USER}"
+       fi
+}
+
+all_ruby_prepare() {
+       # fix paths
+       sed -i -E \
+               -e "s|/home/git|${DATA_DIR}|" \
+               -e "s|[\# ]*(log_file: ).*|\1\"${LOGS_DIR}/gitlab-shell.log\"|" 
\
+               config.yml.example || die "failed to filter config.yml.example"
+
+       sed -i \
+               -e "s|File\.join(ROOT_PATH, 'config.yml')|'${CONF_FILE}'|" \
+               lib/gitlab_config.rb || die "failed to filter gitlab_config.rb"
+}
+
+all_ruby_install() {
+       # install lib
+       insinto ${DEST_DIR}; doins -r lib LICENSE README.md VERSION
+
+       # install scripts
+       exeinto ${DEST_DIR}/bin; doexe bin/*
+       exeinto ${DEST_DIR}/hooks; doexe hooks/*
+       exeinto ${DEST_DIR}/support; doexe support/*
+
+       # create symlinks to bin
+       local name; for name in $(basename -a bin/gitlab-*); do
+               dosym "${DEST_DIR}/bin/${name}" "/usr/bin/${name}"
+       done
+
+       insinto $(dirname ${CONF_FILE})
+       newins config.yml.example $(basename ${CONF_FILE})
+
+       # prepare directories
+       diropts -m750; dodir ${DATA_DIR}
+       diropts -m770; keepdir ${DATA_DIR}/repositories
+       diropts -m755; dodir ${LOGS_DIR}
+
+       # GitLab stupidly expects that gitlab-shell is in home of git user...
+       dosym ${DEST_DIR} ${DATA_DIR}/gitlab-shell
+
+       # fix permissions
+       fowners -R ${GIT_USER}:${GIT_USER} ${DATA_DIR} ${LOGS_DIR}
+}
+
+pkg_postinst() {
+       # check git home directory
+       local git_home=$(egethome ${GIT_USER})
+       if [ ! "${git_home}" -ef ${DATA_DIR} ]; then
+               ewarn "An authorized_keys is configured to be inside 
${DATA_DIR}/.ssh,"
+               ewarn "but HOME of ${GIT_USER} user is located in ${git_home}. 
You must"
+               ewarn "either change the authorized_keys location in 
${CONF_FILE},"
+               ewarn "or change home directory of ${GIT_USER} user to 
${DATA_DIR}"
+               ewarn "and move ${git_home}/.ssh here."
+               ewarn
+       fi
+
+       local auth_dir="${git_home}/.ssh"
+
+       elog "Initializing authorized_keys file in ${auth_dir}"
+       mkdir -p ${auth_dir}
+       touch ${auth_dir}/authorized_keys
+       chmod -R u=rwX,go=- ${auth_dir}
+       chown -R ${GIT_USER}:${GIT_USER} ${auth_dir}
+
+       elog
+       elog "GitLab Shell was initialized. Repositories are located in"
+       elog "${DATA_DIR}/repositories, scripts in ${DEST_DIR}/bin."
+       elog "All gitlab-* scripts was symlinked to /usr/bin to be on your 
path."
+       elog
+       elog "You should change your gitlab_url in: ${CONF_FILE}."
+}

Reply via email to