From c7712460c2f4c85c91da70c09b89211aee7344c8 Mon Sep 17 00:00:00 2001 From: Renato Aguiar Date: Tue, 18 Feb 2020 23:07:24 -0800 Subject: [PATCH] New package: pinebookpro-kernel-5.5.0 --- srcpkgs/pinebookpro-kernel-dbg | 1 + srcpkgs/pinebookpro-kernel-headers | 1 + .../pinebookpro-kernel/files/DocBook/Makefile | 282 ++++++++++++++++++ srcpkgs/pinebookpro-kernel/files/mv-debug | 7 + srcpkgs/pinebookpro-kernel/patches/musl.patch | 19 ++ .../patches/smsc95xx-mac.patch | 95 ++++++ srcpkgs/pinebookpro-kernel/template | 253 ++++++++++++++++ 7 files changed, 658 insertions(+) create mode 120000 srcpkgs/pinebookpro-kernel-dbg create mode 120000 srcpkgs/pinebookpro-kernel-headers create mode 100644 srcpkgs/pinebookpro-kernel/files/DocBook/Makefile create mode 100755 srcpkgs/pinebookpro-kernel/files/mv-debug create mode 100644 srcpkgs/pinebookpro-kernel/patches/musl.patch create mode 100644 srcpkgs/pinebookpro-kernel/patches/smsc95xx-mac.patch create mode 100644 srcpkgs/pinebookpro-kernel/template diff --git a/srcpkgs/pinebookpro-kernel-dbg b/srcpkgs/pinebookpro-kernel-dbg new file mode 120000 index 0000000000..4bfa7ac6ec --- /dev/null +++ b/srcpkgs/pinebookpro-kernel-dbg @@ -0,0 +1 @@ +pinebookpro-kernel \ No newline at end of file diff --git a/srcpkgs/pinebookpro-kernel-headers b/srcpkgs/pinebookpro-kernel-headers new file mode 120000 index 0000000000..4bfa7ac6ec --- /dev/null +++ b/srcpkgs/pinebookpro-kernel-headers @@ -0,0 +1 @@ +pinebookpro-kernel \ No newline at end of file diff --git a/srcpkgs/pinebookpro-kernel/files/DocBook/Makefile b/srcpkgs/pinebookpro-kernel/files/DocBook/Makefile new file mode 100644 index 0000000000..85916f13d3 --- /dev/null +++ b/srcpkgs/pinebookpro-kernel/files/DocBook/Makefile @@ -0,0 +1,282 @@ +### +# This makefile is used to generate the kernel documentation, +# primarily based on in-line comments in various source files. +# See Documentation/kernel-doc-nano-HOWTO.txt for instruction in how +# to document the SRC - and how to read it. +# To add a new book the only step required is to add the book to the +# list of DOCBOOKS. + +DOCBOOKS := z8530book.xml \ + kernel-hacking.xml kernel-locking.xml \ + networking.xml \ + filesystems.xml lsm.xml kgdb.xml \ + libata.xml mtdnand.xml librs.xml rapidio.xml \ + s390-drivers.xml scsi.xml \ + sh.xml w1.xml + +ifeq ($(DOCBOOKS),) + +# Skip DocBook build if the user explicitly requested no DOCBOOKS. +.DEFAULT: + @echo " SKIP DocBook $@ target (DOCBOOKS=\"\" specified)." +else +ifneq ($(SPHINXDIRS),) + +# Skip DocBook build if the user explicitly requested a sphinx dir +.DEFAULT: + @echo " SKIP DocBook $@ target (SPHINXDIRS specified)." +else + + +### +# The build process is as follows (targets): +# (xmldocs) [by docproc] +# file.tmpl --> file.xml +--> file.ps (psdocs) [by db2ps or xmlto] +# +--> file.pdf (pdfdocs) [by db2pdf or xmlto] +# +--> DIR=file (htmldocs) [by xmlto] +# +--> man/ (mandocs) [by xmlto] + + +# for PDF and PS output you can choose between xmlto and docbook-utils tools +PDF_METHOD = $(prefer-db2x) +PS_METHOD = $(prefer-db2x) + + +targets += $(DOCBOOKS) +BOOKS := $(addprefix $(obj)/,$(DOCBOOKS)) +xmldocs: $(BOOKS) +sgmldocs: xmldocs + +PS := $(patsubst %.xml, %.ps, $(BOOKS)) +psdocs: $(PS) + +PDF := $(patsubst %.xml, %.pdf, $(BOOKS)) +pdfdocs: $(PDF) + +HTML := $(sort $(patsubst %.xml, %.html, $(BOOKS))) +htmldocs: $(HTML) + $(call cmd,build_main_index) + +MAN := $(patsubst %.xml, %.9, $(BOOKS)) +mandocs: $(MAN) + find $(obj)/man -name '*.9' | xargs gzip -nf + +# Default location for installed man pages +export INSTALL_MAN_PATH = $(objtree)/usr + +installmandocs: mandocs + mkdir -p $(INSTALL_MAN_PATH)/man/man9/ + find $(obj)/man -name '*.9.gz' -printf '%h %f\n' | \ + sort -k 2 -k 1 | uniq -f 1 | sed -e 's: :/:' | \ + xargs install -m 644 -t $(INSTALL_MAN_PATH)/man/man9/ + +# no-op for the DocBook toolchain +epubdocs: +latexdocs: +linkcheckdocs: + +### +#External programs used +KERNELDOCXMLREF = $(srctree)/scripts/kernel-doc-xml-ref +KERNELDOC = $(srctree)/scripts/kernel-doc +DOCPROC = $(objtree)/scripts/docproc +CHECK_LC_CTYPE = $(objtree)/scripts/check-lc_ctype + +# Use a fixed encoding - UTF-8 if the C library has support built-in +# or ASCII if not +LC_CTYPE := $(call try-run, LC_CTYPE=C.UTF-8 $(CHECK_LC_CTYPE),C.UTF-8,C) +export LC_CTYPE + +XMLTOFLAGS = -m $(srctree)/$(src)/stylesheet.xsl +XMLTOFLAGS += --skip-validation + +### +# DOCPROC is used for two purposes: +# 1) To generate a dependency list for a .tmpl file +# 2) To preprocess a .tmpl file and call kernel-doc with +# appropriate parameters. +# The following rules are used to generate the .xml documentation +# required to generate the final targets. (ps, pdf, html). +quiet_cmd_docproc = DOCPROC $@ + cmd_docproc = SRCTREE=$(srctree)/ $(DOCPROC) doc $< >$@ +define rule_docproc + set -e; \ + $(if $($(quiet)cmd_$(1)),echo ' $($(quiet)cmd_$(1))';) \ + $(cmd_$(1)); \ + ( \ + echo 'cmd_$@ := $(cmd_$(1))'; \ + echo $@: `SRCTREE=$(srctree) $(DOCPROC) depend $<`; \ + ) > $(dir $@).$(notdir $@).cmd +endef + +%.xml: %.tmpl $(KERNELDOC) $(DOCPROC) $(KERNELDOCXMLREF) FORCE + $(call if_changed_rule,docproc) + +# Tell kbuild to always build the programs +always := $(hostprogs-y) + +notfoundtemplate = echo "*** You have to install docbook-utils or xmlto ***"; \ + exit 1 +db2xtemplate = db2TYPE -o $(dir $@) $< +xmltotemplate = xmlto TYPE $(XMLTOFLAGS) -o $(dir $@) $< + +# determine which methods are available +ifeq ($(shell which db2ps >/dev/null 2>&1 && echo found),found) + use-db2x = db2x + prefer-db2x = db2x +else + use-db2x = notfound + prefer-db2x = $(use-xmlto) +endif +ifeq ($(shell which xmlto >/dev/null 2>&1 && echo found),found) + use-xmlto = xmlto + prefer-xmlto = xmlto +else + use-xmlto = notfound + prefer-xmlto = $(use-db2x) +endif + +# the commands, generated from the chosen template +quiet_cmd_db2ps = PS $@ + cmd_db2ps = $(subst TYPE,ps, $($(PS_METHOD)template)) +%.ps : %.xml + $(call cmd,db2ps) + +quiet_cmd_db2pdf = PDF $@ + cmd_db2pdf = $(subst TYPE,pdf, $($(PDF_METHOD)template)) +%.pdf : %.xml + $(call cmd,db2pdf) + + +index = index.html +main_idx = $(obj)/$(index) +quiet_cmd_build_main_index = HTML $(main_idx) + cmd_build_main_index = rm -rf $(main_idx); \ + echo '

