mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 12:43:29 +02:00
kbuild: use git-archive for source package creation
Commit5c3d1d0abb
("kbuild: add a tool to list files ignored by git") added a new tool, scripts/list-gitignored. My intention was to create source packages without cleaning the source tree, without relying on git. Linus strongly objected to it, and suggested using 'git archive' instead. [1] [2] [3] This commit goes in that direction - Remove scripts/list-gitignored.c and rewrites Makefiles and scripts to use 'git archive' for building Debian and RPM source packages. It also makes 'make perf-tar*-src-pkg' use 'git archive' again. Going forward, building source packages is only possible in a git-managed tree. Building binary packages does not require git. [1]: https://lore.kernel.org/lkml/CAHk-=wi49sMaC7vY1yMagk7eqLK=1jHeHQ=yZ_k45P=xBccnmA@mail.gmail.com/ [2]: https://lore.kernel.org/lkml/CAHk-=wh5AixGsLeT0qH2oZHKq0FLUTbyTw4qY921L=PwYgoGVw@mail.gmail.com/ [3]: https://lore.kernel.org/lkml/CAHk-=wgM-W6Fu==EoAVCabxyX8eYBz9kNC88-tm9ExRQwA79UQ@mail.gmail.com/ Fixes:5c3d1d0abb
("kbuild: add a tool to list files ignored by git") Fixes:e0ca16749a
("kbuild: make perf-tar*-src-pkg work without relying on git") Suggested-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
This commit is contained in:
44
scripts/package/gen-diff-patch
Executable file
44
scripts/package/gen-diff-patch
Executable file
@@ -0,0 +1,44 @@
|
||||
#!/bin/sh
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
|
||||
diff_patch="${1}"
|
||||
untracked_patch="${2}"
|
||||
srctree=$(dirname $0)/../..
|
||||
|
||||
rm -f ${diff_patch} ${untracked_patch}
|
||||
|
||||
if ! ${srctree}/scripts/check-git; then
|
||||
exit
|
||||
fi
|
||||
|
||||
mkdir -p "$(dirname ${diff_patch})" "$(dirname ${untracked_patch})"
|
||||
|
||||
git -C "${srctree}" diff HEAD > "${diff_patch}"
|
||||
|
||||
if [ ! -s "${diff_patch}" ]; then
|
||||
rm -f "${diff_patch}"
|
||||
exit
|
||||
fi
|
||||
|
||||
git -C ${srctree} status --porcelain --untracked-files=all |
|
||||
while read stat path
|
||||
do
|
||||
if [ "${stat}" = '??' ]; then
|
||||
|
||||
if ! diff -u /dev/null "${srctree}/${path}" > .tmp_diff &&
|
||||
! head -n1 .tmp_diff | grep -q "Binary files"; then
|
||||
{
|
||||
echo "--- /dev/null"
|
||||
echo "+++ linux/$path"
|
||||
cat .tmp_diff | tail -n +3
|
||||
} >> ${untracked_patch}
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
rm -f .tmp_diff
|
||||
|
||||
if [ ! -s "${diff_patch}" ]; then
|
||||
rm -f "${diff_patch}"
|
||||
exit
|
||||
fi
|
@@ -91,7 +91,7 @@ version=$KERNELRELEASE
|
||||
if [ -n "$KDEB_PKGVERSION" ]; then
|
||||
packageversion=$KDEB_PKGVERSION
|
||||
else
|
||||
packageversion=$version-$($srctree/init/build-version)
|
||||
packageversion=$(${srctree}/scripts/setlocalversion --no-local ${srctree})-$($srctree/init/build-version)
|
||||
fi
|
||||
sourcename=${KDEB_SOURCENAME:-linux-upstream}
|
||||
|
||||
@@ -152,6 +152,14 @@ mkdir -p debian/patches
|
||||
} > debian/patches/config
|
||||
echo config > debian/patches/series
|
||||
|
||||
$(dirname $0)/gen-diff-patch debian/patches/diff.patch debian/patches/untracked.patch
|
||||
if [ -f debian/patches/diff.patch ]; then
|
||||
echo diff.patch >> debian/patches/series
|
||||
fi
|
||||
if [ -f debian/patches/untracked.patch ]; then
|
||||
echo untracked.patch >> debian/patches/series
|
||||
fi
|
||||
|
||||
echo $debarch > debian/arch
|
||||
extra_build_depends=", $(if_enabled_echo CONFIG_UNWINDER_ORC libelf-dev:native)"
|
||||
extra_build_depends="$extra_build_depends, $(if_enabled_echo CONFIG_SYSTEM_TRUSTED_KEYRING libssl-dev:native)"
|
||||
|
@@ -19,6 +19,8 @@ else
|
||||
mkdir -p rpmbuild/SOURCES
|
||||
cp linux.tar.gz rpmbuild/SOURCES
|
||||
cp "${KCONFIG_CONFIG}" rpmbuild/SOURCES/config
|
||||
$(dirname $0)/gen-diff-patch rpmbuild/SOURCES/diff.patch rpmbuild/SOURCES/untracked.patch
|
||||
touch rpmbuild/SOURCES/diff.patch rpmbuild/SOURCES/untracked.patch
|
||||
fi
|
||||
|
||||
if grep -q CONFIG_MODULES=y include/config/auto.conf; then
|
||||
@@ -53,6 +55,8 @@ sed -e '/^DEL/d' -e 's/^\t*//' <<EOF
|
||||
URL: https://www.kernel.org
|
||||
$S Source0: linux.tar.gz
|
||||
$S Source1: config
|
||||
$S Source2: diff.patch
|
||||
$S Source3: untracked.patch
|
||||
Provides: $PROVIDES
|
||||
$S BuildRequires: bc binutils bison dwarves
|
||||
$S BuildRequires: (elfutils-libelf-devel or libelf-devel) flex
|
||||
@@ -90,6 +94,12 @@ $S$M
|
||||
$S %prep
|
||||
$S %setup -q -n linux
|
||||
$S cp %{SOURCE1} .config
|
||||
$S if [ -s %{SOURCE2} ]; then
|
||||
$S patch -p1 < %{SOURCE2}
|
||||
$S fi
|
||||
$S if [ -s %{SOURCE3} ]; then
|
||||
$S patch -p1 < %{SOURCE3}
|
||||
$S fi
|
||||
$S
|
||||
$S %build
|
||||
$S $MAKE %{?_smp_mflags} KERNELRELEASE=$KERNELRELEASE KBUILD_BUILD_VERSION=%{release}
|
||||
|
Reference in New Issue
Block a user