vdirsyncer icon indicating copy to clipboard operation
vdirsyncer copied to clipboard

fails to discover gmail calendar validate_token_parameters

Open teto opened this issue 6 years ago • 13 comments

I run vdirsyncer -v DEBUG discover gmail_carddav and get the stacktrace below after pasting the passord given to me by google.

  • vdirsyncer version 0.16.3
  • If applicable, which server software (and which version) you're using: gmail
  • Your Python version : 3.6
  • Your operating system : nixos 17.09 +
  • Your config file: see below
debug:   File "/nix/store/49zh3lxkh2rw526qahhs4bpa1d6vs999-vdirsyncer-0.16.3/lib/python3.6/site-packages/vdirsyncer/cli/discover.py", line 204, in _print_collections
debug:     discovered = get_discovered()
debug:   File "/nix/store/49zh3lxkh2rw526qahhs4bpa1d6vs999-vdirsyncer-0.16.3/lib/python3.6/site-packages/vdirsyncer/cli/discover.py", line 133, in get_self
debug:     return self._discovered
debug:   File "/nix/store/49zh3lxkh2rw526qahhs4bpa1d6vs999-vdirsyncer-0.16.3/lib/python3.6/site-packages/vdirsyncer/utils.py", line 170, in __get__
debug:     obj.__dict__[self.__name__] = result = self.fget(obj)
debug:   File "/nix/store/49zh3lxkh2rw526qahhs4bpa1d6vs999-vdirsyncer-0.16.3/lib/python3.6/site-packages/vdirsyncer/cli/discover.py", line 142, in _discovered
debug:     return handle_storage_init_error(self._cls, self._config)
debug:   File "/nix/store/49zh3lxkh2rw526qahhs4bpa1d6vs999-vdirsyncer-0.16.3/lib/python3.6/site-packages/vdirsyncer/cli/discover.py", line 138, in _discovered
debug:     discovered = list(self._cls.discover(**self._config))
debug:   File "/nix/store/49zh3lxkh2rw526qahhs4bpa1d6vs999-vdirsyncer-0.16.3/lib/python3.6/site-packages/vdirsyncer/storage/dav.py", line 444, in discover
debug:     session, _ = cls.session_class.init_and_remaining_args(**kwargs)
debug:   File "/nix/store/49zh3lxkh2rw526qahhs4bpa1d6vs999-vdirsyncer-0.16.3/lib/python3.6/site-packages/vdirsyncer/storage/dav.py", line 363, in init_and_remaining_args
debug:     return cls(**self_args), remainder
debug:   File "/nix/store/49zh3lxkh2rw526qahhs4bpa1d6vs999-vdirsyncer-0.16.3/lib/python3.6/site-packages/vdirsyncer/storage/google.py", line 46, in __init__
debug:     ui_worker.put(f)
debug:   File "/nix/store/s0zggcf05d555mhww67ni7ldq5s89fw5-python3.6-click-threading-0.4.2/lib/python3.6/site-packages/click_threading/__init__.py", line 130, in put
debug:     return future.result()
debug:   File "/nix/store/166s7l3yjqfc8dj5hfqjb09dbfvp1850-python3-3.6.3/lib/python3.6/concurrent/futures/_base.py", line 432, in result
debug:     return self.__get_result()
debug:   File "/nix/store/166s7l3yjqfc8dj5hfqjb09dbfvp1850-python3-3.6.3/lib/python3.6/concurrent/futures/_base.py", line 384, in __get_result
debug:     raise self._exception
debug:   File "/nix/store/s0zggcf05d555mhww67ni7ldq5s89fw5-python3.6-click-threading-0.4.2/lib/python3.6/site-packages/click_threading/__init__.py", line 115, in run
debug:     result = func()
debug:   File "/nix/store/49zh3lxkh2rw526qahhs4bpa1d6vs999-vdirsyncer-0.16.3/lib/python3.6/site-packages/vdirsyncer/storage/google.py", line 45, in <lambda>
debug:     f = lambda: self._init_token(token_file, client_id, client_secret)
debug:   File "/nix/store/49zh3lxkh2rw526qahhs4bpa1d6vs999-vdirsyncer-0.16.3/lib/python3.6/site-packages/vdirsyncer/storage/google.py", line 98, in _init_token
debug:     client_secret=client_secret,
debug:   File "/nix/store/yk1h9s38b14dxjprd9b12bw6s12v0wk3-python3.6-requests-oauthlib-0.8.0/lib/python3.6/site-packages/requests_oauthlib/oauth2_session.py", line 244, in fetch_token
debug:     self._client.parse_request_body_response(r.text, scope=self.scope)
debug:   File "/nix/store/lbyr77krprq509nf42kacinmyn32k9y0-python3.6-oauthlib-2.0.0/lib/python3.6/site-packages/oauthlib/oauth2/rfc6749/clients/base.py", line 409, in parse_request_body_response
debug:     self.token = parse_token_response(body, scope=scope)
debug:   File "/nix/store/lbyr77krprq509nf42kacinmyn32k9y0-python3.6-oauthlib-2.0.0/lib/python3.6/site-packages/oauthlib/oauth2/rfc6749/parameters.py", line 376, in parse_token_response
debug:     validate_token_parameters(params)
debug:   File "/nix/store/lbyr77krprq509nf42kacinmyn32k9y0-python3.6-oauthlib-2.0.0/lib/python3.6/site-packages/oauthlib/oauth2/rfc6749/parameters.py", line 383, in validate_token_parameters
debug:     raise_from_error(params.get('error'), params)
debug:   File "/nix/store/lbyr77krprq509nf42kacinmyn32k9y0-python3.6-oauthlib-2.0.0/lib/python3.6/site-packages/oauthlib/oauth2/rfc6749/errors.py", line 325, in raise_from_error
debug:     raise cls(**kwargs)
warning: Failed to discover collections for gmail_remote_carddav, use `-vdebug` to see the full traceback.

