[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