You are not logged in.
Index» Kernel & Hardware
Hello-
I am starting a new thread since my previous post was to an ancient thread (sorry, I hadn't noted the date).
I built a custom kernel using ABS, attempting to follow https://wiki.archlinux.org/index.php/Cu … n_with_ABS notes
However the notes regarding _kernelname and pkgname don't seem to match up with the formatting or idea of the PKGBUILD file provided by abs.
Instead of following the wiki, i followed the instruction provided by the PKGBUILD by commenting out the default line and uncommenting/modifying the second line.
#pkgbase=linux # Build stock -ARCH kernel
pkgbase=linux-iwlwifidebug # Build kernel with a different name
The result was a package with conflicting files:
loading packages...
resolving dependencies...
:: Proceed with installation? [Y/n]
Packages (1): linux-iwlwifidebug-3.12.1-1
Total Installed Size: 68.98 MiB
checking keyring...
checking package integrity...
loading package files...
checking for file conflicts...
error: failed to commit transaction (conflicting files)
linux-iwlwifidebug: /usr/lib/modules/3.12.1-1-ARCH/extramodules exists in filesystem
linux-iwlwifidebug: /usr/lib/modules/3.12.1-1-ARCH/kernel/arch/x86/crypto/ablk_helper.ko.gz exists in filesystem
linux-iwlwifidebug: /usr/lib/modules/3.12.1-1-ARCH/kernel/arch/x86/crypto/aes-x86_64.ko.gz exists in filesystem
...
...
linux-iwlwifidebug: /usr/lib/modules/3.12.1-1-ARCH/modules.softdep exists in filesystem
linux-iwlwifidebug: /usr/lib/modules/3.12.1-1-ARCH/modules.symbols exists in filesystem
linux-iwlwifidebug: /usr/lib/modules/3.12.1-1-ARCH/modules.symbols.bin exists in filesystem
linux-iwlwifidebug: /usr/src/linux-3.12.1-1-ARCH/vmlinux exists in filesystem
Errors occurred, no packages were upgraded.
In the thread that was closed due to being too old (https://bbs.archlinux.org/viewtopic.php?pid=234004), jasonwryan noted:
"pkgbase is for split packages, you need pkgname:
_kernelname="-foo"
pkgname=linux-foo
pkgver=3.12.1
pkgrel=1
_srcname=linux-3.12
pkgdesc="The ${pkgname} kernel and modules"
" and you can see that he also changed kernelname.
Which jives with the doc https://wiki.archlinux.org/index.php/Cu … n_with_ABS, which notes
Modify pkgname and _kernelname for your custom package name, e.g.:
_kernelname="-custom" # custom suffix, eg., 3.12.1-1-custom
pkgname=linux-custom # custom package name, eg., vmlinuz-linux-custom
Looking at the logic that is provided by jasonwryan and the doc, I need pkgname and _kernelname to be different than default- however these are defined in PKGBUILD as being based on pkgbase, and it is much cleaner to update the one line that the PKGBUILD maintainer seemed to want us to update.
_kernelname=${pkgbase#linux}
...
...
pkgname=("${pkgbase}" "${pkgbase}-headers" "${pkgbase}-docs")
Note that the # symbol strips 'linux' from the front of pkgbase assigns it to _kernelname, while pkgname is a list
[dylan@zenbook linux]$ pkgbase=linux-iwlwifidebug
[dylan@zenbook linux]$ echo $pkgbase
linux-iwlwifidebug
[dylan@zenbook linux]$ _kernelname=${pkgbase#linux}
[dylan@zenbook linux]$ echo $_kernelname
-iwlwifidebug
[dylan@zenbook linux]$ pkgname=("${pkgbase}" "${pkgbase}-headers" "${pkgbase}-docs")
[dylan@zenbook linux]$ echo ${pkgname[@]}
linux-iwlwifidebug linux-iwlwifidebug-headers linux-iwlwifidebug-docs
So far so good - we have a pkgname and _kernelname which are both non default.
And to show this, I've created a package by just changing the pkgbase, which shows that it changes both the pkgname and the _kernelname:
Change of pkgbase:
[dylan@zenbook linux]$ grep pkgbase= PKGBUILD
#pkgbase=linux # Build stock -ARCH kernel
pkgbase=linux-iwlwifidebug # Build kernel with a different name
Package Names Set
pkgname=("${pkgbase}" "${pkgbase}-headers" "${pkgbase}-docs")
for _p in ${pkgname[@]}; do
eval "package_${_p}() {
_package${_p#${pkgbase}}
}"
done
Ouput Package Name
[dylan@zenbook linux]$ ls -l *.xz
-rw-r--r-- 1 dylan dylan 76384600 Nov 26 18:54 linux-3.12.tar.xz
-rw-r--r-- 1 dylan dylan 52329112 Nov 26 20:16 linux-iwlwifidebug-3.12.1-1-x86_64.pkg.tar.xz
-rw-r--r-- 1 dylan dylan 4378564 Nov 26 20:17 linux-iwlwifidebug-docs-3.12.1-1-x86_64.pkg.tar.xz
-rw-r--r-- 1 dylan dylan 6139092 Nov 26 20:17 linux-iwlwifidebug-headers-3.12.1-1-x86_64.pkg.tar.xz
-rw-r--r-- 1 dylan dylan 6620 Nov 26 18:54 patch-3.12.1.xz
_kernelname sets information in package
[dylan@zenbook linux]$ grep -e provides PKGBUILD | grep _kernelname
provides=("kernel26${_kernelname}=${pkgver}")
provides=("kernel26${_kernelname}-headers=${pkgver}")
provides=("kernel26${_kernelname}-docs=${pkgver}")
Which can be seen here
[dylan@zenbook linux]$ pacman -Qpi linux-iwlwifidebug-3.12.1-1-x86_64.pkg.tar.xz | grep -i provides
Provides : kernel26-iwlwifidebug=3.12.1
So, what is going wrong?
So the root problem comes to the install path of the files, not the pkgname or the _kernelname, as I have shown above I believe.
What I found is that changing the pkgrel led to a working install, with the files installed into separate directories.
pkgrel is modified in the Makefile directly
[dylan@zenbook linux.working]$ grep pkgrel PKGBUILD
pkgrel=2
# set extraversion to pkgrel
sed -ri "s|^(EXTRAVERSION =).*|\1 -${pkgrel}|" Makefile
This leads to a package that can be installed, because the directory path includes the -2 rather than -1
Before changing pkgrel, i had this
[dylan@zenbook linux]$ pacman -Qpl linux-iwlwifidebug-3.12.1-1-x86_64.pkg.tar.xz | tail -2
linux-iwlwifidebug /usr/src/linux-3.12.1-1-ARCH/
linux-iwlwifidebug /usr/src/linux-3.12.1-1-ARCH/vmlinux
After changing (but keeping default name for package)
[dylan@zenbook linux.working]$ pacman -Qpl linux-3.12.1-2-x86_64.pkg.tar.xz | tail -2
linux /usr/src/linux-3.12.1-2-ARCH/
linux /usr/src/linux-3.12.1-2-ARCH/vmlinux
Where does the package directory tree get defined?
The only place pkgrel gets touched is in a re-write of the kernel makefile:
[dylan@zenbook linux.working]$ grep pkgrel PKGBUILD
pkgrel=2
# set extraversion to pkgrel
sed -ri "s|^(EXTRAVERSION =).*|\1 -${pkgrel}|" Makefile
Where it gets set, then tied to KERNELVERSION
[dylan@zenbook linux.working]$ grep EXTRAVERSION src/linux-3.12/Makefile
EXTRAVERSION = -2
KERNELVERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SUBLEVEL)))$(EXTRAVERSION)
Which appears to only be exported for some source tree stuff
[dylan@zenbook linux.working]$ grep KERNELVERSION src/linux-3.12/Makefile
KERNELVERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SUBLEVEL)))$(EXTRAVERSION)
export VERSION PATCHLEVEL SUBLEVEL KERNELRELEASE KERNELVERSION
echo "$(KERNELVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))"
@echo "$(KERNELVERSION)$$($(CONFIG_SHELL) $(srctree)/scripts/setlocalversion $(srctree))"
@echo $(KERNELVERSION)
And not at all in pkgbuild
[dylan@zenbook linux.working]$ grep KERNELVERSION PKGBUILD
[dylan@zenbook linux.working]$
What am i missing here?
Is there a bug that should be changing some headers in the Makefile to create a different directory structure for the packages, by passing in the _kernelname, pkgname, or pkgbase?
Last edited by thenextdon13 (2013-11-27 22:10:44)
Offline
I think it would be more helpful if you just pasted the full PKGBUILD: it is difficult to see what is going on from the snippets you have here.
Offline
pkgbuild is default from abs with only pkgbase changed;
I don't see a way to attach files, so will put entire code content here
# $Id: PKGBUILD 200210 2013-11-22 12:19:58Z tpowa $
# Maintainer: Tobias Powalowski <tpowa@archlinux.org>
# Maintainer: Thomas Baechler <thomas@archlinux.org>
#pkgbase=linux # Build stock -ARCH kernel
pkgbase=linux-iwlwifidebug # Build kernel with a different name
_srcname=linux-3.12
pkgver=3.12.1
pkgrel=1
arch=('i686' 'x86_64')
url="http://www.kernel.org/"
license=('GPL2')
makedepends=('xmlto' 'docbook-xsl' 'kmod' 'inetutils' 'bc')
options=('!strip')
source=("http://www.kernel.org/pub/linux/kernel/v3.x/${_srcname}.tar.xz"
"[url]http://www.kernel.org/pub/linux/kernel/v3.x/patch-${pkgver}.xz[/url]"
# the main kernel config files
'config' 'config.x86_64'
# standard config files for mkinitcpio ramdisk
'linux.preset'
'change-default-console-loglevel.patch'
'criu-no-expert.patch')
md5sums=('cc6ee608854e0da4b64f6c1ff8b6398c'
'5a8cb5a659baeeb6df3fe22de8d32df6'
'798bca5d2f0a1505c9b86a5227a2b339'
'8fa6cbb28dda5a4b38730c7f728e1845'
'eb14dcfd80c00852ef81ded6e826826a'
'98beb36f9b8cf16e58de2483ea9985e3'
'd50c1ac47394e9aec637002ef3392bd1')
_kernelname=${pkgbase#linux}
# module.symbols md5sums
# x86_64
# 2fd43e3edc671c61e043a5c0b3b2a1f0 /lib/modules/3.12.0-1-ARCH/modules.symbols
# i686
# e98940249665dbfa380cfdbbacf6c6b8 /lib/modules/3.12.0-1-ARCH/modules.symbols
prepare() {
cd "${srcdir}/${_srcname}"
# add upstream patch
patch -p1 -i "${srcdir}/patch-${pkgver}"
# add latest fixes from stable queue, if needed
# [url]http://git.kernel.org/?p=linux/kernel/git/stable/stable-queue.git[/url]
# set DEFAULT_CONSOLE_LOGLEVEL to 4 (same value as the 'quiet' kernel param)
# remove this when a Kconfig knob is made available by upstream
# (relevant patch sent upstream: [url]https://lkml.org/lkml/2011/7/26/227)[/url]
patch -Np1 -i "${srcdir}/change-default-console-loglevel.patch"
# allow criu without expert option set
# patch from fedora
patch -Np1 -i "${srcdir}/criu-no-expert.patch"
if [ "${CARCH}" = "x86_64" ]; then
cat "${srcdir}/config.x86_64" > ./.config
else
cat "${srcdir}/config" > ./.config
fi
if [ "${_kernelname}" != "" ]; then
sed -i "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION=\"${_kernelname}\"|g" ./.config
sed -i "s|CONFIG_LOCALVERSION_AUTO=.*|CONFIG_LOCALVERSION_AUTO=n|" ./.config
fi
# set extraversion to pkgrel
sed -ri "s|^(EXTRAVERSION =).*|\1 -${pkgrel}|" Makefile
# don't run depmod on 'make install'. We'll do this ourselves in packaging
sed -i '2iexit 0' scripts/depmod.sh
}
build() {
cd "${srcdir}/${_srcname}"
# get kernel version
make prepare
# load configuration
# Configure the kernel. Replace the line below with one of your choice.
make menuconfig # CLI menu for configuration
#make nconfig # new CLI menu for configuration
#make xconfig # X-based configuration
#make oldconfig # using old config from previous kernel version
# ... or manually edit .config
# rewrite configuration
yes "" | make config >/dev/null
# save configuration for later reuse
if [ "${CARCH}" = "x86_64" ]; then
cat .config > "${startdir}/config.x86_64.last"
else
cat .config > "${startdir}/config.last"
fi
####################
# stop here
# this is useful to configure the kernel
#msg "Stopping build"; return 1
####################
# build!
make ${MAKEFLAGS} LOCALVERSION= bzImage modules
}
_package() {
pkgdesc="The ${pkgbase/linux/Linux} kernel and modules"
[ "${pkgbase}" = "linux" ] && groups=('base')
depends=('coreutils' 'linux-firmware' 'kmod' 'mkinitcpio>=0.7')
optdepends=('crda: to set the correct wireless channels of your country')
provides=("kernel26${_kernelname}=${pkgver}")
conflicts=("kernel26${_kernelname}")
replaces=("kernel26${_kernelname}")
backup=("etc/mkinitcpio.d/${pkgbase}.preset")
install=linux.install
cd "${srcdir}/${_srcname}"
KARCH=x86
# get kernel version
_kernver="$(make LOCALVERSION= kernelrelease)"
_basekernel=${_kernver%%-*}
_basekernel=${_basekernel%.*}
mkdir -p "${pkgdir}"/{lib/modules,lib/firmware,boot}
make LOCALVERSION= INSTALL_MOD_PATH="${pkgdir}" modules_install
cp arch/$KARCH/boot/bzImage "${pkgdir}/boot/vmlinuz-${pkgbase}"
# add vmlinux
install -D -m644 vmlinux "${pkgdir}/usr/src/linux-${_kernver}/vmlinux"
# set correct depmod command for install
cp -f "${startdir}/${install}" "${startdir}/${install}.pkg"
true && install=${install}.pkg
sed \
-e "s/KERNEL_NAME=.*/KERNEL_NAME=${_kernelname}/" \
-e "s/KERNEL_VERSION=.*/KERNEL_VERSION=${_kernver}/" \
-i "${startdir}/${install}"
# install mkinitcpio preset file for kernel
install -D -m644 "${srcdir}/linux.preset" "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset"
sed \
-e "1s|'linux.*'|'${pkgbase}'|" \
-e "s|ALL_kver=.*|ALL_kver=\"/boot/vmlinuz-${pkgbase}\"|" \
-e "s|default_image=.*|default_image=\"/boot/initramfs-${pkgbase}.img\"|" \
-e "s|fallback_image=.*|fallback_image=\"/boot/initramfs-${pkgbase}-fallback.img\"|" \
-i "${pkgdir}/etc/mkinitcpio.d/${pkgbase}.preset"
# remove build and source links
rm -f "${pkgdir}"/lib/modules/${_kernver}/{source,build}
# remove the firmware
rm -rf "${pkgdir}/lib/firmware"
# gzip -9 all modules to save 100MB of space
find "${pkgdir}" -name '*.ko' -exec gzip -9 {} \;
# make room for external modules
ln -s "../extramodules-${_basekernel}${_kernelname:--ARCH}" "${pkgdir}/lib/modules/${_kernver}/extramodules"
# add real version for building modules and running depmod from post_install/upgrade
mkdir -p "${pkgdir}/lib/modules/extramodules-${_basekernel}${_kernelname:--ARCH}"
echo "${_kernver}" > "${pkgdir}/lib/modules/extramodules-${_basekernel}${_kernelname:--ARCH}/version"
# Now we call depmod...
depmod -b "$pkgdir" -F System.map "$_kernver"
# move module tree /lib -> /usr/lib
mv "$pkgdir/lib" "$pkgdir/usr"
}
_package-headers() {
pkgdesc="Header files and scripts for building modules for ${pkgbase/linux/Linux} kernel"
provides=("kernel26${_kernelname}-headers=${pkgver}")
conflicts=("kernel26${_kernelname}-headers")
replaces=("kernel26${_kernelname}-headers")
install -dm755 "${pkgdir}/usr/lib/modules/${_kernver}"
cd "${pkgdir}/usr/lib/modules/${_kernver}"
ln -sf ../../../src/linux-${_kernver} build
cd "${srcdir}/${_srcname}"
install -D -m644 Makefile \
"${pkgdir}/usr/src/linux-${_kernver}/Makefile"
install -D -m644 kernel/Makefile \
"${pkgdir}/usr/src/linux-${_kernver}/kernel/Makefile"
install -D -m644 .config \
"${pkgdir}/usr/src/linux-${_kernver}/.config"
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/include"
for i in acpi asm-generic config crypto drm generated keys linux math-emu \
media net pcmcia scsi sound trace uapi video xen; do
cp -a include/${i} "${pkgdir}/usr/src/linux-${_kernver}/include/"
done
# copy arch includes for external modules
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/arch/x86"
cp -a arch/x86/include "${pkgdir}/usr/src/linux-${_kernver}/arch/x86/"
# copy files necessary for later builds, like nvidia and vmware
cp Module.symvers "${pkgdir}/usr/src/linux-${_kernver}"
cp -a scripts "${pkgdir}/usr/src/linux-${_kernver}"
# fix permissions on scripts dir
chmod og-w -R "${pkgdir}/usr/src/linux-${_kernver}/scripts"
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/.tmp_versions"
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/arch/${KARCH}/kernel"
cp arch/${KARCH}/Makefile "${pkgdir}/usr/src/linux-${_kernver}/arch/${KARCH}/"
if [ "${CARCH}" = "i686" ]; then
cp arch/${KARCH}/Makefile_32.cpu "${pkgdir}/usr/src/linux-${_kernver}/arch/${KARCH}/"
fi
cp arch/${KARCH}/kernel/asm-offsets.s "${pkgdir}/usr/src/linux-${_kernver}/arch/${KARCH}/kernel/"
# add headers for lirc package
# pci
for i in bt8xx cx88 saa7134; do
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/pci/${i}"
cp -a drivers/media/pci/${i}/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/pci/${i}"
done
# usb
for i in cpia2 em28xx pwc sn9c102; do
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/usb/${i}"
cp -a drivers/media/usb/${i}/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/usb/${i}"
done
# i2c
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/i2c"
cp drivers/media/i2c/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/i2c/"
for i in cx25840; do
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/i2c/${i}"
cp -a drivers/media/i2c/${i}/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/i2c/${i}"
done
# add docbook makefile
install -D -m644 Documentation/DocBook/Makefile \
"${pkgdir}/usr/src/linux-${_kernver}/Documentation/DocBook/Makefile"
# add dm headers
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/md"
cp drivers/md/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/md"
# add inotify.h
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/include/linux"
cp include/linux/inotify.h "${pkgdir}/usr/src/linux-${_kernver}/include/linux/"
# add wireless headers
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/net/mac80211/"
cp net/mac80211/*.h "${pkgdir}/usr/src/linux-${_kernver}/net/mac80211/"
# add dvb headers for external modules
# in reference to:
# [url]http://bugs.archlinux.org/task/9912[/url]
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb-core"
cp drivers/media/dvb-core/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb-core/"
# and...
# [url]http://bugs.archlinux.org/task/11194[/url]
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/include/config/dvb/"
cp include/config/dvb/*.h "${pkgdir}/usr/src/linux-${_kernver}/include/config/dvb/"
# add dvb headers for [url]http://mcentral.de/hg/~mrec/em28xx-new[/url]
# in reference to:
# [url]http://bugs.archlinux.org/task/13146[/url]
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb-frontends/"
cp drivers/media/dvb-frontends/lgdt330x.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb-frontends/"
cp drivers/media/i2c/msp3400-driver.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/i2c/"
# add dvb headers
# in reference to:
# [url]http://bugs.archlinux.org/task/20402[/url]
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/usb/dvb-usb"
cp drivers/media/usb/dvb-usb/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/usb/dvb-usb/"
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb-frontends"
cp drivers/media/dvb-frontends/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/dvb-frontends/"
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/tuners"
cp drivers/media/tuners/*.h "${pkgdir}/usr/src/linux-${_kernver}/drivers/media/tuners/"
# add xfs and shmem for aufs building
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/fs/xfs"
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}/mm"
cp fs/xfs/xfs_sb.h "${pkgdir}/usr/src/linux-${_kernver}/fs/xfs/xfs_sb.h"
# copy in Kconfig files
for i in `find . -name "Kconfig*"`; do
mkdir -p "${pkgdir}"/usr/src/linux-${_kernver}/`echo ${i} | sed 's|/Kconfig.*||'`
cp ${i} "${pkgdir}/usr/src/linux-${_kernver}/${i}"
done
chown -R root.root "${pkgdir}/usr/src/linux-${_kernver}"
find "${pkgdir}/usr/src/linux-${_kernver}" -type d -exec chmod 755 {} \;
# strip scripts directory
find "${pkgdir}/usr/src/linux-${_kernver}/scripts" -type f -perm -u+w 2>/dev/null | while read binary ; do
case "$(file -bi "${binary}")" in
*application/x-sharedlib*) # Libraries (.so)
/usr/bin/strip ${STRIP_SHARED} "${binary}";;
*application/x-archive*) # Libraries (.a)
/usr/bin/strip ${STRIP_STATIC} "${binary}";;
*application/x-executable*) # Binaries
/usr/bin/strip ${STRIP_BINARIES} "${binary}";;
esac
done
# remove unneeded architectures
rm -rf "${pkgdir}"/usr/src/linux-${_kernver}/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}
}
_package-docs() {
pkgdesc="Kernel hackers manual - HTML documentation that comes with the ${pkgbase/linux/Linux} kernel"
provides=("kernel26${_kernelname}-docs=${pkgver}")
conflicts=("kernel26${_kernelname}-docs")
replaces=("kernel26${_kernelname}-docs")
cd "${srcdir}/${_srcname}"
mkdir -p "${pkgdir}/usr/src/linux-${_kernver}"
cp -al Documentation "${pkgdir}/usr/src/linux-${_kernver}"
find "${pkgdir}" -type f -exec chmod 444 {} \;
find "${pkgdir}" -type d -exec chmod 755 {} \;
# remove a file already in linux package
rm -f "${pkgdir}/usr/src/linux-${_kernver}/Documentation/DocBook/Makefile"
}
pkgname=("${pkgbase}" "${pkgbase}-headers" "${pkgbase}-docs")
for _p in ${pkgname[@]}; do
eval "package_${_p}() {
_package${_p#${pkgbase}}
}"
done
# vim:set ts=8 sts=2 sw=2 et:
Offline
I've reverted the change I made to the wiki after reading your earlier post: the intent is obviously to use pkgbase (my bad).
As to why it is failing, it does look like a bug. I'll try a build using this PKGBUILD.
Offline
This is odd: my build installed fine, using this PKGBUILD which just changes the pkgbase (and the config options in build())...
Offline
That is odd.
I will test using your PKGBUILD later today.
In the meantime, what was the install path of files from your PKGBUILD?
Offline
I tried using your pkgbuild, found i was missing modprobed_db.
The link in your pkgbuild is not any good, however I found in AUR and installed.
Link in your pkgbuild http://aur.archlinux.org/packages.php?ID=41689
AUR link https://aur.archlinux.org/packages/modprobed-db/
I'm wondering if my issue has to do with the fact i used 'make menuconfig' option and selected to a config from a different place then overwrite the localized .config
WIll report back with info from build using your PKGBUILD
Offline
Indeed, your pkgbuild has the correct path of 'experimental' in the file path.
[dylan@zenbook linux]$ pacman -Qpl linux-experimental-3.12.1-1-x86_64.pkg.tar.xz | tail -2
linux-experimental /usr/src/linux-3.12.1-1-experimental/
linux-experimental /usr/src/linux-3.12.1-1-experimental/vmlinux
Let me try running the make menuconfig version and using the default config file
Offline
It is conflicting during installation because it is trying to use the same appended "ARCH" to the same kernel version. You need to change CONFIG_LOCALVERSION="ARCH" to something else. This can be done either by modifying the config directly (then updating the PKGBUILD checksums) or setting things up to use something like nconfig, menuconfig, xconfig, etc. to modify it before compilation.
Offline
So, using the default .config i get the correct output as well
[dylan@zenbook linux]$ pacman -Qpl linux-experimental-3.12.1-1-x86_64.pkg.tar.xz | tail -2
linux-experimental /usr/src/linux-3.12.1-1-experimental/
linux-experimental /usr/src/linux-3.12.1-1-experimental/vmlinux
So this has to do with my workflow of using the existing .config and loading it through the make menuconfig interface, then re-saving as local .config
@wonderwoofy, can you explain/point to this?
Ah.. actually - see now. You are referring to "CONFIG_LOCALVERSION" in the .config file
[dylan@zenbook linux]$ diff -y ../config.working src/linux-3.12/.config | grep "|"
CONFIG_LOCALVERSION="-ARCH" | CONFIG_LOCALVERSION="-iwlwifidebug"
CONFIG_LOCALVERSION_AUTO=y | # CONFIG_LOCALVERSION_AUTO is not set
# CONFIG_MAC80211_DEBUGFS is not set | CONFIG_MAC80211_DEBUGFS=y
# CONFIG_IWLWIFI_DEBUG is not set | CONFIG_IWLWIFI_DEBUG=y
So the issue is with my workflow of loading the config within the built in editor.
It occurs during build()
Which occurs _after these lines in prepare()
if [ "${_kernelname}" != "" ]; then
sed -i "s|CONFIG_LOCALVERSION=.*|CONFIG_LOCALVERSION=\"${_kernelname}\"|g" ./.config
sed -i "s|CONFIG_LOCALVERSION_AUTO=.*|CONFIG_LOCALVERSION_AUTO=n|" ./.config
fi
I could argue that, since an option is provided during build() to edit the .config in multiple ways, the LOCALVERSION should be set by default after that occurs. Although I can see why you want people to be able to edit the file _after_ LOCALVERSION is set as well... so the first argument seems wrong i suppose.
I may simply add a note to the wiki indicating that, if you load a .config different than the default, you will need to change the options 'LOCALVERSION and LOCALVERSION_AUTO during make menuconfig so as to avoid file conflicts during install.
Does that work?
Offline
WW: nice catch.
thenextdon13: yes, add the note to the wiki. Glad you got it sorted. Please remember to mark your thread as [Solved] by editing your first post and prepending it to the title.
Offline
WIki modified;
https://wiki.archlinux.org/index.php/Ke … uild.28.29
Next step will be marking thread solved.
Offline