Advertisement
Guest User

Untitled

a guest
Sep 11th, 2013
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.62 KB | None | 0 0
  1. # Maintainer: Matt Parnell/ilikenwf <parwok@gmail.com>
  2. # PKGBUILD Writer: Patrick Bartels <p4ddy.b@gmail.com>
  3.  
  4. # Uncomment the line below if you want to maintain the git tree yourself.
  5. _no_update="y"
  6.  
  7. # AUR workaround...
  8. pkgname="linux-next"
  9.  
  10. true && pkgbase="linux-next"
  11. true && pkgname=("linux-next" "linux-next-headers")
  12. pkgver=3.11
  13. pkgrel=1
  14. pkgdesc="Linux-Next kernel from git - use yaourt -G or store the build directory somewhere to keep a git repo."
  15. url="http://www.kernel.org"
  16. license=("GPL2")
  17. arch=("i686" "x86_64")
  18. makedepends=("git")
  19. options=("!strip")
  20. source=(linux-next.conf
  21. linux-next.preset)
  22. md5sums=('ccec126fa0bfce4222a526ca02cf2de8'
  23. '26dbd49508006ebdd52ab6cade09c330')
  24.  
  25. _gitroot="https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git"
  26. _gitname="linux-next"
  27.  
  28. declare _builddir
  29. declare _sourcedir
  30. declare _kernver
  31. # compress the modules with gzip or not
  32. _compress="y"
  33.  
  34. fetch_sources() {
  35. if [ ! -d "$_gitname" ]; then
  36. cd "$srcdir"
  37. msg2 "Cloning initial copy of linux-next..."
  38. warning "This may take some time depending on your available bandwidth."
  39.  
  40. git clone --depth 1 "$_gitroot" "$_gitname"
  41.  
  42. _no_update="y" # update is not necessary
  43. fi
  44.  
  45. if [ "$_no_update" = "y" ]; then
  46. msg2 "Skipping tree update..."
  47. else
  48. cd "$srcdir/$_gitname"
  49.  
  50. msg2 "Updating local tree..."
  51. if git fetch; then
  52. msg2 "Attempting to merge changes..."
  53.  
  54. if ! git merge origin/master; then
  55. error "Merging failed..."
  56.  
  57. msg2 "Fixing local repository..."
  58. git checkout -f "matt-playground"
  59. git clean -xdf
  60. git reset --hard "origin/master"
  61. fi
  62. else
  63. error "Update failed..."
  64. fi
  65.  
  66. warning "Press ENTER if you want to continue or CTRL+C to abort..."
  67. read
  68. fi
  69. }
  70.  
  71. build() {
  72. fetch_sources
  73. _builddir="$srcdir/build"
  74. _sourcedir="$srcdir/$_gitname/"
  75. # don't run depmod on 'make install'. We'll do this ourselves in packaging
  76. sed -i '2iexit 0' $_sourcedir/scripts/depmod.sh
  77.  
  78. if [ -e "$_builddir/.config" ]; then
  79. msg2 "Using existing config found in build environment..."
  80. else
  81. if [ ! -d "$_builddir" ]; then
  82. msg2 "Creating build directory..."
  83. mkdir -p "$_builddir"
  84. fi
  85.  
  86. msg2 "Creating default config..." # also initializes the output directory
  87. make -C "$_sourcedir" O="$_builddir" defconfig > /dev/null
  88.  
  89. warning "This package does not ship a kernel config."
  90.  
  91. plain ""
  92. warning "Thus it is up to you to create a one that fits your needs."
  93. warning "Navigate to '$_builddir'"
  94. warning "and either run 'make menuconfig' or if you want to use an existing config,"
  95. warning "save it as '.config' and run 'make oldconfig' in order to update it."
  96. warning "Having done that you can run 'makepkg' again."
  97. plain ""
  98.  
  99. return 1
  100. fi
  101.  
  102. msg2 "Updating output directory Makefile..."
  103. make -C "$_sourcedir" O="$_builddir" outputmakefile
  104.  
  105. warning "Press ENTER if you want to build the kernel or CTRL+C to abort..."
  106. read
  107.  
  108. # Number of CPU Cores
  109. _CORES=$(cat /proc/cpuinfo|grep processor|wc -l)
  110. if [ $_CORES -lt 1 ]; then
  111. _CORES=1
  112. fi
  113.  
  114. cd "$_builddir"
  115. msg2 "Building kernel..."; make -j $_CORES bzImage
  116. msg2 "Building modules..."; make -j $_CORES modules
  117. }
  118.  
  119. package_linux-next() {
  120. depends=("coreutils" "linux-firmware" "kmod" "mkinitcpio>=0.5.20")
  121. optdepends=("linux-next-headers: to build third party modules such as NVIDIA drivers or OSSv4"
  122. "crda: to set the correct wireless channels of your country")
  123. backup=(etc/mkinitcpio.d/linux-next.conf)
  124. install=linux-next.install
  125.  
  126. _builddir="$srcdir/build/"
  127. _sourcedir="$srcdir/$_gitname/"
  128.  
  129. msg2 "Determining kernel name..."
  130. cd "$_sourcedir"
  131. _kernver="$(make O="$_builddir" kernelrelease)"
  132. msg2 "Kernel release name is: $_kernver"
  133.  
  134. cd "$_builddir"
  135.  
  136. msg2 "Installing kernel image..."
  137. install -D -m644 "arch/x86/boot/bzImage" "$pkgdir/boot/vmlinuz-linux-next"
  138.  
  139. msg2 "Installing modules (and firmware files)..."
  140. make INSTALL_MOD_PATH="$pkgdir" modules_install
  141.  
  142. if [ -d "$pkgdir/lib/firmware" ]; then
  143. msg2 "Removing firmware files..."
  144. rm -r "$pkgdir/lib/firmware"
  145. fi
  146.  
  147. if [ $_compress = "y" ]; then
  148. msg2 "Compressing kernel modules with gzip..."
  149. find "${pkgdir}" -name '*.ko' -exec gzip -9 {} \;
  150. fi
  151.  
  152. # make room for external modules
  153. if [ -d "${pkgdir}/lib/modules/extramodules-*" ]; then
  154. rmdir "${pkgdir}/lib/modules/extramodules-*" &> /dev/null
  155. fi
  156.  
  157. ln -s "../extramodules-${_kernver}" "${pkgdir}/lib/modules/${_kernver}/extramodules"
  158. # add real version for building modules and running depmod from post_install/upgrade
  159. mkdir -p "${pkgdir}/lib/modules/extramodules-${_kernver}"
  160. echo "${_kernver}" > "${pkgdir}/lib/modules/extramodules-${_kernver}/version"
  161.  
  162. msg2 "Installing System.map..."
  163. install -m644 "System.map" "$pkgdir/boot/System.map-next"
  164.  
  165. msg2 "Removing links to source and build directory..."
  166. rm "$pkgdir/lib/modules/$_kernver/"{build,source}
  167.  
  168. msg2 "Updating kernel version in install script..."
  169. sed -i "s/_kernel_version=.*/_kernel_version=$_kernver/" \
  170. "$startdir/linux-next.install"
  171.  
  172. msg2 "Installing files for mkinitcpio..."
  173. install -D -m644 "$srcdir/linux-next.conf" \
  174. "$pkgdir/etc/mkinitcpio.d/linux-next.conf"
  175.  
  176. install -D -m644 "$srcdir/linux-next.preset" \
  177. "$pkgdir/etc/mkinitcpio.d/linux-next.preset"
  178. sed -i "s/^ALL_kver=.*$/ALL_kver=$_kernver/" \
  179. "$pkgdir/etc/mkinitcpio.d/linux-next.preset"
  180.  
  181. # move module tree /lib -> /usr/lib
  182. mkdir -p "$pkgdir/usr/lib"
  183. mv -v "$pkgdir/lib" "$pkgdir/usr/"
  184.  
  185. # Now we call depmod...
  186. depmod -b "$pkgdir/usr/" -F System.map "$_kernver"
  187. }
  188.  
  189. package_linux-next-headers() {
  190. # AUR workaround
  191. true && pkgdesc="Header files and scripts for building modules for linux-next"
  192. true && depends=("linux-next")
  193. true && provides=("linux-headers")
  194.  
  195. _builddir="$srcdir/build"
  196. _sourcedir="$srcdir/$_gitname"
  197. cd "$_sourcedir"
  198. _kernver="$(make O="$_builddir" kernelrelease)"
  199.  
  200. _srcdir="/usr/src/linux-$_kernver"
  201.  
  202. msg2 "Installing files necessary for 3rd party modules such as NVIDIA drivers or OSSv4..."
  203. mkdir -p "$pkgdir$_srcdir/"{arch/x86,include}
  204. echo "$pkgdir$_srcdir/"
  205. install -D -m644 "$_sourcedir/Makefile" "$pkgdir/$_srcdir/Makefile"
  206. install -D -m644 "$_sourcedir/kernel/Makefile" "$pkgdir/$_srcdir/kernel/Makefile"
  207. install -D -m644 "$_builddir/.config" "$pkgdir/$_srcdir/.config"
  208. install -D -m644 "$_builddir/Module.symvers" "$pkgdir/$_srcdir/Module.symvers"
  209. install -D -m644 "$_builddir/include/generated/uapi/linux/version.h" "$pkgdir/$_srcdir/include/linux/version.h"
  210. install -D -m644 "$_builddir/arch/x86/kernel/asm-offsets.s" "$pkgdir/$_srcdir/arch/x86/kernel/asm-offsets.s"
  211. install -D -m644 "$_sourcedir/arch/x86/Makefile" "$pkgdir/$_srcdir/arch/x86/Makefile"
  212.  
  213. if [ "$CARCH" = "i686" ]; then
  214. install -D -m644 "$_sourcedir/arch/x86/Makefile_32.cpu" "$pkgdir/$_srcdir/arch/x86/Makefile_32.cpu"
  215. fi
  216.  
  217. cp -a "$_sourcedir/scripts" "$pkgdir/$_srcdir"
  218. cp -a "$_builddir/scripts" "$pkgdir/$_srcdir"
  219. cp -a "$_sourcedir/include" "$pkgdir/$_srcdir"
  220. cp -a "$_builddir/include/"{generated,config} "$pkgdir/$_srcdir/include"
  221. cp -a "$_sourcedir/arch/x86/include" "$pkgdir/$_srcdir/arch/x86"
  222. cp -a "$_builddir/arch/x86/include" "$pkgdir/$_srcdir/arch/x86"
  223.  
  224. cd "$_sourcedir"
  225. {
  226. find drivers -type f -name "*.h";
  227. find . -type f -name "Kconfig*";
  228. } | while read file; do
  229. install -D -m644 "$file" "$pkgdir/$_srcdir/$file"
  230. done
  231.  
  232. msg2 "Fixing permissions on scripts directory..."
  233. chmod og-w -R "$pkgdir/$_srcdir/scripts"
  234.  
  235. msg2 "Creating symlinks..."
  236. mkdir -p "$pkgdir/lib/modules/$_kernver/"
  237. ln -s "$_srcdir" "$pkgdir/lib/modules/$_kernver/build"
  238. ln -s "$_srcdir" "$pkgdir/lib/modules/$_kernver/source"
  239. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement