You are not logged in.
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
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
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
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.
//github/
Offline
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
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
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
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
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
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
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
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
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