commit:     3b46180f871d49d8624b2140b5e29565f7e80b18
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Sun Sep 14 09:41:25 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Sun Sep 14 09:41:25 2025 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=3b46180f

_urlopen: partly revert earlier change

In 4b57307865cf4bcde8ef5150303eb48465a43689, I also made a speculative
fix to timestamp_to_http but that turns out to be wrong (though I thought
I'd tested that too):
```
$ emerge -G hello -v --jobs=1
Traceback (most recent call last):
  File "/usr/lib/python-exec/python3.13/emerge", line 57, in main
    retval = emerge_main()
  File "/usr/lib/python3.13/site-packages/_emerge/main.py", line 1314, in 
emerge_main
    return run_action(emerge_config)
  File "/usr/lib/python3.13/site-packages/_emerge/actions.py", line 3521, in 
run_action
    mytrees["bintree"].populate(
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        getbinpkgs="--getbinpkg" in emerge_config.opts,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...<2 lines>...
        **kwargs,
        ^^^^^^^^^
    )
    ^
  File "/usr/lib/python3.13/site-packages/portage/dbapi/bintree.py", line 964, 
in populate
    self._populate_remote(
    ~~~~~~~~~~~~~~~~~~~~~^
        getbinpkg_refresh=getbinpkg_refresh,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        pretend=pretend,
        ^^^^^^^^^^^^^^^^
        verbose=verbose,
        ^^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/lib/python3.13/site-packages/portage/dbapi/bintree.py", line 1463, 
in _populate_remote
    f = _urlopen(
        url,
        if_modified_since=local_timestamp,
        proxies=proxies,
    )
  File "/usr/lib/python3.13/site-packages/portage/util/_urlopen.py", line 50, 
in urlopen
    request.add_header("If-Modified-Since", 
timestamp_to_http(if_modified_since))
                                            ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.13/site-packages/portage/util/_urlopen.py", line 70, 
in timestamp_to_http
    stamp = mktime_tz(dt.timetuple())
  File "/usr/lib/python3.13/email/_parseaddr.py", line 193, in mktime_tz
    if data[9] is None:
       ~~~~^^^
IndexError: tuple index out of range
```

Revert that part. I think it's unnecessary anyway because of the formatdate
call.

Bug: https://bugs.gentoo.org/962832
Fixes: 4b57307865cf4bcde8ef5150303eb48465a43689
Signed-off-by: Sam James <sam <AT> gentoo.org>

 lib/portage/util/_urlopen.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lib/portage/util/_urlopen.py b/lib/portage/util/_urlopen.py
index 68403037ce..b390ec3296 100644
--- a/lib/portage/util/_urlopen.py
+++ b/lib/portage/util/_urlopen.py
@@ -3,6 +3,7 @@
 
 import io
 from datetime import datetime
+from time import mktime
 from email.utils import formatdate, parsedate_tz, mktime_tz
 from urllib.request import urlopen as _urlopen
 import urllib.parse as urllib_parse
@@ -67,7 +68,7 @@ def urlopen(url, timeout=10, if_modified_since=None, 
headers={}, proxies=None):
 
 def timestamp_to_http(timestamp):
     dt = datetime.fromtimestamp(float(int(timestamp) + TIMESTAMP_TOLERANCE))
-    stamp = mktime_tz(dt.timetuple())
+    stamp = mktime(dt.timetuple())
     return formatdate(timeval=stamp, localtime=False, usegmt=True)
 
 

Reply via email to