Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package eduvpn-client for openSUSE:Factory checked in at 2026-11-09 17:45:23 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/eduvpn-client (Old) and /work/SRC/openSUSE:Factory/.eduvpn-client.new.3759290 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "eduvpn-client" Mon Nov 9 17:45:23 2026 rev:6 rq:1396342 version:4.7.3 Changes: -------- --- /work/SRC/openSUSE:Factory/eduvpn-client/eduvpn-client.changes 2026-04-28 11:57:30.672343657 +0200 +++ /work/SRC/openSUSE:Factory/.eduvpn-client.new.3759290/eduvpn-client.changes 2026-11-09 17:45:25.010050394 +0100 @@ -1,0 +2,15 @@ +Mon Nov 9 13:44:52 UTC 2026 - René Neumaier <[email protected]> + +- Update to 4.7.3 + * UI: Remove right click on server to change profile as it's + buggy + * Server: Fix secure internet lookup if already exists by + @CocytusChen + * Upstream building targets and Documentation changes +- Specfile change + * Requires eduvpn-common >= 5.0.4 + * Rename variable 'vname' to 'upstream_name' + * Add variable 'pypack_name' to reflect python package name + * Refer pycache in python files section + +------------------------------------------------------------------- Old: ---- linux-app-4.7.2.tar.xz linux-app-4.7.2.tar.xz.asc New: ---- linux-app-4.7.3.tar.xz linux-app-4.7.3.tar.xz.asc ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ eduvpn-client.spec ++++++ --- /var/tmp/diff_new_pack.KNmBJB/_old 2026-11-09 17:45:26.394108089 +0100 +++ /var/tmp/diff_new_pack.KNmBJB/_new 2026-11-09 17:45:26.395108131 +0100 @@ -17,20 +17,21 @@ %define skip_python2 1 -%define vname linux-app +%define upstream_name linux-app +%define pypack_name eduvpn Name: eduvpn-client -Version: 4.7.2 +Version: 4.7.3 Release: 0 Summary: The eduVPN desktop client (CLI and GUI front-end) License: GPL-3.0-or-later Group: Productivity/Networking/Security URL: https://www.eduvpn.org/ -Source0: https://codeberg.org/eduVPN/linux-app/releases/download/%{version}/%{vname}-%{version}.tar.xz -Source1: https://codeberg.org/eduVPN/linux-app/releases/download/%{version}/%{vname}-%{version}.tar.xz.asc +Source0: https://codeberg.org/eduVPN/linux-app/releases/download/%{version}/%{upstream_name}-%{version}.tar.xz +Source1: https://codeberg.org/eduVPN/linux-app/releases/download/%{version}/%{upstream_name}-%{version}.tar.xz.asc # https://app.eduvpn.org/linux/v4/deb/[email protected] and inside package dir 'keys' Source2: %{name}.keyring BuildRequires: %{python_module devel} -BuildRequires: %{python_module eduvpn-common >= 5.0.2 with %python-eduvpn-common < 6} +BuildRequires: %{python_module eduvpn-common >= 5.0.4 with %python-eduvpn-common < 6} BuildRequires: %{python_module gobject} BuildRequires: %{python_module pip} BuildRequires: %{python_module pycodestyle} @@ -62,7 +63,7 @@ %package -n python-%{name} Summary: Python3 API for eduVPN Requires: NetworkManager-openvpn -Requires: (python-eduvpn-common >= 5.0.2 with python-eduvpn-common < 6) +Requires: (python-eduvpn-common >= 5.0.4 with python-eduvpn-common < 6) Requires: python-gobject %description -n python-%{name} @@ -81,7 +82,7 @@ organizations. %prep -%autosetup -n %{vname}-%{version} +%autosetup -n %{upstream_name}-%{version} # Dir 'data' conflicts otherwise with Python subpackages mv eduvpn/data data @@ -120,7 +121,13 @@ %files %{python_files %{name}} %license LICENSE %doc CHANGES.md README.md -%{python_sitelib}/eduvpn* +%dir %{python_sitelib}/%{pypack_name} +%dir %{python_sitelib}/%{pypack_name}/ui +%{python_sitelib}/%{pypack_name}/*.py +%pycache_only %{python_sitelib}/%{pypack_name}/__pycache__ +%{python_sitelib}/%{pypack_name}/ui/*.py +%pycache_only %{python_sitelib}/%{pypack_name}/ui/__pycache__ +%{python_sitelib}/%{pypack_name}_client-%{version}.dist-info/ %files -n letsconnect-client %license LICENSE ++++++ linux-app-4.7.2.tar.xz -> linux-app-4.7.3.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linux-app-4.7.2/.forgejo/workflows/deb.yml new/linux-app-4.7.3/.forgejo/workflows/deb.yml --- old/linux-app-4.7.2/.forgejo/workflows/deb.yml 2026-04-24 15:25:52.000000000 +0200 +++ new/linux-app-4.7.3/.forgejo/workflows/deb.yml 2026-11-03 19:35:39.000000000 +0100 @@ -15,14 +15,13 @@ image: - "debian:bookworm" - "debian:trixie" - - "ubuntu:jammy" - "ubuntu:noble" - - "ubuntu:plucky" - - "ubuntu:questing" + - "ubuntu:resolute" + - "ubuntu:stonking" # Add arm64 here for ARM builds arch: - "amd64" - runs-on: codeberg-small-lazy + runs-on: codeberg-small container: image: codeberg.org/jwijenbergh/debbuilder-${{ matrix.image }}-${{ matrix.arch }} steps: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linux-app-4.7.2/.forgejo/workflows/rpm.yml new/linux-app-4.7.3/.forgejo/workflows/rpm.yml --- old/linux-app-4.7.2/.forgejo/workflows/rpm.yml 2026-04-24 15:25:52.000000000 +0200 +++ new/linux-app-4.7.3/.forgejo/workflows/rpm.yml 2026-11-03 19:35:39.000000000 +0100 @@ -10,15 +10,15 @@ jobs: build-rpm: name: RPM build for ${{ matrix.image }} - runs-on: codeberg-small-lazy + runs-on: codeberg-small container: image: codeberg.org/jwijenbergh/rpmbuilder-${{ matrix.image }}-${{ matrix.arch }} strategy: matrix: image: - - "fedora:42" - - "fedora:43" + - "fedora:44" + - "fedora:45" arch: - "amd64" @@ -53,7 +53,7 @@ run: cd common && rpmbuild -ba "${RPMBUILD_ROOT}/SPECS/${RPMBUILD_COMMON_SPEC_FILE}" - name: Install Common - run: sudo rpm -Uvh "${RPMBUILD_ROOT}/RPMS/*/*.rpm" + run: sudo rpm --nosignature -Uvh "${RPMBUILD_ROOT}/RPMS/*/*.rpm" - name: Cleanup Common run: rm -rf common diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linux-app-4.7.2/.forgejo/workflows/test.yml new/linux-app-4.7.3/.forgejo/workflows/test.yml --- old/linux-app-4.7.2/.forgejo/workflows/test.yml 2026-04-24 15:25:52.000000000 +0200 +++ new/linux-app-4.7.3/.forgejo/workflows/test.yml 2026-11-03 19:35:39.000000000 +0100 @@ -2,7 +2,7 @@ jobs: test: - runs-on: codeberg-small-lazy + runs-on: codeberg-small container: image: codeberg.org/jwijenbergh/eduvpn-linux-client-ci:latest-amd64 steps: @@ -10,10 +10,6 @@ run: git clone --depth 1 -b ${{ github.ref_name }} ${{ github.server_url }}/${{ github.repository }} . - name: Install common run: EDUVPN_COMMON_BUILD_SO=1 uv pip install --force-reinstall --no-cache git+https://codeberg.org/eduvpn/eduvpn-common@main#subdirectory=wrappers/python - - name: Run linter - run: source /venv/bin/activate && make lint - - name: Run mypy - run: source /venv/bin/activate && make mypy - name: Run pytest run: source /venv/bin/activate && make test - name: Build wheel diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linux-app-4.7.2/CHANGES.md new/linux-app-4.7.3/CHANGES.md --- old/linux-app-4.7.2/CHANGES.md 2026-04-24 15:25:52.000000000 +0200 +++ new/linux-app-4.7.3/CHANGES.md 2026-11-03 19:35:39.000000000 +0100 @@ -1,3 +1,13 @@ +# 4.7.3 (2026-11-03) +* UI: + - Remove right click on server to change profile as it's buggy +* Server: + - Fix secure internet lookup if already exists by @CocytusChen +* Building: + - Update Ubuntu and Fedora targets +* Doc: + - Update OpenSUSE install instruction by @JuergenWeigert + # 4.7.2 (2026-04-24) * Server link markup: Escape text * Build: Build packages for Ubuntu 26.04 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linux-app-4.7.2/debian/changelog new/linux-app-4.7.3/debian/changelog --- old/linux-app-4.7.2/debian/changelog 2026-04-24 15:25:52.000000000 +0200 +++ new/linux-app-4.7.3/debian/changelog 2026-11-03 19:35:39.000000000 +0100 @@ -1,3 +1,9 @@ +python-eduvpn-client (4.7.3) unstable; urgency=medium + + * New version + + -- dev <[email protected]> Tue, 03 Nov 2026 13:08:18 +0100 + python-eduvpn-client (4.7.2) unstable; urgency=medium * New version diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linux-app-4.7.2/doc/md/installation.md new/linux-app-4.7.3/doc/md/installation.md --- old/linux-app-4.7.2/doc/md/installation.md 2026-04-24 15:25:52.000000000 +0200 +++ new/linux-app-4.7.3/doc/md/installation.md 2026-11-03 19:35:39.000000000 +0100 @@ -54,17 +54,6 @@ $ sudo apt install eduvpn-client ``` -### Ubuntu 22.04 - -``` console -$ sudo apt update -$ sudo apt install apt-transport-https wget -$ wget -O- https://app.eduvpn.org/linux/v4/deb/[email protected] | gpg --dearmor | sudo tee /usr/share/keyrings/eduvpn-v4.gpg >/dev/null -$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/eduvpn-v4.gpg] https://app.eduvpn.org/linux/v4/deb/ jammy main" | sudo tee /etc/apt/sources.list.d/eduvpn-v4.list -$ sudo apt update -$ sudo apt install eduvpn-client -``` - ### Ubuntu 24.04 ``` console @@ -76,24 +65,25 @@ $ sudo apt install eduvpn-client ``` -### Ubuntu 25.04 +### Ubuntu 26.04 ``` console $ sudo apt update $ sudo apt install apt-transport-https wget $ wget -O- https://app.eduvpn.org/linux/v4/deb/[email protected] | gpg --dearmor | sudo tee /usr/share/keyrings/eduvpn-v4.gpg >/dev/null -$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/eduvpn-v4.gpg] https://app.eduvpn.org/linux/v4/deb/ plucky main" | sudo tee /etc/apt/sources.list.d/eduvpn-v4.list +$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/eduvpn-v4.gpg] https://app.eduvpn.org/linux/v4/deb/ resolute main" | sudo tee /etc/apt/sources.list.d/eduvpn-v4.list $ sudo apt update $ sudo apt install eduvpn-client ``` -### Ubuntu 25.10 + +### Ubuntu 26.10 ``` console $ sudo apt update $ sudo apt install apt-transport-https wget $ wget -O- https://app.eduvpn.org/linux/v4/deb/[email protected] | gpg --dearmor | sudo tee /usr/share/keyrings/eduvpn-v4.gpg >/dev/null -$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/eduvpn-v4.gpg] https://app.eduvpn.org/linux/v4/deb/ questing main" | sudo tee /etc/apt/sources.list.d/eduvpn-v4.list +$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/eduvpn-v4.gpg] https://app.eduvpn.org/linux/v4/deb/ stonking main" | sudo tee /etc/apt/sources.list.d/eduvpn-v4.list $ sudo apt update $ sudo apt install eduvpn-client ``` @@ -120,17 +110,6 @@ $ sudo apt install eduvpn-client ``` -### Linux Mint 21.x - -``` console -$ sudo apt update -$ sudo apt install apt-transport-https wget -$ wget -O- https://app.eduvpn.org/linux/v4/deb/[email protected] | gpg --dearmor | sudo tee /usr/share/keyrings/eduvpn-v4.gpg >/dev/null -$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/eduvpn-v4.gpg] https://app.eduvpn.org/linux/v4/deb/ jammy main" | sudo tee /etc/apt/sources.list.d/eduvpn-v4.list -$ sudo apt update -$ sudo apt install eduvpn-client -``` - ### Linux Mint 22.x ``` console @@ -142,7 +121,7 @@ $ sudo apt install eduvpn-client ``` -### Fedora (42, 43 & 44) +### Fedora (44 & 45) ``` console $ curl https://app.eduvpn.org/linux/v4/rpm/[email protected] | sudo tee /etc/pki/rpm-gpg/RPM-GPG-KEY-python-eduvpn-client_v4 > /dev/null @@ -206,14 +185,25 @@ ``` -For Leap 15.6, the package is not present in the official repo but there is a development project which makes it available. +For Leap 16.0, the package is not present in the official repo but there is a development project which makes it available. ``` -$ sudo zypper addrepo https://download.opensuse.org/repositories/network:vpn/openSUSE_Leap_15.6/network:vpn.repo +$ sudo zypper addrepo https://download.opensuse.org/repositories/network:vpn/16.0/network:vpn.repo $ sudo zypper refresh $ sudo zypper install eduvpn-client ``` +### Flatpak (Unofficial) + +There is an unofficial Flatpak package maintained by the community at +[codeberg.org/WebSpider/eduvpn-flatpak](https://codeberg.org/WebSpider/eduvpn-flatpak). +This is useful if you prefer sandboxed installation or if your distribution is not +otherwise supported. + +> **Note** +> This package is not maintained by the eduVPN project. For issues specific to the +> Flatpak packaging, please open an issue in that repository. + ### Pip installation We also provide Pip packages. These are useful if your distro is not @@ -281,7 +271,7 @@ You can then continue with installing via Pip: ``` console -$ pip install "eduvpn-client[gui]" +$ pip install eduvpn-client ``` Make sure to reboot after installing diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linux-app-4.7.2/eduvpn/__init__.py new/linux-app-4.7.3/eduvpn/__init__.py --- old/linux-app-4.7.2/eduvpn/__init__.py 2026-04-24 15:25:52.000000000 +0200 +++ new/linux-app-4.7.3/eduvpn/__init__.py 2026-11-03 19:35:39.000000000 +0100 @@ -1 +1 @@ -__version__ = "4.7.2" +__version__ = "4.7.3" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linux-app-4.7.2/eduvpn/server.py new/linux-app-4.7.3/eduvpn/server.py --- old/linux-app-4.7.2/eduvpn/server.py 2026-04-24 15:25:52.000000000 +0200 +++ new/linux-app-4.7.3/eduvpn/server.py 2026-11-03 19:35:39.000000000 +0100 @@ -278,7 +278,7 @@ # The url attribute is always used as an identifier # But we need to normalize it to compare sid = server.identifier - if server.category_id != SecureInternetServer: + if server.category_id != ServerType.SECURE_INTERNET: sid = self.normalize_server_id(sid) for s in self.configured: if sid == s.identifier: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linux-app-4.7.2/eduvpn/ui/ui.py new/linux-app-4.7.3/eduvpn/ui/ui.py --- old/linux-app-4.7.2/eduvpn/ui/ui.py 2026-04-24 15:25:52.000000000 +0200 +++ new/linux-app-4.7.3/eduvpn/ui/ui.py 2026-11-03 19:35:39.000000000 +0100 @@ -1187,13 +1187,6 @@ else: logger.debug(f"cancelled server remove for: {server!r}") - def server_change_profile(self, server): - def set_profile(profile_id): - self.app.model.set_profile(profile_id) - self.call_model("go_back") - - self.enter_ChooseProfile(State.MAIN, (set_profile, server.profiles)) - def on_server_row_pressed(self, widget: TreeView, event: EventButton) -> None: logger.debug("on server row pressed") # Exit if not a press @@ -1228,17 +1221,6 @@ # Icons are already added so do not reserve extra space for them menu.set_reserve_toggle_size(0) # type: ignore - if len(server.profiles.profiles) > 1: - change_profile_item = Gtk.MenuItem() # type: ignore - change_profile_item.connect("activate", lambda _: self.server_change_profile(server)) - change_profile_box = Gtk.Box.new(Gtk.Orientation.HORIZONTAL, 0) # type: ignore - change_profile_image = Gtk.Image.new_from_icon_name("document-edit", Gtk.IconSize.MENU) # type: ignore - change_profile_label = Gtk.Label.new("Change Profile") # type: ignore - change_profile_box.pack_start(change_profile_image, False, False, 0) # type: ignore - change_profile_box.pack_start(change_profile_label, False, False, 8) # type: ignore - change_profile_item.add(change_profile_box) - change_profile_item.show_all() - menu.append(change_profile_item) menu.append(remove_item) menu.attach_to_widget(widget) # type: ignore menu.popup_at_pointer() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linux-app-4.7.2/install.sh new/linux-app-4.7.3/install.sh --- old/linux-app-4.7.2/install.sh 2026-04-24 15:25:52.000000000 +0200 +++ new/linux-app-4.7.3/install.sh 2026-11-03 19:35:39.000000000 +0100 @@ -53,13 +53,9 @@ case $VERSION_CODENAME in # ubuntu and deb versions - "jammy" | "noble" | "plucky" | "questing" | "bookworm" | "trixie") + "noble" | "resolute" | "stonking" | "bookworm" | "trixie") install_deb "$VERSION_CODENAME" ;; - # redirect linux mint 21.x codenames to jammy - "vanessa" | "vera" | "victoria") - install_deb "jammy" - ;; # redirect linux mint codenames to noble "wilma" | "xia" | "zara" | "zena") install_deb "noble" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linux-app-4.7.2/rpm/SPECS/python-eduvpn-client.spec new/linux-app-4.7.3/rpm/SPECS/python-eduvpn-client.spec --- old/linux-app-4.7.2/rpm/SPECS/python-eduvpn-client.spec 2026-04-24 15:25:52.000000000 +0200 +++ new/linux-app-4.7.3/rpm/SPECS/python-eduvpn-client.spec 2026-11-03 19:35:39.000000000 +0100 @@ -2,7 +2,7 @@ %global sum client for eduVPN Name: eduvpn_client -Version: 4.7.2 +Version: 4.7.3 Release: 1%{?dist} Summary: %{sum} @@ -116,6 +116,9 @@ %{_datarootdir}/letsconnect/images/*.svg %changelog +* Tue Nov 03 2026 Jeroen Wijenbergh <[email protected]> - 4.7.3-1 +- New version + * Fri Apr 24 2026 Jeroen Wijenbergh <[email protected]> - 4.7.2-1 - New version diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linux-app-4.7.2/setup.cfg new/linux-app-4.7.3/setup.cfg --- old/linux-app-4.7.2/setup.cfg 2026-04-24 15:25:52.000000000 +0200 +++ new/linux-app-4.7.3/setup.cfg 2026-11-03 19:35:39.000000000 +0100 @@ -1,6 +1,6 @@ [metadata] name = eduvpn_client -version = 4.7.2 +version = 4.7.3 author = Jeroen Wijenbergh author_email = [email protected] description = eduVPN client for Linux diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/linux-app-4.7.2/tests/test_server.py new/linux-app-4.7.3/tests/test_server.py --- old/linux-app-4.7.2/tests/test_server.py 1970-01-01 01:00:00.000000000 +0100 +++ new/linux-app-4.7.3/tests/test_server.py 2026-11-03 19:35:39.000000000 +0100 @@ -0,0 +1,28 @@ +from unittest import TestCase +from unittest.mock import PropertyMock, patch + +from eduvpn.server import SecureInternetServer, ServerDatabase + + +class TestServerDatabase(TestCase): + def test_has_secure_internet_server_does_not_normalize_identifier(self): + server = SecureInternetServer( + "https://example.org/idp/shibboleth", + {"en": "Example University"}, + [], + None, + "DE", + [], + ) + + database = ServerDatabase(object(), enable_discovery=False) + + with patch.object( + ServerDatabase, + "configured", + new_callable=PropertyMock, + return_value=[server], + ): + with patch.object(database, "normalize_server_id") as normalize: + self.assertIs(database.has(server), server) + normalize.assert_not_called()
