diff mbox

build: Exclude cscope and tags files from packaging

Message ID 20180517134838.8403-1-agimenez@sysvalve.es (mailing list archive)
State New, archived
Headers show

Commit Message

L. Alberto Giménez May 17, 2018, 1:48 p.m. UTC
When building a Debian package, cscope and tags generated files are
accounted in the Debian packaging process, even causing some errors
under some circumstances (generating diff between "pristine" tar and
"patched sources").

Ignore these generated files for packaging related purposes.

Signed-off-by: L. Alberto Giménez <agimenez@sysvalve.es>
---
 Makefile                 | 5 ++++-
 scripts/package/Makefile | 4 ++--
 scripts/package/mkspec   | 6 +++---
 3 files changed, 9 insertions(+), 6 deletions(-)

Comments

Riku Voipio May 21, 2018, 1:06 p.m. UTC | #1
On 17 May 2018 at 16:48, L. Alberto Giménez <agimenez@sysvalve.es> wrote:
> When building a Debian package, cscope and tags generated files are
> accounted in the Debian packaging process, even causing some errors
> under some circumstances (generating diff between "pristine" tar and
> "patched sources").

Honestly you should use make mrproper, if you want to spin out source
packages. If otoh you don't have a use for the source package, use
bindeb-pkg.

> Ignore these generated files for packaging related purposes.
>
> Signed-off-by: L. Alberto Giménez <agimenez@sysvalve.es>
> ---
>  Makefile                 | 5 ++++-
>  scripts/package/Makefile | 4 ++--
>  scripts/package/mkspec   | 6 +++---
>  3 files changed, 9 insertions(+), 6 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index ba3106b36597..0b862a544a6a 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -453,11 +453,14 @@ export MODVERDIR := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/).tmp_ve
>  # Files to ignore in find ... statements
>
>  export RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o    \
> -                         -name CVS -o -name .pc -o -name .hg -o -name .git \) \
> +                         -name CVS -o -name .pc -o -name .hg -o -name .git -o \
> +                         -name tags -o -name 'cscope*' \) \

tags and cscope are not revision control files tho.

>                           -prune -o

>  export RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn \
>                          --exclude CVS --exclude .pc --exclude .hg --exclude .git
>
> +export TAR_EXTRA_IGNORE := --exclude tags --exclude 'cscope*'
> +

Why new variable?

>  # ===========================================================================
>  # Rules shared between *config targets and build targets
>
> diff --git a/scripts/package/Makefile b/scripts/package/Makefile
> index 73503ebce632..520532b3bcb2 100644
> --- a/scripts/package/Makefile
> +++ b/scripts/package/Makefile
> @@ -44,7 +44,7 @@ if test "$(objtree)" != "$(srctree)"; then \
>         false; \
>  fi ; \
>  $(srctree)/scripts/setlocalversion --save-scmversion; \
> -tar -cz $(RCS_TAR_IGNORE) -f $(2).tar.gz \
> +tar -cz $(RCS_TAR_IGNORE) $(TAR_EXTRA_IGNORE) -f $(2).tar.gz \
>         --transform 's:^:$(2)/:S' $(TAR_CONTENT) $(3); \
>  rm -f $(objtree)/.scmversion
>
> @@ -73,7 +73,7 @@ deb-pkg: FORCE
>         $(call cmd,src_tar,$(KDEB_SOURCENAME))
>         origversion=$$(dpkg-parsechangelog -SVersion |sed 's/-[^-]*$$//');\
>                 mv $(KDEB_SOURCENAME).tar.gz ../$(KDEB_SOURCENAME)_$${origversion}.orig.tar.gz
> -       +dpkg-buildpackage -r$(KBUILD_PKG_ROOTCMD) -a$$(cat debian/arch) -i.git -us -uc
> +       +dpkg-buildpackage -r$(KBUILD_PKG_ROOTCMD) -a$$(cat debian/arch) -i'(.git|cscope.*)' -us -uc
>
>  bindeb-pkg: FORCE
>         $(CONFIG_SHELL) $(srctree)/scripts/package/mkdebian
> diff --git a/scripts/package/mkspec b/scripts/package/mkspec
> index e05646dc24dc..e966a87c0011 100755
> --- a/scripts/package/mkspec
> +++ b/scripts/package/mkspec
> @@ -28,9 +28,9 @@ fi
>
>  PROVIDES="$PROVIDES kernel-$KERNELRELEASE"
>  __KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g")
> -EXCLUDES="$RCS_TAR_IGNORE --exclude=.tmp_versions --exclude=*vmlinux* \
> ---exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
> ---exclude=.config.old --exclude=.missing-syscalls.d"
> +EXCLUDES="$RCS_TAR_IGNORE $TAR_EXTRA_IGNORE --exclude=.tmp_versions \
> +--exclude=*vmlinux* --exclude=*.o --exclude=*.ko --exclude=*.cmd \
> +--exclude=Documentation --exclude=.config.old --exclude=.missing-syscalls.d"

