Failed to upgrade python-caldav

I use the errands package to manage as a todo manager and it depends on python-caldav which is available through AUR.

When I try to update python-caldav it fails:

Output
yay -Syu                                                        
[sudo] password for tarquinio: 
:: Synchronizing package databases...
 core is up to date
 extra is up to date
 community is up to date
 multilib is up to date
:: Searching AUR for updates...
:: Searching databases for updates...
 -> Packages not in AUR: python-backcall
 -> Orphan (unmaintained) AUR Packages: gcstar
 -> Flagged Out Of Date AUR Packages: perl-ogg-vorbis-header-pureperl
:: 1 package to upgrade/install.
1  aur/python-caldav  1.3.6-1 -> 1.3.9-1
==> Packages to exclude: (eg: "1 2 3", "1-3", "^4" or repo name)
 -> Excluding packages may cause partial upgrades and break systems
==> 
AUR Dependency (1): python-caldav-1.3.9-1
:: PKGBUILD up to date, skipping download: python-caldav
  1 python-caldav                            (Installed) (Build Files Exist)
==> Packages to cleanBuild?
==> [N]one [A]ll [Ab]ort [I]nstalled [No]tInstalled or (1 2 3, 1-3, ^4)
==> i
:: Deleting (1/1): /home/tarquinio/.cache/yay/python-caldav
HEAD is now at 4b9dc25 1.3.9
warning: could not open directory 'pkg/': Permission denied
Removing caldav-1.3.9.tar.gz
Removing pkg/
Removing src/
  1 python-caldav                            (Installed) (Build Files Exist)
==> Diffs to show?
==> [N]one [A]ll [Ab]ort [I]nstalled [No]tInstalled or (1 2 3, 1-3, ^4)
==> a

:: Proceed with install? [Y/n] y
==> Making package: python-caldav 1.3.9-1 (ter 02 jan 2024 12:27:36)
==> Retrieving sources...
  -> Downloading caldav-1.3.9.tar.gz...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  122k    0  122k    0     0   144k      0 --:--:-- --:--:-- --:--:--  144k
==> WARNING: Skipping verification of source file PGP signatures.
==> Validating source files with sha256sums...
    caldav-1.3.9.tar.gz ... Passed
:: (1/1) Parsing SRCINFO: python-caldav
==> Making package: python-caldav 1.3.9-1 (ter 02 jan 2024 12:27:37)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
  -> Found caldav-1.3.9.tar.gz
==> Validating source files with sha256sums...
    caldav-1.3.9.tar.gz ... Passed
==> Removing existing $srcdir/ directory...
==> Extracting sources...
  -> Extracting caldav-1.3.9.tar.gz with bsdtar
