Subject: bug#22458: Collision between khal and vdirsyncer "bin/vdirsyncer"

From: Leo Famulari <[email-masked]>
Date: Sun, 24 Jan 2016 18:24:39 -0500

The packages khal and vdirsyncer are meant to be used together. Khal is
a console calendar program and vdirsyncer synchronizes CalDAV data from
a remote server to the local filesystem so that khal can use it.

For some reason, the khal package is creating an
"EASY-INSTALL-ENTRY-SCRIPT" (as "bin/.vdirsyncer-real") that wraps the
propagated vdirsyncer executable. This means that both the khal and
vdirsyncer packages contain the path "bin/vdirsyncer", which is
annoying. Thankfully, they both end up executing the real vdirsyncer.

Is this a common issue that we have a workaround for? I wonder if
we can fix this in our package, or if I should take it upstream?

I found this discussion on guix-devel relating to easy-install and path
collisions, although I'm not sure if it's relevant:
http://lists.gnu.org/archive/html/guix-devel/2014-12/msg00283.html

Collisions!
warning: collision encountered: /gnu/store/xxfyiwan4aidigk552i9pnm5z6myhk09-vdirsyncer-0.7.5/bin/vdirsyncer /gnu/store/8y78mn6ng28h0lihkfb8qasrlfydnnfy-khal-0.7.0/bin/vdirsyncer 
warning: arbitrarily choosing /gnu/store/xxfyiwan4aidigk552i9pnm5z6myhk09-vdirsyncer-0.7.5/bin/vdirsyncer

Here is the output of `tree -a bin` from within khal's store directory:
bin
├── easy_install -> /gnu/store/8y78mn6ng28h0lihkfb8qasrlfydnnfy-khal-0.7.0/bin/.easy_install-wrap-01
├── easy_install-3.4 -> /gnu/store/8y78mn6ng28h0lihkfb8qasrlfydnnfy-khal-0.7.0/bin/.easy_install-3.4-wrap-01
├── .easy_install-3.4-real
├── .easy_install-3.4-wrap-01
├── .easy_install-real
├── .easy_install-wrap-01
├── ikhal -> /gnu/store/8y78mn6ng28h0lihkfb8qasrlfydnnfy-khal-0.7.0/bin/.ikhal-wrap-01
├── .ikhal-real
├── .ikhal-wrap-01
├── khal -> /gnu/store/8y78mn6ng28h0lihkfb8qasrlfydnnfy-khal-0.7.0/bin/.khal-wrap-01
├── .khal-real
├── .khal-wrap-01
├── vdirsyncer -> /gnu/store/8y78mn6ng28h0lihkfb8qasrlfydnnfy-khal-0.7.0/bin/.vdirsyncer-wrap-01
├── .vdirsyncer-real
└── .vdirsyncer-wrap-01

Here are the contents of .vdirsyncer-real:
#!/gnu/store/jdjxwh49zwnl954yk5rz09i0p0pcx42k-python-wrapper-3.4.3/bin/python
# EASY-INSTALL-ENTRY-SCRIPT: 'vdirsyncer==0.7.5','console_scripts','vdirsyncer'
__requires__ = 'vdirsyncer==0.7.5'
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
    sys.exit(
        load_entry_point('vdirsyncer==0.7.5', 'console_scripts', 'vdirsyncer')()
    )