| #!/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 |