==> Sources are ready.
==> Making package: python-caldav 1.3.9-1 (ter 02 jan 2024 12:27:39)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> WARNING: Using existing $srcdir/ tree
==> Starting build()...
* Getting build dependencies for wheel...
running egg_info
creating caldav.egg-info
writing caldav.egg-info/PKG-INFO
writing dependency_links to caldav.egg-info/dependency_links.txt
writing requirements to caldav.egg-info/requires.txt
writing top-level names to caldav.egg-info/top_level.txt
writing manifest file 'caldav.egg-info/SOURCES.txt'
file caldav.py (for module caldav) not found
reading manifest file 'caldav.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching 'changelog.0.8.md'
adding license file 'COPYING.APACHE'
adding license file 'COPYING.GPL'
writing manifest file 'caldav.egg-info/SOURCES.txt'
* Building wheel...
running bdist_wheel
running build
running build_py
file caldav.py (for module caldav) not found
creating build
creating build/lib
creating build/lib/caldav
copying caldav/__init__.py -> build/lib/caldav
copying caldav/davclient.py -> build/lib/caldav
copying caldav/objects.py -> build/lib/caldav
copying caldav/requests.py -> build/lib/caldav
creating build/lib/caldav/elements
copying caldav/elements/__init__.py -> build/lib/caldav/elements
copying caldav/elements/base.py -> build/lib/caldav/elements
copying caldav/elements/cdav.py -> build/lib/caldav/elements
copying caldav/elements/dav.py -> build/lib/caldav/elements
copying caldav/elements/ical.py -> build/lib/caldav/elements
creating build/lib/caldav/lib
copying caldav/lib/__init__.py -> build/lib/caldav/lib
copying caldav/lib/debug.py -> build/lib/caldav/lib
copying caldav/lib/error.py -> build/lib/caldav/lib
copying caldav/lib/namespace.py -> build/lib/caldav/lib
copying caldav/lib/python_utilities.py -> build/lib/caldav/lib
copying caldav/lib/url.py -> build/lib/caldav/lib
copying caldav/lib/vcal.py -> build/lib/caldav/lib
running egg_info
writing caldav.egg-info/PKG-INFO
writing dependency_links to caldav.egg-info/dependency_links.txt
writing requirements to caldav.egg-info/requires.txt
writing top-level names to caldav.egg-info/top_level.txt
file caldav.py (for module caldav) not found
reading manifest file 'caldav.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching 'changelog.0.8.md'
adding license file 'COPYING.APACHE'
adding license file 'COPYING.GPL'
writing manifest file 'caldav.egg-info/SOURCES.txt'
file caldav.py (for module caldav) not found
installing to build/bdist.linux-x86_64/wheel
running install
running install_lib
creating build/bdist.linux-x86_64
creating build/bdist.linux-x86_64/wheel
creating build/bdist.linux-x86_64/wheel/caldav
copying build/lib/caldav/__init__.py -> build/bdist.linux-x86_64/wheel/caldav
copying build/lib/caldav/davclient.py -> build/bdist.linux-x86_64/wheel/caldav
copying build/lib/caldav/objects.py -> build/bdist.linux-x86_64/wheel/caldav
copying build/lib/caldav/requests.py -> build/bdist.linux-x86_64/wheel/caldav
creating build/bdist.linux-x86_64/wheel/caldav/elements
copying build/lib/caldav/elements/__init__.py -> build/bdist.linux-x86_64/wheel/caldav/elements
copying build/lib/caldav/elements/base.py -> build/bdist.linux-x86_64/wheel/caldav/elements
copying build/lib/caldav/elements/cdav.py -> build/bdist.linux-x86_64/wheel/caldav/elements
copying build/lib/caldav/elements/dav.py -> build/bdist.linux-x86_64/wheel/caldav/elements
copying build/lib/caldav/elements/ical.py -> build/bdist.linux-x86_64/wheel/caldav/elements
creating build/bdist.linux-x86_64/wheel/caldav/lib
copying build/lib/caldav/lib/__init__.py -> build/bdist.linux-x86_64/wheel/caldav/lib
copying build/lib/caldav/lib/debug.py -> build/bdist.linux-x86_64/wheel/caldav/lib
copying build/lib/caldav/lib/error.py -> build/bdist.linux-x86_64/wheel/caldav/lib
copying build/lib/caldav/lib/namespace.py -> build/bdist.linux-x86_64/wheel/caldav/lib
copying build/lib/caldav/lib/python_utilities.py -> build/bdist.linux-x86_64/wheel/caldav/lib
copying build/lib/caldav/lib/url.py -> build/bdist.linux-x86_64/wheel/caldav/lib
copying build/lib/caldav/lib/vcal.py -> build/bdist.linux-x86_64/wheel/caldav/lib
running install_egg_info
Copying caldav.egg-info to build/bdist.linux-x86_64/wheel/caldav-1.3.9-py3.11.egg-info
running install_scripts
creating build/bdist.linux-x86_64/wheel/caldav-1.3.9.dist-info/WHEEL
creating '/home/tarquinio/.cache/yay/python-caldav/src/caldav-1.3.9/dist/.tmp-nsefx28m/caldav-1.3.9-py3-none-any.whl' and adding 'build/bdist.linux-x86_64/wheel' to it
adding 'caldav/__init__.py'
adding 'caldav/davclient.py'
adding 'caldav/objects.py'
adding 'caldav/requests.py'
adding 'caldav/elements/__init__.py'
adding 'caldav/elements/base.py'
adding 'caldav/elements/cdav.py'
adding 'caldav/elements/dav.py'
adding 'caldav/elements/ical.py'
adding 'caldav/lib/__init__.py'
adding 'caldav/lib/debug.py'
adding 'caldav/lib/error.py'
adding 'caldav/lib/namespace.py'
adding 'caldav/lib/python_utilities.py'
adding 'caldav/lib/url.py'
adding 'caldav/lib/vcal.py'
adding 'caldav-1.3.9.dist-info/COPYING.APACHE'
adding 'caldav-1.3.9.dist-info/COPYING.GPL'
adding 'caldav-1.3.9.dist-info/METADATA'
adding 'caldav-1.3.9.dist-info/WHEEL'
adding 'caldav-1.3.9.dist-info/top_level.txt'
adding 'caldav-1.3.9.dist-info/RECORD'
removing build/bdist.linux-x86_64/wheel
Successfully built caldav-1.3.9-py3-none-any.whl
==> Starting check()...
============================= test session starts ==============================
platform linux -- Python 3.11.6, pytest-7.4.3, pluggy-1.3.0
rootdir: /home/tarquinio/.cache/yay/python-caldav/src/caldav-1.3.9
plugins: subtests-0.11.0, cov-4.1.0
collected 121 items                                                            