and here is the relevant config

[pair gmail_carddav]
a = "gmail_local_carddav"
b = "gmail_remote_carddav"
# or vimdiff
collections = ["from a", "from b"]
conflict_resolution = ["command", "nvim -d"]


[storage gmail_local_carddav]
type = "filesystem"
path.fetch = ["command", "sh", "-c", "echo $XDG_DATA_HOME/contacts"]
fileext = ".vcf"

[storage gmail_remote_carddav]
type = "google_contacts"
client_id= "XXXXXX.apps.googleusercontent.com"
client_secret.fetch = ["command", "keyring", "get", "gmail", "client_secret"]
token_file.fetch = ["command", "sh", "-c", "echo $XDG_CACHE_HOME/vdirsyncer/gmail_token"]
# }}}

teto avatar Nov 25 '17 04:11 teto

I tried to downgrade to your versions of requests-oauthlib and oauthlib, but couldn't reproduce this. Could you give me the output of:

/nix/store/49zh3lxkh2rw526qahhs4bpa1d6vs999-vdirsyncer-0.16.3/bin/pip freeze

Not entirely sure if this works under nixos, if it doesn't, I need a printout of vdirsyncer's dependency tree with version numbers.

untitaker avatar Nov 25 '17 12:11 untitaker

There is no pip there but vdirsyncer is wrapped with a list of python modules whose path show the versions

