You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
236 lines
6.3 KiB
236 lines
6.3 KiB
#!/usr/bin/env bash |
|
|
|
BUILD_DIR="$(realpath $(dirname "${BASH_SOURCE[0]}"))" |
|
REPO_DIR="$(dirname "${BUILD_DIR}")" |
|
INSTALL_ROOT="${BUILD_DIR}/install_root" |
|
PKGNAME='web-greeter' |
|
DESTDIR='' |
|
PREFIX='' |
|
|
|
clean_build_dir() { |
|
find "${BUILD_DIR}" -type f ! -path '**/ci/**' ! -name '*.yml' ! -path "**/DEBIAN/**" ! -name \ |
|
utils.sh ! -name setup_log -delete |
|
find "${BUILD_DIR}" -type d ! -name build ! -path '**/ci' -delete 2>/dev/null || true |
|
} |
|
|
|
combine_javascript_sources() { |
|
cd "${BUILD_DIR}/${PKGNAME}/resources/js" |
|
cat ThemeUtils.js \ |
|
bootstrap.js > bundle.js |
|
} |
|
|
|
do_build() { |
|
cd "${BUILD_DIR}" |
|
|
|
# Compile Resources |
|
(combine_javascript_sources \ |
|
&& pyrcc5 -o "${BUILD_DIR}/${PKGNAME}/resources.py" ../resources.qrc \ |
|
&& cp "${BUILD_DIR}/${PKGNAME}/resources.py" "${REPO_DIR}/src") |
|
|
|
# Create "Zip Application" |
|
(cd "${PKGNAME}" \ |
|
&& zip -rq ../"${PKGNAME}.zip" . -x '**__pycache__**' 'resources/*' \ |
|
&& cd - >/dev/null \ |
|
&& mkdir -p "${INSTALL_ROOT}${PREFIX}"/{bin,share} \ |
|
&& echo '#!/usr/bin/env python3' >> "${INSTALL_ROOT}${PREFIX}/bin/web-greeter" \ |
|
&& cat web-greeter.zip >> "${INSTALL_ROOT}${PREFIX}/bin/web-greeter" \ |
|
&& chmod +x "${INSTALL_ROOT}${PREFIX}/bin/web-greeter") |
|
} |
|
|
|
do_build_freeze() { |
|
cd "${BUILD_DIR}" |
|
|
|
echo "Building web-greeter with cx_freeze..." |
|
python3 "${BUILD_DIR}/${PKGNAME}/setup.py" build >& setup_log |
|
echo "setup.py log inside ${BUILD_DIR}/setup_log" |
|
|
|
mkdir -p "${INSTALL_ROOT}"/opt/web-greeter |
|
mv "${BUILD_DIR}/${PKGNAME}"/dist/* "${INSTALL_ROOT}"/opt/web-greeter/ |
|
} |
|
|
|
do_install() { |
|
[[ -e "${DESTDIR}" ]] || mkdir -p "${DESTDIR}" |
|
cp -R "${INSTALL_ROOT}"/* "${DESTDIR}" |
|
if [[ -e "${DESTDIR}"/opt/web-greeter ]]; then |
|
opt_web=$(echo "${DESTDIR}"/opt/web-greeter/web-greeter | sed -E 's/\/\//\//g') |
|
dest_bin=$(echo "${DESTDIR}"/"${PREFIX}"/bin/web-greeter | sed -E 's/\/\//\//g') |
|
ln -sf "${opt_web}" "${dest_bin}" |
|
fi |
|
} |
|
|
|
init_build_dir() { |
|
[[ -e "${BUILD_DIR}/web-greeter" ]] && rm -rf "${BUILD_DIR}/web-greeter" |
|
[[ -e "${BUILD_DIR}/dist" ]] && rm -rf "${BUILD_DIR}/dist" |
|
rsync -a "${REPO_DIR}/src/" "${BUILD_DIR}/web-greeter" --exclude "dist" --exclude "__pycache__" |
|
rsync -a "${REPO_DIR}/dist" "${BUILD_DIR}" |
|
cp "${REPO_DIR}/NEWS.md" "${BUILD_DIR}/dist/NEWS.md" |
|
cp "${REPO_DIR}/README.md" "${BUILD_DIR}/web-greeter/" |
|
} |
|
|
|
prepare_install() { |
|
cd "${BUILD_DIR}" |
|
INSTALL_PREFIX=$(echo ${INSTALL_ROOT}/${PREFIX} | sed -E 's/\/\//\//g') |
|
mkdir -p \ |
|
"${INSTALL_PREFIX}"/share/{man/man1,metainfo,doc/web-greeter,web-greeter,xgreeters,applications,zsh/vendor-completions,bash-completion/completions} \ |
|
"${INSTALL_ROOT}"/etc/{lightdm,xdg/lightdm/lightdm.conf.d} \ |
|
"${INSTALL_PREFIX}"/bin |
|
|
|
# Themes |
|
(cp -R "${REPO_DIR}/themes" "${INSTALL_PREFIX}/share/web-greeter" \ |
|
&& cd "${INSTALL_PREFIX}/share/web-greeter" \ |
|
&& mv themes/_vendor .) |
|
|
|
# Man Page |
|
gzip -c9 "${BUILD_DIR}/dist/${PKGNAME}.1" > "${INSTALL_PREFIX}/share/man/man1/${PKGNAME}.1.gz" |
|
|
|
# News |
|
gzip -c9 "${BUILD_DIR}/dist/NEWS.md" > "${INSTALL_PREFIX}/share/doc/web-greeter/NEWS.gz" |
|
|
|
# Command line completions |
|
if [[ -f /usr/bin/bash ]]; then |
|
cp "${BUILD_DIR}/dist/${PKGNAME}-bash" "${INSTALL_PREFIX}/share/bash-completion/completions/${PKGNAME}" |
|
fi |
|
if [[ -f /usr/bin/zsh ]]; then |
|
cp "${BUILD_DIR}/dist/${PKGNAME}-zsh" "${INSTALL_PREFIX}/share/zsh/vendor-completions/_${PKGNAME}" |
|
fi |
|
|
|
# Greeter Config |
|
cp "${BUILD_DIR}/dist/${PKGNAME}.yml" "${INSTALL_ROOT}/etc/lightdm" |
|
|
|
# AppData File |
|
cp "${BUILD_DIR}/dist/${PKGNAME}.appdata.xml" "${INSTALL_PREFIX}/share/metainfo" |
|
|
|
# Greeter desktop File |
|
cp "${BUILD_DIR}/dist/web-xgreeter.desktop" "${INSTALL_PREFIX}/share/xgreeters/web-greeter.desktop" |
|
|
|
# Application desktop File |
|
cp "${BUILD_DIR}/dist/web-greeter.desktop" "${INSTALL_PREFIX}/share/applications/web-greeter.desktop" |
|
|
|
# Xgreeter wrapper |
|
cp "${BUILD_DIR}/dist/90-greeter-wrapper.conf" \ |
|
"${INSTALL_ROOT}/etc/xdg/lightdm/lightdm.conf.d/90-greeter-wrapper.conf" |
|
|
|
install -Dm755 "${BUILD_DIR}/dist/Xgreeter" "${INSTALL_ROOT}/etc/lightdm/Xgreeter" |
|
|
|
# Don't install hidden files |
|
find "${INSTALL_ROOT}" -type f -name '.git*' -delete |
|
rm -rf "${INSTALL_PREFIX}/share/web-greeter/themes/default/.tx" |
|
|
|
if [[ "${DESTDIR}" != '/' ]]; then |
|
# Save a list of installed files for uninstall command |
|
find "${INSTALL_ROOT}" -fprint /tmp/.installed_files |
|
|
|
while read _file |
|
do |
|
[[ -d "${_file}" && *'/web-greeter/'* != "${_file}" ]] && continue |
|
|
|
echo "${_file##*/install_root}" >> "${INSTALL_PREFIX}/share/web-greeter/.installed_files" |
|
|
|
done < /tmp/.installed_files |
|
|
|
rm /tmp/.installed_files |
|
fi |
|
} |
|
|
|
do_uninstall() { |
|
# Man Page |
|
DESTDIR_PREFIX=$(echo ${DESTDIR}/${PREFIX} | sed -E 's/\/\//\//g') |
|
rm -f ${DESTDIR_PREFIX}/share/man/man1/web-greeter.1 |
|
|
|
# Command line completions |
|
if [[ -f /usr/bin/bash ]]; then |
|
rm -f ${DESTDIR_PREFIX}/share/bash-completion/completions/${PKGNAME} |
|
fi |
|
if [[ -f /usr/bin/zsh ]]; then |
|
rm -f ${DESTDIR_PREFIX}/share/zsh/vendor-completions/_${PKGNAME} |
|
fi |
|
|
|
# Greeter Config |
|
#rm ${DESTDIR}/etc/lightdm/${PKGNAME}.yml |
|
|
|
# Themes |
|
#rm -rf ${DESTDIR_PREFIX}/share/web-greeter |
|
|
|
# AppData File |
|
rm -f ${DESTDIR_PREFIX}/share/metainfo/${PKGNAME}.appdata.xml |
|
|
|
# Greeter desktop file |
|
rm -f ${DESTDIR_PREFIX}/share/xgreeters/web-greeter.desktop |
|
|
|
# Application desktop file |
|
rm -f ${DESTDIR_PREFIX}/share/applications/web-greeter.desktop |
|
|
|
# XGreeter wrapper |
|
rm -f ${DESTDIR}/etc/xdg/lightdm/lightdm.conf.d/90-greeter-wrapper.conf |
|
rm -f ${DESTDIR}/etc/lightdm/Xgreeter |
|
|
|
# Binary |
|
rm -f ${DESTDIR_PREFIX}/bin/web-greeter |
|
[[ -e "${DESTDIR}"/opt/web-greeter ]] && rm -rf ${DESTDIR}/opt/web-greeter |
|
|
|
echo "Themes are not uninstalled. Remove them manually: |
|
${DESTDIR_PREFIX}/share/web-greeter/" |
|
echo "web-greeter config was not uninstalled. Remove it manually: |
|
${DESTDIR}/etc/lightdm/${PKGNAME}.yml" |
|
} |
|
|
|
set_config() { |
|
[[ -z "$1" || -z "$2" ]] && return 1 |
|
|
|
sed -i "s|'@$1@'|$2|g" \ |
|
"${BUILD_DIR}/dist/web-greeter.yml" |
|
} |
|
|
|
|
|
|
|
cd "${REPO_DIR}/build" >/dev/null |
|
|
|
case "$1" in |
|
combine-js) |
|
combine_javascript_sources |
|
;; |
|
|
|
clean) |
|
clean_build_dir |
|
;; |
|
|
|
build) |
|
PREFIX="$2" |
|
do_build |
|
;; |
|
|
|
build_freeze) |
|
PREFIX="$2" |
|
do_build_freeze |
|
;; |
|
|
|
build-init) |
|
init_build_dir |
|
;; |
|
|
|
gen-pot) |
|
generate_pot_file |
|
;; |
|
|
|
install) |
|
DESTDIR="$2" |
|
PREFIX="$3" |
|
do_install |
|
clean_build_dir |
|
;; |
|
|
|
prepare-install) |
|
PREFIX="$2" |
|
prepare_install |
|
;; |
|
|
|
uninstall) |
|
DESTDIR="$2" |
|
PREFIX="$3" |
|
do_uninstall |
|
;; |
|
|
|
set-config) |
|
set_config "$2" "$3" |
|
;; |
|
esac
|
|
|