You are not logged in.

#1 2009-02-13 18:23:57

dyfrgi
Member
Registered: 2009-02-13
Posts: 12

pacman won't upgrade system with local newer packages

I installed Arch Linux yesterday and immediately set about upgrading the drivers for my Intel GM45 graphics chip. I built and installed new versions of libdrm, libgl, intel-dri, mesa, and xf86-video-intel. The PKGBUILD files were based on the ones in the package database, fetched with yaourt -G. None of those packages are in AUR.

The packages installed fine. They satisfy the updated version dependencies in the PKGBUILD files. However, when I run pacman -Su, I get this error:

[dyfrgi@scion:~]% sudo pacman -Su
:: Starting full system upgrade...
warning: intel-dri: local (7.3-2) is newer than extra (7.2-2)
warning: libgl: local (7.3-1) is newer than extra (7.2-1)
warning: mesa: local (7.3-1) is newer than extra (7.2-1)
resolving dependencies...
looking for inter-conflicts...
error: failed to prepare transaction (could not satisfy dependencies)
:: intel-dri: requires libdrm>=2.4.3
:: libgl: requires libdrm>=2.4.3

The warnings about the local version being newer than extra are expected, but the complaint about libdrm is confusing, given that I have local/libdrm 2.4.4-2.

If I run pacman -Qu, it tells me:

Targets (2): libdrm-2.3.1-2  xf86-video-intel-2.4.3-1

This despite:

[dyfrgi@scion:~/programs/build]% pacman -Q libdrm xf86-video-intel
libdrm 2.4.4-2
xf86-video-intel 2.6.1-1

What's up with this? How do I make upgrades work with locally built packages of a newer version than in the repositories I have configured?

Last edited by dyfrgi (2009-02-13 20:30:29)

Offline

#2 2009-02-13 19:03:58

skottish
Forum Fellow
From: Here
Registered: 2006-06-16
Posts: 7,942

Re: pacman won't upgrade system with local newer packages

I can't see exactly why pacman isn't seeing your package version, but I do know that libdrm has the force switch enabled. For a workaround, try adding this line to your libdrm PKGBUILD and rebuilt it:

provides=("libdrm=2.4.4")

Offline

#3 2009-02-13 19:37:36

dyfrgi
Member
Registered: 2009-02-13
Posts: 12

Re: pacman won't upgrade system with local newer packages

Shouldn't setting pkgname=libdrm and pkgver=2.4.4 accomplish that?

At any rate, I tried adding the provides line, and I still get the same result.

Last edited by dyfrgi (2009-02-13 19:39:14)

Offline

#4 2009-02-13 19:40:18

brisbin33
Member
From: boston, ma
Registered: 2008-07-24
Posts: 1,796
Website

Re: pacman won't upgrade system with local newer packages

just a thought; you ran pacman -Su in your example, not -Syu... if you haven't synced the repos (including local?) since you installed the higher versions maybe that's why you're getting funky results?

just an off-the-wall guess though, it's probably not the case.

Offline

#5 2009-02-13 19:41:39

dyfrgi
Member
Registered: 2009-02-13
Posts: 12

Re: pacman won't upgrade system with local newer packages

brisbin33 wrote:

just a thought; you ran pacman -Su in your example, not -Syu... if you haven't synced the repos (including local?) since you installed the higher versions maybe that's why you're getting funky results?

just an off-the-wall guess though, it's probably not the case.

Nope - I had run pacman -Sy just before then. Just ran it again and then tried pacman -Qu; same results.

Offline

#6 2009-02-13 19:42:28

skottish
Forum Fellow
From: Here
Registered: 2006-06-16
Posts: 7,942

Re: pacman won't upgrade system with local newer packages

dyfrgi wrote:

Shouldn't setting pkgname=libdrm and pkgver=2.4.4 accomplish that?

Yes. That's why I wanted you to try it. If it worked, it would make for an easy bug report.

Offline

#7 2009-02-13 19:46:29

dyfrgi
Member
Registered: 2009-02-13
Posts: 12

Re: pacman won't upgrade system with local newer packages

It would! Alas, it didn't work.

Here are my PKGBUILD files. Maybe there's some error in them that I haven't noticed.

# $Id: $
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=intel-dri
pkgver=7.3
pkgrel=2
pkgdesc="Mesa DRI drivers for Intel chipsets"
arch=(i686 x86_64)
license=('LGPL')
url="http://xorg.freedesktop.org/"
depends=('libdrm>=2.4.3' 'expat>=2.0.1' 'libgl>=7.3')
makedepends=('glproto>=1.4.9' 'pkgconfig' 'libxfixes' 'libxdamage' 'libxxf86vm' 'libxext')
options=('!libtool')
source=(http://downloads.sourceforge.net/mesa3d/MesaLib-${pkgver}.tar.bz2
    mesa-7.1-link-shared.patch)

