]> git.ipfire.org Git - ipfire-3.x.git/blobdiff - kernel/kernel.nm
kernel: udpate to 5.2
[ipfire-3.x.git] / kernel / kernel.nm
index f515447e726d526410275ede5d7951593ec1dd57..80a013e9352cf67d104e6e58a06b8c2d5ec48d9c 100644 (file)
@@ -4,11 +4,11 @@
 ###############################################################################
 
 name       = kernel
-version    = 3.2.12
-release    = 3
+version    = 5.2
+release    = 1
 thisapp    = linux-%{version}
 
-maintainer = Michael Tremer <michael.tremer@ipfire.org>
+maintainer = Arne Fitzenreiter <arne.fitzenreiter@ipfire.org>
 groups     = System/Kernels
 url        = http://www.kernel.org/
 license    = GPLv2
@@ -25,88 +25,68 @@ end
 localversion = %{release}.%{DISTRO_DISTTAG}.%{DISTRO_ARCH}
 fullver      = %{version}-%{localversion}
 
-source_dl    = http://www.kernel.org/pub/linux/kernel/v3.x/
+source_dl    = http://www.kernel.org/pub/linux/kernel/v5.x/
 sources      = %{thisapp}.tar.xz
 
 build
-       # icecream cannot be used to compile the kernel.
-       # Because the PaX patch does use GCC plugins to harden the kernel which
-       # are not available on the remote compilers, we need to disable it here.
-       export ICECC=no
+       kernel_logo = /usr/share/pixmaps/kernel-logo.ppm
 
        requires
                asciidoc
+               bc
+               binutils >= 2.25
                binutils-devel
+               bison
                elfutils-devel
+               flex
+               gcc >= 8
                gcc-plugin-devel
                gettext
+               hostname
+               libunwind-devel
                ncurses-devel
                net-tools
+               newt-devel
+               pciutils-devel
                perl
                python-devel
+               openssl-devel
+               slang-devel
                xmlto
-               xz-lzma-compat
+               xz
 
                /sbin/depmod
-       end
-
-       tools_cpupower_requires
-               newt-devel
-               pciutils-devel
-               slang-devel
+               %{kernel_logo}
        end
 
        # A list of kernels to build.
        kernels =
 
-       # Should we build cpupower?
-       build_cpupower = 1
-
+       kernel_arch = %{DISTRO_PLATFORM}
        kernel_target = bzImage
-       if "%{DISTRO_ARCH}" == "i686"
-               # Build a default and legacy kernel for the
-               # i686 architecture.
-               build_kernel_default = 1
-               build_kernel_legacy = 1
-
-               kernel_arch  = x86
-               kernel_image = arch/%{kernel_arch}/boot/bzImage
-
-       end
+       kernel_image = arch/%{kernel_arch}/boot/%{kernel_target}
 
        if "%{DISTRO_ARCH}" == "x86_64"
                build_kernel_default = 1
-
-               kernel_arch  = x86
-               kernel_image = arch/%{kernel_arch}/boot/bzImage
        end
 
-       if "%{DISTRO_ARCH}" == "armv5tel"
-               # ERROR Currently all kernel images are disabled, because they
-               # won't build with the grsecurity patch.
-
-               # Build versatile kernel.
-               #build_kernel_versatile = 1
-
-               # Build a kernel for Marvell Kirkwood-based devices.
-               #build_kernel_kirkwood = 1
-
-               kernel_arch  = arm
-               kernel_image = arch/%{kernel_arch}/boot/zImage
+       if "%{DISTRO_ARCH}" == "aarch64"
+               build_kernel_default = 1
 
-               # ARM does not support cpupower.
-               build_cpupower = 0
+               kernel_arch = arm64
+               kernel_target = Image.gz
        end
 
        if "%{DISTRO_ARCH}" == "armv7hl"
-               # Build a kernel for TI OMAP SoCs.
-               build_kernel_omap = 1
+               # Build the default unified kernel.
+               build_kernel_default = 1
 
-               kernel_arch  = arm
-               kernel_image = arch/%{kernel_arch}/boot/zImage
+               kernel_target = zImage
+       end
 
-               # ARM does not support cpupower.
-               build_cpupower = 0
+       # mkimage is a requirement to build uImage images.
+       if "%{kernel_target}" == "uImage"
+               requires += u-boot-tools
        end
 
        # Build default kernel.
@@ -114,37 +94,16 @@ build
                kernels += default
        end
 
