mirror of
https://github.com/ben-grande/qusal.git
synced 2025-03-19 13:56:18 -04:00
build: spec scriptlet fails when it is empty
Echoing the word true was getting evaluated instead of being assigned as a string.
This commit is contained in:
parent
fcad8cb3e1
commit
ff41103194
@ -1,4 +1,4 @@
|
||||
# SPDX-FileCopyrightText: 2023 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
||||
# SPDX-FileCopyrightText: 2023 - 2024 Benjamin Grande M. S. <ben.grande.b@gmail.com>
|
||||
#
|
||||
# SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
@ -8,10 +8,12 @@
|
||||
%define project %(./scripts/spec-get.sh @PROJECT@ project)
|
||||
%define summary %(./scripts/spec-get.sh @PROJECT@ summary)
|
||||
%define group %(./scripts/spec-get.sh @PROJECT@ group)
|
||||
%define packager %(./scripts/spec-get.sh @PROJECT@ packager)
|
||||
%define vendor %(./scripts/spec-get.sh @PROJECT@ vendor)
|
||||
%define license_csv %(./scripts/spec-get.sh @PROJECT@ license_csv)
|
||||
%define license %(./scripts/spec-get.sh @PROJECT@ license)
|
||||
%define url %(./scripts/spec-get.sh @PROJECT@ url)
|
||||
%define bug_url %(./scripts/spec-get.sh @PROJECT@ bug_url)
|
||||
%define my_description %(./scripts/spec-get.sh @PROJECT@ description)
|
||||
|
||||
## Reproducibility.
|
||||
@ -31,9 +33,11 @@ Release: 1%{?dist}
|
||||
Summary: %{summary}
|
||||
|
||||
Group: %{group}
|
||||
Packager: %{packager}
|
||||
Vendor: %{vendor}
|
||||
License: %{license}
|
||||
URL: %{url}
|
||||
BugURL: %{bug_url}
|
||||
Source0: %{project}
|
||||
BuildArch: noarch
|
||||
|
||||
@ -50,14 +54,18 @@ Requires: qubes-mgmt-salt-dom0
|
||||
|
||||
%install
|
||||
rm -rf %{buildroot}
|
||||
mkdir -p %{buildroot}%{file_roots} %{buildroot}%{_defaultlicensedir}/%{project}
|
||||
mv -v %{project}/LICENSES/* %{buildroot}%{_defaultlicensedir}/%{project}/
|
||||
rm -rv %{project}/LICENSES
|
||||
install -m 755 -d \
|
||||
%{buildroot}%{file_roots} \
|
||||
%{buildroot}%{_docdir}/%{project} \
|
||||
%{buildroot}%{_defaultlicensedir}/%{project}
|
||||
install -m 644 %{project}/LICENSES/* %{buildroot}%{_defaultlicensedir}/%{project}/
|
||||
install -m 644 %{project}/README.md %{buildroot}%{_docdir}/%{project}/
|
||||
rm -rv %{project}/LICENSES %{project}/README.md
|
||||
cp -rv %{project} %{buildroot}%{file_roots}/%{my_name}
|
||||
|
||||
%check
|
||||
|
||||
%pre
|
||||
%dnl %pre
|
||||
|
||||
%post
|
||||
if test "$1" = "1"; then
|
||||
@ -89,10 +97,10 @@ fi
|
||||
%files
|
||||
%defattr(-,root,root,-)
|
||||
%license %{_defaultlicensedir}/%{project}/*
|
||||
%doc %{_docdir}/%{project}/README.md
|
||||
%dir %{file_roots}/%{my_name}
|
||||
%doc %{file_roots}/%{my_name}/README.md
|
||||
%exclude %{file_roots}/%{my_name}/README.md
|
||||
%{file_roots}/%{my_name}/*
|
||||
%dnl TODO: missing '%ghost', files generated during %post, such as Qrexec policies.
|
||||
|
||||
%changelog
|
||||
@CHANGELOG@
|
||||
|
@ -59,7 +59,7 @@ build_rpm(){
|
||||
"${gpg}" --export --armor "${key_id}" | tee "${tmp_file}" >/dev/null
|
||||
rpmkeys --dbpath="${dbpath}" --import "${tmp_file}"
|
||||
## TODO: target only the latest relase
|
||||
rpm --dbpath="${dbpath}" --checksig --verbose \
|
||||
rpmkeys --dbpath="${dbpath}" --checksig --verbose \
|
||||
-- "${rpm_basename}"*"${rpm_suffix}"
|
||||
fi
|
||||
}
|
||||
|
@ -10,13 +10,25 @@ usage(){
|
||||
echo "Usage: ${0##*/} PROJECT [PROJECT ...]"
|
||||
}
|
||||
|
||||
## Escape multiline strings for sed.
|
||||
escaped_key(){
|
||||
echo "${1}" | sed ':a;N;$!ba;s/\n/\\n /g' | sed 's/\$/\\$/'
|
||||
}
|
||||
|
||||
|
||||
# get_scriptlet scriptlet-action
|
||||
# [pre|post]-[install|upgrade], [pre|post]un-[uninstall|upgrade]
|
||||
## Get scriptlet command, else fail safe.
|
||||
get_scriptlet(){
|
||||
scriptlet="$1"
|
||||
sed -n "/^<\!-- pkg:begin:${scriptlet} -->$/,/^<\!-- pkg:end:${scriptlet} -->$/p" \
|
||||
"${readme}" | sed '/^```.*/d;/^<\!-- pkg:/d;s/^sudo //' || echo "true"
|
||||
scriptlet="$(sed -n \
|
||||
"/^<\!-- pkg:begin:${scriptlet} -->$/,/^<\!-- pkg:end:${scriptlet} -->$/p" \
|
||||
"${readme}" | sed '/^```.*/d;/^<\!-- pkg:/d;s/^sudo //')"
|
||||
if test -z "${scriptlet}"; then
|
||||
echo true
|
||||
return 0
|
||||
fi
|
||||
escaped_key "${scriptlet}"
|
||||
}
|
||||
|
||||
get_spec(){
|
||||
@ -33,21 +45,16 @@ gen_spec(){
|
||||
template="rpm_spec/template/template.spec"
|
||||
target="rpm_spec/${group}-${project}.spec"
|
||||
|
||||
## Escape multiline strings for sed
|
||||
escaped_key(){
|
||||
echo "${1}" | sed ':a;N;$!ba;s/\n/\\n /g' | sed 's/\$/\\$/'
|
||||
}
|
||||
|
||||
readme="$(get_spec readme)"
|
||||
|
||||
pre_install="$(escaped_key "$(get_scriptlet pre-install)")"
|
||||
pre_upgrade="$(escaped_key "$(get_scriptlet pre-upgrade)")"
|
||||
post_install="$(escaped_key "$(get_scriptlet post-install)")"
|
||||
post_upgrade="$(escaped_key "$(get_scriptlet post-upgrade)")"
|
||||
preun_uninstall="$(escaped_key "$(get_scriptlet preun-uninstall)")"
|
||||
preun_upgrade="$(escaped_key "$(get_scriptlet preun-upgrade)")"
|
||||
postun_uninstall="$(escaped_key "$(get_scriptlet postun-uninstall)")"
|
||||
postun_upgrade="$(escaped_key "$(get_scriptlet postun-upgrade)")"
|
||||
pre_install="$(get_scriptlet pre-install)"
|
||||
pre_upgrade="$(get_scriptlet pre-upgrade)"
|
||||
post_install="$(get_scriptlet post-install)"
|
||||
post_upgrade="$(get_scriptlet post-upgrade)"
|
||||
preun_uninstall="$(get_scriptlet preun-uninstall)"
|
||||
preun_upgrade="$(get_scriptlet preun-upgrade)"
|
||||
postun_uninstall="$(get_scriptlet postun-uninstall)"
|
||||
postun_upgrade="$(get_scriptlet postun-upgrade)"
|
||||
|
||||
version="$(get_spec version)"
|
||||
changelog="$(get_spec changelog)"
|
||||
@ -69,7 +76,7 @@ gen_spec(){
|
||||
|
||||
requires_key=""
|
||||
for r in $(printf %s"${requires}" | tr " " "\n" | sort -u); do
|
||||
requires_key="${requires_key}\nRequires: ${group}-${r}"
|
||||
requires_key="${requires_key}\nRequires: ${group}-${r}"
|
||||
done
|
||||
sed -i "s/@REQUIRES@/${requires_key}/" "${target}" >/dev/null
|
||||
echo "${changelog}" | tee -a "${target}" >/dev/null
|
||||
|
@ -27,7 +27,7 @@ block_max_chars(){
|
||||
fi
|
||||
}
|
||||
|
||||
keys="name branch group file_roots requires vendor url version project project_dir changelog readme license_csv license description summary saltfiles"
|
||||
keys="name branch group file_roots requires packager vendor url bug_url version project project_dir changelog readme license_csv license description summary saltfiles"
|
||||
|
||||
name=""
|
||||
key=""
|
||||
@ -56,8 +56,10 @@ fi
|
||||
group="qusal"
|
||||
block_max_chars group "${group}" 70
|
||||
file_roots="/srv/salt/${group}"
|
||||
vendor="Benjamin Grande"
|
||||
url="https://github.com/ben-grande/qusal"
|
||||
vendor="${QUSAL_VENDOR:-"Benjamin Grande"}"
|
||||
packager="${QUSAL_PACKAGER:-"Benjamin Grande"}"
|
||||
url="${QUSAL_URL:-"https://github.com/ben-grande/qusal"}"
|
||||
bug_url="${QUSAL_BUGURL:-"https://github.com/ben-grande/qusal/issues"}"
|
||||
version="1.0"
|
||||
|
||||
project="${group}-${name}"
|
||||
@ -88,12 +90,13 @@ if test "${key}" = "changelog"; then
|
||||
fi
|
||||
|
||||
if test "${key}" = "description"; then
|
||||
description="$(sed -n '/^## Description/,/^## /p' "${readme}" |
|
||||
description="$(sed -n '/^## Description/,/^## /p' -- "${readme}" |
|
||||
sed '1d;$d' | sed "1{/^$/d}")"
|
||||
fi
|
||||
|
||||
if test "${key}" = "summary"; then
|
||||
summary="$(sed -n "/^# ${name}$/,/^## Table of Contents$/{/./!d;/^#/d;p}" "${readme}")"
|
||||
summary="$(sed -n "/^# ${name}$/,/^## Table of Contents$/{
|
||||
/./!d; /^#/d; s/\.$//; p}" -- "${readme}")"
|
||||
block_max_chars summary "${summary}" 70
|
||||
fi
|
||||
|
||||
@ -101,7 +104,7 @@ if test "${key}" = "saltfiles" || test "${key}" = "requires"; then
|
||||
saltfiles="$(find "${project_dir}" -maxdepth 1 -name "*.sls")"
|
||||
# shellcheck disable=SC2086
|
||||
if test -n "${saltfiles}"; then
|
||||
requires="$(sed -n '/^include:$/,/^\s*$/p' ${saltfiles} | sed "/^\s*- \./d;/{/d" | grep "^\s*- " | cut -d "." -f1 | sort -u | sed "s/- //")"
|
||||
requires="$(sed -n '/^include:$/,/^\s*$/p' -- ${saltfiles} | sed "/^\s*- \./d;/{/d" | grep "^\s*- " | cut -d "." -f1 | sort -u | sed "s/- //")"
|
||||
if grep -qrn "{%-\? from \('\|\"\)utils" ${saltfiles}; then
|
||||
if test -n "${requires}"; then
|
||||
requires="${requires} utils"
|
||||
@ -140,6 +143,8 @@ case "${key}" in
|
||||
saltfiles) echo "${saltfiles}";;
|
||||
summary) echo "${summary}";;
|
||||
url) echo "${url}";;
|
||||
bug_url) echo "${bug_url}";;
|
||||
vendor) echo "${vendor}";;
|
||||
packager) echo "${packager}";;
|
||||
version) echo "${version}";;
|
||||
esac
|
||||
|
Loading…
x
Reference in New Issue
Block a user