I take we now have three variants of "exclude these files ending up in
the packages" lists - tar, rpm and .deb. Each choosing slightly
different of subset of files listed in .gitignore. This does not seem
very maintainable.

Riku
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
L. Alberto Giménez May 24, 2018, 8:47 a.m. UTC | #2
On Mon, May 21, 2018 at 04:06:15PM +0300, Riku Voipio wrote:
> On 17 May 2018 at 16:48, L. Alberto Giménez <agimenez@sysvalve.es> wrote:
> > When building a Debian package, cscope and tags generated files are
> > accounted in the Debian packaging process, even causing some errors
> > under some circumstances (generating diff between "pristine" tar and
> > "patched sources").
> 
> Honestly you should use make mrproper, if you want to spin out source
> packages. If otoh you don't have a use for the source package, use
> bindeb-pkg.

Well, to be honest I just wanted a .deb file to distribute to my VM in order to test
and squash some bugs quickly, and in my machine, it was causing a recompilation every
time I tried to build a new package, (26 minutes withh allyes).

I just wanted to speed up things and avoid the full compilation that deb-pkg was
doing (and mrproper would cause anyway) if I already had everything done.

But I realized that bindeb-pkg does just what I want, so you can ignore this patch,
sorry for the inconvenience.


Regards,
diff mbox

Patch

diff --git a/Makefile b/Makefile
index ba3106b36597..0b862a544a6a 100644
--- a/Makefile
+++ b/Makefile
@@ -453,11 +453,14 @@  export MODVERDIR := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/).tmp_ve
 # Files to ignore in find ... statements
 
 export RCS_FIND_IGNORE := \( -name SCCS -o -name BitKeeper -o -name .svn -o    \
-			  -name CVS -o -name .pc -o -name .hg -o -name .git \) \
+			  -name CVS -o -name .pc -o -name .hg -o -name .git -o \
+			  -name tags -o -name 'cscope*' \) \
 			  -prune -o
 export RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn \
 			 --exclude CVS --exclude .pc --exclude .hg --exclude .git
 
+export TAR_EXTRA_IGNORE := --exclude tags --exclude 'cscope*'
+
 # ===========================================================================
 # Rules shared between *config targets and build targets
 
diff --git a/scripts/package/Makefile b/scripts/package/Makefile
index 73503ebce632..520532b3bcb2 100644
--- a/scripts/package/Makefile
+++ b/scripts/package/Makefile
@@ -44,7 +44,7 @@  if test "$(objtree)" != "$(srctree)"; then \
 	false; \
 fi ; \
 $(srctree)/scripts/setlocalversion --save-scmversion; \
-tar -cz $(RCS_TAR_IGNORE) -f $(2).tar.gz \
+tar -cz $(RCS_TAR_IGNORE) $(TAR_EXTRA_IGNORE) -f $(2).tar.gz \
 	--transform 's:^:$(2)/:S' $(TAR_CONTENT) $(3); \
 rm -f $(objtree)/.scmversion
 
@@ -73,7 +73,7 @@  deb-pkg: FORCE
 	$(call cmd,src_tar,$(KDEB_SOURCENAME))
 	origversion=$$(dpkg-parsechangelog -SVersion |sed 's/-[^-]*$$//');\
 		mv $(KDEB_SOURCENAME).tar.gz ../$(KDEB_SOURCENAME)_$${origversion}.orig.tar.gz
-	+dpkg-buildpackage -r$(KBUILD_PKG_ROOTCMD) -a$$(cat debian/arch) -i.git -us -uc
+	+dpkg-buildpackage -r$(KBUILD_PKG_ROOTCMD) -a$$(cat debian/arch) -i'(.git|cscope.*)' -us -uc
 
 bindeb-pkg: FORCE
 	$(CONFIG_SHELL) $(srctree)/scripts/package/mkdebian
diff --git a/scripts/package/mkspec b/scripts/package/mkspec
index e05646dc24dc..e966a87c0011 100755
--- a/scripts/package/mkspec
+++ b/scripts/package/mkspec
@@ -28,9 +28,9 @@  fi
 
 PROVIDES="$PROVIDES kernel-$KERNELRELEASE"
 __KERNELRELEASE=$(echo $KERNELRELEASE | sed -e "s/-/_/g")
-EXCLUDES="$RCS_TAR_IGNORE --exclude=.tmp_versions --exclude=*vmlinux* \
---exclude=*.o --exclude=*.ko --exclude=*.cmd --exclude=Documentation \
---exclude=.config.old --exclude=.missing-syscalls.d"
+EXCLUDES="$RCS_TAR_IGNORE $TAR_EXTRA_IGNORE --exclude=.tmp_versions \
+--exclude=*vmlinux* --exclude=*.o --exclude=*.ko --exclude=*.cmd \
+--exclude=Documentation --exclude=.config.old --exclude=.missing-syscalls.d"
 
 # We can label the here-doc lines for conditional output to the spec file
 #