[arch-general] does makechrootpkg -I handle provides() replaces() ?
Allan McRae
allan at archlinux.org
Thu Mar 22 16:20:14 EDT 2012
On 23/03/12 01:04, David C. Rankin wrote:
> Guys,
>
> I'm having difficulty with makechrootpkg not allowing replacement of current
> packages in the chroot even though then new packages are built with provides()
> and replaces() to handle the conflict.
>
> Specifically the trinity project provides source for sip4 that has additional
> hooks in the package for the tqt interface. I have modeled the PKGBUILD on the
> existing sip PKGBUILD to build split packages for both python and python2. In
> the build I call my version of sip 'tde-sip' and my version of python2-sip
> 'tde-sip4-tqt'. In the split package build I do:
>
> package_tde-sip() {
> pkgdesc="The TDE SIP C/C++ Bindings Generator for Python3 - Trinity upstream
> GIT version"
> depends=('python')
> provides=('sip' 'python-sip')
> replaces=('sip' 'python-sip')
>
> cd "${srcdir}/sipPy3"
> make DESTDIR="${pkgdir}" install
>
> install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
> }
>
> However, when I go to install the package in the chroot with:
>
> sudo makechrootpkg -r $CHROOT -I tde-sip-3513_tqt-2-x86_64.pkg.tar.xz
>
> I get:
>
> error: failed to commit transaction (conflicting files)
> tde-sip: /usr/bin/sip exists in filesystem
> tde-sip: /usr/include/python3.2mu/sip.h exists in filesystem
> tde-sip: /usr/lib/python3.2/site-packages/sip.so exists in filesystem
> tde-sip: /usr/lib/python3.2/site-packages/sipconfig.py exists in filesystem
> tde-sip: /usr/lib/python3.2/site-packages/sipdistutils.py exists in filesystem
> Errors occurred, no packages were upgraded.
>
> The same error occurs with the python2-sip replacement. I know those files
> conflict with files in the tde-sip package. That's why I did provides=('sip'
> 'python-sip') and replaces=('sip' 'python-sip').
>
> Is this just one of the limitations of the chroot install process? Is the
> solution to start-over by cleaning the chroot and insure that tde-sip is
> installed before any other package that pulls sip in as a dependency? Thanks for
> any help you can offer. How the provides() and replaces() work in the archroot
> is a bit of a mystery to me.
>
provides/replaces/conflicts usually come in a set.
Allan
More information about the arch-general
mailing list