import sys;import site;import functools;sys.argv[0] = '/nix/store/49zh3lxkh2rw526qahhs4bpa1d6vs999-vdirsyncer-0.16.3/bin/vdirsyncer';functools.reduce(lambda k, p: site.addsitedir(p, k), ['/nix/store/49zh3lxkh2rw526qahhs4bpa1d6vs999-vdirsyncer-0.16.3/lib/python3.6/site-packages','/nix/store/m3hja8knn930lwhjznbipzpr9dy9igqh-python3.6-click-6.7/lib/python3.6/site-packages','/nix/store/hq27hydp4jnwa0kbccim6ghbd9l6h6q8-python3.6-setuptools-36.6.0/lib/python3.6/site-packages','/nix/store/ykr1aycw4iqcknrag82aryapznxawg4b-python3.6-click-log-0.2.1/lib/python3.6/site-packages','/nix/store/s0zggcf05d555mhww67ni7ldq5s89fw5-python3.6-click-threading-0.4.2/lib/python3.6/site-packages','/nix/store/cq0y7mcjcbz78b0w78ppfx2sw671n8fk-python3.6-requests-toolbelt-0.8.0/lib/python3.6/site-packages','/nix/store/g2l9c7ql6jrhsigf6ifg7kvyv8fr7m87-python3.6-urllib3-1.22/lib/python3.6/site-packages','/nix/store/nr2ww05sy3gbgjhbigf590kwrb7dimhc-python3.6-idna-2.5/lib/python3.6/site-packages','/nix/store/x2lfmm6dgwihklpp8bv6dkkbyfdnqdcm-python3.6-asn1crypto-0.23.0/lib/python3.6/site-packages','/nix/store/bpnwjvy80nkwpy9azgv2lw6q4p3qsl37-python3.6-packaging-16.8/lib/python3.6/site-packages','/nix/store/jrkv8g4waq3bd79hicpvj7fxabldry2x-python3.6-pyparsing-2.2.0/lib/python3.6/site-packages','/nix/store/css7jcljqbl54q7k8yb7v7kd2pwv6j7s-python3.6-six-1.11.0/lib/python3.6/site-packages','/nix/store/dm478gb0qyr5yvf90xzjsml1pw4bv15i-python3.6-pycparser-2.14/lib/python3.6/site-packages','/nix/store/snn4yrd7kqhwb9l0j16i9lsl8jh1hibd-python3.6-cffi-1.11.2/lib/python3.6/site-packages','/nix/store/vf2d1mwky21nja7kjaw2m0kq087abppm-python3.6-cryptography-2.0.3/lib/python3.6/site-packages','/nix/store/2jgfk974gxarv35ckxmwr721bdf78vr5-python3.6-pyasn1-0.3.4/lib/python3.6/site-packages','/nix/store/yc03caqdrkabmc9kx74s4di5pqxyflm9-python3.6-pyOpenSSL-17.2.0/lib/python3.6/site-packages','/nix/store/n5fc3w0wb7jckqvfla99fyg5bbj42xx0-python3.6-certifi-2017.7.27.1/lib/python3.6/site-packages','/nix/store/ahspy79vz0qcxbzvwkxc2v0mjcx06syf-python3.6-pysocks-1.6.6/lib/python3.6/site-packages','/nix/store/hw8sf29n1nk8rxg0i6p7jf32w12px3iy-python3.6-chardet-3.0.4/lib/python3.6/site-packages','/nix/store/kkxcb64sf6106jakdi0lizq7wrskkkz5-python3.6-requests-2.18.4/lib/python3.6/site-packages','/nix/store/yk1h9s38b14dxjprd9b12bw6s12v0wk3-python3.6-requests-oauthlib-0.8.0/lib/python3.6/site-packages','/nix/store/lbyr77krprq509nf42kacinmyn32k9y0-python3.6-oauthlib-2.0.0/lib/python3.6/site-packages','/nix/store/i9w2q5qpk3lkxq0kxs0pjlx07wv5hfzj-python3.6-blinker-1.4/lib/python3.6/site-packages','/nix/store/m7ghj1j7kli0klb9r7lvd0w6g2lcfrrp-python3.6-pyjwt-1.5.3/lib/python3.6/site-packages','/nix/store/fgvijxbpx1wsf8vln5m30cdny0aaclls-python3.6-ecdsa-0.13/lib/python3.6/site-packages','/nix/store/kn2i94whf2rp7v1bg8b2wxql32zm2n4r-python3.6-atomicwrites-0.1.9/lib/python3.6/site-packages','/nix/store/05nr143zg1px6xapvazr389mhyjn8knv-python3.6-keyring-10.4.0/lib/python3.6/site-packages','/nix/store/glw5hpzja9xiavixa3mw4r0j6l6f1vnf-python3.6-secretstorage-2.3.1/lib/python3.6/site-packages','/nix/store/lsx4q89vcmzb0m18m4hbny050hzr6kir-python3.6-dbus-python-1.2.4/lib/python3.6/site-packages','/nix/store/0rfkcn2zgn2wvnia3714shp5x8b7h7dx-python3.6-pycairo-1.10.0/lib/python3.6/site-packages','/nix/store/j24nly3s4ykfrkw2cbn2w8spph3gbnkm-python3.6-pygobject-3.24.1/lib/python3.6/site-packages'], site._init_pathinfo());
import re
import sys

from vdirsyncer.cli import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

at least the tests pass

============================= test session starts ==============================
platform linux -- Python 3.6.3, pytest-3.2.3, py-1.4.34, pluggy-0.4.0
rootdir: /tmp/nix-build-vdirsyncer-0.16.3.drv-0/vdirsyncer-0.16.3, inifile: setup.cfg
plugins: hypothesis-3.11.1, localserver-0.3.7, subtesthack-0.1.1
collected 486 items

tests/storage/test_filesystem.py ..............................................sss......ss.......
tests/storage/test_http.py .....
tests/storage/test_http_with_singlefile.py ......................................sssssss....sssss.ss
tests/storage/test_memory.py ......................................sssssss....sss...ss
tests/storage/test_singlefile.py ....................................................ss.ss
tests/storage/dav/test_caldav.py ssssssssssssssssssssssssssssssssssssssssssssssssssssss
tests/storage/dav/test_carddav.py ssssssssssssssssssssssssss
tests/storage/dav/test_main.py .................................
tests/system/cli/test_config.py .........
tests/system/cli/test_discover.py .....
tests/system/cli/test_fetchparams.py .
tests/system/cli/test_repair.py .....
tests/system/cli/test_sync.py ....................
tests/system/cli/test_utils.py ..
tests/system/utils/test_main.py .....
tests/unit/test_exceptions.py .
tests/unit/test_metasync.py .........
tests/unit/test_repair.py ..........
tests/unit/cli/test_config.py .
tests/unit/cli/test_discover.py ......
tests/unit/cli/test_fetchparams.py .........
tests/unit/sync/test_status.py .
tests/unit/sync/test_sync.py ...............................
tests/unit/utils/test_vobject.py ..................