build() {
  cd ${srcdir}/Mesa-${pkgver}
  patch -Np1 -i "${srcdir}/mesa-7.1-link-shared.patch" || return 1
  ./configure --prefix=/usr \
    --with-dri-driverdir=/usr/lib/xorg/modules/dri \
    --with-dri-drivers=i810,i915,i965 \
    --enable-glx-tls \
    --disable-ttm-api \
    --with-driver=dri \
    --enable-xcb \
    --disable-glu \
    --disable-glut \
    --disable-glw || return 1
  make || return 1
  cd src/mesa/drivers/dri || return 1
  make DESTDIR=${pkgdir} install || return 1
  rm -rf ${pkgdir}/usr/lib/pkgconfig
  rm -rf ${pkgdir}/usr/include
  rm -f ${pkgdir}/usr/lib/xorg/modules/dri/libdricore.so
}
# $Id$
# Maintainer: Jan de Groot <jgc@archlinux.org>

pkgname=libdrm
pkgver=2.4.4
pkgrel=2
pkgdesc="Userspace interface to kernel DRM services"
arch=(i686 x86_64)
depends=('glibc')
options=('!libtool' 'force')
url="http://dri.freedesktop.org/"
source=(http://dri.freedesktop.org/${pkgname}/${pkgname}-${pkgver}.tar.bz2)

build() {
  cd "${srcdir}/${pkgname}-${pkgver}"
  ./configure --prefix=/usr || return 1
  make || return 1
  make DESTDIR="${pkgdir}" install || return 1
}
# $Id$
# Maintainer: Alexander Baldeck <kth5@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>
pkgname=libgl
pkgver=7.3
pkgrel=1
pkgdesc="Mesa DRI OpenGL library and drivers"
arch=(i686 x86_64)
license=('LGPL')
url="http://www.mesa3d.org"
depends=('libdrm>=2.4.3' 'libxxf86vm' 'libxdamage' 'expat>=2.0.1')
makedepends=('dri2proto>=1.1' 'glproto>=1.4.9' 'pkgconfig')
provides=('libgl-dri')
replaces=('libgl-dri' 'libgl-mesa')
options=(!makeflags)
source=(http://downloads.sourceforge.net/mesa3d/MesaLib-${pkgver}.tar.bz2
    mesa-7.1-link-shared.patch)

build() {
  cd ${startdir}/src/Mesa-${pkgver}
  patch -Np1 -i ${srcdir}/mesa-7.1-link-shared.patch || return 1
  ./configure --prefix=/usr \
    --with-dri-driverdir=/usr/lib/xorg/modules/dri \
    --with-dri-drivers=swrast \
    --enable-glx-tls \
    --disable-ttm-api \
    --with-driver=dri \
    --enable-xcb \
    --disable-glu \
    --disable-glut \
    --disable-glw || return 1
  make || return 1
  make DESTDIR=${pkgdir} install || return 1
  rm -rf ${pkgdir}/usr/include
  rm -rf ${pkgdir}/usr/lib/pkgconfig
  install -m755 -d ${pkgdir}/usr/lib/xorg/modules/extensions
  ln -sf libglx.xorg ${pkgdir}/usr/lib/xorg/modules/extensions/libglx.so || return 1
}
# $Id$
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Contributor: Jan de Groot <jgc@archlinux.org>

pkgname=mesa
pkgver=7.3
pkgrel=1
pkgdesc="Mesa OpenGL library"
arch=(i686 x86_64)
license=('LGPL')
url="http://mesa3d.sourceforge.net"
depends=('libgl' 'libx11>=1.1.4-3' 'libxt' 'glproto>=1.4.9' 'gcc-libs>=4.3.1')
makedepends=('pkgconfig' 'dri2proto>=1.1' 'libdrm>=2.4.3')
conflicts=('mesa-apps')
replaces=('mesa-apps')
source=(http://downloads.sourceforge.net/mesa3d/MesaLib-${pkgver}.tar.bz2
    http://downloads.sourceforge.net/mesa3d/MesaDemos-${pkgver}.tar.bz2
    ftp://ftp.archlinux.org/other/mesa/gl-manpages-1.0.1.tar.bz2)

build() {
  cd ${srcdir}/Mesa-${pkgver}
  ./configure --prefix=/usr \
    --with-dri-driverdir=/usr/lib/xorg/modules/dri \
    --with-dri-drivers=swrast \
    --enable-glx-tls \
    --disable-ttm-api \
    --with-driver=dri \
    --enable-xcb \
    --disable-glut || return 1
  make || return 1
  make DESTDIR=${pkgdir} install || return 1

  install -m755 -d ${pkgdir}/usr/bin
  install -m755 progs/xdemos/glx{gears,info} ${pkgdir}/usr/bin/ || return 1

  rm -f ${pkgdir}/usr/lib/libGL.so*
  rm -rf ${pkgdir}/usr/lib/xorg

  cd ${srcdir}/gl-manpages-1.0.1
  ./configure --prefix=/usr || return 1
  make || return 1
  make DESTDIR=${pkgdir} install || return 1
}
# $Id$
# Maintainer: Alexander Baldeck <alexander@archlinux.org>
# Maintainer: Jan de Groot <jgc@archlinux.org>
pkgname=xf86-video-intel
pkgver=2.6.1
pkgrel=1
pkgdesc="X.org Intel i810/i830/i915/945G/G965+ video drivers"
arch=(i686 x86_64)
url="http://xorg.freedesktop.org/"
depends=('intel-dri>=7.3' 'libpciaccess>=0.10.5' 'libdrm>=2.4.3')
makedepends=('pkgconfig' 'xorg-server>=1.5.3' 'xf86driproto>=2.0.4' 'glproto>=1.4.9' 'mesa>=7.3' 'libdrm>=2.4.0')
conflicts=('xorg-server<1.5.3' 'xf86-video-i810')
replaces=('xf86-video-i810')
options=('!libtool' 'force')
groups=('xorg-video-drivers')
source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2)

build() {
  cd "${srcdir}/${pkgname}-${pkgver}"
  ./configure --prefix=/usr \
              --enable-dri || return 1
  make || return 1
  make DESTDIR="${pkgdir}" install || return 1
}

Offline

#8 2009-02-13 19:53:58

dyfrgi
Member
Registered: 2009-02-13
Posts: 12

Re: pacman won't upgrade system with local newer packages

Aha! It was the force option. Turns out that I need to tell pacman to explicitly ignore those packages, otherwise it will forever try to upgrade them. I did that by adding them to the IgnorePkg line in /etc/pacman.conf.

I'm not sure what the value of the force option is. I suppose it allows the developers to force users not to use newer packages than those in the repository, unless they tell pacman to ignore them. That seems contrary to the philosophy of Arch as being a distribution for people who know what they're doing, though.

Offline

#9 2009-02-13 20:26:43

jacko
Member
Registered: 2007-11-23
Posts: 840

Re: pacman won't upgrade system with local newer packages

forget about ignoring those packages, that makes zero sense.

It almost sounds like a corrupt database, try forcing the sync, -Syyu.

Last edited by jacko (2009-02-13 20:28:03)

Offline

#10 2009-02-13 20:30:17

dyfrgi
Member
Registered: 2009-02-13
Posts: 12

Re: pacman won't upgrade system with local newer packages

Why zero sense? The force option is documented as follows in the PKGBUILD manpage:

           force
               Force the package to be upgraded by a pacman system upgrade
               operation, even if the version number would normally not trigger such
               an upgrade. This is useful when the version numbering scheme of a
               package changes (or is alphanumeric). See linkman:pacman[8] for more
               infomation on version comparisons.

That seems pretty clear to me. It's trying to "upgrade" to the latest version in the repo because of that option.

And if I force the upgrade, it seems likely to downgrade the packages which I built. That's undesirable.

Offline

#11 2009-02-13 20:31:10

skottish
Forum Fellow
From: Here
Registered: 2006-06-16
Posts: 7,942

Re: pacman won't upgrade system with local newer packages

dyfrgi wrote:

I'm not sure what the value of the force option is. I suppose it allows the developers to force users not to use newer packages than those in the repository, unless they tell pacman to ignore them.

It's the other way around. In this example, the intel drivers have to be with it's supporting libraries. Not doing this will result in a broken system. It's a way forcing libraries to 'travel' together. I do think that your case should have worked, but I'm not an expert at the subject.

Offline

#12 2009-02-13 20:37:17

dyfrgi
Member
Registered: 2009-02-13
Posts: 12

Re: pacman won't upgrade system with local newer packages

From looking at other posts, it appears that force is in fact supposed to force a downgrade, even if the local version is newer. See, e.g., http://bbs.archlinux.org/viewtopic.php?id=56888 and http://bbs.archlinux.org/viewtopic.php?id=64504 .

Offline

#13 2009-02-13 20:48:29

skottish
Forum Fellow
From: Here
Registered: 2006-06-16
Posts: 7,942

Re: pacman won't upgrade system with local newer packages

That makes sense. There was a problem with the intel driver setup around the time of the X server upgrade. I guess it was decided to not roll out the new ones until they were ready.

Offline

Board footer

Powered by FluxBB