Linux Kernel HTML Documentation

' >> $(main_idx) && \ + echo '

Kernel Version: $(KERNELVERSION)

' >> $(main_idx) && \ + cat $(HTML) >> $(main_idx) + +quiet_cmd_db2html = HTML $@ + cmd_db2html = xmlto html $(XMLTOFLAGS) -o $(patsubst %.html,%,$@) $< && \ + echo ' \ + $(patsubst %.html,%,$(notdir $@))

' > $@ + +### +# Rules to create an aux XML and .db, and use them to re-process the DocBook XML +# to fill internal hyperlinks + gen_aux_xml = : + quiet_gen_aux_xml = echo ' XMLREF $@' +silent_gen_aux_xml = : +%.aux.xml: %.xml + @$($(quiet)gen_aux_xml) + @rm -rf $@ + @(cat $< | egrep "^ $<.db) + @$(KERNELDOCXMLREF) -db $<.db $< > $@ +.PRECIOUS: %.aux.xml + +%.html: %.aux.xml + @(which xmlto > /dev/null 2>&1) || \ + (echo "*** You need to install xmlto ***"; \ + exit 1) + @rm -rf $@ $(patsubst %.html,%,$@) + $(call cmd,db2html) + @if [ ! -z "$(PNG-$(basename $(notdir $@)))" ]; then \ + cp $(PNG-$(basename $(notdir $@))) $(patsubst %.html,%,$@); fi + +quiet_cmd_db2man = MAN $@ + cmd_db2man = if grep -q refentry $<; then xmlto man $(XMLTOFLAGS) -o $(obj)/man/$(*F) $< ; fi +%.9 : %.xml + @(which xmlto > /dev/null 2>&1) || \ + (echo "*** You need to install xmlto ***"; \ + exit 1) + $(Q)mkdir -p $(obj)/man/$(*F) + $(call cmd,db2man) + @touch $@ + +### +# Rules to generate postscripts and PNG images from .fig format files +quiet_cmd_fig2eps = FIG2EPS $@ + cmd_fig2eps = fig2dev -Leps $< $@ + +%.eps: %.fig + @(which fig2dev > /dev/null 2>&1) || \ + (echo "*** You need to install transfig ***"; \ + exit 1) + $(call cmd,fig2eps) + +quiet_cmd_fig2png = FIG2PNG $@ + cmd_fig2png = fig2dev -Lpng $< $@ + +%.png: %.fig + @(which fig2dev > /dev/null 2>&1) || \ + (echo "*** You need to install transfig ***"; \ + exit 1) + $(call cmd,fig2png) + +### +# Rule to convert a .c file to inline XML documentation + gen_xml = : + quiet_gen_xml = echo ' GEN $@' +silent_gen_xml = : +%.xml: %.c + @$($(quiet)gen_xml) + @( \ + echo ""; \ + expand --tabs=8 < $< | \ + sed -e "s/&/\\&/g" \ + -e "s//\\>/g"; \ + echo "") > $@ + +endif # DOCBOOKS="" +endif # SPHINDIR=... + +### +# Help targets as used by the top-level makefile +dochelp: + @echo ' Linux kernel internal documentation in different formats (DocBook):' + @echo ' htmldocs - HTML' + @echo ' pdfdocs - PDF' + @echo ' psdocs - Postscript' + @echo ' xmldocs - XML DocBook' + @echo ' mandocs - man pages' + @echo ' installmandocs - install man pages generated by mandocs to INSTALL_MAN_PATH'; \ + echo ' (default: $(INSTALL_MAN_PATH))'; \ + echo '' + @echo ' cleandocs - clean all generated DocBook files' + @echo + @echo ' make DOCBOOKS="s1.xml s2.xml" [target] Generate only docs s1.xml s2.xml' + @echo ' valid values for DOCBOOKS are: $(DOCBOOKS)' + @echo + @echo " make DOCBOOKS=\"\" [target] Don't generate docs from Docbook" + @echo ' This is useful to generate only the ReST docs (Sphinx)' + + +### +# Temporary files left by various tools +clean-files := $(DOCBOOKS) \ + $(patsubst %.xml, %.dvi, $(DOCBOOKS)) \ + $(patsubst %.xml, %.aux, $(DOCBOOKS)) \ + $(patsubst %.xml, %.tex, $(DOCBOOKS)) \ + $(patsubst %.xml, %.log, $(DOCBOOKS)) \ + $(patsubst %.xml, %.out, $(DOCBOOKS)) \ + $(patsubst %.xml, %.ps, $(DOCBOOKS)) \ + $(patsubst %.xml, %.pdf, $(DOCBOOKS)) \ + $(patsubst %.xml, %.html, $(DOCBOOKS)) \ + $(patsubst %.xml, %.9, $(DOCBOOKS)) \ + $(patsubst %.xml, %.aux.xml, $(DOCBOOKS)) \ + $(patsubst %.xml, %.xml.db, $(DOCBOOKS)) \ + $(patsubst %.xml, %.xml, $(DOCBOOKS)) \ + $(patsubst %.xml, .%.xml.cmd, $(DOCBOOKS)) \ + $(index) + +clean-dirs := $(patsubst %.xml,%,$(DOCBOOKS)) man + +cleandocs: + $(Q)rm -f $(call objectify, $(clean-files)) + $(Q)rm -rf $(call objectify, $(clean-dirs)) + +# Declare the contents of the .PHONY variable as phony. We keep that +# information in a variable so we can use it in if_changed and friends. + +.PHONY: $(PHONY) diff --git a/srcpkgs/pinebookpro-kernel/files/mv-debug b/srcpkgs/pinebookpro-kernel/files/mv-debug new file mode 100755 index 0000000000..8898c928d1 --- /dev/null +++ b/srcpkgs/pinebookpro-kernel/files/mv-debug @@ -0,0 +1,7 @@ +#!/bin/sh +mod=$1 +mkdir -p usr/lib/debug/${mod%/*} +$OBJCOPY --only-keep-debug --compress-debug-sections $mod usr/lib/debug/$mod +$OBJCOPY --add-gnu-debuglink=${DESTDIR}/usr/lib/debug/$mod $mod +/usr/bin/$STRIP --strip-debug $mod +gzip -9 $mod diff --git a/srcpkgs/pinebookpro-kernel/patches/musl.patch b/srcpkgs/pinebookpro-kernel/patches/musl.patch new file mode 100644 index 0000000000..412d61ff07 --- /dev/null +++ b/srcpkgs/pinebookpro-kernel/patches/musl.patch @@ -0,0 +1,19 @@ +diff --git a/crypto/aegis128-neon-inner.c b/crypto/aegis128-neon-inner.c +index 2a660ac1bc3a..41d39fcd6e54 100644 +--- a/crypto/aegis128-neon-inner.c ++++ b/crypto/aegis128-neon-inner.c +@@ -15,13 +15,10 @@ + + #define AEGIS_BLOCK_SIZE 16 + +-#include ++#include + + extern int aegis128_have_aes_insn; + +-void *memcpy(void *dest, const void *src, size_t n); +-void *memset(void *s, int c, size_t n); +- + struct aegis128_state { + uint8x16_t v[5]; + }; diff --git a/srcpkgs/pinebookpro-kernel/patches/smsc95xx-mac.patch b/srcpkgs/pinebookpro-kernel/patches/smsc95xx-mac.patch new file mode 100644 index 0000000000..bf77c2d9e2 --- /dev/null +++ b/srcpkgs/pinebookpro-kernel/patches/smsc95xx-mac.patch @@ -0,0 +1,95 @@ +From e36d607d56dc5c0cbf2cb600e7686b559ea77b44 Mon Sep 17 00:00:00 2001 +From: popcornmix +Date: Tue, 18 Feb 2014 01:43:50 -0300 +Subject: [PATCH] net/smsc95xx: Allow mac address to be set as a parameter + +--- + drivers/net/usb/smsc95xx.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 56 insertions(+) + +diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c +index dc989a8..912be75 100644 +--- a/drivers/net/usb/smsc95xx.c ++++ b/drivers/net/usb/smsc95xx.c +@@ -60,6 +60,7 @@ + #define SUSPEND_SUSPEND3 (0x08) + #define SUSPEND_ALLMODES (SUSPEND_SUSPEND0 | SUSPEND_SUSPEND1 | \ + SUSPEND_SUSPEND2 | SUSPEND_SUSPEND3) ++#define MAC_ADDR_LEN (6) + + #define CARRIER_CHECK_DELAY (2 * HZ) + +@@ -80,6 +81,10 @@ static bool turbo_mode = true; + module_param(turbo_mode, bool, 0644); + MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction"); + ++static char *macaddr = ":"; ++module_param(macaddr, charp, 0); ++MODULE_PARM_DESC(macaddr, "MAC address"); ++ + static int __must_check __smsc95xx_read_reg(struct usbnet *dev, u32 index, + u32 *data, int in_pm) + { +@@ -809,8 +814,59 @@ static int smsc95xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd) + return generic_mii_ioctl(&dev->mii, if_mii(rq), cmd, NULL); + } + ++/* Check the macaddr module parameter for a MAC address */ ++static int smsc95xx_is_macaddr_param(struct usbnet *dev, u8 *dev_mac) ++{ ++ int i, j, got_num, num; ++ u8 mtbl[MAC_ADDR_LEN]; ++ ++ if (macaddr[0] == ':') ++ return 0; ++ ++ i = 0; ++ j = 0; ++ num = 0; ++ got_num = 0; ++ while (j < MAC_ADDR_LEN) { ++ if (macaddr[i] && macaddr[i] != ':') { ++ got_num++; ++ if ('0' <= macaddr[i] && macaddr[i] <= '9') ++ num = num * 16 + macaddr[i] - '0'; ++ else if ('A' <= macaddr[i] && macaddr[i] <= 'F') ++ num = num * 16 + 10 + macaddr[i] - 'A'; ++ else if ('a' <= macaddr[i] && macaddr[i] <= 'f') ++ num = num * 16 + 10 + macaddr[i] - 'a'; ++ else ++ break; ++ i++; ++ } else if (got_num == 2) { ++ mtbl[j++] = (u8) num; ++ num = 0; ++ got_num = 0; ++ i++; ++ } else { ++ break; ++ } ++ } ++ ++ if (j == MAC_ADDR_LEN) { ++ netif_dbg(dev, ifup, dev->net, "Overriding MAC address with: " ++ "%02x:%02x:%02x:%02x:%02x:%02x\n", mtbl[0], mtbl[1], mtbl[2], ++ mtbl[3], mtbl[4], mtbl[5]); ++ for (i = 0; i < MAC_ADDR_LEN; i++) ++ dev_mac[i] = mtbl[i]; ++ return 1; ++ } else { ++ return 0; ++ } ++} ++ + static void smsc95xx_init_mac_address(struct usbnet *dev) + { ++ /* Check module parameters */ ++ if (smsc95xx_is_macaddr_param(dev, dev->net->dev_addr)) ++ return; ++ + const u8 *mac_addr; + + /* maybe the boot loader passed the MAC address in devicetree */ +-- +2.10.2 + diff --git a/srcpkgs/pinebookpro-kernel/template b/srcpkgs/pinebookpro-kernel/template new file mode 100644 index 0000000000..061c2fd0cb --- /dev/null +++ b/srcpkgs/pinebookpro-kernel/template @@ -0,0 +1,253 @@ +# Template file for 'pinebookpro-kernel' +pkgname=pinebookpro-kernel +version=5.5.0 +revision=1 +_commit=799b9141e48783a0844187ad00855b3d53f77998 +wrksrc="linux-pinebook-pro-${_commit}" +short_desc="Linux kernel for Pinebook Pro (${version%.*} series)" +maintainer="Renato Aguiar " +license="GPL-2.0-only" +homepage="https://www.kernel.org" +distfiles="https://gitlab.manjaro.org/tsys/linux-pinebook-pro/-/archive/${_commit}/linux-pinebook-pro-${_commit}.tar.gz" +checksum=81cc691e5772ab710621db9e8e67a4d3c1f7121024ebce0df962003694c53e9d +patch_args="-Np1" + +archs="aarch64*" + +nodebug=yes # -dbg package is generated below manually +nostrip=yes +noverifyrdeps=yes +noshlibprovides=yes +preserve=yes + +hostmakedepends="tar xz bc elfutils-devel flex gmp-devel kmod libmpc-devel + libressl-devel perl uboot-mkimage cpio" + +_kernver="${version}_${revision}" +triggers="kernel-hooks" +kernel_hooks_version="${_kernver}" + +# These files could be modified when an external module is built. +mutable_files=" + /usr/lib/modules/${_kernver}/modules.builtin.bin + /usr/lib/modules/${_kernver}/modules.softdep + /usr/lib/modules/${_kernver}/modules.dep + /usr/lib/modules/${_kernver}/modules.dep.bin + /usr/lib/modules/${_kernver}/modules.symbols + /usr/lib/modules/${_kernver}/modules.symbols.bin + /usr/lib/modules/${_kernver}/modules.alias + /usr/lib/modules/${_kernver}/modules.alias.bin + /usr/lib/modules/${_kernver}/modules.devname" + +do_configure() { + # 5.4 misses Documentation/DocBook. We ship the directory from 4.12 here. + cp -a $FILESDIR/DocBook -t Documentation + + local arch subarch _args + + arch=arm64 + + if [ "$CROSS_BUILD" ]; then + _args="CROSS_COMPILE=${XBPS_CROSS_TRIPLET}-" + fi + + make ${makejobs} ARCH=$arch ${_args} pinebook_pro_defconfig + # Always use our revision to CONFIG_LOCALVERSION to match our pkg version. + sed -i -e "s|^\(CONFIG_LOCALVERSION=\).*|\1\"_${revision}\"|" .config +} + +do_build() { + local arch _cross _args + + _args="Image modules dtbs" + arch=arm64 + + if [ "$CROSS_BUILD" ]; then + _cross="CROSS_COMPILE=${XBPS_CROSS_TRIPLET}-" + fi + if [ "${_patchver}" ]; then + _version="EXTRAVERSION=${_patchver}" + fi + export LDFLAGS= + make ARCH=$arch ${_version} ${_cross} ${makejobs} prepare + make ARCH=$arch ${_version} ${_cross} ${makejobs} ${_args} +} + +do_install() { + local arch subarch _args hdrdest + + arch=arm64 + + # Run depmod after compressing modules. + sed -i '2iexit 0' scripts/depmod.sh + + # Install kernel, firmware and modules + make ${makejobs} ARCH=${subarch:-$arch} INSTALL_MOD_PATH=${DESTDIR} modules_install + + hdrdest=${DESTDIR}/usr/src/kernel-headers-${_kernver} + + vinstall .config 644 boot config-${_kernver} + vinstall System.map 644 boot System.map-${_kernver} + + vinstall arch/arm64/boot/Image 644 boot vmlinux-${_kernver} + make ${makejobs} ARCH=${subarch:-$arch} INSTALL_DTBS_PATH=${DESTDIR}/boot/dtbs/dtbs-${_kernver} dtbs_install + + # Switch to /usr. + vmkdir usr + mv ${DESTDIR}/lib ${DESTDIR}/usr + + cd ${DESTDIR}/usr/lib/modules/${_kernver} + rm -f source build + ln -sf ../../../src/kernel-headers-${_kernver} build + + cd ${wrksrc} + # Install required headers to build external modules + install -Dm644 Makefile ${hdrdest}/Makefile + install -Dm644 kernel/Makefile ${hdrdest}/kernel/Makefile + install -Dm644 .config ${hdrdest}/.config + for file in $(find . -name Kconfig\*); do + mkdir -p ${hdrdest}/$(dirname $file) + install -Dm644 $file ${hdrdest}/${file} + done + for file in $(find arch/${subarch:-$arch} -name module.lds -o -name Kbuild.platforms -o -name Platform); do + mkdir -p ${hdrdest}/$(dirname $file) + install -Dm644 $file ${hdrdest}/${file} + done + mkdir -p ${hdrdest}/include + # Remove firmware stuff provided by the "linux-firmware" pkg. + rm -rf ${DESTDIR}/usr/lib/firmware + + for i in acpi asm-generic clocksource config crypto drm generated linux \ + math-emu media net pcmcia scsi sound trace uapi video xen dt-bindings; do + if [ -d include/$i ]; then + cp -a include/$i ${hdrdest}/include + fi + done + + cd ${wrksrc} + mkdir -p ${hdrdest}/arch/${arch} + cp -a arch/${arch}/include ${hdrdest}/arch/${arch} + + # Remove helper binaries built for host, + # if generated files from the scripts/ directory need to be included, + # they need to be copied to ${hdrdest} before this step + if [ "$CROSS_BUILD" ]; then + make ${makejobs} ARCH=${subarch:-$arch} _mrproper_scripts + # remove host specific objects as well + find scripts -name '*.o' -delete + fi + + # Copy files necessary for later builds, like nvidia and vmware + cp Module.symvers ${hdrdest} + cp -a scripts ${hdrdest} + mkdir -p ${hdrdest}/security/selinux + cp -a security/selinux/include ${hdrdest}/security/selinux + mkdir -p ${hdrdest}/tools/include + cp -a tools/include/tools ${hdrdest}/tools/include + + mkdir -p ${hdrdest}/arch/${arch}/kernel + cp arch/${arch}/Makefile ${hdrdest}/arch/${arch} + + mkdir -p ${hdrdest}/arch/arm64/kernel + cp -a arch/arm64/kernel/vdso ${hdrdest}/arch/arm64/kernel/ + + # add headers for lirc package + # pci + for i in bt8xx cx88 saa7134; do + mkdir -p ${hdrdest}/drivers/media/pci/${i} + cp -a drivers/media/pci/${i}/*.h ${hdrdest}/drivers/media/pci/${i} + done + # usb + for i in cpia2 em28xx pwc; do + mkdir -p ${hdrdest}/drivers/media/usb/${i} + cp -a drivers/media/usb/${i}/*.h ${hdrdest}/drivers/media/usb/${i} + done + # i2c + mkdir -p ${hdrdest}/drivers/media/i2c + cp drivers/media/i2c/*.h ${hdrdest}/drivers/media/i2c + for i in cx25840; do + mkdir -p ${hdrdest}/drivers/media/i2c/${i} + cp -a drivers/media/i2c/${i}/*.h ${hdrdest}/drivers/media/i2c/${i} + done + + # Add docbook makefile + install -Dm644 Documentation/DocBook/Makefile \ + ${hdrdest}/Documentation/DocBook/Makefile + + # Add md headers + mkdir -p ${hdrdest}/drivers/md + cp drivers/md/*.h ${hdrdest}/drivers/md + + # Add inotify.h + mkdir -p ${hdrdest}/include/linux + cp include/linux/inotify.h ${hdrdest}/include/linux + + # Add wireless headers + mkdir -p ${hdrdest}/net/mac80211/ + cp net/mac80211/*.h ${hdrdest}/net/mac80211 + + # add dvb headers for external modules + mkdir -p ${hdrdest}/include/config/dvb/ + cp include/config/dvb/*.h ${hdrdest}/include/config/dvb/ + + # add dvb headers for http://mcentral.de/hg/~mrec/em28xx-new + mkdir -p ${hdrdest}/drivers/media/dvb-frontends + cp drivers/media/dvb-frontends/lgdt330x.h \ + ${hdrdest}/drivers/media/dvb-frontends/ + cp drivers/media/i2c/msp3400-driver.h ${hdrdest}/drivers/media/i2c/ + + # add dvb headers + mkdir -p ${hdrdest}/drivers/media/usb/dvb-usb + cp drivers/media/usb/dvb-usb/*.h ${hdrdest}/drivers/media/usb/dvb-usb/ + mkdir -p ${hdrdest}/drivers/media/dvb-frontends + cp drivers/media/dvb-frontends/*.h ${hdrdest}/drivers/media/dvb-frontends/ + mkdir -p ${hdrdest}/drivers/media/tuners + cp drivers/media/tuners/*.h ${hdrdest}/drivers/media/tuners/ + + # Add xfs and shmem for aufs building + mkdir -p ${hdrdest}/fs/xfs/libxfs + mkdir -p ${hdrdest}/mm + cp fs/xfs/libxfs/xfs_sb.h ${hdrdest}/fs/xfs/libxfs/xfs_sb.h + + # Remove unneeded architectures + for arch in alpha avr32 blackfin cris frv h8300 \ + ia64 m* s* um v850 xtensa x86* p*; do + rm -rf ${hdrdest}/arch/${arch} + done + # Keep arch/x86/ras/Kconfig as it is needed by drivers/ras/Kconfig + mkdir -p ${hdrdest}/arch/x86/ras + cp -a arch/x86/ras/Kconfig ${hdrdest}/arch/x86/ras/Kconfig + + # Extract debugging symbols and compress modules + msg_normal "$pkgver: extracting debug info and compressing modules, please wait...\n" + install -Dm644 vmlinux ${DESTDIR}/usr/lib/debug/boot/vmlinux-${_kernver} + ( + cd ${DESTDIR} + export DESTDIR + find ./ -name '*.ko' -print0 | \ + xargs -0r -n1 -P ${XBPS_MAKEJOBS} ${FILESDIR}/mv-debug + ) + # ... and run depmod again. + depmod -b ${DESTDIR}/usr -F System.map ${_kernver} +} +pinebookpro-kernel-headers_package() { + preserve=yes + nostrip=yes + noshlibprovides=yes + short_desc+=" - source headers for 3rd party modules" + pkg_install() { + vmove usr/src + vmove usr/lib/modules/${_kernver}/build + } +} +pinebookpro-kernel-dbg_package() { + preserve=yes + nostrip=yes + noverifyrdeps=yes + noshlibprovides=yes + repository=debug + short_desc+=" - debugging symbols" + pkg_install() { + vmove usr/lib/debug + } +}