Allow to opt-out from shebang mangling for specific paths/shebangs
Introduces __brp_mangle_shebangs_exclude_from and __brp_mangle_shebangs_exclude * the first allows to explude specific paths from the mangling * the second allows to exlude specific shebangs Both are used with `grep -E`. Similar escaping rules as in [1] apply. [1] https://fedoraproject.org/wiki/Packaging:AutoProvidesAndRequiresFiltering
This commit is contained in:
parent
6bc9480501
commit
fb05a239d2
@ -5,6 +5,9 @@ if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
exclude_files="${1:-}"
|
||||||
|
exclude_shebangs="${2:-}"
|
||||||
|
|
||||||
cd "$RPM_BUILD_ROOT"
|
cd "$RPM_BUILD_ROOT"
|
||||||
|
|
||||||
trim() {
|
trim() {
|
||||||
@ -14,10 +17,21 @@ trim() {
|
|||||||
fail=0
|
fail=0
|
||||||
for f in $(find -executable -type f | xargs --no-run-if-empty file -N --mime-type | grep -Po "^\K.+(?=: text/)"); do
|
for f in $(find -executable -type f | xargs --no-run-if-empty file -N --mime-type | grep -Po "^\K.+(?=: text/)"); do
|
||||||
|
|
||||||
|
# Remove the dot
|
||||||
|
path="${f#.}"
|
||||||
|
|
||||||
|
if [ -n "$exclude_files" ]; then
|
||||||
|
echo "$path" | grep -q -E "$exclude_files" && continue
|
||||||
|
fi
|
||||||
|
|
||||||
ts=$(stat -c %y "$f")
|
ts=$(stat -c %y "$f")
|
||||||
|
|
||||||
read orig_shebang < "$f" || :
|
read orig_shebang < "$f" || :
|
||||||
shebang=$(trim $(echo "$orig_shebang" | grep -Po "#!\K.*" || echo))
|
shebang=$(trim $(echo "$orig_shebang" | grep -Po "#!\K.*" || echo))
|
||||||
|
if [ -n "$exclude_shebangs" ]; then
|
||||||
|
echo "$shebang" | grep -q -E "$exclude_shebangs" && continue
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -z "$shebang" ]; then
|
if [ -z "$shebang" ]; then
|
||||||
echo >&2 "*** WARNING: $f is executable but has empty or no shebang, removing executable bit"
|
echo >&2 "*** WARNING: $f is executable but has empty or no shebang, removing executable bit"
|
||||||
chmod -x "$f"
|
chmod -x "$f"
|
||||||
@ -44,10 +58,10 @@ for f in $(find -executable -type f | xargs --no-run-if-empty file -N --mime-typ
|
|||||||
|
|
||||||
if [ "$shebang" != "$py_shebang" ]; then
|
if [ "$shebang" != "$py_shebang" ]; then
|
||||||
sed -i -e "1c #!$py_shebang" "$f"
|
sed -i -e "1c #!$py_shebang" "$f"
|
||||||
echo >&2 "*** WARNING: mangling shebang in $f from $orig_shebang to #!$py_shebang. This will become an ERROR, fix it manually!"
|
echo >&2 "*** WARNING: mangling shebang in $path from $orig_shebang to #!$py_shebang. This will become an ERROR, fix it manually!"
|
||||||
elif [ "#!$shebang" != "$orig_shebang" ]; then
|
elif [ "#!$shebang" != "$orig_shebang" ]; then
|
||||||
sed -i -e "1c #!$shebang" "$f"
|
sed -i -e "1c #!$shebang" "$f"
|
||||||
echo "mangling shebang in $f from $orig_shebang to #!$shebang"
|
echo "mangling shebang in $path from $orig_shebang to #!$shebang"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
touch -d "$ts" "$f"
|
touch -d "$ts" "$f"
|
||||||
|
2
macros
2
macros
@ -143,7 +143,7 @@
|
|||||||
%__brp_strip_static_archive /usr/lib/rpm/brp-strip-static-archive %{__strip}
|
%__brp_strip_static_archive /usr/lib/rpm/brp-strip-static-archive %{__strip}
|
||||||
%__brp_python_bytecompile /usr/lib/rpm/brp-python-bytecompile %{__python} %{?_python_bytecompile_errors_terminate_build}
|
%__brp_python_bytecompile /usr/lib/rpm/brp-python-bytecompile %{__python} %{?_python_bytecompile_errors_terminate_build}
|
||||||
%__brp_python_hardlink /usr/lib/rpm/brp-python-hardlink
|
%__brp_python_hardlink /usr/lib/rpm/brp-python-hardlink
|
||||||
%__brp_mangle_shebangs /usr/lib/rpm/redhat/brp-mangle-shebangs
|
%__brp_mangle_shebangs /usr/lib/rpm/redhat/brp-mangle-shebangs "%{?__brp_mangle_shebangs_exclude_from}" "%{?__brp_mangle_shebangs_exclude}"
|
||||||
|
|
||||||
%__os_install_post \
|
%__os_install_post \
|
||||||
%{?__brp_ldconfig} \
|
%{?__brp_ldconfig} \
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
Summary: Red Hat specific rpm configuration files
|
Summary: Red Hat specific rpm configuration files
|
||||||
Name: redhat-rpm-config
|
Name: redhat-rpm-config
|
||||||
Version: 96
|
Version: 97
|
||||||
Release: 1%{?dist}
|
Release: 1%{?dist}
|
||||||
# No version specified.
|
# No version specified.
|
||||||
License: GPL+
|
License: GPL+
|
||||||
@ -183,6 +183,9 @@ install -p -m 755 -t %{buildroot}%{_rpmconfigdir} kmod.prov
|
|||||||
%{_rpmconfigdir}/macros.d/macros.kmp
|
%{_rpmconfigdir}/macros.d/macros.kmp
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Wed Feb 14 2018 Miro Hrončok <mhroncok@redhat.com> - 97-1
|
||||||
|
- Allow to opt-out from shebang mangling for specific paths/shebangs
|
||||||
|
|
||||||
* Thu Feb 08 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 96-1
|
* Thu Feb 08 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 96-1
|
||||||
- Simplify/Fix check for shebang starting with "/"
|
- Simplify/Fix check for shebang starting with "/"
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user