teto avatar Nov 25 '17 13:11 teto

Could this be related to https://github.com/pimutils/vdirsyncer/commit/792dbc171ff29994668f96ba73a801131bf33caa? Please try installing from master (you will need a Rust compiler for that though).

On Sat, Nov 25, 2017 at 01:06:10PM +0000, Matthieu Coudron wrote:

There is no pip there but vdirsyncer is wrapped with a list of python modules whose path show the versions

import sys;import site;import functools;sys.argv[0] = '/nix/store/49zh3lxkh2rw526qahhs4bpa1d6vs999-vdirsyncer-0.16.3/bin/vdirsyncer';functools.reduce(lambda k, p: site.addsitedir(p, k), ['/nix/store/49zh3lxkh2rw526qahhs4bpa1d6vs999-vdirsyncer-0.16.3/lib/python3.6/site-packages','/nix/store/m3hja8knn930lwhjznbipzpr9dy9igqh-python3.6-click-6.7/lib/python3.6/site-packages','/nix/store/hq27hydp4jnwa0kbccim6ghbd9l6h6q8-python3.6-setuptools-36.6.0/lib/python3.6/site-packages','/nix/store/ykr1aycw4iqcknrag82aryapznxawg4b-python3.6-click-log-0.2.1/lib/python3.6/site-packages','/nix/store/s0zggcf05d555mhww67ni7ldq5s89fw5-python3.6-click-threading-0.4.2/lib/python3.6/site-packages','/nix/store/cq0y7mcjcbz78b0w78ppfx2sw671n8fk-python3.6-requests-toolbelt-0.8.0/lib/python3.6/site-packages','/nix/store/g2l9c7ql6jrhsigf6ifg7kvyv8fr7m87-python3.6-urllib3-1.22/lib/python3.6/site-packages','/nix/store/nr2ww05sy3gbgjhbigf590kwrb7dimhc-python3.6-idna-2.5/lib/python3.6/site-packages','/nix/store/x2lfmm6dgwihklpp8bv6dkkbyfdnqdcm-python3.6-asn1crypto-0.23.0/lib/python3.6/site-packages','/nix/store/bpnwjvy80nkwpy9azgv2lw6q4p3qsl37-python3.6-packaging-16.8/lib/python3.6/site-packages','/nix/store/jrkv8g4waq3bd79hicpvj7fxabldry2x-python3.6-pyparsing-2.2.0/lib/python3.6/site-packages','/nix/store/css7jcljqbl54q7k8yb7v7kd2pwv6j7s-python3.6-six-1.11.0/lib/python3.6/site-packages','/nix/store/dm478gb0qyr5yvf90xzjsml1pw4bv15i-python3.6-pycparser-2.14/lib/python3.6/site-packages','/nix/store/snn4yrd7kqhwb9l0j16i9lsl8jh1hibd-python3.6-cffi-1.11.2/lib/python3.6/site-packages','/nix/store/vf2d1mwky21nja7kjaw2m0kq087abppm-python3.6-cryptography-2.0.3/lib/python3.6/site-packages','/nix/store/2jgfk974gxarv35ckxmwr721bdf78vr5-python3.6-pyasn1-0.3.4/lib/python3.6/site-packages','/nix/store/yc03caqdrkabmc9kx74s4di5pqxyflm9-python3.6-pyOpenSSL-17.2.0/lib/python3.6/site-packages','/nix/store/n5fc3w0wb7jckqvfla99fyg5bbj42xx0-python3.6-certifi-2017.7.27.1/lib/python3.6/site-packages','/nix/store/ahspy79vz0qcxbzvwkxc2v0mjcx06syf-python3.6-pysocks-1.6.6/lib/python3.6/site-packages','/nix/store/hw8sf29n1nk8rxg0i6p7jf32w12px3iy-python3.6-chardet-3.0.4/lib/python3.6/site-packages','/nix/store/kkxcb64sf6106jakdi0lizq7wrskkkz5-python3.6-requests-2.18.4/lib/python3.6/site-packages','/nix/store/yk1h9s38b14dxjprd9b12bw6s12v0wk3-python3.6-requests-oauthlib-0.8.0/lib/python3.6/site-packages','/nix/store/lbyr77krprq509nf42kacinmyn32k9y0-python3.6-oauthlib-2.0.0/lib/python3.6/site-packages','/nix/store/i9w2q5qpk3lkxq0kxs0pjlx07wv5hfzj-python3.6-blinker-1.4/lib/python3.6/site-packages','/nix/store/m7ghj1j7kli0klb9r7lvd0w6g2lcfrrp-python3.6-pyjwt-1.5.3/lib/python3.6/site-packages','/nix/store/fgvijxbpx1wsf8vln5m30cdny0aaclls-python3.6-ecdsa-0.13/lib/python3.6/site-packages','/nix/store/kn2i94whf2rp7v1bg8b2wxql32zm2n4r-python3.6-atomicwrites-0.1.9/lib/python3.6/site-packages','/nix/store/05nr143zg1px6xapvazr389mhyjn8knv-python3.6-keyring-10.4.0/lib/python3.6/site-packages','/nix/store/glw5hpzja9xiavixa3mw4r0j6l6f1vnf-python3.6-secretstorage-2.3.1/lib/python3.6/site-packages','/nix/store/lsx4q89vcmzb0m18m4hbny050hzr6kir-python3.6-dbus-python-1.2.4/lib/python3.6/site-packages','/nix/store/0rfkcn2zgn2wvnia3714shp5x8b7h7dx-python3.6-pycairo-1.10.0/lib/python3.6/site-packages','/nix/store/j24nly3s4ykfrkw2cbn2w8spph3gbnkm-python3.6-pygobject-3.24.1/lib/python3.6/site-packages'], site._init_pathinfo());
import re
import sys