-       # Build legacy kernel.
-       if "%{build_kernel_legacy}" == "1"
-               kernels += legacy
-       end
-
-       # Build ARM versatile kernel.
-       if "%{build_kernel_versatile}" == "1"
-               kernels += versatile
-       end
-
-       # Build ARM kirkwood kernel.
-       if "%{build_kernel_kirkwood}" == "1"
-               kernels += kirkwood
-       end
-
-       # Build ARM omap kernel.
-       if "%{build_kernel_omap}" == "1"
-               kernels += omap
-       end
-
-       # Add tools' build requirements if build is requested.
-       if "%{build_cpupower}" == "1"
-               requires += %{tools_cpupower_requires}
-       end
-
        prepare_cmds
-               rm -f %{DIR_APP}/localversion-grsec
+               # Disable the colorize plugin.
+               # It's generally very nice but it clutters our
+               # logfiles.
+               sed -e "/^COLORIZE_PLUGIN_CFLAGS/d" \
+                       -i Makefile
 
-               sed -e "s/^HOSTCFLAGS.*=.*/& -fPIC/g" -i Makefile
+               sed -e "s/\$(HOST_LFS_CFLAGS)/& -fPIC/g" -i Makefile
 
-               cp -vf %{DIR_SOURCE}/%{DISTRO_SNAME}_logo.ppm \
+               cp -vf %{kernel_logo} \
                        drivers/video/logo/logo_linux_clut224.ppm
 
                # Get rid of unwanted files resulting from patch fuzz.
@@ -198,13 +157,30 @@ build
 
                        # Install configuration file.
                        cp configs/config.${flavour} .config
+                       cat .config
 
                        # Run the build.