tests/test_caldav.py s.s..s..s............ss..............s....s........ [ 42%]
...........s...............s..                                           [ 66%]
tests/test_caldav_unit.py .............................                  [ 90%]
tests/test_cdav.py ......FF                                              [ 97%]
tests/test_utils.py .                                                    [ 98%]
tests/test_vcal.py ..                                                    [100%]

=================================== FAILURES ===================================
_________ TestErrorUnitTestBot.test_to_utc_date_string_with_exception __________

ts = datetime.datetime(1, 1, 1, 0, 0, tzinfo=zoneinfo.ZoneInfo(key='Europe/Lisbon'))

    def _to_utc_date_string(ts):
        # type (Union[date,datetime]]) -> str
        """coerce datetimes to UTC (assume localtime if nothing is given)"""
        if isinstance(ts, datetime):
            try:
                ## for any python version, this should work for a non-native
                ## timestamp.
                ## in python 3.6 and higher, ts.astimezone() will assume a
                ## naive timestamp is localtime (and so do we)
>               ts = ts.astimezone(utc_tz)
E               ValueError: year 0 is out of range

caldav/elements/cdav.py:30: ValueError

During handling of the above exception, another exception occurred:

self = <tests.test_cdav.TestErrorUnitTestBot object at 0x7f971391ec90>

    def test_to_utc_date_string_with_exception(self):
        """
        ts = datetime.datetime(1, 1, 1)
        """
        # This test fails because function [caldav.elements.cdav._to_utc_date_string] produces [OverflowError]
>       _to_utc_date_string(datetime.datetime(1, 1, 1))

tests/test_cdav.py:72: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

ts = datetime.datetime(1, 1, 1, 0, 0, tzinfo=zoneinfo.ZoneInfo(key='Europe/Lisbon'))

    def _to_utc_date_string(ts):
        # type (Union[date,datetime]]) -> str
        """coerce datetimes to UTC (assume localtime if nothing is given)"""
        if isinstance(ts, datetime):
            try:
                ## for any python version, this should work for a non-native
                ## timestamp.
                ## in python 3.6 and higher, ts.astimezone() will assume a
                ## naive timestamp is localtime (and so do we)
                ts = ts.astimezone(utc_tz)
            except:
                ## native time stamp and the current python version is
                ## not able to treat it as localtime.
                import tzlocal
    
                ts = ts.replace(tzinfo=tzlocal.get_localzone())
    
                mindate = datetime.min.replace(tzinfo=utc_tz)
                maxdate = datetime.max.replace(tzinfo=utc_tz)
>               if mindate + ts.tzinfo.utcoffset(ts) > ts:
E               OverflowError: date value out of range

caldav/elements/cdav.py:40: OverflowError
____________ TestRegressionUnitTestBot.test_to_utc_date_string_min _____________

ts = datetime.datetime(1, 1, 1, 0, 0, tzinfo=zoneinfo.ZoneInfo(key='Europe/Lisbon'))

    def _to_utc_date_string(ts):
        # type (Union[date,datetime]]) -> str
        """coerce datetimes to UTC (assume localtime if nothing is given)"""
        if isinstance(ts, datetime):
            try:
                ## for any python version, this should work for a non-native
                ## timestamp.
                ## in python 3.6 and higher, ts.astimezone() will assume a
                ## naive timestamp is localtime (and so do we)