from vdirsyncer.cli import main

if __name__ == '__main__':
    sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
    sys.exit(main())

at least the tests pass

============================= test session starts ==============================
platform linux -- Python 3.6.3, pytest-3.2.3, py-1.4.34, pluggy-0.4.0
rootdir: /tmp/nix-build-vdirsyncer-0.16.3.drv-0/vdirsyncer-0.16.3, inifile: setup.cfg
plugins: hypothesis-3.11.1, localserver-0.3.7, subtesthack-0.1.1
collected 486 items

tests/storage/test_filesystem.py ..............................................sss......ss.......
tests/storage/test_http.py .....
tests/storage/test_http_with_singlefile.py ......................................sssssss....sssss.ss
tests/storage/test_memory.py ......................................sssssss....sss...ss
tests/storage/test_singlefile.py ....................................................ss.ss
tests/storage/dav/test_caldav.py ssssssssssssssssssssssssssssssssssssssssssssssssssssss
tests/storage/dav/test_carddav.py ssssssssssssssssssssssssss
tests/storage/dav/test_main.py .................................
tests/system/cli/test_config.py .........
tests/system/cli/test_discover.py .....
tests/system/cli/test_fetchparams.py .
tests/system/cli/test_repair.py .....
tests/system/cli/test_sync.py ....................
tests/system/cli/test_utils.py ..
tests/system/utils/test_main.py .....
tests/unit/test_exceptions.py .
tests/unit/test_metasync.py .........
tests/unit/test_repair.py ..........
tests/unit/cli/test_config.py .
tests/unit/cli/test_discover.py ......
tests/unit/cli/test_fetchparams.py .........
tests/unit/sync/test_status.py .
tests/unit/sync/test_sync.py ...............................
tests/unit/utils/test_vobject.py ..................

-- You are receiving this because you commented. Reply to this email directly or view it on GitHub: https://github.com/pimutils/vdirsyncer/issues/691#issuecomment-346939494

untitaker avatar Nov 27 '17 18:11 untitaker

@teto Any updates on this?

untitaker avatar Dec 03 '17 13:12 untitaker

I tried to install from master on nixos but got

