spec: support gbs(1) incremental builds
authorŁukasz Stelmach <l.stelmach@samsung.com>
Mon, 4 Jan 2021 13:41:58 +0000 (14:41 +0100)
committerHoegeun Kwon <hoegeun.kwon@samsung.com>
Mon, 7 Feb 2022 08:01:41 +0000 (17:01 +0900)
gbs(1) enable incremental builds that are significantly faster, hoewever,
spec files need some adjustments.

+ You can't use -n <name> with %setup
+ There is no point in making mrproper
+ use rsync(1) instead of cp(1)+find(1) to copy devel files

Other changes are:
+ use make headers_install to install headers in the buildroot
+ add _smp_mflags to make(1) things faster

Change-Id: Ia14fbe7acab8b83683f9e07757b4f62a7657b2a5
Signed-off-by: Łukasz Stelmach <l.stelmach@samsung.com>
packaging/linux-rpi4.spec

index 52b1d17..1d5d670 100644 (file)
@@ -75,7 +75,7 @@ headers are used by the installed headers for GNU glibc and other system
  libraries.
 
 %prep
-%setup -q -n linux-kernel-%{version}
+%setup -q
 
 %build
 %{?asan:/usr/bin/gcc-unforce-options}
@@ -85,13 +85,11 @@ headers are used by the installed headers for GNU glibc and other system
 sed -i "s/^EXTRAVERSION.*/EXTRAVERSION = -%{variant}/" Makefile
 
 # 0. extract uapi headers
-mkdir -p uapi-headers/usr
-make mrproper
-make headers_check
-make headers_install INSTALL_HDR_PATH=uapi-headers/usr
+make headers_check %{?_smp_mflags}
+make headers_install %{?_smp_mflags}
 
 # 1-1. Set config file
-make %{config_name}
+make %{config_name} %{?_smp_mflags}
 
 # 1-2. Build Image/Image.gz
 make %{?_smp_mflags}
@@ -131,40 +129,38 @@ install -m 644 rpi4/boot/LICENCE.broadcom %{buildroot}/boot/
 install -m 644 rpi4/boot/start*.elf %{buildroot}/boot/
 install -m 644 rpi4/boot/fixup*.dat %{buildroot}/boot/
 
-# 2-5. Install uapi headers
-find uapi-headers/usr/include -name ".install" -delete
-find uapi-headers/usr/include -name "..install.cmd" -delete
-mv uapi-headers/usr %{buildroot}
-
-# 3-1. remove unnecessary files to prepare for devel package
-rm -rf uapi-headers
-find %{_builddir}/linux-kernel-%{version} -name ".tmp_vmlinux*" -delete
-find %{_builddir}/linux-kernel-%{version} -name ".gitignore" -delete
-find %{_builddir}/linux-kernel-%{version} -name "\.*dtb*tmp" -delete
-find %{_builddir}/linux-kernel-%{version} -name "\.*dtb" -delete
-find %{_builddir}/linux-kernel-%{version} -name "*\.*tmp" -delete
-find %{_builddir}/linux-kernel-%{version} -name "vmlinux" -delete
-find %{_builddir}/linux-kernel-%{version} -name "Image" -delete
-find %{_builddir}/linux-kernel-%{version} -name "zImage" -delete
-find %{_builddir}/linux-kernel-%{version} -name "Image.gz" -delete
-find %{_builddir}/linux-kernel-%{version} -name "*.cmd" -delete
-find %{_builddir}/linux-kernel-%{version} -name "*\.ko" -delete
-find %{_builddir}/linux-kernel-%{version} -name "*\.o" -delete
-find %{_builddir}/linux-kernel-%{version} -name "*\.S" -delete
-find %{_builddir}/linux-kernel-%{version} -name "*\.HEX" -type f -delete
-find %{_builddir}/linux-kernel-%{version} -name "*\.c" -not -path "%{_builddir}/linux-kernel-%{version}/scripts/*" -delete
-
-# 3-2. move files for devel package
-cp -r  %{_builddir}/linux-kernel-%{version}/ %{_builddir}/kernel-devel-%{variant}/
-
-# 4. Move files for each package
-mkdir -p %{buildroot}/boot/kernel/devel
-mv %{_builddir}/kernel-devel-%{variant} %{buildroot}/boot/kernel/devel/
-
+# 2-5. Install kernel headers
+make headers_install %{?_smp_mflags} INSTALL_HDR_PATH=%{buildroot}/usr
+
+# 3. Copy files for devel package
+mkdir -p %{buildroot}/boot/kernel/devel/kernel-devel-%{variant}
+rsync -r \
+    --include "/scripts/**.c" \
+    --exclude "/debug*.list" \
+    --exclude "/documentation.list" \
+    --exclude "/*.manifest" \
+    --exclude "/packaging/" \
+    --exclude "/.gbs.conf" \
+    --exclude "/.git**" \
+    --exclude ".gitignore" \
+    --exclude "*\.c" \
+    --exclude ".tmp_vmlinux*" \
+    --exclude ".*dtb*tmp" \
+    --exclude ".*dtb" \
+    --exclude "*.*tmp" \
+    --exclude "vmlinux" \
+    --exclude "Image" \
+    --exclude "zImage" \
+    --exclude "Image.gz" \
+    --exclude "*.cmd" \
+    --exclude "*.ko" \
+    --exclude "*.o" \
+    --exclude "*.S" \
+    --exclude "*.HEX" \
+%{_builddir}/%{name}-%{version}/ %{buildroot}/boot/kernel/devel/kernel-devel-%{variant}
 
 %clean
 rm -rf %{buildroot}
-rm -rf %{_builddir}/usr
 
 %files -n %{variant}-linux-kernel-modules
 /lib/modules/*