>               ts = ts.astimezone(utc_tz)
E               ValueError: year 0 is out of range

caldav/elements/cdav.py:30: ValueError

During handling of the above exception, another exception occurred:

self = <tests.test_cdav.TestRegressionUnitTestBot object at 0x7f97138c1f10>

    def test_to_utc_date_string_min(self):
        input_datetime = datetime.datetime(1, 1, 1)
>       res = _to_utc_date_string(input_datetime)

tests/test_cdav.py:78: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

ts = datetime.datetime(1, 1, 1, 0, 0, tzinfo=zoneinfo.ZoneInfo(key='Europe/Lisbon'))

    def _to_utc_date_string(ts):
        # type (Union[date,datetime]]) -> str
        """coerce datetimes to UTC (assume localtime if nothing is given)"""
        if isinstance(ts, datetime):
            try:
                ## for any python version, this should work for a non-native
                ## timestamp.
                ## in python 3.6 and higher, ts.astimezone() will assume a
                ## naive timestamp is localtime (and so do we)
                ts = ts.astimezone(utc_tz)
            except:
                ## native time stamp and the current python version is
                ## not able to treat it as localtime.
                import tzlocal
    
                ts = ts.replace(tzinfo=tzlocal.get_localzone())
    
                mindate = datetime.min.replace(tzinfo=utc_tz)
                maxdate = datetime.max.replace(tzinfo=utc_tz)
>               if mindate + ts.tzinfo.utcoffset(ts) > ts:
E               OverflowError: date value out of range

caldav/elements/cdav.py:40: OverflowError
=========================== short test summary info ============================
FAILED tests/test_cdav.py::TestErrorUnitTestBot::test_to_utc_date_string_with_exception - OverflowError: date value out of range
FAILED tests/test_cdav.py::TestRegressionUnitTestBot::test_to_utc_date_string_min - OverflowError: date value out of range
================== 2 failed, 109 passed, 10 skipped in 16.68s ==================
==> ERROR: A failure occurred in check().
    Aborting...
 -> error making: python-caldav-exit status 4
 -> Failed to install the following packages. Manual intervention is required:
python-caldav - exit status 4

Any suggestions to fix this?

AUR expects unstable branch and as you likely recall - totally unsupported.

Talk to the developer … it is one of the tests failing

Perhaps a dependency is missing - I suggest you try with pamac instead of yay

 $ pamac build python-caldav
[...]
==> Finished making: python-caldav 1.3.9-1 (tir 02 jan 2024 14:07:49 CET)
==> Cleaning up...

Checking keyring...                                                                                      [1/1]
Checking integrity...                                                                                    [1/1]
Loading packages files...                                                                                [1/1]
Checking file conflicts...                                                                               [1/1]
Checking available disk space...                                                                         [1/1]
Installing python-caldav (1.3.9-1)...                                                                    [1/1]
Running post-transaction hooks...
Arming ConditionNeedsUpdate...                                                                           [1/2]
Refreshing PackageKit...                                                                                 [2/2]
Transaction successfully finished.
1 Like

Why do you have python-pytest-subtests installed? That might be throwing it off.

Either way, you can build it in a clean chroot:

sudo pacman -Syu --needed base-devel git manjaro-chrootbuild
git clone https://aur.archlinux.org/python-caldav.git
sudo chrootbuild -p python-caldav -c
sudo pacman -U python-caldav-1.3.9-1-any.pkg.tar.zst
1 Like

Thank you for your replies. I don’t have much knowledge on the details of my install errands. Which of the solutions from @linux-aarhus or @Yochanan is most likely to make it work in the future when I do yay -Syu? Or is is better to stop using yay to manage AUR packages?

What actually solved the problem? Did building it with pamac work?

1 Like

Yup. Now when I try to yay -Syu I don’t get any error.

Ah, so updating your repo packages solved the issue.

In the future, update repo packages first:

sudo pacman -Syu

or

pamac update --no-aur

Then update AUR packages afterward.

1 Like

I remember I tried

sudo pacman -Syu

an then I did yay -Syu and it didn’t solve it.

This topic was automatically closed 36 hours after the last reply. New replies are no longer allowed.