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