· 8 years ago · Jun 12, 2018, 01:14 AM
1# Maintainer: Barna Csorogi <barnacs@justletit.be>
2# Contributor: Boohbah <boohbah at gmail.com>
3# Contributor: Tobias Powalowski <tpowa@archlinux.org>
4# Contributor: Thomas Baechler <thomas@archlinux.org>
5# Contributor: Jonathan Chan <jyc@fastmail.fm>
6# Contributor: misc <tastky@gmail.com>
7# Contributor: NextHendrix <cjones12 at sheffield.ac.uk>
8
9pkgbase=linux-galliumos
10_srcname=linux
11pkgver=4.14.14
12pkgrel=1
13arch=('i686' 'x86_64')
14url="http://www.kernel.org/"
15license=('GPL2')
16makedepends=('kmod' 'inetutils' 'bc' 'git' 'libelf')
17options=('!strip')
18source=("git+https://github.com/GalliumOS/linux.git#branch=v${pkgver}-galliumos"
19 # standard config files for mkinitcpio ramdisk
20 "${pkgbase}.preset")
21sha256sums=('SKIP'
22 '2c8a0e7bea719c82005fd7158a4a7ca344b7af5a37fedce44b9fda488a9116c2')
23
24_kernelname=${pkgbase#linux}
25
26prepare() {
27 cd "${_srcname}"
28
29 bash galliumos/diffs/apply_all.sh
30
31 cp galliumos/config .config
32
33 # modules for initramfs usb storage support
34 sed \
35 -e 's/^CONFIG_INPUT_EVDEV=y/CONFIG_INPUT_EVDEV=m/' \
36 -e 's/^CONFIG_INPUT_EVBUG*/# CONFIG_INPUT_EVBUG is not set/' \
37 -e 's/^CONFIG_BLK_DEV_SD=.*/CONFIG_BLK_DEV_SD=m/' \
38 -e 's/^CONFIG_SCSI=.*/CONFIG_SCSI=m/' \
39 -e 's/^CONFIG_SCSI_MOD=.*/CONFIG_SCSI_MOD=m/' \
40 -e 's/^CONFIG_EXT4_FS=.*/CONFIG_EXT4_FS=m/' \
41 -e 's/^CONFIG_USB_COMMON=.*/CONFIG_USB_COMMON=m/' \
42 -e 's/^CONFIG_USB=.*/CONFIG_USB=m/' \
43 -e 's/^CONFIG_USB_XHCI_HCD=.*/CONFIG_USB_XHCI_HCD=m/' \
44 -e 's/^CONFIG_USB_XHCI_PCI=.*/CONFIG_USB_XHCI_PCI=m/' \
45 -e 's/^CONFIG_USB_EHCI_HCD=.*/CONFIG_USB_EHCI_HCD=m/' \
46 -e 's/^CONFIG_USB_EHCI_PCI=.*/CONFIG_USB_EHCI_PCI=m/' \
47 -e 's/^CONFIG_USB_UHCI_HCD=.*/CONFIG_USB_UHCI_HCD=m/' \
48 -i .config
49
50
51 # don't run depmod on 'make install'. We'll do this ourselves in packaging
52 sed -i '2iexit 0' scripts/depmod.sh
53
54 # load configuration
55 # Configure the kernel. Replace the line below with one of your choice.
56 #make menuconfig # CLI menu for configuration
57 #make nconfig # new CLI menu for configuration
58 #make xconfig # X-based configuration
59 #make oldconfig # using old config from previous kernel version
60 make olddefconfig # old config from previous kernel, defaults for new options
61 # ... or manually edit .config
62}
63
64build() {
65 cd "${_srcname}"
66
67 make ${MAKEFLAGS} bzImage modules
68}
69
70_package() {
71 pkgdesc="The Linux kernel and modules with GalliumOS patches for chromebooks"
72 depends=('coreutils' 'linux-firmware' 'kmod' 'mkinitcpio>=0.7')
73 optdepends=('crda: to set the correct wireless channels of your country')
74 provides=('linux')
75 backup=("etc/mkinitcpio.d/${pkgbase}.preset")
76 install=linux.install
77
78 cd "${_srcname}"
79
80 KARCH=x86
81
82 # get kernel version
83 _kernver="$(make kernelrelease)"
84 _basekernel=${_kernver%%-*}
85 _basekernel=${_basekernel%.*}
86
87 mkdir -p "${pkgdir}"/{lib/modules,lib/firmware,boot}
88 make INSTALL_MOD_PATH="${pkgdir}" modules_install
89 cp arch/$KARCH/boot/bzImage "${pkgdir}/boot/vmlinuz-${pkgbase}"
90
91 # set correct depmod command for install
92 cp -f "${startdir}/${install}" "${startdir}/${install}.pkg"
93 true && install=${install}.pkg
94 sed \
95 -e "s/KERNEL_NAME=.*/KERNEL_NAME=${_kernelname}/" \
96 -e "s/KERNEL_VERSION=.*/KERNEL_VERSION=${_kernver}/" \
97 -i "${startdir}/${install}"
98
99 # install mkinitcpio preset file for kernel
100 install -D -m644 "${srcdir}/${pkgbase}.preset" "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset"
101 sed \
102 -e "1s|'linux.*'|'${pkgbase}'|" \
103 -e "s|ALL_kver=.*|ALL_kver=\"/boot/vmlinuz-${pkgbase}\"|" \
104 -e "s|default_image=.*|default_image=\"/boot/initramfs-${pkgbase}.img\"|" \
105 -e "s|fallback_image=.*|fallback_image=\"/boot/initramfs-${pkgbase}-fallback.img\"|" \
106 -i "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset"
107
108 # remove build and source links
109 rm -f "${pkgdir}"/lib/modules/${_kernver}/{source,build}
110 # remove the firmware
111 rm -rf "${pkgdir}/lib/firmware"
112 # make room for external modules
113 ln -s "../extramodules-${_basekernel}${_kernelname:--ARCH}" "${pkgdir}/lib/modules/${_kernver}/extramodules"
114 # add real version for building modules and running depmod from post_install/upgrade
115 mkdir -p "${pkgdir}/lib/modules/extramodules-${_basekernel}${_kernelname:--ARCH}"
116 echo "${_kernver}" > "${pkgdir}/lib/modules/extramodules-${_basekernel}${_kernelname:--ARCH}/version"
117
118 # Now we call depmod...
119 depmod -b "${pkgdir}" -F System.map "${_kernver}"
120
121 # move module tree /lib -> /usr/lib
122 mkdir -p "${pkgdir}/usr"
123 mv "${pkgdir}/lib" "${pkgdir}/usr/"
124
125 # add vmlinux
126 install -D -m644 vmlinux "${pkgdir}/usr/lib/modules/${_kernver}/build/vmlinux"
127
128 # add System.map
129 install -D -m644 System.map "${pkgdir}/boot/System.map-${_kernver}"
130}
131
132_package-headers() {
133 pkgdesc="Header files and scripts for building modules for Linux kernel with GalliumOS patches for chromebooks"
134 provides=('linux-headers')
135
136 install -dm755 "${pkgdir}/usr/lib/modules/${_kernver}"
137
138 cd "${_srcname}"
139 install -D -m644 Makefile \
140 "${pkgdir}/usr/lib/modules/${_kernver}/build/Makefile"
141 install -D -m644 kernel/Makefile \
142 "${pkgdir}/usr/lib/modules/${_kernver}/build/kernel/Makefile"
143 install -D -m644 .config \
144 "${pkgdir}/usr/lib/modules/${_kernver}/build/.config"
145
146 mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/include"
147
148 for i in acpi asm-generic config crypto drm generated keys linux math-emu \
149 media net pcmcia scsi sound trace uapi video xen; do
150 cp -a include/${i} "${pkgdir}/usr/lib/modules/${_kernver}/build/include/"
151 done
152
153 # copy arch includes for external modules
154 mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/x86"
155 cp -a arch/x86/include "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/x86/"
156
157 # copy files necessary for later builds, like nvidia and vmware
158 cp Module.symvers "${pkgdir}/usr/lib/modules/${_kernver}/build"
159 cp -a scripts "${pkgdir}/usr/lib/modules/${_kernver}/build"
160
161 # fix permissions on scripts dir
162 chmod og-w -R "${pkgdir}/usr/lib/modules/${_kernver}/build/scripts"
163 mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/.tmp_versions"
164
165 mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/kernel"
166
167 cp arch/${KARCH}/Makefile "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/"
168
169 if [ "${CARCH}" = "i686" ]; then
170 cp arch/${KARCH}/Makefile_32.cpu "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/"
171 fi
172
173 cp arch/${KARCH}/kernel/asm-offsets.s "${pkgdir}/usr/lib/modules/${_kernver}/build/arch/${KARCH}/kernel/"
174
175 # add dm headers
176 mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/md"
177 cp drivers/md/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/md"
178
179 # add inotify.h
180 mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/include/linux"
181 cp include/linux/inotify.h "${pkgdir}/usr/lib/modules/${_kernver}/build/include/linux/"
182
183 # add wireless headers
184 mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/net/mac80211/"
185 cp net/mac80211/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/net/mac80211/"
186
187 # add dvb headers for external modules
188 # in reference to:
189 # http://bugs.archlinux.org/task/9912
190 mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-core"
191 cp drivers/media/dvb-core/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-core/"
192 # and...
193 # http://bugs.archlinux.org/task/11194
194
195 # add dvb headers for http://mcentral.de/hg/~mrec/em28xx-new
196 # in reference to:
197 # http://bugs.archlinux.org/task/13146
198 mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends/"
199 cp drivers/media/dvb-frontends/lgdt330x.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends/"
200 mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/i2c/"
201 cp drivers/media/i2c/msp3400-driver.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/i2c/"
202
203 # add dvb headers
204 # in reference to:
205 # http://bugs.archlinux.org/task/20402
206 mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/usb/dvb-usb"
207 cp drivers/media/usb/dvb-usb/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/usb/dvb-usb/"
208 mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends"
209 cp drivers/media/dvb-frontends/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/dvb-frontends/"
210 mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/tuners"
211 cp drivers/media/tuners/*.h "${pkgdir}/usr/lib/modules/${_kernver}/build/drivers/media/tuners/"
212
213 # add xfs and shmem for aufs building
214 mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/fs/xfs"
215 mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/mm"
216 # removed in 3.17 series
217 # cp fs/xfs/xfs_sb.h "${pkgdir}/usr/lib/modules/${_kernver}/build/fs/xfs/xfs_sb.h"
218
219 # copy in Kconfig files
220 for i in $(find . -name "Kconfig*"); do
221 mkdir -p "${pkgdir}"/usr/lib/modules/${_kernver}/build/`echo ${i} | sed 's|/Kconfig.*||'`
222 cp ${i} "${pkgdir}/usr/lib/modules/${_kernver}/build/${i}"
223 done
224
225 # Fix file conflict with -doc package
226 rm "${pkgdir}/usr/lib/modules/${_kernver}/build/Documentation/kbuild"/Kconfig.*-*
227
228 # Add objtool for CONFIG_STACK_VALIDATION
229 mkdir -p "${pkgdir}/usr/lib/modules/${_kernver}/build/tools"
230 cp -a tools/objtool "${pkgdir}/usr/lib/modules/${_kernver}/build/tools"
231
232 chown -R root.root "${pkgdir}/usr/lib/modules/${_kernver}/build"
233 find "${pkgdir}/usr/lib/modules/${_kernver}/build" -type d -exec chmod 755 {} \;
234
235 # strip scripts directory
236 find "${pkgdir}/usr/lib/modules/${_kernver}/build/scripts" -type f -perm -u+w 2>/dev/null | while read binary ; do
237 case "$(file -bi "${binary}")" in
238 *application/x-sharedlib*) # Libraries (.so)
239 /usr/bin/strip ${STRIP_SHARED} "${binary}";;
240 *application/x-archive*) # Libraries (.a)
241 /usr/bin/strip ${STRIP_STATIC} "${binary}";;
242 *application/x-executable*) # Binaries
243 /usr/bin/strip ${STRIP_BINARIES} "${binary}";;
244 esac
245 done
246
247 # remove unneeded architectures
248 rm -rf "${pkgdir}"/usr/lib/modules/${_kernver}/build/arch/{alpha,arc,arm,arm26,arm64,avr32,blackfin,c6x,cris,frv,h8300,hexagon,ia64,m32r,m68k,m68knommu,metag,mips,microblaze,mn10300,openrisc,parisc,powerpc,ppc,s390,score,sh,sh64,sparc,sparc64,tile,unicore32,um,v850,xtensa}
249}
250
251pkgname=("${pkgbase}" "${pkgbase}-headers")
252for _p in ${pkgname[@]}; do
253 eval "package_${_p}() {
254 $(declare -f "_package${_p#${pkgbase}}")
255 _package${_p#${pkgbase}}
256 }"
257done
258
259# vim:set ts=8 sts=2 sw=2 et: