Compare commits

...

10 Commits
main ... v3.2.1

Author SHA1 Message Date
qutebrowser bot 8cb4556245 Release v3.2.1 2024-06-25 09:07:51 +00:00
Florian Bruhin 21ee2d093a Build separate Apple Silicon release
With GitHub Actions now providing macOS 14 runners with M1 chips, we can
build a separate Apple Silicon release there and upload it.

Universal wheels are currently not possible, see #8229 for details.

Closes #6478

(cherry picked from commit 27164d0d6e)
2024-06-25 10:41:34 +02:00
Florian Bruhin 06f77d18d2 Update changelog from main 2024-06-25 10:41:13 +02:00
Florian Bruhin 96ce299f3c Update changelog from main 2024-06-25 10:07:23 +02:00
Florian Bruhin a41c14412b Update to Qt 6.7.2 2024-06-25 10:04:22 +02:00
Florian Bruhin f716467cb9 Update Chromium version information
(cherry picked from commit 3221e6ca49)
2024-06-25 08:52:53 +02:00
Bernhard M. Wiedemann 6e22ec67b1 Fix tests after year 2036
Background:
As part of my work on reproducible builds for openSUSE, I check that software still gives identical build results in the future.
The usual offset is +16 years, because that is how long I expect some software will be used in some places.
This showed up failing tests in our package build.
See https://reproducible-builds.org/ for why this matters.

(cherry picked from commit 8bacbad1d6)
2024-06-25 08:52:53 +02:00
Florian Bruhin a6736dd0f4 Fix earlyinit with no Qt available
We need to wait with init_qtlog until after we know we have Qt available.

Closes #8220

(cherry picked from commit 1e1af23d34)
2024-06-04 22:32:22 +02:00
Florian Bruhin a8a84b81d1 Update user agent completions in config
(cherry picked from commit 60f5ce153a)
2024-06-04 22:28:22 +02:00
Florian Bruhin 649aac0c11 scripts: Update data link for ua_fetch.py
Same developer, just repo moved apparently

(cherry picked from commit 79942fa466)
2024-06-04 22:28:22 +02:00
16 changed files with 82 additions and 26 deletions

View File

@ -1,5 +1,5 @@
[bumpversion] [bumpversion]
current_version = 3.2.0 current_version = 3.2.1
commit = True commit = True
message = Release v{new_version} message = Release v{new_version}
tag = True tag = True

View File

@ -183,6 +183,11 @@ jobs:
os: macos-12 os: macos-12
python: "3.12" python: "3.12"
args: "tests/unit" # Only run unit tests on macOS args: "tests/unit" # Only run unit tests on macOS
### macOS Sonoma (M1 runner)
- testenv: py312-pyqt67
os: macos-14
python: "3.12"
args: "tests/unit" # Only run unit tests on macOS
### Windows ### Windows
- testenv: py312-pyqt67 - testenv: py312-pyqt67
os: windows-2019 os: windows-2019

View File

@ -30,14 +30,20 @@ jobs:
name: qt5-windows-debug name: qt5-windows-debug
- os: macos-11 - os: macos-11
toxenv: build-release toxenv: build-release
name: macos name: macos-intel
- os: macos-14
toxenv: build-release
name: macos-apple-silicon
- os: windows-2019 - os: windows-2019
toxenv: build-release toxenv: build-release
name: windows name: windows
- os: macos-11 - os: macos-11
args: --debug args: --debug
toxenv: build-release toxenv: build-release
name: macos-debug name: macos-debug-intel
- os: macos-14
toxenv: build-release
name: macos-debug-apple-silicon
- os: windows-2019 - os: windows-2019
args: --debug args: --debug
toxenv: build-release toxenv: build-release

View File

@ -127,6 +127,7 @@ jobs:
matrix: matrix:
include: include:
- os: macos-11 - os: macos-11
- os: macos-14
- os: windows-2019 - os: windows-2019
- os: ubuntu-20.04 - os: ubuntu-20.04
runs-on: "${{ matrix.os }}" runs-on: "${{ matrix.os }}"

View File

@ -15,6 +15,38 @@ breaking changes (such as renamed commands) can happen in minor releases.
// `Fixed` for any bug fixes. // `Fixed` for any bug fixes.
// `Security` to invite users to upgrade in case of vulnerabilities. // `Security` to invite users to upgrade in case of vulnerabilities.
[[v3.3.0]]
v3.3.0 (2024-06-25)
-------------------
Added
~~~~~
- There is now a separate macOS release built for Apple Silicon. A Universal
Binary might follow with a later release.
[[v3.2.1]]
v3.2.1 (2024-06-25)
-------------------
Added
~~~~~
- There is now a separate macOS release built for Apple Silicon. A Universal
Binary might follow with a later release.
Changed
~~~~~~~
- Windows and macOS releases now bundle Qt 6.7.2, which includes security fixes
up to Chromium 125.0.6422.142.
Fixed
~~~~~
- When the selected Qt wrapper is unavailable, qutebrowser now again shows a
GUI error message instead of only an exception in the terminal.
[[v3.2.0]] [[v3.2.0]]
v3.2.0 (2024-06-03) v3.2.0 (2024-06-03)
------------------- -------------------

View File

@ -44,6 +44,7 @@
</content_rating> </content_rating>
<releases> <releases>
<!-- Add new releases here --> <!-- Add new releases here -->
<release version="3.2.1" date="2024-06-25"/>
<release version="3.2.0" date="2024-06-03"/> <release version="3.2.0" date="2024-06-03"/>
<release version="3.1.0" date="2023-12-08"/> <release version="3.1.0" date="2023-12-08"/>
<release version="3.0.2" date="2023-10-19"/> <release version="3.0.2" date="2023-10-19"/>

View File

@ -1,8 +1,8 @@
# This file is automatically generated by scripts/dev/recompile_requirements.py # This file is automatically generated by scripts/dev/recompile_requirements.py
PyQt6==6.7.0 PyQt6==6.7.0
PyQt6-Qt6==6.7.1 PyQt6-Qt6==6.7.2
PyQt6-sip==13.6.0 PyQt6-sip==13.6.0
PyQt6-WebEngine==6.7.0 PyQt6-WebEngine==6.7.0
PyQt6-WebEngine-Qt6==6.7.1 PyQt6-WebEngine-Qt6==6.7.2
PyQt6-WebEngineSubwheel-Qt6==6.7.1 PyQt6-WebEngineSubwheel-Qt6==6.7.2

View File

@ -1,8 +1,8 @@
# This file is automatically generated by scripts/dev/recompile_requirements.py # This file is automatically generated by scripts/dev/recompile_requirements.py
PyQt6==6.7.0 PyQt6==6.7.0
PyQt6-Qt6==6.7.1 PyQt6-Qt6==6.7.2
PyQt6-sip==13.6.0 PyQt6-sip==13.6.0
PyQt6-WebEngine==6.7.0 PyQt6-WebEngine==6.7.0
PyQt6-WebEngine-Qt6==6.7.1 PyQt6-WebEngine-Qt6==6.7.2
PyQt6-WebEngineSubwheel-Qt6==6.7.1 PyQt6-WebEngineSubwheel-Qt6==6.7.2

View File

@ -1,8 +1,8 @@
# This file is automatically generated by scripts/dev/recompile_requirements.py # This file is automatically generated by scripts/dev/recompile_requirements.py
PyQt6==6.7.0 PyQt6==6.7.0
PyQt6-Qt6==6.7.1 PyQt6-Qt6==6.7.2
PyQt6-sip==13.6.0 PyQt6-sip==13.6.0
PyQt6-WebEngine==6.7.0 PyQt6-WebEngine==6.7.0
PyQt6-WebEngine-Qt6==6.7.1 PyQt6-WebEngine-Qt6==6.7.2
PyQt6-WebEngineSubwheel-Qt6==6.7.1 PyQt6-WebEngineSubwheel-Qt6==6.7.2

View File

@ -14,7 +14,7 @@ __copyright__ = "Copyright 2013-{} Florian Bruhin (The Compiler)".format(_year)
__license__ = "GPL" __license__ = "GPL"
__maintainer__ = __author__ __maintainer__ = __author__
__email__ = "mail@qutebrowser.org" __email__ = "mail@qutebrowser.org"
__version__ = "3.2.0" __version__ = "3.2.1"
__version_info__ = tuple(int(part) for part in __version__.split('.')) __version_info__ = tuple(int(part) for part in __version__.split('.'))
__description__ = "A keyboard-driven, vim-like browser based on Python and Qt." __description__ = "A keyboard-driven, vim-like browser based on Python and Qt."

View File

@ -755,14 +755,14 @@ content.headers.user_agent:
# Vim-protip: Place your cursor below this comment and run # Vim-protip: Place your cursor below this comment and run
# :r!python scripts/dev/ua_fetch.py # :r!python scripts/dev/ua_fetch.py
- - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 - - "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36" (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
- Chrome 117 macOS - Chrome 125 macOS
- - "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, - - "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,
like Gecko) Chrome/117.0.0.0 Safari/537.36" like Gecko) Chrome/125.0.0.0 Safari/537.36"
- Chrome 117 Win10 - Chrome 125 Win10
- - "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like - - "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/117.0.0.0 Safari/537.36" Gecko) Chrome/125.0.0.0 Safari/537.36"
- Chrome 117 Linux - Chrome 125 Linux
supports_pattern: true supports_pattern: true
desc: | desc: |
User agent to send. User agent to send.

View File

@ -337,11 +337,11 @@ def early_init(args):
init_faulthandler() init_faulthandler()
# Then we configure the selected Qt wrapper # Then we configure the selected Qt wrapper
info = machinery.init(args) info = machinery.init(args)
# Init Qt logging after machinery is initialized
init_qtlog(args)
# Here we check if QtCore is available, and if not, print a message to the # Here we check if QtCore is available, and if not, print a message to the
# console or via Tk. # console or via Tk.
check_qt_available(info) check_qt_available(info)
# Init Qt logging after machinery is initialized
init_qtlog(args)
# Now we can be sure QtCore is available, so we can print dialogs on # Now we can be sure QtCore is available, so we can print dialogs on
# errors, so people only using the GUI notice them as well. # errors, so people only using the GUI notice them as well.
check_libraries() check_libraries()

View File

@ -548,6 +548,7 @@ class WebEngineVersions:
108: '108.0.5359.220', # ~2022-12-23 108: '108.0.5359.220', # ~2022-12-23
112: '112.0.5615.213', # ~2023-04-18 112: '112.0.5615.213', # ~2023-04-18
118: '118.0.5993.220', # ~2023-10-24 118: '118.0.5993.220', # ~2023-10-24
# 122: '122.?.????.???', # ~2024-??-??
} }
_CHROMIUM_VERSIONS: ClassVar[Dict[utils.VersionNumber, Tuple[str, Optional[str]]]] = { _CHROMIUM_VERSIONS: ClassVar[Dict[utils.VersionNumber, Tuple[str, Optional[str]]]] = {
@ -626,6 +627,10 @@ class WebEngineVersions:
## Qt 6.7 ## Qt 6.7
utils.VersionNumber(6, 7): (_BASES[118], '122.0.6261.128'), # 2024-03-12 utils.VersionNumber(6, 7): (_BASES[118], '122.0.6261.128'), # 2024-03-12
utils.VersionNumber(6, 7, 1): (_BASES[118], '124.0.6367.202'), # ~2024-05-09 utils.VersionNumber(6, 7, 1): (_BASES[118], '124.0.6367.202'), # ~2024-05-09
utils.VersionNumber(6, 7, 2): (_BASES[118], '125.0.6422.142'), # 2024-05-30
## Qt 6.8
# utils.VersionNumber(6, 8): (_BASES[122], '???'), # 2024-03-12
} }
def __post_init__(self) -> None: def __post_init__(self) -> None:

View File

@ -16,6 +16,7 @@ import subprocess
import argparse import argparse
import tarfile import tarfile
import tempfile import tempfile
import platform
import collections import collections
import dataclasses import dataclasses
import re import re
@ -301,8 +302,10 @@ def build_mac(
dmg_makefile_path = REPO_ROOT / "scripts" / "dev" / "Makefile-dmg" dmg_makefile_path = REPO_ROOT / "scripts" / "dev" / "Makefile-dmg"
subprocess.run(['make', '-f', dmg_makefile_path], check=True) subprocess.run(['make', '-f', dmg_makefile_path], check=True)
arch = platform.machine()
suffix = "-debug" if debug else "" suffix = "-debug" if debug else ""
suffix += "-qt5" if qt5 else "" suffix += "-qt5" if qt5 else ""
suffix += f"-{arch}"
dmg_path = dist_path / f'qutebrowser-{qutebrowser.__version__}{suffix}.dmg' dmg_path = dist_path / f'qutebrowser-{qutebrowser.__version__}{suffix}.dmg'
pathlib.Path('qutebrowser.dmg').rename(dmg_path) pathlib.Path('qutebrowser.dmg').rename(dmg_path)
@ -322,11 +325,14 @@ def build_mac(
except PermissionError as e: except PermissionError as e:
print(f"Failed to remove tempdir: {e}") print(f"Failed to remove tempdir: {e}")
arch_to_desc = {"x86_64": "Intel", "arm64": "Apple Silicon"}
desc_arch = arch_to_desc[arch]
return [ return [
Artifact( Artifact(
path=dmg_path, path=dmg_path,
mimetype='application/x-apple-diskimage', mimetype='application/x-apple-diskimage',
description='macOS .dmg' description=f'macOS .dmg ({desc_arch})'
) )
] ]

View File

@ -7,7 +7,7 @@
"""Fetch and print the most common user agents. """Fetch and print the most common user agents.
This script fetches the most common user agents according to This script fetches the most common user agents according to
https://github.com/Kikobeats/top-user-agents, and prints the most recent https://github.com/microlinkhq/top-user-agents, and prints the most recent
Chrome user agent for Windows, macOS and Linux. Chrome user agent for Windows, macOS and Linux.
""" """
@ -29,7 +29,7 @@ def wrap(ini, sub, string):
# pylint: disable-next=missing-timeout # pylint: disable-next=missing-timeout
response = requests.get('https://raw.githubusercontent.com/Kikobeats/top-user-agents/master/index.json') response = requests.get('https://raw.githubusercontent.com/microlinkhq/top-user-agents/master/src/index.json')
if response.status_code != 200: if response.status_code != 200:
print('Unable to fetch the user agent index', file=sys.stderr) print('Unable to fetch the user agent index', file=sys.stderr)

View File

@ -14,8 +14,8 @@ from qutebrowser.misc import lineparser, objects
pytestmark = pytest.mark.usefixtures('data_tmpdir') pytestmark = pytest.mark.usefixtures('data_tmpdir')
COOKIE1 = b'foo1=bar; expires=Tue, 01-Jan-2036 08:00:01 GMT' COOKIE1 = b'foo1=bar; expires=Tue, 01-Jan-2999 08:00:01 GMT'
COOKIE2 = b'foo2=bar; expires=Tue, 01-Jan-2036 08:00:01 GMT' COOKIE2 = b'foo2=bar; expires=Tue, 01-Jan-2999 08:00:01 GMT'
SESSION_COOKIE = b'foo3=bar' SESSION_COOKIE = b'foo3=bar'
EXPIRED_COOKIE = b'foo4=bar; expires=Sat, 01-Jan-2000 08:00:01 GMT' EXPIRED_COOKIE = b'foo4=bar; expires=Sat, 01-Jan-2000 08:00:01 GMT'