-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
kbuild: give up untracked files for source package builds
When the source tree is dirty and contains untracked files, package builds may fail, for example, when a broken symlink exists, a file path contains whitespaces, etc. Since commit 05e96e9 ("kbuild: use git-archive for source package creation"), the source tarball only contains committed files because it is created by 'git archive'. scripts/package/gen-diff-patch tries to address the diff from HEAD, but including untracked files by the hand-crafted script introduces more complexity. I wrote a patch [1] to make it work in most cases, but still wonder if this is what we should aim for. To simplify the code, this patch just gives up untracked files. Going forward, it is your responsibility to do 'git add' for what you want in the source package. The script shows a warning just in case you forgot to do so. It should be checked only when building source packages. [1]: https://lore.kernel.org/all/CAK7LNAShbZ56gSh9PrbLnBDYKnjtTkHMoCXeGrhcxMvqXGq9=g@mail.gmail.com/2-0001-kbuild-make-package-builds-more-robust.patch Fixes: 05e96e9 ("kbuild: use git-archive for source package creation") Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> Reviewed-by: Nicolas Schier <nicolas@fjasle.eu>
- Loading branch information
Masahiro Yamada
committed
Apr 10, 2023
1 parent
dcc11ac
commit aa7d233
Showing
4 changed files
with
90 additions
and
89 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,44 +1,36 @@ | ||
#!/bin/sh | ||
# SPDX-License-Identifier: GPL-2.0-only | ||
|
||
diff_patch="${1}" | ||
untracked_patch="${2}" | ||
srctree=$(dirname $0)/../.. | ||
diff_patch=$1 | ||
|
||
rm -f ${diff_patch} ${untracked_patch} | ||
mkdir -p "$(dirname "${diff_patch}")" | ||
|
||
if ! ${srctree}/scripts/check-git; then | ||
exit | ||
fi | ||
|
||
mkdir -p "$(dirname ${diff_patch})" "$(dirname ${untracked_patch})" | ||
git -C "${srctree:-.}" diff HEAD > "${diff_patch}" | ||
|
||
git -C "${srctree}" diff HEAD > "${diff_patch}" | ||
|
||
if [ ! -s "${diff_patch}" ]; then | ||
rm -f "${diff_patch}" | ||
if [ ! -s "${diff_patch}" ] || | ||
[ -z "$(git -C "${srctree:-.}" ls-files --other --exclude-standard | head -n1)" ]; then | ||
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 | ||
# The source tarball, which is generated by 'git archive', contains everything | ||
# you committed in the repository. If you have local diff ('git diff HEAD'), | ||
# it will go into ${diff_patch}. If untracked files are remaining, the resulting | ||
# source package may not be correct. | ||
# | ||
# Examples: | ||
# - You modified a source file to add #include "new-header.h" | ||
# but forgot to add new-header.h | ||
# - You modified a Makefile to add 'obj-$(CONFIG_FOO) += new-dirver.o' | ||
# but you forgot to add new-driver.c | ||
# | ||
# You need to commit them, or at least stage them by 'git add'. | ||
# | ||
# This script does not take care of untracked files because doing so would | ||
# introduce additional complexity. Instead, print a warning message here if | ||
# untracked files are found. | ||
# If all untracked files are just garbage, you can ignore this warning. | ||
echo >&2 "============================ WARNING ============================" | ||
echo >&2 "Your working tree has diff from HEAD, and also untracked file(s)." | ||
echo >&2 "Please make sure you did 'git add' for all new files you need in" | ||
echo >&2 "the source package." | ||
echo >&2 "=================================================================" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters