Files
George T Kramer 843439f0eb Conditionally run swupd during setup
swupd should only be run during setup when on an officially released
version of Clear that has an upadate stream.  Development versions are
usually indicated when the VERSION_ID is equal to 1 and do not have an
update stream.  In these cases, the assumption is that all required
software is already installed prior to setup.

However, add checks for only the most critical dependencies before
continuing with the setup so that it more obvious to the user that these
are missing when they are.

Signed-off-by: George T Kramer <george.t.kramer@intel.com>
2019-10-03 14:43:43 -07:00

168 lines
3.9 KiB
Bash
Executable File

#!/bin/bash
# Copyright (C) 2019 Intel Corporation
# SPDX-License-Identifier: Apache-2.0
set -xe
SCRIPT_DIR="$(dirname "$(realpath "$0")")"
source "$SCRIPT_DIR"/globals.sh
source "$SCRIPT_DIR"/parameters.sh
swupd bundle-add scm-server || :
check_dependency gitolite
check_dependency git
## GITOLITE SETUP
mkdir -p "$GIT_DIR"
chown -R "$GIT_USER":"$GIT_USER" "$GIT_DIR"
# Add symlink for backwards compatibility
if [[ "$GIT_DIR" != "$GIT_DEFAULT_DIR" ]]; then
if [ "$(ls -A "$GIT_DEFAULT_DIR")" ]; then
mv "$GIT_DEFAULT_DIR" "$GIT_DEFAULT_DIR".old
else
rm -rf "$GIT_DEFAULT_DIR"
fi
ln -sf "$GIT_DIR" "$GIT_DEFAULT_DIR"
chown -h "$GIT_USER":"$GIT_USER" "$GIT_DEFAULT_DIR"
fi
GITOLITE_PUB_KEY_FILE="$GIT_DEFAULT_DIR/gitolite.pub"
echo "$GITOLITE_PUB_KEY" > "$GITOLITE_PUB_KEY_FILE"
chown "$GIT_USER":"$GIT_USER" "$GITOLITE_PUB_KEY_FILE"
sudo -u "$GIT_USER" gitolite setup -pk "$GITOLITE_PUB_KEY_FILE"
usermod -s /bin/bash gitolite
if $IS_ANONYMOUS_GIT_NEEDED; then
swupd bundle-add httpd || :
check_dependency httpd
## GIT PROTOCOL CLONING
mkdir -p /etc/systemd/system
cat > /etc/systemd/system/git-daemon.service <<- EOF
[Unit]
Description=Git Daemon
[Service]
ExecStart=/usr/bin/git daemon --export-all --reuseaddr --base-path=$GIT_DEFAULT_DIR/repositories $GIT_DEFAULT_DIR/repositories
Restart=always
RestartSec=500ms
User=$GIT_USER
Group=$GIT_USER
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now git-daemon
## CGIT WEB INTERFACE
cat > /etc/cgitrc <<- EOF
# Enable caching of up to 1000 output entries
cache-size=10
# Specify the css url
css=/cgit-data/cgit.css
# Show extra links for each repository on the index page
enable-index-links=1
# Enable ASCII art commit history graph on the log pages
enable-commit-graph=1
# Show number of affected files per commit on the log pages
enable-log-filecount=1
# Show number of added/removed lines per commit on the log pages
enable-log-linecount=1
# Use a custom logo
logo=/cgit-data/cgit.png
# Enable statistics per week, month and quarter
max-stats=quarter
# Allow download of tar.gz, tar.bz2, and tar.xz formats
snapshots=tar.gz tar.bz2 tar.xz
##
## List of common mimetypes
##
mimetype.gif=image/gif
mimetype.html=text/html
mimetype.jpg=image/jpeg
mimetype.jpeg=image/jpeg
mimetype.pdf=application/pdf
mimetype.png=image/png
mimetype.svg=image/svg+xml
# Enable syntax highlighting and about formatting
source-filter=/usr/libexec/cgit/filters/syntax-highlighting.py
about-filter=/usr/libexec/cgit/filters/about-formatting.sh
##
## List of common readmes
##
readme=:README.md
readme=:readme.md
readme=:README.mkd
readme=:readme.mkd
readme=:README.rst
readme=:readme.rst
readme=:README.html
readme=:readme.html
readme=:README.htm
readme=:readme.htm
readme=:README.txt
readme=:readme.txt
readme=:README
readme=:readme
readme=:INSTALL.md
readme=:install.md
readme=:INSTALL.mkd
readme=:install.mkd
readme=:INSTALL.rst
readme=:install.rst
readme=:INSTALL.html
readme=:install.html
readme=:INSTALL.htm
readme=:install.htm
readme=:INSTALL.txt
readme=:install.txt
readme=:INSTALL
readme=:install
# Direct cgit to repository location managed by gitolite
remove-suffix=1
project-list=$GIT_DEFAULT_DIR/projects.list
scan-path=$GIT_DEFAULT_DIR/repositories
EOF
mkdir -p /etc/httpd/conf.modules.d
cat > /etc/httpd/conf.modules.d/cgid.conf <<- EOF
LoadModule cgid_module lib/httpd/modules/mod_cgid.so
ScriptSock /run/httpd/cgid.sock
EOF
mkdir -p /etc/httpd/conf.d
cat > /etc/httpd/conf.d/cgit.conf <<- EOF
Alias /cgit-data /usr/share/cgit
<Directory "/usr/share/cgit">
AllowOverride None
Options None
Require all granted
</Directory>
ScriptAlias /cgit /usr/libexec/cgit/cgi-bin/cgit
<Directory "/usr/libexec/cgit">
AllowOverride None
Options ExecCGI
Require all granted
</Directory>
EOF
usermod -a -G "$GIT_USER" "$HTTPD_USER"
systemctl restart httpd
systemctl enable httpd
fi