Installed /tmp/nix-build-vdirsyncer-0.16.3.drv-0/source/.eggs/milksnake-0.1.1-py3.6.egg
Traceback (most recent call last):
  File "nix_run_setup.py", line 8, in <module>
    exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\\r\\n', '\\n'), __file__, 'exec'))
  File "setup.py", line 129, in <module>
    platforms='any'
  File "/nix/store/cyvqfgjr31k0fmpjm6aliyba1pbrsc1g-python3.6-bootstrapped-pip-9.0.1/lib/python3.6/site-packages/setuptools/__init__.py", line 129, in setup
    return distutils.core.setup(**attrs)
  File "/nix/store/y5brqifnrivf8f52a5j0acppi15iy2rf-python3-3.6.3/lib/python3.6/distutils/core.py", line 108, in setup
    _setup_distribution = dist = klass(attrs)
  File "/nix/store/cyvqfgjr31k0fmpjm6aliyba1pbrsc1g-python3.6-bootstrapped-pip-9.0.1/lib/python3.6/site-packages/setuptools/dist.py", line 334, in __init__
    _Distribution.__init__(self, attrs)
  File "/nix/store/y5brqifnrivf8f52a5j0acppi15iy2rf-python3-3.6.3/lib/python3.6/distutils/dist.py", line 281, in __init__
    self.finalize_options()
  File "/nix/store/cyvqfgjr31k0fmpjm6aliyba1pbrsc1g-python3.6-bootstrapped-pip-9.0.1/lib/python3.6/site-packages/setuptools/dist.py", line 468, in finalize_options
    ep.load()(self, ep.name, value)
  File "/nix/store/b8dryhy4y8h8iy0dphf2f5xjgkd28dak-python3.6-setuptools_scm-1.15.6/lib/python3.6/site-packages/setuptools_scm/integration.py", line 22, in version_keyword
    dist.metadata.version = get_version(**value)
  File "/nix/store/b8dryhy4y8h8iy0dphf2f5xjgkd28dak-python3.6-setuptools_scm-1.15.6/lib/python3.6/site-packages/setuptools_scm/__init__.py", line 119, in get_version
    parsed_version = _do_parse(root, parse)
  File "/nix/store/b8dryhy4y8h8iy0dphf2f5xjgkd28dak-python3.6-setuptools_scm-1.15.6/lib/python3.6/site-packages/setuptools_scm/__init__.py", line 97, in _do_parse
    "use git+https://github.com/user/proj.git#egg=proj" % root)
LookupError: setuptools-scm was unable to detect version for '/tmp/nix-build-vdirsyncer-0.16.3.drv-0/source'.

Make sure you're either building from a fully intact git repository or PyPI tarballs. Most other sources (such as GitHub's tarballs, a git checkout without the .git folder) don't contain the necessary metadata and will not work.

For example, if you're using pip, instead of https://github.com/user/proj/archive/master.zip use git+https://github.com/user/proj.git#egg=proj
builder for ‘/nix/store/rjr7rm8bsr8pqph1amri315jgdnd7nvh-vdirsyncer-0.16.3.drv’ failed with exit code 1
error: build of ‘/nix/store/rjr7rm8bsr8pqph1amri315jgdnd7nvh-vdirsyncer-0.16.3.drv’ failed

as in https://github.com/pimutils/vdirsyncer/issues/382 .

I tried to fetch the source with

  src = super.pkgs.fetchgit {
    fetchSubmodules = false;
    leaveDotGit= true;
  #   # setuptools-scm was unable to detect version for
    url="https://github.com/pimutils/vdirsyncer.git";
    sha256="1lsksg2iw7cma0c4nhh1glvcf6219ly4cchygqpji2198mab8dpa";
   };

so that the .git folder is kept but that doesn't seem enough since the error persists. I am not sure if the error stems from a setuptools command unsupported by nixos or is some vdirsyncer specific code so I stopped there.

teto avatar Dec 04 '17 14:12 teto

I have pushed an alpha version to pypi. You would be able to install it with pip install vdirsyncer==0.17.0a1.

untitaker avatar Dec 04 '17 19:12 untitaker

thanks for the upload, I tried to quickly update the package but it needs some more attention I guess as I hit

copying vdirsyncer/sync/__init__.py -> build/lib.linux-x86_64-3.6/vdirsyncer/sync
[ "$READTHEDOCS" != "True" ] || make install-rust
cd ./rust && PATH="$HOME/.cargo/bin/:$PATH" cargo build --release
error: failed to open: /homeless-shelter/.cargo/registry/index/github.com-1ecc6299db9ec823/.cargo-index-lock

Caused by:
  Permission denied (os error 13)