-                       make ARCH=%{kernel_arch} oldnoconfig >/dev/null
-                       make ARCH=%{kernel_arch} CC="gcc -fno-PIE" %{kernel_target} modules %{PARALLELISMFLAGS}
+                       make ARCH=%{kernel_arch} olddefconfig >/dev/null
+                       make ARCH=%{kernel_arch} %{kernel_target} modules \
+                               KERNELRELEASE=${fullversion} %{PARALLELISMFLAGS}
+
+                       # Compile Flattened Device Tree database
+                       case "${DISTRO_ARCH}" in
+                               aarch64|arm*)
+                                       make ARCH=%{kernel_arch} dtbs
+
+                                       mkdir -pv %{BUILDROOT}/boot/dtb-${fullversion}
+                                       for file in arch/arm/boot/dts/*.dtb; do
+                                               [ -e "${file}" ] || continue
+
+                                               install -m 644 ${file} %{BUILDROOT}/boot/dtb-${fullversion} || exit 1
+                                               rm -f ${file}
+                                       done
+                                       ;;
+                       esac
 
                        # Install the results.
-                       mkdir -pv %{BUILDROOT}/boot %{BUILDROOT}/lib/modules/${fullversion}
+                       mkdir -pv %{BUILDROOT}/boot %{BUILDROOT}/usr/lib/modules/${fullversion}
                        install -m 755 %{kernel_image} %{BUILDROOT}/boot/vmlinuz-${fullversion}
                        install -m 644 .config %{BUILDROOT}/boot/config-${fullversion}
                        install -m 644 System.map %{BUILDROOT}/boot/System.map-${fullversion}
@@ -213,82 +189,73 @@ build
                        dd if=/dev/zero of=%{BUILDROOT}/boot/initramfs-${fullversion}.img bs=1M count=20
 
                        # Install modules.
-                       make ARCH=%{kernel_arch} INSTALL_MOD_PATH=%{BUILDROOT} mod-fw= \
+                       make ARCH=%{kernel_arch} INSTALL_MOD_PATH=%{BUILDROOT}/usr mod-fw= V=1 \
                                KERNELRELEASE=${fullversion} modules_install
 
-                       # Install vdso.
-                       case "%{DISTRO_ARCH}" in
-                               i686)
-                                       make ARCH=%{kernel_arch} INSTALL_MOD_PATH=%{BUILDROOT} \
-                                               KERNELRELEASE=${fullversion} vdso_install
-                                       ;;
-                       esac
-
-                       # Create an empty settings file for dracut
-                       mkdir -pv %{BUILDROOT}/etc/ld.so.conf.d
-                       echo "# Placeholder file, no vDSO hwcap entries used in this kernel." \
-                               > %{BUILDROOT}/etc/ld.so.conf.d/kernel-${fullversion}.conf
-
                        # And now the scary looking part.
                        #
                        # Recreate source and build links.
-                       rm -vf %{BUILDROOT}/lib/modules/${fullversion}/{build,source}
-                       mkdir -pv %{BUILDROOT}/lib/modules/${fullversion}/build
-                       ln -svf build %{BUILDROOT}/lib/modules/${fullversion}/source
+                       rm -f %{BUILDROOT}/usr/lib/modules/${fullversion}/{build,source}
+                       mkdir -p %{BUILDROOT}/usr/lib/modules/${fullversion}/build
+                       ln -sf build %{BUILDROOT}/usr/lib/modules/${fullversion}/source
 
                        # Create dirs for extra modules.
-                       mkdir -pv %{BUILDROOT}/lib/modules/${fullversion}/extra
+                       mkdir -p %{BUILDROOT}/usr/lib/modules/${fullversion}/extra
 
-                       cp -v --parents $(find -type f -name "Makefile*" -o -name "Kconfig*") \
-                               %{BUILDROOT}/lib/modules/${fullversion}/build
-                       cp -v Module.symvers System.map \
-                               %{BUILDROOT}/lib/modules/${fullversion}/build
-                       rm -vrf %{BUILDROOT}/lib/modules/${fullversion}/build/{Documentation,scripts,include}
+                       cp --parents $(find -type f -name "Makefile*" -o -name "Kconfig*") \
+                               %{BUILDROOT}/usr/lib/modules/${fullversion}/build
+                       cp Module.symvers System.map \
+                               %{BUILDROOT}/usr/lib/modules/${fullversion}/build
+                       rm -rf %{BUILDROOT}/usr/lib/modules/${fullversion}/build/{Documentation,scripts,include}
 
-                       cp -v .config %{BUILDROOT}/lib/modules/${fullversion}/build
-                       cp -va scripts %{BUILDROOT}/lib/modules/${fullversion}/build
-                       find %{BUILDROOT}/lib/modules/${fullversion}/build/scripts -name "*.o" \
+                       cp .config %{BUILDROOT}/usr/lib/modules/${fullversion}/build
+                       cp -a scripts %{BUILDROOT}/usr/lib/modules/${fullversion}/build
+                       find %{BUILDROOT}/usr/lib/modules/${fullversion}/build/scripts -name "*.o" \
                                -exec rm -vf {} \;
 
-                       cp -va --parents arch/%{kernel_arch}/include \
-                               %{BUILDROOT}/lib/modules/${fullversion}/build
-                       cp -va include %{BUILDROOT}/lib/modules/${fullversion}/build/include
+                       cp -a --parents arch/%{kernel_arch}/include \
+                               %{BUILDROOT}/usr/lib/modules/${fullversion}/build
+                       cp -a include %{BUILDROOT}/usr/lib/modules/${fullversion}/build/include
 
                        # Make sure we can build external modules.
-                       touch -r %{BUILDROOT}/lib/modules/${fullversion}/build/Makefile \
-                               %{BUILDROOT}/lib/modules/${fullversion}/build/include/linux/version.h
-                       touch -r %{BUILDROOT}/lib/modules/${fullversion}/build/.config \
-                               %{BUILDROOT}/lib/modules/${fullversion}/build/autoconf.h
-                       cp -v %{BUILDROOT}/lib/modules/${fullversion}/build/.config \
-                               %{BUILDROOT}/lib/modules/${fullversion}/build/include/config/auto.conf
+                       touch -r %{BUILDROOT}/usr/lib/modules/${fullversion}/build/Makefile \
+                               %{BUILDROOT}/usr/lib/modules/${fullversion}/build/include/linux/version.h
+                       touch -r %{BUILDROOT}/usr/lib/modules/${fullversion}/build/.config \
+                               %{BUILDROOT}/usr/lib/modules/${fullversion}/build/autoconf.h
+                       cp %{BUILDROOT}/usr/lib/modules/${fullversion}/build/.config \
+                               %{BUILDROOT}/usr/lib/modules/${fullversion}/build/include/config/auto.conf
 
-                       find %{BUILDROOT}/lib/modules/${fullversion} -name "*.ko" -type f | \
-                               xargs chmod u+x
+                       find %{BUILDROOT}/usr/lib/modules/${fullversion} -name "*.ko" -type f | \
+                               xargs --no-run-if-empty chmod u+x
 
                        # Move all development files to /usr/src.
-                       mkdir -pv %{BUILDROOT}/usr/src/kernels
-                       mv -v %{BUILDROOT}/lib/modules/${fullversion}/build \
+                       mkdir -p %{BUILDROOT}/usr/src/kernels
+                       mv %{BUILDROOT}/usr/lib/modules/${fullversion}/build \
                                %{BUILDROOT}/usr/src/kernels/${fullversion}
-                       ln -svf ../../../usr/src/kernels/${fullversion} \
-                               %{BUILDROOT}/lib/modules/${fullversion}/build
+                       ln -sf ../../../src/kernels/${fullversion} \
+                               %{BUILDROOT}/usr/lib/modules/${fullversion}/build
+
+                       # Fix permissions.
+                       find %{BUILDROOT}/usr/src/kernels -name "modules.order" \
+                               -exec chmod 644 {} \;
 
                        find %{BUILDROOT}/usr/src/kernels -name ".*.cmd" -exec rm -f {} \;
+
+                       # remove device tree compiler because there are dead links
+                       rm -rf %{BUILDROOT}/usr/src/kernels/*/scripts/dtc
                }
 
                for kernel in %{kernels}; do
                        build_kernel ${kernel}
                done
 
