diff options
author | Marc Schiffbauer <mschiff@gentoo.org> | 2014-05-22 00:48:57 +0200 |
---|---|---|
committer | Marc Schiffbauer <mschiff@gentoo.org> | 2014-05-22 00:48:57 +0200 |
commit | b2f32465e14bc0f9a96193f576dae300fe59ad87 (patch) | |
tree | c14d50b32ab0fc40dbc3ad1baa9a03154e794835 | |
parent | added gitlabhq ebuidld (based on cvut overlay) (diff) | |
download | mschiff-b2f32465e14bc0f9a96193f576dae300fe59ad87.tar.gz mschiff-b2f32465e14bc0f9a96193f576dae300fe59ad87.tar.bz2 mschiff-b2f32465e14bc0f9a96193f576dae300fe59ad87.zip |
added gitlab-shell ebuild (based on cvut overlay)
4 files changed, 186 insertions, 0 deletions
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}." +} |