You are not logged in.

#1 2013-11-27 06:36:09

thenextdon13
Member
Registered: 2013-01-18
Posts: 44

[Solved] ABS built kernel package file conflicts

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

#2 2013-11-27 06:53:03

jasonwryan
Forum & Wiki Admin
From: .nz
Registered: 2009-05-09
Posts: 18,114
Website

Re: [Solved] ABS built kernel package file conflicts

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.


Arch + dwm   •   Mercurial repos  •   Github

Registered Linux User #482438

Offline

#3 2013-11-27 06:58:22

thenextdon13
Member
Registered: 2013-01-18
Posts: 44

Re: [Solved] ABS built kernel package file conflicts

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

#4 2013-11-27 07:26:38

jasonwryan
Forum & Wiki Admin
From: .nz
Registered: 2009-05-09
Posts: 18,114
Website

Re: [Solved] ABS built kernel package file conflicts

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.


Arch + dwm   •   Mercurial repos  •   Github

Registered Linux User #482438

Offline

#5 2013-11-27 08:14:18

jasonwryan
Forum & Wiki Admin
From: .nz
Registered: 2009-05-09
Posts: 18,114
Website

Re: [Solved] ABS built kernel package file conflicts

This is odd: my build installed fine, using this PKGBUILD which just changes the pkgbase (and the config options in build())...


Arch + dwm   •   Mercurial repos  •   Github

Registered Linux User #482438

Offline

#6 2013-11-27 14:43:12

thenextdon13
Member
Registered: 2013-01-18
Posts: 44

Re: [Solved] ABS built kernel package file conflicts

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

#7 2013-11-27 15:26:24

thenextdon13
Member
Registered: 2013-01-18
Posts: 44

Re: [Solved] ABS built kernel package file conflicts

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

#8 2013-11-27 15:40:06

thenextdon13
Member
Registered: 2013-01-18
Posts: 44

Re: [Solved] ABS built kernel package file conflicts

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

#9 2013-11-27 15:44:13

WonderWoofy
Member
From: Los Gatos, CA
Registered: 2012-05-19
Posts: 8,412

Re: [Solved] ABS built kernel package file conflicts

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

#10 2013-11-27 16:37:41

thenextdon13
Member
Registered: 2013-01-18
Posts: 44

Re: [Solved] ABS built kernel package file conflicts

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

#11 2013-11-27 17:26:51

jasonwryan
Forum & Wiki Admin
From: .nz
Registered: 2009-05-09
Posts: 18,114
Website

Re: [Solved] ABS built kernel package file conflicts

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.


Arch + dwm   •   Mercurial repos  •   Github

Registered Linux User #482438

Offline

#12 2013-11-27 22:07:59

thenextdon13
Member
Registered: 2013-01-18
Posts: 44

Re: [Solved] ABS built kernel package file conflicts

WIki modified;
https://wiki.archlinux.org/index.php/Ke … uild.28.29

Next step will be marking thread solved.

Offline

Board footer

Powered by FluxBB