-               # Build tools.
                # cpupower
-               if [ "%{build_cpupower}" = "1" ]; then
-                       chmod +x tools/power/cpupower/utils/version-gen.sh
-                       make -C tools/power/cpupower CPUFREQ_BENCH=false %{PARALLELISMFLAGS}
-
-                       cd tools/power/cpupower/debug/i386
-                       make %{PARALLELISMFLAGS} centrino-decode powernow-k8-decode
-                       cd -
-               fi
+               chmod +x tools/power/cpupower/utils/version-gen.sh
+               make -C tools/power/cpupower CPUFREQ_BENCH=false %{PARALLELISMFLAGS}
+
+               pushd tools/thermal/tmon
+               make
+               popd
        end
 
        install
@@ -312,20 +279,16 @@ build
                rm -rfv %{BUILDROOT}/lib/firmware
 
                # Install tools.
-               make -C tools/perf DESTDIR=%{BUILDROOT} \
-                       HAVE_CPLUS_DEMANGLE=1 prefix=/usr perfexecdir=lib/perf-core \
-                       install install-man
-
                # cpupower
-               if [ "%{build_cpupower}" = "1" ]; then
-                       make -C tools/power/cpupower DESTDIR=%{BUILDROOT} libdir=%{libdir} \
-                               mandir=%{mandir} CPUFREQ_BENCH=false install
-                       cd tools/power/cpupower/debug/i386
-                       install -m 755 centrino-decode %{BUILDROOT}/usr/bin/centrino-decode
-                       install -m 755 powernow-k8-decode %{BUILDROOT}/usr/bin/powernow-k8-decode
-                       cd -
-                       chmod 0755 %{BUILDROOT}%{libdir}/libcpupower.so*
-               fi
+               make -C tools/power/cpupower DESTDIR=%{BUILDROOT} libdir=%{libdir} \
+                       mandir=%{mandir} CPUFREQ_BENCH=false install
+
+               chmod 0755 %{BUILDROOT}%{libdir}/libcpupower.so*
+
+               # tmon
+               pushd tools/thermal/tmon
+               make INSTALL_ROOT=%{BUILDROOT} install
+               popd
        end
 end
 
@@ -346,21 +309,21 @@ packages
 
                requires
                        dracut
-                       grubby
+                       kernel-updater
                        linux-firmware
+                       intel-microcode
                end
 
                files
                        /boot/System.map-%{kernel_release}
+                       /boot/dtb-%{kernel_release}
                        /boot/vmlinuz-%{kernel_release}
                        /boot/initramfs-%{kernel_release}.img
-                       /etc/ld.so.conf.d/kernel-%{kernel_release}.conf
-                       /lib/modules/%{kernel_release}
+                       /usr/lib/modules/%{kernel_release}
                end
 
                _posttrans
-                       /sbin/new-kernel-pkg --package %{kernel_name} --mkinitrd --dracut --depmod --update %{kernel_release}
-                       /sbin/new-kernel-pkg --package %{kernel_name} --rpmposttrans %{kernel_release}
+                       kernel-updater install %{kernel_release}
                end
 
                script posttransin
@@ -371,16 +334,8 @@ packages
                        %{_posttrans}
                end
 
