linux-yocto/scripts/package/mkspec
Petr Vorel ba6c664081 kbuild: rpm-pkg: Fix C locale setup
semicolon separation in LC_ALL is wrong. Either variable needs to be
exported before as a separate commit or set as part of the commit in the
beginning. Used second variant.

This fixes broken build on user's locale setup which makes 'date' binary
to produce invalid characters in rpm changelog (e.g. cs_CZ.UTF-8 'čec'):

$ make binrpm-pkg
  GEN     rpmbuild/SPECS/kernel.spec
rpmbuild -bb rpmbuild/SPECS/kernel.spec --define='_topdirlinux/rpmbuild' \
    --target x86_64-linux --build-in-place --noprep --define='_smp_mflags \
    %{nil}' $(rpm -q rpm >/dev/null 2>&1 || echo --nodeps)
Building target platforms: x86_64-linux
Building for target x86_64-linux
error: bad date in %changelog: St čec 24 2024 user <user@somehost>
make[2]: *** [scripts/Makefile.package:71: binrpm-pkg] Error 1
make[1]: *** [linux/Makefile:1546: binrpm-pkg] Error 2
make: *** [Makefile:224: __sub-make] Error 2

Fixes: 301c10908e ("kbuild: rpm-pkg: introduce a simple changelog section for kernel.spec")
Signed-off-by: Petr Vorel <pvorel@suse.cz>
Reviewed-by: Miguel Ojeda <ojeda@kernel.org>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
2024-07-24 19:26:44 +09:00

1.2 KiB
Executable File

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

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