Git Repositories

e6d5d4380f01eb0c4ba0f5d427e0f98eba5808dc
[simple-git-host.git] / Makefile
1 include config.mk
2
3 all: _options gen/.website
4
5 _options:
6         @echo Build options:
7         @echo "  PREFIX = ${PREFIX}"
8         @echo "  LOGS = ${LOGS}"
9         @echo "  WEB_BASE_DIR = ${WEB_BASE_DIR}"
10         @echo "  GITWEB_DIR = ${GITWEB_DIR}"
11         @echo "  GIT_HOSTNAME = ${GIT_HOSTNAME}"
12         @echo "  GIT_HOSTPORT = ${GIT_HOSTPORT}"
13         @echo "  GIT_USER = ${GIT_USER}"
14         @echo "  GIT_HOME = ${GIT_HOME}"
15         @echo "  WEB_USER = ${WEB_USER}"
16         @echo "  WEB_TYPE = ${WEB_TYPE}"
17         @echo "  WEB_TITLE = ${WEB_TITLE}"
18         @echo ""
19
20 gen/home:
21         @mkdir -p $@
22
23 gen/www/$(WEB_BASE_DIR):
24         @mkdir -p $@
25
26 gen/sudoers.d:
27         @mkdir -p $@
28
29 gen/sudoers.d/git:
30         @sed "s,__WEB_USER__,${WEB_USER},; s,__GIT_USER__,${GIT_USER},; s,__GIT_HOME__,${GIT_HOME},;" tpl/git.sudo > $@
31         @visudo -c -f $@ || cat /dev/null > $@
32
33 gen/www/$(WEB_BASE_DIR)config.inc.php:
34         @echo '<?php' > $@
35         @echo '$$title = "${WEB_TITLE}";' >> $@
36         @echo '$$githost = "${GIT_HOSTNAME}";' >> $@
37         @echo '$$gitwebroot = "${WEB_BASE_DIR}";' >> $@
38         @echo '$$gituser = "${GIT_USER}";' >> $@
39         @echo '$$gitdir = "${GIT_HOME}";' >> $@
40         @echo '$$gitwebpath = "${GITWEB_DIR}";' >> $@
41         @echo '?>' >> $@
42
43 gen/git-daemon.example:
44         @echo "# If you want to enable anonymous read-only git protocol on the repositories, run this:" > $@
45         @echo "git daemon --listen=0.0.0.0 --reuseaddr --base-path=${GIT_HOME} --user=${WEB_USER} --detach ${GIT_HOME}" >> $@
46
47 gen/nginx.conf:
48         @sed -r 's,__PREFIX__,${PREFIX},g; s,__LOGS__,${LOGS},g; s,__WEB_BASE_DIR__,${WEB_BASE_DIR},g; s,__GITWEB_DIR__,${GITWEB_DIR},g; s,__GIT_HOSTNAME__,${GIT_HOSTNAME},g; s,__GIT_HOSTPORT__,${GIT_HOSTPORT},g; s,__GIT_USER__,${GIT_USER},g; s,__GIT_HOME__,${GIT_HOME},g;' tpl/nginx.conf > $@
49
50 gen/apache.conf:
51         @sed -r 's,__PREFIX__,${PREFIX},g; s,__LOGS__,${LOGS},g; s,__WEB_BASE_DIR__,${WEB_BASE_DIR},g; s,__GITWEB_DIR__,${GITWEB_DIR},g; s,__GIT_HOSTNAME__,${GIT_HOSTNAME},g; s,__GIT_HOSTPORT__,${GIT_HOSTPORT},g; s,__GIT_USER__,${GIT_USER},g; s,__GIT_HOME__,${GIT_HOME},g;' tpl/apache.conf > $@
52
53 gen/none.conf:
54         touch $@
55
56 gen/.website: gen/home gen/www/$(WEB_BASE_DIR) gen/sudoers.d gen/sudoers.d/git gen/www/$(WEB_BASE_DIR)config.inc.php gen/git-daemon.example gen/$(WEB_TYPE).conf
57         @cp -r homegit/* gen/home/
58         @cp -r src/* src/.??* gen/www/${WEB_BASE_DIR}
59         (cd git-master/gitweb && make prefix=/usr GITWEB_PROJECTROOT=${GIT_HOME} GITWEB_PROJECT_MAXDEPTH=50 GITWEB_EXPORT_OK=git-daemon-export-ok GITWEB_HOME_LINK_STR=/${WEB_BASE_DIR} GITWEB_SITENAME="${WEB_TITLE}" gitwebdir=${PREFIX}/${WEB_BASE_DIR}${GITWEB_DIR} all)
60         @touch $@
61         @echo "Run 'make install' to install the git repositories and the web site"
62
63 clean:
64         @rm -rf gen
65         (cd git-master/gitweb && make clean)
66
67 install: _root gen/.website _githome _webhome _sudo
68         (cd git-master/gitweb && make prefix=/usr GITWEB_PROJECTROOT=${GIT_HOME} GITWEB_PROJECT_MAXDEPTH=50 GITWEB_EXPORT_OK=git-daemon-export-ok GITWEB_HOME_LINK_STR=/${WEB_BASE_DIR} GITWEB_SITENAME="${WEB_TITLE}" gitwebdir=${PREFIX}/${WEB_BASE_DIR}${GITWEB_DIR} install)
69         @echo ""
70         @echo "Installation complete."
71         @echo ""
72         @echo "Please configure your web server using gen/${WEB_TYPE}.conf."
73         @echo "A git-daemon example script is also available in gen/git-daemon.example."
74         @echo "  Adapt it to your OS service system."
75         @echo ""
76         @echo "/!\ Don't forget to create a new admin user using: make adminuser"
77
78 _root:
79         @if [ $$(id -u) -ne 0 ]; then echo "You need to be root."; exit 1; fi
80
81 _githome:
82         @if grep -q "^${GIT_USER}:" /etc/passwd; then usermod -s /usr/bin/git-shell -L ${GIT_USER}; usermod -a -G $$(groups ${GIT_USER}|cut -d: -f2-|awk '{print $$1}') ${WEB_USER}; else useradd -d ${GIT_HOME} -m -r -s /usr/bin/git-shell -U ${GIT_USER}; usermod -a -G ${GIT_USER} ${WEB_USER}; fi
83         @cp -rv gen/home/* ${GIT_HOME}/
84         
85 _webhome:
86         @mkdir -p ${PREFIX}
87         @cp -rv gen/www/* ${PREFIX}/
88
89 _sudo:
90         @cp gen/sudoers.d/git /etc/sudoers.d/git
91         @chmod ug=r,o= /etc/sudoers.d/git
92
93 adminuser: _root
94         @echo "New admin user creation"
95         @echo ""
96         @sh -c 'echo -n "Username: "; read gituser; echo -n "Password: ";       read -s gitpass; gitpass=$$(echo "$$gitpass"|md5sum|cut -d" " -f1); sudo -u ${GIT_USER} ${GIT_HOME}/gitrepo.sh create-user $$gituser $$gitpass; sudo -u ${GIT_USER} ${GIT_HOME}/gitrepo.sh user-set-admin $$gituser true'
97
98 .PHONY: all _options clean install _root _githome _webhome _sudo adminuser