I am not familiar with the rust ecosystem so not sure where it stems from ( /homeless-shelter/ doesn't exist on nixos, builders should not rely on $HOME). I'll try to ask a few questions on #nixos

teto avatar Dec 07 '17 08:12 teto

Please try to just install it with pip then.

On Thu, Dec 07, 2017 at 08:29:26AM +0000, Matthieu Coudron wrote:

thanks for the upload, I tried to quickly update the package but it needs some more attention I guess as I hit

copying vdirsyncer/sync/__init__.py -> build/lib.linux-x86_64-3.6/vdirsyncer/sync
[ "$READTHEDOCS" != "True" ] || make install-rust
cd ./rust && PATH="$HOME/.cargo/bin/:$PATH" cargo build --release
error: failed to open: /homeless-shelter/.cargo/registry/index/github.com-1ecc6299db9ec823/.cargo-index-lock

Caused by:
  Permission denied (os error 13)

I am not familiar with the rust ecosystem so not sure where it stems from ( /homeless-shelter/ doesn't exist on nixos, builders should not rely on $HOME). I'll try to ask a few questions on #nixos

-- You are receiving this because you commented. Reply to this email directly or view it on GitHub: https://github.com/pimutils/vdirsyncer/issues/691#issuecomment-349897523

untitaker avatar Dec 10 '17 03:12 untitaker

@teto any update on this?

untitaker avatar Dec 19 '17 13:12 untitaker

Sorry I tried to install it on nix with virtual env but there are many dependancies so it's not easy. If I knew how to fix the package, I would do it but I am afraid dealing with rust the way it is intertwined in setup.py would be too complex. I believe the easiest path would be to patch the setup.py to remove the rust stuff and have nix install the rust package. I guess even for others distribs having cargo install the rust package might be a problem ? can't vdirsyncer just checks for the presence of the rust package and fails with the cargo command to run instead ?

teto avatar Dec 22 '17 06:12 teto

Patching vdirsyncer to use a shared library is definetly harder than trying to install it in a virtualenv. Which exact problems did you face?

On Fri, Dec 22, 2017 at 06:56:51AM +0000, Matthieu Coudron wrote:

Sorry I tried to install it on nix with virtual env but there are many dependancies so it's not easy. If I knew how to fix the package, I would do it but I am afraid dealing with rust the way it is intertwined in setup.py would be too complex. I believe the easiest path would be to patch the setup.py to remove the rust stuff and have nix install the rust package. I guess even for others distribs having cargo install the rust package might be a problem ? can't vdirsyncer just checks for the presence of the rust package and fails with the cargo command to run instead ?

-- You are receiving this because you commented. Reply to this email directly or view it on GitHub: https://github.com/pimutils/vdirsyncer/issues/691#issuecomment-353535000

untitaker avatar Dec 22 '17 18:12 untitaker

Someone managed to update the vdirsyncer package (see related link) but rust installation fails in non-deterministic ways. I think the virtualenv will trigger the same issue. i will notify you when I manage to test your patch. Sorry it takes so long.

teto avatar Jan 01 '18 09:01 teto

I finally managed to bump the vdirsyncer package to vdirsyncer, version 0.17.0a2 but still can't sync:

With the same config as previously

[general]
# A folder where vdirsyncer can store some metadata about each pair.
status_path = "$XDG_CACHE_HOME/vdirsyncer/status/"
[pair gmail_carddav]
a = "gmail_local_carddav"
b = "gmail_remote_carddav"
# or vimdiff
collections = ["from a", "from b"]
conflict_resolution = ["command", "nvim -d"]


[storage gmail_local_carddav]
type = "filesystem"
path.fetch = ["command", "sh", "-c", "echo $XDG_DATA_HOME/contacts"]
fileext = ".vcf"

[storage gmail_remote_carddav]
type = "google_contacts"
client_id= "XXXX.apps.googleusercontent.com"
client_secret.fetch = ["command", "keyring", "get", "gmail", "client_secret"]
token_file.fetch = ["command", "sh", "-c", "echo $XDG_CACHE_HOME/vdirsyncer/gmail_token"]

vdirsyncer -vdebug discover gmail_carddav returns


 gmail_local_carddav:
Opening https://accounts.google.com/o/oauth2/v2/auth?response_type=code&client_id=1040176666032-jtmq7o63ddo2r2oo298fso7rdl7li6j9.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcarddav&state=jTPJNvaXkxFiv6D0KObFvY3TbJz1Mh&access_type=offline&approval_prompt=force ...
[0502/143021.902486:WARNING:stack_trace_posix.cc(648)] Failed to open file: /home/teto/#9727045 (deleted)
  Error: No such file or directory
Follow the instructions on the page.
Paste obtained code: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx
debug:   File "/nix/store/6wbfakc45lg59rwcps34rhg6kb1k2fp3-vdirsyncer-0.17.0a2/lib/python3.6/site-packages/vdirsyncer/cli/discover.py", line 204, in _print_collections
debug:     discovered = get_discovered()
debug:   File "/nix/store/6wbfakc45lg59rwcps34rhg6kb1k2fp3-vdirsyncer-0.17.0a2/lib/python3.6/site-packages/vdirsyncer/cli/discover.py", line 133, in get_self
debug:     return self._discovered
debug:   File "/nix/store/6wbfakc45lg59rwcps34rhg6kb1k2fp3-vdirsyncer-0.17.0a2/lib/python3.6/site-packages/vdirsyncer/utils.py", line 170, in __get__
debug:     obj.__dict__[self.__name__] = result = self.fget(obj)
debug:   File "/nix/store/6wbfakc45lg59rwcps34rhg6kb1k2fp3-vdirsyncer-0.17.0a2/lib/python3.6/site-packages/vdirsyncer/cli/discover.py", line 142, in _discovered
debug:     return handle_storage_init_error(self._cls, self._config)
debug:   File "/nix/store/6wbfakc45lg59rwcps34rhg6kb1k2fp3-vdirsyncer-0.17.0a2/lib/python3.6/site-packages/vdirsyncer/cli/discover.py", line 138, in _discovered
debug:     discovered = list(self._cls.discover(**self._config))
debug:   File "/nix/store/6wbfakc45lg59rwcps34rhg6kb1k2fp3-vdirsyncer-0.17.0a2/lib/python3.6/site-packages/vdirsyncer/storage/dav.py", line 444, in discover
debug:     session, _ = cls.session_class.init_and_remaining_args(**kwargs)
debug:   File "/nix/store/6wbfakc45lg59rwcps34rhg6kb1k2fp3-vdirsyncer-0.17.0a2/lib/python3.6/site-packages/vdirsyncer/storage/dav.py", line 363, in init_and_remaining_args
debug:     return cls(**self_args), remainder
debug:   File "/nix/store/6wbfakc45lg59rwcps34rhg6kb1k2fp3-vdirsyncer-0.17.0a2/lib/python3.6/site-packages/vdirsyncer/storage/google.py", line 46, in __init__
debug:     ui_worker.put(f)
debug:   File "/nix/store/0qrdwx5ixask8da741phsvmlvwcg6j0i-python3.6-click-threading-0.4.4/lib/python3.6/site-packages/click_threading/__init__.py", line 130, in put
debug:     return future.result()
debug:   File "/nix/store/96wn2gz3mwi71gwcrvpfg39bsymd7gqx-python3-3.6.5/lib/python3.6/concurrent/futures/_base.py", line 432, in result
debug:     return self.__get_result()
debug:   File "/nix/store/96wn2gz3mwi71gwcrvpfg39bsymd7gqx-python3-3.6.5/lib/python3.6/concurrent/futures/_base.py", line 384, in __get_result
debug:     raise self._exception
debug:   File "/nix/store/0qrdwx5ixask8da741phsvmlvwcg6j0i-python3.6-click-threading-0.4.4/lib/python3.6/site-packages/click_threading/__init__.py", line 115, in run
debug:     result = func()
debug:   File "/nix/store/6wbfakc45lg59rwcps34rhg6kb1k2fp3-vdirsyncer-0.17.0a2/lib/python3.6/site-packages/vdirsyncer/storage/google.py", line 45, in <lambda>
debug:     f = lambda: self._init_token(token_file, client_id, client_secret)
debug:   File "/nix/store/6wbfakc45lg59rwcps34rhg6kb1k2fp3-vdirsyncer-0.17.0a2/lib/python3.6/site-packages/vdirsyncer/storage/google.py", line 98, in _init_token
debug:     client_secret=client_secret,
debug:   File "/nix/store/44d6kwgyp4s7921c6qzjnasgnr2c8kv7-python3.6-requests-oauthlib-0.8.0/lib/python3.6/site-packages/requests_oauthlib/oauth2_session.py", line 244, in fetch_token
debug:     self._client.parse_request_body_response(r.text, scope=self.scope)
debug:   File "/nix/store/d3x4h5rx23zjzr4z8ab6a4y97vq9kh3j-python3.6-oauthlib-2.0.0/lib/python3.6/site-packages/oauthlib/oauth2/rfc6749/clients/base.py", line 409, in parse_request_body_response
debug:     self.token = parse_token_response(body, scope=scope)
debug:   File "/nix/store/d3x4h5rx23zjzr4z8ab6a4y97vq9kh3j-python3.6-oauthlib-2.0.0/lib/python3.6/site-packages/oauthlib/oauth2/rfc6749/parameters.py", line 376, in parse_token_response
debug:     validate_token_parameters(params)
debug:   File "/nix/store/d3x4h5rx23zjzr4z8ab6a4y97vq9kh3j-python3.6-oauthlib-2.0.0/lib/python3.6/site-packages/oauthlib/oauth2/rfc6749/parameters.py", line 383, in validate_token_parameters
debug:     raise_from_error(params.get('error'), params)
debug:   File "/nix/store/d3x4h5rx23zjzr4z8ab6a4y97vq9kh3j-python3.6-oauthlib-2.0.0/lib/python3.6/site-packages/oauthlib/oauth2/rfc6749/errors.py", line 325, in raise_from_error
debug:     raise cls(**kwargs)
warning: Failed to discover collections for gmail_remote_carddav, use `-vdebug` to see the full traceback.

teto avatar May 02 '18 05:05 teto