| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- #!/bin/sh
- #
- # Output a simple RPM spec file.
- # This version assumes a minimum of RPM 4.13
- #
- # The only gothic bit here is redefining install_post to avoid
- # stripping the symbols from files in the kernel which we want
- #
- # Patched for non-x86 by Opencon (L) 2002 <opencon@rio.skydome.net>
- #
- set -eu
- output=$1
- mkdir -p "$(dirname "${output}")"
- exec >"${output}"
- if grep -q CONFIG_MODULES=y include/config/auto.conf; then
- echo '%define with_devel %{?_without_devel: 0} %{?!_without_devel: 1}'
- else
- echo '%define with_devel 0'
- fi
- # use %{debug_package} machinery to generate -debuginfo
- with_debuginfo_rpm=0
- # manually generate -debuginfo package
- with_debuginfo_manual=0
- # debuginfo package generation uses find-debuginfo.sh under the hood,
- # which only works on uncompressed modules that contain debuginfo
- if grep -q CONFIG_DEBUG_INFO=y include/config/auto.conf &&
- (! grep -q CONFIG_MODULE_COMPRESS=y include/config/auto.conf) &&
- (! grep -q CONFIG_DEBUG_INFO_SPLIT=y include/config/auto.conf); then
- # If module signing is enabled (which may be required to boot with
- # lockdown enabled), the find-debuginfo.sh machinery cannot be used
- # because the signatures will be stripped off the modules. However, due
- # to an rpm bug in versions prior to 4.20.0
- #
- # https://github.com/rpm-software-management/rpm/issues/3057
- # https://github.com/rpm-software-management/rpm/commit/49f906998f3cf1f4152162ca61ac0869251c380f
- #
- # We cannot provide our own debuginfo package because it does not listen
- # to our custom files list, failing the build due to unpackaged files.
- # Manually generate the debug info package if using rpm 4.20.0. If not
- # using rpm 4.20.0, avoid generating a -debuginfo package altogether,
- # as it is not safe.
- if grep -q CONFIG_MODULE_SIG=y include/config/auto.conf; then
- rpm_ver_str=$(rpm --version 2>/dev/null)
- # Split the version on spaces
- IFS=' '
- set -- $rpm_ver_str
- if [ "${1:-}" = RPM -a "${2:-}" = version ]; then
- IFS=.
- set -- $3
- rpm_ver=$(( 1000000 * $1 + 10000 * $2 + 100 * $3 + ${4:-0} ))
- if [ "$rpm_ver" -ge 4200000 ]; then
- with_debuginfo_manual='%{?_without_debuginfo:0}%{?!_without_debuginfo:1}'
- fi
- fi
- else
- with_debuginfo_rpm='%{?_without_debuginfo:0}%{?!_without_debuginfo:1}'
- fi
- fi
- echo "%define with_debuginfo_manual $with_debuginfo_manual"
- echo "%define with_debuginfo_rpm $with_debuginfo_rpm"
- cat<<EOF
- %define ARCH ${ARCH}
- %define KERNELRELEASE ${KERNELRELEASE}
- %define pkg_release $("${srctree}/scripts/build-version")
- EOF
- cat "${srctree}/scripts/package/kernel.spec"
- # collect the user's name and email address for the changelog entry
- if [ "$(command -v git)" ]; then
- name=$(git config user.name) || true
- email=$(git config user.email) || true
- fi
- if [ ! "${name:+set}" ]; then
- name=${KBUILD_BUILD_USER:-$(id -nu)}
- fi
- if [ ! "${email:+set}" ]; then
- buildhost=${KBUILD_BUILD_HOST:-$(hostname -f 2>/dev/null || hostname)}
- builduser=${KBUILD_BUILD_USER:-$(id -nu)}
- email="${builduser}@${buildhost}"
- fi
- cat << EOF
- %changelog
- * $(LC_ALL=C date +'%a %b %d %Y') ${name} <${email}>
- - Custom built Linux kernel.
- EOF
|