-               script postin
-                       /sbin/new-kernel-pkg --package %{kernel_name} --install %{kernel_release}
-               end
-
-               script postup
-                       /sbin/new-kernel-pkg --package %{kernel_name} --install %{kernel_release}
-               end
-
-               script preun
-                       /sbin/new-kernel-pkg --rminitrd --rmmoddep --remove %{kernel_release}
+               script postun
+                       kernel-updater uninstall %{kernel_release}
                end
        end
 
@@ -395,94 +350,67 @@ packages
                        kernel release %{kernel_release}.
                end
 
+               provides
+                       kernel-devel = %{thisver}
+               end
+
                filter_requires
                        perl>=[0-9]\:.*
                end
 
                files
-                       /lib/modules/%{kernel_release}/build
-                       /lib/modules/%{kernel_release}/source
+                       /usr/lib/modules/%{kernel_release}/build
+                       /usr/lib/modules/%{kernel_release}/source
                        /usr/src/kernels/%{kernel_release}
                end
        end
 
        if "%{build_kernel_default}" == "1"
-               package kernel
-                       template KERNEL
+               if "%{DISTRO_ARCH}" == "armv7hl"
+                       package kernel
+                               template KERNEL
 
-                       kernel_name = kernel
-                       kernel_release = %{fullver}
-               end
+                               kernel_name = kernel
+                               kernel_release = %{fullver}
 
-               package kernel-devel
-                       template KERNELDEVEL
+                               # Replace the Exynos kernel.
+                               obsoletes += kernel-exynos < %{kernel_release}
+                               conflicts += kernel-exynos < %{kernel_release}
 
-                       kernel_name = kernel
-                       kernel_release = %{fullver}
-               end
-       end
+                               # Replace the OMAP kernel.
+                               obsoletes += kernel-omap < %{kernel_release}
+                               conflicts += kernel-omap < %{kernel_release}
+                       end
 
-       if "%{build_kernel_legacy}" == "1"
-               package kernel-legacy
-                       template KERNEL
+                       package kernel-devel
+                               template KERNELDEVEL
 
-                       kernel_name = kernel-legacy
-                       kernel_release = %{fullver}.legacy
-               end
+                               kernel_name = kernel
+                               kernel_release = %{fullver}
 
-               package kernel-legacy-devel
-                       template KERNELDEVEL
+                               # Replace the Exynos kernel.
+                               obsoletes += kernel-exynos-devel < %{kernel_release}
+                               conflicts += kernel-exynos-devel < %{kernel_release}
 
-                       kernel_name = kernel-legacy
-                       kernel_release = %{fullver}.legacy
-               end
-       end
-
-       if "%{build_kernel_versatile}" == "1"
-               package kernel-versatile
-                       template KERNEL
-
-                       kernel_name = kernel-versatile
-                       kernel_release = %{fullver}.versatile
-               end
-
-               package kernel-versatile-devel
-                       template KERNELDEVEL
-
-                       kernel_name = kernel-versatile
-                       kernel_release = %{fullver}.versatile
-               end
-       end
+                               # Replace the OMAP kernel.
+                               obsoletes += kernel-omap-devel < %{kernel_release}
+                               conflicts += kernel-omap-devel < %{kernel_release}
+                       end
 
-       if "%{build_kernel_kirkwood}" == "1"
-               package kernel-kirkwood
-                       template KERNEL
+               else
+                       package kernel
+                               template KERNEL
 
-                       kernel_name = kernel-kirkwood
-                       kernel_release = %{fullver}.kirkwood
-               end
-
-               package kernel-kirkwood-devel
-                       template KERNELDEVEL
-
-                       kernel_name = kernel-kirkwood
-                       kernel_release = %{fullver}.kirkwood
-               end
-       end
-
-       if "%{build_kernel_omap}" == "1"
-               package kernel-omap
-                       template KERNEL
-
-                       kernel_name = kernel-omap
-                       kernel_release = %{fullver}.omap
-               end
+                               kernel_name = kernel
+                               kernel_release = %{fullver}
+                       end
 
-               package kernel-omap-devel
-                       template KERNELDEVEL
+                       package kernel-devel
+                               template KERNELDEVEL
 
-                       kernel_name = kernel-omap
-                       kernel_release = %{fullver}.omap
+                               kernel_name = kernel
+                               kernel_release = %{fullver}
+                       end
                end
        end
 
@@ -506,8 +434,8 @@ packages
                files
                        /
                        !/boot
-                       !/lib/modules
                        !/usr/include
+                       !/usr/lib/modules
                        !/usr/src
                        !/usr/src/debug
                        !/usr/lib/debug