openSUSE Commits
Threads by month
- ----- 2025 -----
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
June 2023
- 1 participants
- 2409 discussions
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package guake for openSUSE:Factory checked in at 2023-06-30 19:59:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/guake (Old)
and /work/SRC/openSUSE:Factory/.guake.new.13546 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "guake"
Fri Jun 30 19:59:42 2023 rev:18 rq:1096081 version:3.10
Changes:
--------
--- /work/SRC/openSUSE:Factory/guake/guake.changes 2023-05-22 13:14:28.830853780 +0200
+++ /work/SRC/openSUSE:Factory/.guake.new.13546/guake.changes 2023-06-30 20:00:00.606049538 +0200
@@ -1,0 +2,39 @@
+Tue Jun 27 16:09:20 UTC 2023 - Atri Bhattacharya <badshah400(a)gmail.com>
+
+- Update to version 3.10:
+ * Fix 0 timestamp #1857 #1950 [gh#Guake/guake#2102].
+ * search engine can be set to preference [gh#Guake/guake#2125].
+ * Added custom search engine input #2088 [gh#Guake/guake#2134].
+ * Include names of processes in PromptQuitDialog
+ [gh#Guake/guake#2135].
+ * Add new hotkey to open new tab in same directory
+ [gh#Guake/guake#2136].
+ * Add pin button to temporarily prevent hiding when losing focus
+ [gh#Guake/guake#2138].
+ * Add pre-commit config and apply all fixes
+ [gh#Guake/guake#2139].
+ * Add a new hotkey to select all text in the current terminal
+ [gh#Guake/guake#2145].
+ * Run -e in new tabs generated by split vertical/horizontal
+ [gh#Guake/guake#2172].
+ * Add global hotkey instructions to docs [gh#Guake/guake#2173].
+ * Open a new guake tab if guake is called with guake [PATH] and
+ no other flags. [gh#Guake/guake#2174].
+ * Save font size when changing zoom level with keyboard
+ shortcuts [gh#Guake/guake#2175].
+- Add guake-Makefile-generate-install-paths.patch: Modify paths in
+ the Makefile to reflect actual paths installed to by rpm
+ package.
+- Build and install workflow overhaul based on upstream Makefile:
+ * Run make targets to generate desktop, locale files, and set-up
+ the correct system paths in paths.py (generate-paths)
+ * Use pyproject_wheel and pyproject_install to build guake
+ python modules.
+ * Run make install-schemas to install desktop app data.
+ * Build and install documentation in the form of HTML (split out
+ separate doc package) and man.
+- Drop outdated NEWS.rst package from installed files.
+- Add guake.rpmlintrc file to suppress false positive
+ warnings and errors.
+
+-------------------------------------------------------------------
Old:
----
guake-3.9.0.tar.gz
New:
----
guake-3.10.tar.gz
guake-Makefile-generate-install-paths.patch
guake.rpmlintrc
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ guake.spec ++++++
--- /var/tmp/diff_new_pack.OtmLiV/_old 2023-06-30 20:00:01.390054201 +0200
+++ /var/tmp/diff_new_pack.OtmLiV/_new 2023-06-30 20:00:01.394054224 +0200
@@ -16,83 +16,101 @@
#
+# Need to re-define pythons to get pyproject_* macros working
+%define pythons python3
Name: guake
-Version: 3.9.0
+Version: 3.10
Release: 0
Summary: Drop-down terminal for GNOME
-License: GPL-2.0-only
-Group: System/X11/Terminals
+License: GPL-2.0-or-later
URL: http://guake-project.org/
-# Use PyPI source, not GitHub tag-ref tarballs, see https://guake.readthedocs.io/en/latest/user/installing.html#install-from-so…
-Source0: https://files.pythonhosted.org/packages/source/g/%{name}/%{name}-%{version}…
-# PyPI tarball missed this file
+Source0: https://files.pythonhosted.org/packages/source/g/guake/guake-%{version}.tar…
+# Needed to install desktop app supporting files to FHS location; the PyPI
+# source misses this, being geared towards installing everything to python module dir
Source1: https://raw.githubusercontent.com/Guake/guake/%{version}/guake/paths.py.in
-BuildRequires: desktop-file-utils
+Source2: %{name}.rpmlintrc
+# PATCH-FEATURE-OPENSUSE guake-Makefile-generate-install-paths.patch badshah400(a)gmail.com -- Ensure data paths in python script point to the correct system installed paths
+Patch0: guake-Makefile-generate-install-paths.patch
BuildRequires: fdupes
-BuildRequires: gettext-tools
BuildRequires: glib2-tools
BuildRequires: gobject-introspection
+BuildRequires: python-rpm-macros
BuildRequires: python3-pip
BuildRequires: python3-setuptools >= 57.5.0
BuildRequires: python3-setuptools_scm
BuildRequires: python3-wheel
BuildRequires: update-desktop-files
-BuildRequires: pkgconfig(libwnck-3.0)
+Requires: libutempter0
Requires: python3-cairo
Requires: python3-dbus-python
Requires: python3-gobject-Gdk
Requires: python3-pyaml
-Recommends: libutempter0
-Suggests: gtk3-metatheme-numix
+Requires: python3-typing
+Recommends: %{name}-doc
BuildArch: noarch
-# Other requirements documented upstream but apparently not needed:
-# dconf-editor
-# glade
-# gnome-tweak-tool
-# gsettings-desktop-schemas
+# SECTION BuildRequires for documentation
+BuildRequires: python3-Sphinx
+BuildRequires: python3-reno
+BuildRequires: python311-sphinxcontrib-programoutput
+# /SECTION
%lang_package
%description
Guake is a dropdown terminal made for the GNOME desktop environment.
-%prep
-%autosetup -p1
-cp %{SOURCE1} ./guake/
-# Remove a useless placeholder dir from docs
-rm -fr ./docs/source/_static
+%package doc
+Summary: Documentation for Guake
+Requires: %{name}
+
+%description doc
+Guake is a dropdown terminal made for the GNOME desktop environment.
-sed -i 's/\r$//' ./docs/make.bat
+This package provides the HTML documentation for Guake.
+
+%prep
+%autosetup -p1 -n guake-%{version}
+cp %{SOURCE1} guake/
%build
-%make_build
-# docs cannot be built as they require a local git repository
+# Note: At least `make generate-paths` needs to run before pyproject_wheel to set up the correct paths in guake/paths.py
+%make_build PREFIX=%{_prefix} generate-desktop generate-mo generate-paths
+%pyproject_wheel
+
+# Build documentation
+%make_build -C docs html man
+rm docs/_build/html/.buildinfo
%install
-%make_install PREFIX=%{_prefix}
+%pyproject_install
+%make_build DESTDIR=%{buildroot} PREFIX=%{_prefix} install-locale install-schemas
-rm -fr %{buildroot}%{_datadir}/%{name}/po
+# Install documentation
+mkdir -p %{buildroot}%{_docdir}/guake
+cp -r docs/_build/html %{buildroot}%{_docdir}/guake/
+mkdir -p %{buildroot}%{_mandir}/man1
+install -m0644 docs/_build/man/*.1 %{buildroot}%{_mandir}/man1/guake.1
-# conflicts with libgio-2_0-0
-rm %{buildroot}%{_datadir}/glib-2.0/schemas/gschemas.compiled
-%fdupes %{buildroot}
-%suse_update_desktop_file -G "Guake Preferences" %{name}-prefs Settings DesktopSettings
-%suse_update_desktop_file -G "Guake Terminal" %{name} System TerminalEmulator
%find_lang %{name} %{?no_lang_C}
+%fdupes %{buildroot}%{python3_sitelib}/guake/
%files
-%doc README.rst NEWS.rst docs/
+%doc README.rst
%license COPYING
-%{python3_sitelib}/guake/
-%{python3_sitelib}/guake-%{version}-py%{python3_version}.egg-info/
%{_bindir}/guake
%{_bindir}/guake-toggle
-%{_datadir}/applications/guake-prefs.desktop
-%{_datadir}/applications/guake.desktop
-%{_datadir}/glib-2.0/schemas/org.guake.gschema.xml
-%{_datadir}/metainfo/guake.desktop.metainfo.xml
-%{_datadir}/pixmaps/guake.png
+%{_mandir}/man1/guake.1%{?ext_man}
+%{_datadir}/applications/*.desktop
+%{_datadir}/glib-2.0/schemas/*
%{_datadir}/guake/
+%{_datadir}/metainfo/*.metainfo.xml
+%{_datadir}/pixmaps/*.png
+%{python3_sitelib}/guake/
+%{python3_sitelib}/guake-%{version}.dist-info
+
+%files doc
+%license COPYING
+%doc %{_docdir}/guake/html
%files lang -f %{name}.lang
%license COPYING
++++++ guake-3.9.0.tar.gz -> guake-3.10.tar.gz ++++++
++++ 4031 lines of diff (skipped)
++++++ guake-Makefile-generate-install-paths.patch ++++++
Index: guake-3.10/Makefile
===================================================================
--- guake-3.10.orig/Makefile
+++ guake-3.10/Makefile
@@ -388,15 +388,14 @@ generate-desktop:
generate-paths:
@echo "Generating path.py..."
@cp -f guake/paths.py.in guake/paths.py
- @# Generic
- @sed -i -e 's|{{ LOGIN_DESTOP_PATH }}|""|g' guake/paths.py
- @sed -i -e 's|{{ AUTOSTART_FOLDER }}|""|g' guake/paths.py
- @# Dev environment:
- @sed -i -e 's|{{ LOCALE_DIR }}|get_default_locale_dir()|g' guake/paths.py
- @sed -i -e 's|{{ IMAGE_DIR }}|get_default_image_dir()|g' guake/paths.py
- @sed -i -e 's|{{ GUAKE_THEME_DIR }}|get_default_theme_dir()|g' guake/paths.py
- @sed -i -e 's|{{ GLADE_DIR }}|get_default_glade_dir()|g' guake/paths.py
- @sed -i -e 's|{{ SCHEMA_DIR }}|get_default_schema_dir()|g' guake/paths.py
+ @sed -i -e 's|{{ LOCALE_DIR }}|"$(localedir)"|g' guake/paths.py
+ @sed -i -e 's|{{ IMAGE_DIR }}|"$(IMAGE_DIR)"|g' guake/paths.py
+ @sed -i -e 's|{{ GLADE_DIR }}|"$(GLADE_DIR)"|g' guake/paths.py
+ @sed -i -e 's|{{ GUAKE_THEME_DIR }}|"$(GUAKE_THEME_DIR)"|g' guake/paths.py
+ @sed -i -e 's|{{ SCHEMA_DIR }}|"$(SCHEMA_DIR)"|g' guake/paths.py
+ @sed -i -e 's|{{ LOGIN_DESTOP_PATH }}|"$(LOGIN_DESTOP_PATH)"|g' guake/paths.py
+ @sed -i -e 's|{{ AUTOSTART_FOLDER }}|"$(AUTOSTART_FOLDER)"|g' guake/paths.py
+
reno:
PIPENV_IGNORE_VIRTUALENVS=1 pipenv run reno new $(SLUG) --edit
++++++ guake.rpmlintrc ++++++
# libumtempter0 is dlopen-ed by a python script; cannot be auto-detected by rpm build
addFilter("E: explicit-lib-dependency")
# Outdated requirements.txt file does not list the following required python modules
addFilter("W: python-leftover-require python3-cairo")
addFilter("W: python-leftover-require python3-dbus-python")
addFilter("W: python-leftover-require python3-gobject-Gdk")
addFilter("W: python-leftover-require python3-pyaml")
addFilter("W: python-missing-require importlib-metadata")
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package seatd for openSUSE:Factory checked in at 2023-06-30 19:59:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/seatd (Old)
and /work/SRC/openSUSE:Factory/.seatd.new.13546 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "seatd"
Fri Jun 30 19:59:41 2023 rev:9 rq:1096072 version:0.7.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/seatd/seatd.changes 2022-02-25 21:25:56.203647571 +0100
+++ /work/SRC/openSUSE:Factory/.seatd.new.13546/seatd.changes 2023-06-30 19:59:59.514043042 +0200
@@ -1,0 +2,9 @@
+Fri Jun 23 05:49:32 UTC 2023 - Michael Vetter <mvetter(a)suse.com>
+
+- Update to 0.7.0:
+ * Support for NetBSD and wscons devices
+ * Fix for a polling bug in the logind libseat backend
+ * Removal of SEATD_SOCK and runtime socket path configuration
+ * Removal of SEATD_LOGLEVEL, replaced by a command-line argument
+
+-------------------------------------------------------------------
Old:
----
seatd-0.6.4.obscpio
New:
----
seatd-0.7.0.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ seatd.spec ++++++
--- /var/tmp/diff_new_pack.KJeLHp/_old 2023-06-30 20:00:00.246047396 +0200
+++ /var/tmp/diff_new_pack.KJeLHp/_new 2023-06-30 20:00:00.250047420 +0200
@@ -1,7 +1,7 @@
#
# spec file for package seatd
#
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: seatd
-Version: 0.6.4
+Version: 0.7.0
Release: 0
Summary: Seat management daemon
License: MIT
++++++ _service ++++++
--- /var/tmp/diff_new_pack.KJeLHp/_old 2023-06-30 20:00:00.282047610 +0200
+++ /var/tmp/diff_new_pack.KJeLHp/_new 2023-06-30 20:00:00.286047634 +0200
@@ -3,7 +3,7 @@
<service name="obs_scm" mode="disabled">
<param name="url">https://git.sr.ht/~kennylevinsen/seatd</param>
<param name="scm">git</param>
- <param name="revision">0.6.4</param>
+ <param name="revision">0.7.0</param>
<param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param>
<param name="versionrewrite-pattern">(.*)\+0</param>
<param name="versionrewrite-replacement">\1</param>
++++++ seatd-0.6.4.obscpio -> seatd-0.7.0.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seatd-0.6.4/.builds/alpine.yml new/seatd-0.7.0/.builds/alpine.yml
--- old/seatd-0.6.4/.builds/alpine.yml 2022-02-21 22:52:04.000000000 +0100
+++ new/seatd-0.7.0/.builds/alpine.yml 2022-05-23 22:03:38.000000000 +0200
@@ -20,7 +20,7 @@
ninja -C build scan-build
[ -z "$(ls -A build/meson-logs/scanbuild/ 2>/dev/null)" ]
- smoketest: |
- timeout -s KILL 30s sudo SEATD_LOGLEVEL=debug ./build/seatd-launch ./build/simpletest /dev/dri/card0
+ timeout -s KILL 30s sudo ./build/seatd-launch -l debug -- ./build/simpletest /dev/dri/card0
- smoketest-builtin: |
timeout -s KILL 30s sudo LIBSEAT_BACKEND=builtin ./build/simpletest /dev/dri/card0
- check-format: |
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seatd-0.6.4/.builds/archlinux.yml new/seatd-0.7.0/.builds/archlinux.yml
--- old/seatd-0.6.4/.builds/archlinux.yml 2022-02-21 22:52:04.000000000 +0100
+++ new/seatd-0.7.0/.builds/archlinux.yml 2022-05-23 22:03:38.000000000 +0200
@@ -19,7 +19,7 @@
ninja -C build scan-build
[ -z "$(ls -A build/meson-logs/scanbuild/ 2>/dev/null)" ]
- smoketest: |
- timeout -s KILL 30s sudo SEATD_LOGLEVEL=debug ./build/seatd-launch ./build/simpletest /dev/input/event0
+ timeout -s KILL 30s sudo ./build/seatd-launch -l debug -- ./build/simpletest /dev/input/event0
- smoketest-builtin: |
timeout -s KILL 30s sudo LIBSEAT_BACKEND=builtin ./build/simpletest /dev/input/event0
- smoketest-logind: |
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seatd-0.6.4/.builds/freebsd.yml new/seatd-0.7.0/.builds/freebsd.yml
--- old/seatd-0.6.4/.builds/freebsd.yml 2022-02-21 22:52:04.000000000 +0100
+++ new/seatd-0.7.0/.builds/freebsd.yml 2022-05-23 22:03:38.000000000 +0200
@@ -15,6 +15,6 @@
meson -Db_lundef=false -Db_sanitize=address -Dlibseat-seatd=enabled -Dlibseat-builtin=enabled -Dexamples=enabled -Dlibseat-logind=disabled build seatd
ninja -C build
sudo ninja -C build install
- timeout -s KILL 30s sudo SEATD_LOGLEVEL=debug ./build/seatd-launch ./build/simpletest /dev/input/event0
+ timeout -s KILL 30s sudo ./build/seatd-launch -l debug -- ./build/simpletest /dev/input/event0
- smoketest-builtin: |
timeout -s KILL 30s sudo LIBSEAT_BACKEND=builtin ./build/simpletest /dev/input/event0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seatd-0.6.4/.builds/netbsd.yml new/seatd-0.7.0/.builds/netbsd.yml
--- old/seatd-0.6.4/.builds/netbsd.yml 1970-01-01 01:00:00.000000000 +0100
+++ new/seatd-0.7.0/.builds/netbsd.yml 2022-05-23 22:03:38.000000000 +0200
@@ -0,0 +1,24 @@
+image: netbsd/latest
+packages:
+ - meson
+sources:
+ - https://git.sr.ht/~kennylevinsen/seatd
+tasks:
+ - wscons: |
+ echo 'wscons=YES' | sudo tee -a /etc/rc.conf
+ sudo /etc/rc.d/wscons start
+ sudo /etc/rc.d/ttys restart
+ - prepare: |
+ meson -Dlibseat-seatd=enabled -Dlibseat-builtin=enabled -Dlibseat-logind=disabled build seatd
+ - build: |
+ ninja -C build
+ - unittest: |
+ ninja -C build test
+ - smoketest: |
+ rm -rf build
+ meson -Db_lundef=false -Db_sanitize=address -Dlibseat-seatd=enabled -Dlibseat-builtin=enabled -Dexamples=enabled -Dlibseat-logind=disabled build seatd
+ ninja -C build
+ sudo ninja -C build install
+ timeout -s SIGKILL 30s sudo SEATD_LOGLEVEL=debug ./build/seatd-launch ./build/simpletest /dev/wskbd
+ - smoketest-builtin: |
+ timeout -s SIGKILL 30s sudo LIBSEAT_BACKEND=builtin ./build/simpletest /dev/wskbd
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seatd-0.6.4/README.md new/seatd-0.7.0/README.md
--- old/seatd-0.6.4/README.md 2022-02-21 22:52:04.000000000 +0100
+++ new/seatd-0.7.0/README.md 2022-05-23 22:03:38.000000000 +0200
@@ -2,7 +2,7 @@
A minimal seat management daemon, and a universal seat management library.
-Currently supports Linux and FreeBSD.
+Currently supports Linux and FreeBSD, and has experimental NetBSD support.
## What is seat management?
@@ -43,4 +43,4 @@
## How to discuss
-Go to #kennylevinsen @ irc.libera.chat to discuss, or use [~kennylevinsen/seatd-devel@lists.sr.ht](https://lists.sr.ht/~kennylevinsen/seatd-devel).
+Go to [#kennylevinsen @ irc.libera.chat](ircs://irc.libera.chat/#kennylevinsen) to discuss, or use [~kennylevinsen/seatd-devel@lists.sr.ht](https://lists.sr.ht/~kennylevinsen/seatd-devel).
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seatd-0.6.4/common/drm.c new/seatd-0.7.0/common/drm.c
--- old/seatd-0.6.4/common/drm.c 2022-02-21 22:52:04.000000000 +0100
+++ new/seatd-0.7.0/common/drm.c 2022-05-23 22:03:38.000000000 +0200
@@ -2,10 +2,6 @@
#include <sys/ioctl.h>
#include <sys/types.h>
-#if defined(__linux__)
-#include <sys/sysmacros.h>
-#endif
-
#include "drm.h"
// From libdrm
@@ -24,16 +20,12 @@
return ioctl(fd, DRM_IOCTL_DROP_MASTER, 0);
}
-#if defined(__linux__)
+#if defined(__linux__) || defined(__NetBSD__)
int path_is_drm(const char *path) {
static const char prefix[] = "/dev/dri/";
static const int prefixlen = STRLEN(prefix);
return strncmp(prefix, path, prefixlen) == 0;
}
-
-int dev_is_drm(dev_t device) {
- return major(device) == 226;
-}
#elif defined(__FreeBSD__)
int path_is_drm(const char *path) {
static const char prefix[] = "/dev/drm/";
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seatd-0.6.4/common/evdev.c new/seatd-0.7.0/common/evdev.c
--- old/seatd-0.6.4/common/evdev.c 2022-02-21 22:52:04.000000000 +0100
+++ new/seatd-0.7.0/common/evdev.c 2022-05-23 22:03:38.000000000 +0200
@@ -9,14 +9,13 @@
#include <sys/sysmacros.h>
#elif defined(__FreeBSD__)
#include <dev/evdev/input.h>
-#else
-#error Unsupported platform
#endif
#include "evdev.h"
#define STRLEN(s) ((sizeof(s) / sizeof(s[0])) - 1)
+#if defined(__linux__) || defined(__FreeBSD__)
int path_is_evdev(const char *path) {
static const char prefix[] = "/dev/input/event";
static const size_t prefixlen = STRLEN(prefix);
@@ -26,9 +25,15 @@
int evdev_revoke(int fd) {
return ioctl(fd, EVIOCREVOKE, NULL);
}
-
-#if defined(__linux__)
-int dev_is_evdev(dev_t device) {
- return major(device) == INPUT_MAJOR;
+#elif defined(__NetBSD__)
+int path_is_evdev(const char *path) {
+ (void)path;
+ return 0;
}
+int evdev_revoke(int fd) {
+ (void)fd;
+ return 0;
+}
+#else
+#error Unsupported platform
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seatd-0.6.4/common/terminal.c new/seatd-0.7.0/common/terminal.c
--- old/seatd-0.6.4/common/terminal.c 2022-02-21 22:52:04.000000000 +0100
+++ new/seatd-0.7.0/common/terminal.c 2022-05-23 22:03:38.000000000 +0200
@@ -21,6 +21,11 @@
#define K_ENABLE K_XLATE
#define K_DISABLE K_RAW
#define FRSIG SIGIO
+#elif defined(__NetBSD__)
+#include <dev/wscons/wsdisplay_usl_io.h>
+#define K_ENABLE K_XLATE
+#define K_DISABLE K_RAW
+#define FRSIG 0 // unimplemented
#else
#error Unsupported platform
#endif
@@ -134,6 +139,14 @@
}
return 0;
}
+#elif defined(__NetBSD__)
+static int get_tty_path(int tty, char path[static TTYPATHLEN]) {
+ assert(tty >= 0);
+ if (snprintf(path, TTYPATHLEN, "/dev/ttyE%d", tty) == -1) {
+ return -1;
+ }
+ return 0;
+}
#else
#error Unsupported platform
#endif
@@ -153,7 +166,7 @@
}
int terminal_current_vt(int fd) {
-#if defined(__linux__)
+#if defined(__linux__) || defined(__NetBSD__)
struct vt_stat st;
int res = ioctl(fd, VT_GETSTATE, &st);
close(fd);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seatd-0.6.4/common/wscons.c new/seatd-0.7.0/common/wscons.c
--- old/seatd-0.6.4/common/wscons.c 1970-01-01 01:00:00.000000000 +0100
+++ new/seatd-0.7.0/common/wscons.c 2022-05-23 22:03:38.000000000 +0200
@@ -0,0 +1,27 @@
+#include <stdlib.h>
+#include <string.h>
+
+#if defined(__NetBSD__)
+#include <stdlib.h>
+#include <sys/stat.h>
+#endif
+
+#include "wscons.h"
+
+#define STRLEN(s) ((sizeof(s) / sizeof(s[0])) - 1)
+
+#if defined(__NetBSD__)
+int path_is_wscons(const char *path) {
+ static const char wskbd[] = "/dev/wskbd";
+ static const char wsmouse[] = "/dev/wsmouse";
+ static const char wsmux[] = "/dev/wsmux";
+ return strncmp(path, wskbd, STRLEN(wskbd)) == 0 ||
+ strncmp(path, wsmouse, STRLEN(wsmouse)) == 0 ||
+ strncmp(path, wsmux, STRLEN(wsmouse)) == 0;
+}
+#else
+int path_is_wscons(const char *path) {
+ (void)path;
+ return 0;
+}
+#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seatd-0.6.4/include/drm.h new/seatd-0.7.0/include/drm.h
--- old/seatd-0.6.4/include/drm.h 2022-02-21 22:52:04.000000000 +0100
+++ new/seatd-0.7.0/include/drm.h 2022-05-23 22:03:38.000000000 +0200
@@ -5,9 +5,4 @@
int drm_drop_master(int fd);
int path_is_drm(const char *path);
-#if defined(__linux__)
-#include <sys/types.h>
-int dev_is_drm(dev_t device);
-#endif
-
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seatd-0.6.4/include/evdev.h new/seatd-0.7.0/include/evdev.h
--- old/seatd-0.6.4/include/evdev.h 2022-02-21 22:52:04.000000000 +0100
+++ new/seatd-0.7.0/include/evdev.h 2022-05-23 22:03:38.000000000 +0200
@@ -4,9 +4,4 @@
int evdev_revoke(int fd);
int path_is_evdev(const char *path);
-#if defined(__linux__)
-#include <sys/types.h>
-int dev_is_evdev(dev_t device);
-#endif
-
#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seatd-0.6.4/include/seat.h new/seatd-0.7.0/include/seat.h
--- old/seatd-0.6.4/include/seat.h 2022-02-21 22:52:04.000000000 +0100
+++ new/seatd-0.7.0/include/seat.h 2022-05-23 22:03:38.000000000 +0200
@@ -13,6 +13,7 @@
SEAT_DEVICE_TYPE_NORMAL,
SEAT_DEVICE_TYPE_EVDEV,
SEAT_DEVICE_TYPE_DRM,
+ SEAT_DEVICE_TYPE_WSCONS,
};
struct seat_device {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seatd-0.6.4/include/wscons.h new/seatd-0.7.0/include/wscons.h
--- old/seatd-0.6.4/include/wscons.h 1970-01-01 01:00:00.000000000 +0100
+++ new/seatd-0.7.0/include/wscons.h 2022-05-23 22:03:38.000000000 +0200
@@ -0,0 +1,6 @@
+#ifndef _SEATD_WSCONS_H
+#define _SEATD_WSCONS_H
+
+int path_is_wscons(const char *path);
+
+#endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seatd-0.6.4/libseat/backend/logind.c new/seatd-0.7.0/libseat/backend/logind.c
--- old/seatd-0.6.4/libseat/backend/logind.c 2022-02-21 22:52:04.000000000 +0100
+++ new/seatd-0.7.0/libseat/backend/logind.c 2022-05-23 22:03:38.000000000 +0200
@@ -13,10 +13,10 @@
#include <sys/un.h>
#include <unistd.h>
-#if defined(HAVE_ELOGIND)
+#if defined(HAVE_LIBELOGIND)
#include <elogind/sd-bus.h>
#include <elogind/sd-login.h>
-#elif defined(HAVE_SYSTEMD)
+#elif defined(HAVE_LIBSYSTEMD)
#include <systemd/sd-bus.h>
#include <systemd/sd-login.h>
#else
@@ -28,6 +28,14 @@
#include "libseat.h"
#include "log.h"
+static int dev_major_is_drm(unsigned int dev_major) {
+ return dev_major == 226;
+}
+
+static int dev_is_drm(dev_t device) {
+ return dev_major_is_drm(major(device));
+}
+
struct backend_logind {
struct libseat base;
const struct libseat_seat_listener *seat_listener;
@@ -41,7 +49,6 @@
bool active;
bool initial_setup;
- bool awaiting_pong;
int has_drm;
};
@@ -70,13 +77,12 @@
static int ping_handler(sd_bus_message *m, void *userdata, sd_bus_error *ret_error) {
(void)ret_error;
- struct backend_logind *session = userdata;
+ (void)userdata;
if (sd_bus_message_is_method_error(m, NULL)) {
const sd_bus_error *error = sd_bus_message_get_error(m);
log_errorf("Ping failed: %s: %s", error->name, error->message);
return -1;
}
- session->awaiting_pong = false;
return 0;
}
@@ -91,14 +97,15 @@
}
static void check_pending_events(struct backend_logind *backend) {
- if (sd_bus_get_events(backend->bus) <= 0) {
- return;
- }
- if (backend->awaiting_pong) {
+ uint64_t queued_read, queued_write;
+ sd_bus_get_n_queued_read(backend->bus, &queued_read);
+ sd_bus_get_n_queued_write(backend->bus, &queued_write);
+
+ if (queued_read == 0 && queued_write == 0) {
return;
}
- // We have events pending execution, so a dispatch is required.
+ // The sd_bus instance has queued data, so a dispatch is required.
// However, we likely already drained our socket, so there will not be
// anything to read. Instead, send a ping request to logind so that the
// user will be woken up by its response.
@@ -107,7 +114,6 @@
log_errorf("Could not send ping message: %s", strerror(-ret));
return;
}
- backend->awaiting_pong = true;
}
static int open_device(struct libseat *base, const char *path, int *fd) {
@@ -286,6 +292,7 @@
total_dispatched += dispatched;
}
}
+ check_pending_events(backend);
return total_dispatched;
}
@@ -388,7 +395,7 @@
return 0;
}
- if (dev_is_drm(makedev(major, minor)) && strcmp(type, "gone") != 0) {
+ if (dev_major_is_drm(major) && strcmp(type, "gone") != 0) {
log_debugf("DRM device paused: %s", type);
assert(session->has_drm > 0);
set_active(session, false);
@@ -420,7 +427,7 @@
return 0;
}
- if (dev_is_drm(makedev(major, minor))) {
+ if (dev_major_is_drm(major)) {
log_debug("DRM device resumed");
assert(session->has_drm > 0);
set_active(session, true);
@@ -742,6 +749,7 @@
backend->seat_listener_data = data;
backend->base.impl = &logind_impl;
+ check_pending_events(backend);
return &backend->base;
error:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seatd-0.6.4/libseat/backend/noop.c new/seatd-0.7.0/libseat/backend/noop.c
--- old/seatd-0.6.4/libseat/backend/noop.c 2022-02-21 22:52:04.000000000 +0100
+++ new/seatd-0.7.0/libseat/backend/noop.c 2022-05-23 22:03:38.000000000 +0200
@@ -109,7 +109,7 @@
return NULL;
}
- if (socketpair(AF_UNIX, SOCK_STREAM, 0, backend->sockets) != 0) {
+ if (socketpair(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0, backend->sockets) != 0) {
log_errorf("socketpair() failed: %s", strerror(errno));
free(backend);
return NULL;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seatd-0.6.4/libseat/backend/seatd.c new/seatd-0.7.0/libseat/backend/seatd.c
--- old/seatd-0.6.4/libseat/backend/seatd.c 2022-02-21 22:52:04.000000000 +0100
+++ new/seatd-0.7.0/libseat/backend/seatd.c 2022-05-23 22:03:38.000000000 +0200
@@ -42,32 +42,16 @@
char seat_name[MAX_SEAT_LEN];
};
-static int set_nonblock(int fd) {
- int flags;
- if ((flags = fcntl(fd, F_GETFD)) == -1 || fcntl(fd, F_SETFD, flags | FD_CLOEXEC) == -1) {
- return -1;
- }
- if ((flags = fcntl(fd, F_GETFL)) == -1 || fcntl(fd, F_SETFL, flags | O_NONBLOCK) == -1) {
- return -1;
- }
- return 0;
-}
-
static int seatd_connect(void) {
union {
struct sockaddr_un unix;
struct sockaddr generic;
} addr = {{0}};
- int fd = socket(AF_UNIX, SOCK_STREAM, 0);
+ int fd = socket(AF_UNIX, SOCK_STREAM | SOCK_NONBLOCK | SOCK_CLOEXEC, 0);
if (fd == -1) {
log_errorf("Could not create socket: %s", strerror(errno));
return -1;
}
- if (set_nonblock(fd) == -1) {
- log_errorf("Could not make socket non-blocking: %s", strerror(errno));
- close(fd);
- return -1;
- }
const char *path = getenv("SEATD_SOCK");
if (path == NULL) {
path = SEATD_DEFAULTPATH;
@@ -616,29 +600,10 @@
};
#ifdef BUILTIN_ENABLED
-#include <signal.h>
-
-static int set_deathsig(int signal);
-
-#if defined(__linux__)
-#include <sys/prctl.h>
-
-static int set_deathsig(int signal) {
- return prctl(PR_SET_PDEATHSIG, signal);
-}
-#elif defined(__FreeBSD__)
-#include <sys/procctl.h>
-
-static int set_deathsig(int signal) {
- return procctl(P_PID, 0, PROC_PDEATHSIG_CTL, &signal);
-}
-#else
-#error Unsupported platform
-#endif
static struct libseat *builtin_open_seat(const struct libseat_seat_listener *listener, void *data) {
int fds[2];
- if (socketpair(AF_UNIX, SOCK_STREAM, 0, fds) == -1) {
+ if (socketpair(AF_UNIX, SOCK_STREAM | SOCK_NONBLOCK | SOCK_CLOEXEC, 0, fds) == -1) {
log_errorf("Could not create socket pair: %s", strerror(errno));
return NULL;
}
@@ -650,6 +615,7 @@
close(fds[1]);
return NULL;
} else if (pid == 0) {
+ close(fds[1]);
int fd = fds[0];
int res = 0;
struct server server = {0};
@@ -664,7 +630,7 @@
res = 1;
goto server_error;
}
- set_deathsig(SIGTERM);
+ log_info("Started embedded seatd");
while (server.running) {
if (poller_poll(&server.poller) == -1) {
log_errorf("Could not poll server socket: %s", strerror(errno));
@@ -676,8 +642,10 @@
server_finish(&server);
error:
close(fd);
+ log_info("Stopped embedded seatd");
exit(res);
} else {
+ close(fds[0]);
int fd = fds[1];
return _open_seat(listener, data, fd);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seatd-0.6.4/man/seatd-launch.1.scd new/seatd-0.7.0/man/seatd-launch.1.scd
--- old/seatd-0.6.4/man/seatd-launch.1.scd 2022-02-21 22:52:04.000000000 +0100
+++ new/seatd-0.7.0/man/seatd-launch.1.scd 2022-05-23 22:03:38.000000000 +0200
@@ -10,12 +10,13 @@
# OPTIONS
+*-l <loglevel>*
+ Log-level to pass to seatd. See *seatd*(1) for information about
+ available log-levels.
+
*-h*
Show help message and quit.
-*-s <path>*
- Where to create the seatd socket. Defaults to a unique file path.
-
*-v*
Show the version number and quit.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seatd-0.6.4/man/seatd.1.scd new/seatd-0.7.0/man/seatd.1.scd
--- old/seatd-0.6.4/man/seatd.1.scd 2022-02-21 22:52:04.000000000 +0100
+++ new/seatd-0.7.0/man/seatd.1.scd 2022-05-23 22:03:38.000000000 +0200
@@ -24,8 +24,9 @@
*-g <group>*
Group to own the seatd socket.
-*-s <path>*
- Where to create the seatd socket. Defaults to `/run/seatd.sock`.
+*-l <loglevel>*
+ Log-level to use. Must be one of debug, info, error or silent. Defaults
+ to error.
*-v*
Show the version number and quit.
@@ -38,17 +39,7 @@
seatd operates over a UNIX domain socket, with *libseat* providing the
client-side of the protocol.
-# ENVIRONMENT
-
-[[ *VARIABLE*
-:[ *VALUES*
-:< *DESCRIPTION*
-| SEATD_SOCK
-: File path
-: Informs libseat of the socket location, needed if it differs from `/run/seatd.sock`
-| SEATD_LOGLEVEL
-: silent, error, info, debug
-: Sets the seatd log level. Defaults to "error"
+The location of the socket for seatd is set at compile-time.
# SEE ALSO
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seatd-0.6.4/meson.build new/seatd-0.7.0/meson.build
--- old/seatd-0.6.4/meson.build 2022-02-21 22:52:04.000000000 +0100
+++ new/seatd-0.7.0/meson.build 2022-05-23 22:03:38.000000000 +0200
@@ -1,9 +1,9 @@
project(
'seatd',
'c',
- version: '0.6.4',
+ version: '0.7.0',
license: 'MIT',
- meson_version: '>=0.56.0',
+ meson_version: '>=0.60.0',
default_options: [
'c_std=c11',
'warning_level=3',
@@ -25,6 +25,19 @@
seatdpath = '@0@/@1@/seatd'.format(get_option('prefix'), get_option('bindir'))
cc = meson.get_compiler('c')
+
+add_project_arguments(
+ [
+ '-D_XOPEN_SOURCE=700',
+ '-D__BSD_VISIBLE',
+ '-D_NETBSD_SOURCE',
+ '-DSEATD_VERSION="@0@"'.format(meson.project_version()),
+ '-DSEATD_DEFAULTPATH="@0@"'.format(defaultpath),
+ '-DSEATD_INSTALLPATH="@0@"'.format(seatdpath),
+ ],
+ language: 'c',
+)
+
add_project_arguments(cc.get_supported_arguments(
[
'-Wundef',
@@ -39,12 +52,13 @@
'-Wno-unknown-warning-option',
'-Wno-unused-command-line-argument',
'-Wvla',
+ ]),
+ language: 'c',
+)
+
+add_project_arguments(cc.get_supported_link_arguments(
+ [
'-Wl,--exclude-libs=ALL',
- '-D_XOPEN_SOURCE=700',
- '-D__BSD_VISIBLE',
- '-DSEATD_VERSION="@0@"'.format(meson.project_version()),
- '-DSEATD_DEFAULTPATH="@0@"'.format(defaultpath),
- '-DSEATD_INSTALLPATH="@0@"'.format(seatdpath),
]),
language: 'c',
)
@@ -59,7 +73,7 @@
# Hacks
source_root = meson.current_source_dir().split('/')
-build_root = meson.build_root().split('/')
+build_root = meson.global_build_root().split('/')
relative_dir_parts = []
i = 0
in_prefix = true
@@ -100,6 +114,7 @@
'common/connection.c',
'common/evdev.c',
'common/drm.c',
+ 'common/wscons.c',
'seatd/poller.c',
'seatd/seat.c',
'seatd/client.c',
@@ -114,31 +129,26 @@
private_files += 'libseat/backend/seatd.c'
endif
+libseat_c_args = ['-DLIBSEAT=1']
+
if with_seatd
- add_project_arguments('-DSEATD_ENABLED=1', language: 'c')
+ libseat_c_args += '-DSEATD_ENABLED=1'
endif
logind = disabler()
-logind_provider = ''
if get_option('libseat-logind') != 'disabled'
if get_option('libseat-logind') == 'auto' and get_option('auto_features').disabled()
# Disable logind
elif get_option('libseat-logind') == 'auto'
assert(get_option('auto_features').auto(), '-Dlibseat-logind must be set to systemd or elogind since auto_features != auto')
- foreach logind_provider : ['elogind', 'systemd']
- logind = dependency('lib@0@'.format(logind_provider), required: false)
- if logind.found()
- break
- endif
- endforeach
+ logind = dependency(['libelogind', 'libsystemd'], required: false)
else
- logind_provider = get_option('libseat-logind')
- logind = dependency('lib@0@'.format(logind_provider))
+ logind = dependency('lib@0@'.format(get_option('libseat-logind')))
endif
if logind.found()
- add_project_arguments('-DLOGIND_ENABLED=1', language: 'c')
- add_project_arguments('-DHAVE_@0@=1'.format(logind_provider.to_upper()), language: 'c')
+ libseat_c_args += '-DLOGIND_ENABLED=1'
+ libseat_c_args += '-DHAVE_@0@=1'.format(logind.name().to_upper())
private_files += [
'libseat/backend/logind.c',
'common/drm.c',
@@ -152,7 +162,7 @@
private_deps += realtime
if with_builtin
- add_project_arguments('-DBUILTIN_ENABLED=1', language: 'c')
+ libseat_c_args += '-DBUILTIN_ENABLED=1'
private_files += server_files
endif
@@ -161,6 +171,7 @@
private_files,
dependencies: private_deps,
include_directories: [include_directories('.', 'include')],
+ c_args: libseat_c_args,
)
symbols_file = 'libseat/libseat.syms'
@@ -168,12 +179,13 @@
lib = library(
'seat', # This results in the library being called 'libseat'
[ 'libseat/libseat.c', 'libseat/backend/noop.c' ],
- soversion: libseat_soversion,
+ soversion: '@0@'.format(libseat_soversion),
link_with: private_lib,
include_directories: [include_directories('.', 'include')],
install: true,
link_args: symbols_flag,
link_depends: symbols_file,
+ c_args: libseat_c_args,
)
install_headers('include/libseat.h')
@@ -200,6 +212,8 @@
variables: libseat_vars,
)
+meson.override_dependency('libseat', libseat)
+
if with_server
executable(
'seatd',
@@ -247,7 +261,6 @@
endif
if scdoc.found()
- scdoc_prog = find_program(scdoc.get_variable(pkgconfig: 'scdoc'), native: true)
mandir = get_option('mandir')
foreach src : ['seatd.1.scd', 'seatd-launch.1.scd']
@@ -259,9 +272,9 @@
output,
input: 'man/' + src,
output: output,
- command: [
- 'sh', '-c', '@0@ < @INPUT@ > @1@'.format(scdoc_prog.full_path(), output)
- ],
+ command: scdoc.get_variable(pkgconfig: 'scdoc'),
+ feed: true,
+ capture: true,
install: true,
install_dir: '@0@/man@1@'.format(mandir, section)
)
@@ -271,7 +284,7 @@
summary({
'libseat-seatd': with_seatd,
'libseat-builtin': with_builtin,
- 'libseat-systemd': logind.found() and logind_provider == 'systemd',
- 'libseat-elogind': logind.found() and logind_provider == 'elogind',
+ 'libseat-systemd': logind.found() and logind.name() == 'libsystemd',
+ 'libseat-elogind': logind.found() and logind.name() == 'libelogind',
'server': with_server,
}, bool_yn: true)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seatd-0.6.4/seatd/client.c new/seatd-0.7.0/seatd/client.c
--- old/seatd-0.6.4/seatd/client.c 2022-02-21 22:52:04.000000000 +0100
+++ new/seatd-0.7.0/seatd/client.c 2022-05-23 22:03:38.000000000 +0200
@@ -14,6 +14,10 @@
#include <sys/un.h>
#endif
+#if defined(__NetBSD__)
+#include <sys/un.h>
+#endif
+
#include "client.h"
#include "linked_list.h"
#include "log.h"
@@ -34,6 +38,23 @@
*uid = cred.uid;
*gid = cred.gid;
return 0;
+#elif defined(__NetBSD__)
+ struct unpcbid cred;
+ socklen_t len = sizeof cred;
+ if (getsockopt(fd, 0, LOCAL_PEEREID, &cred, &len) == -1) {
+ // assume builtin backend
+ if (errno == EINVAL) {
+ *pid = getpid();
+ *uid = getuid();
+ *gid = getgid();
+ return 0;
+ }
+ return -1;
+ }
+ *pid = cred.unp_pid;
+ *uid = cred.unp_euid;
+ *gid = cred.unp_egid;
+ return 0;
#elif defined(__FreeBSD__)
struct xucred cred;
socklen_t len = sizeof cred;
@@ -49,7 +70,7 @@
*gid = cred.cr_ngroups > 0 ? cred.cr_groups[0] : (gid_t)-1;
return 0;
#else
- return -1;
+#error Unsupported platform
#endif
}
@@ -81,6 +102,13 @@
void client_destroy(struct client *client) {
assert(client);
+
+#ifdef LIBSEAT
+ // The built-in backend version of seatd should terminate once its only
+ // client disconnects.
+ client->server->running = false;
+#endif
+
client->server = NULL;
if (client->connection.fd != -1) {
close(client->connection.fd);
@@ -461,7 +489,13 @@
goto fail;
}
if (len == 0) {
+// https://man.netbsd.org/poll.2
+// Sockets produce POLLIN rather than POLLHUP when the remote end is closed.
+#if defined(__NetBSD__)
+ log_info("Client disconnected");
+#else
log_error("Could not read client connection: zero-length read");
+#endif
goto fail;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seatd-0.6.4/seatd/seat.c new/seatd-0.7.0/seatd/seat.c
--- old/seatd-0.6.4/seatd/seat.c 2022-02-21 22:52:04.000000000 +0100
+++ new/seatd-0.7.0/seatd/seat.c 2022-05-23 22:03:38.000000000 +0200
@@ -17,6 +17,7 @@
#include "protocol.h"
#include "seat.h"
#include "terminal.h"
+#include "wscons.h"
static int seat_close_client(struct client *client);
static int vt_close(int vt);
@@ -235,6 +236,8 @@
type = SEAT_DEVICE_TYPE_EVDEV;
} else if (path_is_drm(sanitized_path)) {
type = SEAT_DEVICE_TYPE_DRM;
+ } else if (path_is_wscons(sanitized_path)) {
+ type = SEAT_DEVICE_TYPE_WSCONS;
} else {
log_errorf("%s is not a supported device type ", sanitized_path);
errno = ENOENT;
@@ -281,6 +284,9 @@
case SEAT_DEVICE_TYPE_EVDEV:
// Nothing to do here
break;
+ case SEAT_DEVICE_TYPE_WSCONS:
+ // Nothing to do here
+ break;
default:
log_error("Invalid seat device type");
abort();
@@ -333,6 +339,9 @@
return -1;
}
break;
+ case SEAT_DEVICE_TYPE_WSCONS:
+ // Nothing to do here
+ break;
default:
log_error("Invalid seat device type");
abort();
@@ -382,6 +391,9 @@
case SEAT_DEVICE_TYPE_EVDEV:
errno = EINVAL;
return -1;
+ case SEAT_DEVICE_TYPE_WSCONS:
+ // Nothing to do here
+ break;
default:
log_error("Invalid seat device type");
abort();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seatd-0.6.4/seatd/seatd.c new/seatd-0.7.0/seatd/seatd.c
--- old/seatd-0.6.4/seatd/seatd.c 2022-02-21 22:52:04.000000000 +0100
+++ new/seatd-0.7.0/seatd/seatd.c 2022-05-23 22:03:38.000000000 +0200
@@ -40,15 +40,15 @@
goto error;
}
if (uid != -1 || gid != -1) {
+ if (chmod(path, 0770) == -1) {
+ log_errorf("Could not chmod socket: %s", strerror(errno));
+ goto error;
+ }
if (chown(path, uid, gid) == -1) {
log_errorf("Could not chown socket to uid %d, gid %d: %s", uid, gid,
strerror(errno));
goto error;
}
- if (chmod(path, 0770) == -1) {
- log_errorf("Could not chmod socket: %s", strerror(errno));
- goto error;
- }
}
return fd;
error:
@@ -57,35 +57,23 @@
}
int main(int argc, char *argv[]) {
- char *loglevel = getenv("SEATD_LOGLEVEL");
- enum libseat_log_level level = LIBSEAT_LOG_LEVEL_ERROR;
- if (loglevel != NULL) {
- if (strcmp(loglevel, "silent") == 0) {
- level = LIBSEAT_LOG_LEVEL_SILENT;
- } else if (strcmp(loglevel, "info") == 0) {
- level = LIBSEAT_LOG_LEVEL_INFO;
- } else if (strcmp(loglevel, "debug") == 0) {
- level = LIBSEAT_LOG_LEVEL_DEBUG;
- }
- }
- log_init();
- libseat_set_log_level(level);
-
const char *usage = "Usage: seatd [options]\n"
"\n"
" -h Show this help message\n"
- " -n <fd> FD to notify readiness on\n"
+ " -n <fd> FD to notify readiness on\n"
" -u <user> User to own the seatd socket\n"
" -g <group> Group to own the seatd socket\n"
- " -s <path> Where to create the seatd socket\n"
+ " -l <loglevel> Log-level, one of debug, info, error or silent\n"
" -v Show the version number\n"
"\n";
int c;
int uid = -1, gid = -1;
int readiness = -1;
- const char *socket_path = getenv("SEATD_SOCK");
- while ((c = getopt(argc, argv, "vhn:s:g:u:")) != -1) {
+ bool unlink_existing_socket = true;
+ bool chown_socket = true;
+ enum libseat_log_level level = LIBSEAT_LOG_LEVEL_INFO;
+ while ((c = getopt(argc, argv, "vhn:g:u:l:z")) != -1) {
switch (c) {
case 'n':
readiness = atoi(optarg);
@@ -94,10 +82,11 @@
return 1;
}
break;
- case 's':
- socket_path = optarg;
- break;
case 'u': {
+ if (!chown_socket) {
+ fprintf(stderr, "-u/-g and -z are mutually exclusive\n");
+ return 1;
+ }
struct passwd *pw = getpwnam(optarg);
if (pw == NULL) {
fprintf(stderr, "Could not find user by name '%s'.\n", optarg);
@@ -108,6 +97,10 @@
break;
}
case 'g': {
+ if (!chown_socket) {
+ fprintf(stderr, "-u/-g and -z are mutually exclusive\n");
+ return 1;
+ }
struct group *gr = getgrnam(optarg);
if (gr == NULL) {
fprintf(stderr, "Could not find group by name '%s'.\n", optarg);
@@ -117,6 +110,31 @@
}
break;
}
+ case 'l':
+ if (strcmp(optarg, "debug") == 0) {
+ level = LIBSEAT_LOG_LEVEL_DEBUG;
+ } else if (strcmp(optarg, "info") == 0) {
+ level = LIBSEAT_LOG_LEVEL_INFO;
+ } else if (strcmp(optarg, "error") == 0) {
+ level = LIBSEAT_LOG_LEVEL_ERROR;
+ } else if (strcmp(optarg, "silent") == 0) {
+ level = LIBSEAT_LOG_LEVEL_SILENT;
+ } else {
+ fprintf(stderr, "Invalid loglevel: %s\n", optarg);
+ return 1;
+ }
+ break;
+ case 'z':
+ // Running under seatd-launch. We do not unlink files
+ // to protect against multiple instances, and
+ // seatd-launch takes care of ownership.
+ if (uid != -1 || gid != -1) {
+ fprintf(stderr, "-u/-g and -z are mutually exclusive\n");
+ return 1;
+ }
+ unlink_existing_socket = false;
+ chown_socket = false;
+ break;
case 'v':
printf("seatd version %s\n", SEATD_VERSION);
return 0;
@@ -131,33 +149,46 @@
}
}
- if (socket_path == NULL) {
- socket_path = SEATD_DEFAULTPATH;
- struct stat st;
- if (stat(socket_path, &st) == 0) {
- log_info("Removing leftover seatd socket");
- unlink(socket_path);
+ log_init();
+ libseat_set_log_level(level);
+
+ struct stat st;
+ if (lstat(SEATD_DEFAULTPATH, &st) == 0) {
+ if (!S_ISSOCK(st.st_mode)) {
+ log_errorf("Non-socket file found at socket path %s, refusing to start",
+ SEATD_DEFAULTPATH);
+ return 1;
+ } else if (!unlink_existing_socket) {
+ log_errorf("Socket file found at socket path %s, refusing to start",
+ SEATD_DEFAULTPATH);
+ return 1;
+ } else {
+ // We only do this if the socket path is not user specified
+ log_infof("Removing leftover socket at %s", SEATD_DEFAULTPATH);
+ if (unlink(SEATD_DEFAULTPATH) == -1) {
+ log_errorf("Could not remove leftover socket: %s", strerror(errno));
+ return 1;
+ }
}
}
struct server server = {0};
if (server_init(&server) == -1) {
- log_errorf("server_create failed: %s", strerror(errno));
+ log_errorf("server_init failed: %s", strerror(errno));
return 1;
}
- int socket_fd = open_socket(socket_path, uid, gid);
+ int ret = 1;
+ int socket_fd = open_socket(SEATD_DEFAULTPATH, uid, gid);
if (socket_fd == -1) {
log_error("Could not create server socket");
- server_finish(&server);
- return 1;
+ goto error_server;
}
if (poller_add_fd(&server.poller, socket_fd, EVENT_READABLE, server_handle_connection,
&server) == NULL) {
log_errorf("Could not add socket to poller: %s", strerror(errno));
close(socket_fd);
- server_finish(&server);
- return 1;
+ goto error_socket;
}
log_info("seatd started");
@@ -172,12 +203,18 @@
while (server.running) {
if (poller_poll(&server.poller) == -1) {
log_errorf("Poller failed: %s", strerror(errno));
- return 1;
+ goto error_socket;
}
}
+ ret = 0;
+
+error_socket:
+ if (unlink(SEATD_DEFAULTPATH) == -1) {
+ log_errorf("Could not remove socket: %s", strerror(errno));
+ }
+error_server:
server_finish(&server);
- unlink(socket_path);
log_info("seatd stopped");
- return 0;
+ return ret;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seatd-0.6.4/seatd/server.c new/seatd-0.7.0/seatd/server.c
--- old/seatd-0.6.4/seatd/server.c 2022-02-21 22:52:04.000000000 +0100
+++ new/seatd-0.7.0/seatd/server.c 2022-05-23 22:03:38.000000000 +0200
@@ -123,12 +123,18 @@
int server_add_client(struct server *server, int fd) {
if (set_nonblock(fd) != 0) {
- close(fd);
log_errorf("Could not prepare new client socket: %s", strerror(errno));
+ close(fd);
return -1;
}
struct client *client = client_create(server, fd);
+ if (client == NULL) {
+ log_errorf("Could not create client: %s", strerror(errno));
+ close(fd);
+ return -1;
+ }
+
client->event_source =
poller_add_fd(&server->poller, fd, EVENT_READABLE, client_handle_connection, client);
if (client->event_source == NULL) {
@@ -146,7 +152,7 @@
if (mask & (EVENT_ERROR | EVENT_HANGUP)) {
shutdown(fd, SHUT_RDWR);
server->running = false;
- log_errorf("Server socket received an error: %s", strerror(errno));
+ log_error("Server socket received an error");
return -1;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/seatd-0.6.4/seatd-launch/seatd-launch.c new/seatd-0.7.0/seatd-launch/seatd-launch.c
--- old/seatd-0.6.4/seatd-launch/seatd-launch.c 2022-02-21 22:52:04.000000000 +0100
+++ new/seatd-0.7.0/seatd-launch/seatd-launch.c 2022-05-23 22:03:38.000000000 +0200
@@ -11,17 +11,21 @@
#include <unistd.h>
int main(int argc, char *argv[]) {
- (void)argc;
-
const char *usage = "Usage: seatd-launch [options] [--] command\n"
"\n"
- " -h Show this help message\n"
- " -v Show the version number\n"
+ " -l <loglevel> Log-level to pass to seatd\n"
+ " -h Show this help message\n"
+ " -v Show the version number\n"
"\n";
int c;
- while ((c = getopt(argc, argv, "vh")) != -1) {
+ char loglevel[16] = "info";
+ while ((c = getopt(argc, argv, "vhl:")) != -1) {
switch (c) {
+ case 'l':
+ strncpy(loglevel, optarg, sizeof loglevel);
+ loglevel[sizeof loglevel - 1] = '\0';
+ break;
case 'v':
printf("seatd-launch version %s\n", SEATD_VERSION);
return 0;
@@ -29,7 +33,7 @@
printf("%s", usage);
return 0;
case '?':
- fprintf(stderr, "Try '%s -h' for more information.\n", argv[0]);
+ fprintf(stderr, "Try 'seatd-launch -h' for more information.\n");
return 1;
default:
abort();
@@ -42,41 +46,30 @@
}
char **command = &argv[optind];
- char sockpath[32];
- snprintf(sockpath, sizeof sockpath, "/tmp/seatd.%d.sock", getpid());
-
- unlink(sockpath);
-
- int fds[2];
- if (pipe(fds) == -1) {
+ int readiness_pipe[2];
+ if (pipe(readiness_pipe) == -1) {
perror("Could not create pipe");
goto error;
}
+ // Start seatd
pid_t seatd_child = fork();
if (seatd_child == -1) {
perror("Could not fork seatd process");
goto error;
} else if (seatd_child == 0) {
- close(fds[0]);
+ close(readiness_pipe[0]);
char pipebuf[16] = {0};
- snprintf(pipebuf, sizeof pipebuf, "%d", fds[1]);
+ snprintf(pipebuf, sizeof pipebuf, "%d", readiness_pipe[1]);
- char *env[2] = {NULL, NULL};
- char loglevelbuf[32] = {0};
- char *cur_loglevel = getenv("SEATD_LOGLEVEL");
- if (cur_loglevel != NULL) {
- snprintf(loglevelbuf, sizeof loglevelbuf, "SEATD_LOGLEVEL=%s", cur_loglevel);
- env[0] = loglevelbuf;
- }
-
- char *command[] = {"seatd", "-n", pipebuf, "-s", sockpath, NULL};
+ char *env[1] = {NULL};
+ char *command[] = {"seatd", "-n", pipebuf, "-l", loglevel, "-z", NULL};
execve(SEATD_INSTALLPATH, command, env);
perror("Could not start seatd");
_exit(1);
}
- close(fds[1]);
+ close(readiness_pipe[1]);
// Wait for seatd to be ready
char buf[1] = {0};
@@ -91,7 +84,7 @@
}
struct pollfd fd = {
- .fd = fds[0],
+ .fd = readiness_pipe[0],
.events = POLLIN,
};
@@ -106,7 +99,7 @@
}
if (fd.revents & POLLIN) {
- ssize_t n = read(fds[0], buf, 1);
+ ssize_t n = read(readiness_pipe[0], buf, 1);
if (n == -1 && errno != EINTR) {
perror("Could not read from pipe");
goto error_seatd;
@@ -115,17 +108,17 @@
}
}
}
- close(fds[0]);
+ close(readiness_pipe[0]);
uid_t uid = getuid();
gid_t gid = getgid();
// Restrict access to the socket to just us
- if (chown(sockpath, uid, gid) == -1) {
+ if (chown(SEATD_DEFAULTPATH, uid, gid) == -1) {
perror("Could not chown seatd socket");
goto error_seatd;
}
- if (chmod(sockpath, 0700) == -1) {
+ if (chmod(SEATD_DEFAULTPATH, 0700) == -1) {
perror("Could not chmod socket");
goto error_seatd;
}
@@ -145,7 +138,7 @@
perror("Could not fork target process");
goto error_seatd;
} else if (child == 0) {
- setenv("SEATD_SOCK", sockpath, 1);
+ setenv("SEATD_SOCK", SEATD_DEFAULTPATH, 1);
execvp(command[0], command);
perror("Could not start target");
_exit(1);
@@ -162,9 +155,6 @@
}
}
- if (unlink(sockpath) != 0) {
- perror("Could not unlink socket");
- }
if (kill(seatd_child, SIGTERM) != 0) {
perror("Could not kill seatd");
}
@@ -178,7 +168,6 @@
}
error_seatd:
- unlink(sockpath);
kill(seatd_child, SIGTERM);
error:
return 1;
++++++ seatd.obsinfo ++++++
--- /var/tmp/diff_new_pack.KJeLHp/_old 2023-06-30 20:00:00.446048586 +0200
+++ /var/tmp/diff_new_pack.KJeLHp/_new 2023-06-30 20:00:00.446048586 +0200
@@ -1,6 +1,5 @@
name: seatd
-version: 0.6.4
-mtime: 1645480324
-commit: df13d03f9cfd0dc0c2b3298cd0e5eb4e4a10835e
-
+version: 0.7.0
+mtime: 1653336218
+commit: a803ba0502cccf147eec7fbcacd11c5b8643c0e0
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package xlockmore for openSUSE:Factory checked in at 2023-06-30 19:59:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/xlockmore (Old)
and /work/SRC/openSUSE:Factory/.xlockmore.new.13546 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "xlockmore"
Fri Jun 30 19:59:39 2023 rev:46 rq:1096045 version:5.71
Changes:
--------
--- /work/SRC/openSUSE:Factory/xlockmore/xlockmore.changes 2023-01-04 17:53:07.910368730 +0100
+++ /work/SRC/openSUSE:Factory/.xlockmore.new.13546/xlockmore.changes 2023-06-30 19:59:57.574031504 +0200
@@ -1,0 +2,23 @@
+Thu Jun 29 16:42:38 UTC 2023 - Antonio Teixeira <antonio.teixeira(a)suse.com>
+
+- Update to 5.71:
+ * Patch for Theobromine, Niacin, and Cobalamin from Richard Narron,
+ richard AT aaazen.com.
+ * Added cuboctahedron from mxico to ico mode.
+ * xmlock updates for Athena for toggles. Fix also for Xaw3d. I think
+ it has most of the working parts to the Motif version now.
+- 5.70 changelog:
+ * Patach for Cannabidiol and Fentanyl from Richard Narron, richard AT
+ aaazen.com.
+ * I was able to get DtScreen to work on Linux with CDE with slight
+ modification to Makefile (documented in README) with help from Per
+ Backman, 229pele AT tufftuff.net.
+ * xmlock updates for Athena. In generated Makefile will have to change
+ HAVE_MOTIF to HAVE_ATHENA and change -lXm to -lXaw or -lXaw3d. Just
+ bare bones right now.
+ * t3d.c: following recommendated change for configure "warning: Update your
+ code to rely only on HAVE_SYS_TIME_H". Also other assorted changes
+ in configure.ac when I ran autoupdate (did not accept everything as
+ it seemed to go wrong).
+
+-------------------------------------------------------------------
Old:
----
xlockmore-5.69.tar.xz
xlockmore-5.69.tar.xz.asc
New:
----
xlockmore-5.71.tar.xz
xlockmore-5.71.tar.xz.asc
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ xlockmore.spec ++++++
--- /var/tmp/diff_new_pack.dsJzRi/_old 2023-06-30 19:59:58.402036428 +0200
+++ /var/tmp/diff_new_pack.dsJzRi/_new 2023-06-30 19:59:58.406036452 +0200
@@ -17,7 +17,7 @@
Name: xlockmore
-Version: 5.69
+Version: 5.71
Release: 0
Summary: Screen Saver and Locker for the X Window System
License: MIT
++++++ xlockmore-5.69.tar.xz -> xlockmore-5.71.tar.xz ++++++
++++ 16260 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package docker-compose for openSUSE:Factory checked in at 2023-06-30 19:59:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/docker-compose (Old)
and /work/SRC/openSUSE:Factory/.docker-compose.new.13546 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "docker-compose"
Fri Jun 30 19:59:37 2023 rev:23 rq:1096073 version:2.19.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/docker-compose/docker-compose.changes 2023-06-21 22:41:15.254874923 +0200
+++ /work/SRC/openSUSE:Factory/.docker-compose.new.13546/docker-compose.changes 2023-06-30 19:59:55.466018965 +0200
@@ -1,0 +2,13 @@
+Fri Jun 30 04:43:25 UTC 2023 - kastl(a)b1-systems.de
+
+- Update to version 2.19.1:
+ * ci: upgrade compose-go to v1.15.1 (#10757)
+ * up: fix race condition on network connect
+ * Updated documentation files for my contribution
+ * Fix capitalization error in sentence by adding an uppercase
+ letter at beginning
+ * fix typos
+ * watch: add warning when a path is already used by a bind mount
+ volume (#10741)
+
+-------------------------------------------------------------------
Old:
----
compose-2.19.0.obscpio
New:
----
compose-2.19.1.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ docker-compose.spec ++++++
--- /var/tmp/diff_new_pack.LQzkZU/_old 2023-06-30 19:59:57.070028506 +0200
+++ /var/tmp/diff_new_pack.LQzkZU/_new 2023-06-30 19:59:57.074028530 +0200
@@ -19,7 +19,7 @@
%define __arch_install_post export NO_BRP_STRIP_DEBUG=true
Name: docker-compose
-Version: 2.19.0
+Version: 2.19.1
Release: 0
Summary: Define and run multi-container applications with Docker
License: Apache-2.0
++++++ _service ++++++
--- /var/tmp/diff_new_pack.LQzkZU/_old 2023-06-30 19:59:57.114028768 +0200
+++ /var/tmp/diff_new_pack.LQzkZU/_new 2023-06-30 19:59:57.122028815 +0200
@@ -3,7 +3,7 @@
<param name="url">https://github.com/docker/compose</param>
<param name="scm">git</param>
<param name="exclude">.git</param>
- <param name="revision">v2.19.0</param>
+ <param name="revision">v2.19.1</param>
<param name="versionformat">@PARENT_TAG@</param>
<param name="changesgenerate">enable</param>
<param name="versionrewrite-pattern">v(.*)</param>
@@ -17,7 +17,7 @@
<param name="compression">gz</param>
</service>
<service name="go_modules" mode="disabled">
- <param name="archive">compose-2.19.0.obscpio</param>
+ <param name="archive">compose-2.19.1.obscpio</param>
</service>
</services>
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.LQzkZU/_old 2023-06-30 19:59:57.142028934 +0200
+++ /var/tmp/diff_new_pack.LQzkZU/_new 2023-06-30 19:59:57.146028958 +0200
@@ -1,6 +1,6 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/docker/compose</param>
- <param name="changesrevision">db24023884cbd9657c5c64b80ea27da38e9c4cc7</param></service></servicedata>
+ <param name="changesrevision">c496c230710d299834cf2586d0f75066dc60d06c</param></service></servicedata>
(No newline at EOF)
++++++ compose-2.19.0.obscpio -> compose-2.19.1.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.19.0/docs/reference/compose_run.md new/compose-2.19.1/docs/reference/compose_run.md
--- old/compose-2.19.0/docs/reference/compose_run.md 2023-06-21 13:02:20.000000000 +0200
+++ new/compose-2.19.1/docs/reference/compose_run.md 2023-06-29 22:50:10.000000000 +0200
@@ -36,7 +36,7 @@
Runs a one-time command against a service.
-the following command starts the `web` service and runs `bash` as its command:
+The following command starts the `web` service and runs `bash` as its command:
```console
$ docker compose run web bash
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.19.0/docs/reference/docker_compose_run.yaml new/compose-2.19.1/docs/reference/docker_compose_run.yaml
--- old/compose-2.19.0/docs/reference/docker_compose_run.yaml 2023-06-21 13:02:20.000000000 +0200
+++ new/compose-2.19.1/docs/reference/docker_compose_run.yaml 2023-06-29 22:50:10.000000000 +0200
@@ -3,7 +3,7 @@
long: |-
Runs a one-time command against a service.
- the following command starts the `web` service and runs `bash` as its command:
+ The following command starts the `web` service and runs `bash` as its command:
```console
$ docker compose run web bash
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.19.0/go.mod new/compose-2.19.1/go.mod
--- old/compose-2.19.0/go.mod 2023-06-21 13:02:20.000000000 +0200
+++ new/compose-2.19.1/go.mod 2023-06-29 22:50:10.000000000 +0200
@@ -6,7 +6,7 @@
github.com/AlecAivazis/survey/v2 v2.3.7
github.com/Microsoft/go-winio v0.6.1
github.com/buger/goterm v1.0.4
- github.com/compose-spec/compose-go v1.15.0
+ github.com/compose-spec/compose-go v1.15.1
github.com/containerd/console v1.0.3
github.com/containerd/containerd v1.7.2
github.com/cucumber/godog v0.0.0-00010101000000-000000000000 // replaced; see replace for the actual version used
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.19.0/go.sum new/compose-2.19.1/go.sum
--- old/compose-2.19.0/go.sum 2023-06-21 13:02:20.000000000 +0200
+++ new/compose-2.19.1/go.sum 2023-06-29 22:50:10.000000000 +0200
@@ -131,8 +131,8 @@
github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs=
github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+gqO04wryn5h75LSazbRlnya1k=
github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb h1:EDmT6Q9Zs+SbUoc7Ik9EfrFqcylYqgPZ9ANSbTAntnE=
-github.com/compose-spec/compose-go v1.15.0 h1:rv3TTgbS3U4Y8sRTngrcxDmpbz+fq26wTqHculSCi6s=
-github.com/compose-spec/compose-go v1.15.0/go.mod h1:3yngGBGfls6FHGQsg4B1z6gz8ej9SOvmAJtxCwgbcnc=
+github.com/compose-spec/compose-go v1.15.1 h1:0yaEt6/66dLN0bNWYDTj0CDx626uCdQ9ipJVIJx8O8M=
+github.com/compose-spec/compose-go v1.15.1/go.mod h1:3yngGBGfls6FHGQsg4B1z6gz8ej9SOvmAJtxCwgbcnc=
github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM=
github.com/containerd/console v1.0.3 h1:lIr7SlA5PxZyMV30bDW0MGbiOPXwc63yRuCP0ARubLw=
github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.19.0/pkg/compose/convergence.go new/compose-2.19.1/pkg/compose/convergence.go
--- old/compose-2.19.0/pkg/compose/convergence.go 2023-06-21 13:02:20.000000000 +0200
+++ new/compose-2.19.1/pkg/compose/convergence.go 2023-06-29 22:50:10.000000000 +0200
@@ -29,7 +29,6 @@
"github.com/containerd/containerd/platforms"
moby "github.com/docker/docker/api/types"
containerType "github.com/docker/docker/api/types/container"
- "github.com/docker/docker/api/types/network"
specs "github.com/opencontainers/image-spec/specs-go/v1"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
@@ -233,7 +232,13 @@
name := getContainerName(project.Name, service, number)
i := i
eg.Go(func() error {
- container, err := c.service.createContainer(ctx, project, service, name, number, false, true, false)
+ opts := createOptions{
+ AutoRemove: false,
+ AttachStdin: false,
+ UseNetworkAliases: true,
+ Labels: mergeLabels(service.Labels, service.CustomLabels),
+ }
+ container, err := c.service.createContainer(ctx, project, service, name, number, opts)
updated[actual+i] = container
return err
})
@@ -399,12 +404,11 @@
}
func (s *composeService) createContainer(ctx context.Context, project *types.Project, service types.ServiceConfig,
- name string, number int, autoRemove bool, useNetworkAliases bool, attachStdin bool) (container moby.Container, err error) {
+ name string, number int, opts createOptions) (container moby.Container, err error) {
w := progress.ContextWriter(ctx)
eventName := "Container " + name
w.Event(progress.CreatingEvent(eventName))
- container, err = s.createMobyContainer(ctx, project, service, name, number, nil,
- autoRemove, useNetworkAliases, attachStdin, w, mergeLabels(service.Labels, service.CustomLabels))
+ container, err = s.createMobyContainer(ctx, project, service, name, number, nil, opts, w)
if err != nil {
return
}
@@ -429,9 +433,13 @@
}
name := getContainerName(project.Name, service, number)
tmpName := fmt.Sprintf("%s_%s", replaced.ID[:12], name)
- created, err = s.createMobyContainer(ctx, project, service, tmpName, number, inherited,
- false, true, false, w,
- mergeLabels(service.Labels, service.CustomLabels).Add(api.ContainerReplaceLabel, replaced.ID))
+ opts := createOptions{
+ AutoRemove: false,
+ AttachStdin: false,
+ UseNetworkAliases: true,
+ Labels: mergeLabels(service.Labels, service.CustomLabels).Add(api.ContainerReplaceLabel, replaced.ID),
+ }
+ created, err = s.createMobyContainer(ctx, project, service, tmpName, number, inherited, opts, w)
if err != nil {
return created, err
}
@@ -484,19 +492,18 @@
return nil
}
-func (s *composeService) createMobyContainer(ctx context.Context, //nolint:gocyclo
+func (s *composeService) createMobyContainer(ctx context.Context,
project *types.Project,
service types.ServiceConfig,
name string,
number int,
inherit *moby.Container,
- autoRemove, useNetworkAliases, attachStdin bool,
+ opts createOptions,
w progress.Writer,
- labels types.Labels,
) (moby.Container, error) {
var created moby.Container
- containerConfig, hostConfig, networkingConfig, err := s.getCreateOptions(ctx, project, service, number, inherit,
- autoRemove, attachStdin, labels)
+ cfgs, err := s.getCreateConfigs(ctx, project, service, number, inherit, opts)
+
if err != nil {
return created, err
}
@@ -514,18 +521,7 @@
plat = &p
}
- links, err := s.getLinks(ctx, project.Name, service, number)
- if err != nil {
- return created, err
- }
- if networkingConfig != nil {
- for k, s := range networkingConfig.EndpointsConfig {
- s.Links = links
- networkingConfig.EndpointsConfig[k] = s
- }
- }
-
- response, err := s.apiClient().ContainerCreate(ctx, containerConfig, hostConfig, networkingConfig, plat, name)
+ response, err := s.apiClient().ContainerCreate(ctx, cfgs.Container, cfgs.Host, cfgs.Network, plat, name)
if err != nil {
return created, err
}
@@ -548,29 +544,19 @@
Networks: inspectedContainer.NetworkSettings.Networks,
},
}
- for _, netName := range service.NetworksByPriority() {
- netwrk := project.Networks[netName]
- cfg := service.Networks[netName]
- aliases := []string{getContainerName(project.Name, service, number)}
- if useNetworkAliases {
- aliases = append(aliases, service.Name)
- if cfg != nil {
- aliases = append(aliases, cfg.Aliases...)
- }
- }
- if val, ok := created.NetworkSettings.Networks[netwrk.Name]; ok {
- if shortIDAliasExists(created.ID, val.Aliases...) {
- continue
- }
- err = s.apiClient().NetworkDisconnect(ctx, netwrk.Name, created.ID, false)
- if err != nil {
+
+ // the highest-priority network is the primary and is included in the ContainerCreate API
+ // call via container.NetworkMode & network.NetworkingConfig
+ // any remaining networks are connected one-by-one here after creation (but before start)
+ serviceNetworks := service.NetworksByPriority()
+ if len(serviceNetworks) > 1 {
+ for _, networkKey := range serviceNetworks[1:] {
+ mobyNetworkName := project.Networks[networkKey].Name
+ epSettings := createEndpointSettings(project, service, number, networkKey, cfgs.Links, opts.UseNetworkAliases)
+ if err := s.apiClient().NetworkConnect(ctx, mobyNetworkName, created.ID, epSettings); err != nil {
return created, err
}
}
- err = s.connectContainerToNetwork(ctx, created.ID, netwrk.Name, cfg, links, aliases...)
- if err != nil {
- return created, err
- }
}
err = s.injectSecrets(ctx, project, service, created.ID)
@@ -635,43 +621,6 @@
return links, nil
}
-func shortIDAliasExists(containerID string, aliases ...string) bool {
- for _, alias := range aliases {
- if alias == containerID[:12] {
- return true
- }
- }
- return false
-}
-
-func (s *composeService) connectContainerToNetwork(ctx context.Context, id string, netwrk string, cfg *types.ServiceNetworkConfig, links []string, aliases ...string) error {
- var (
- ipv4Address string
- ipv6Address string
- ipam *network.EndpointIPAMConfig
- )
- if cfg != nil {
- ipv4Address = cfg.Ipv4Address
- ipv6Address = cfg.Ipv6Address
- ipam = &network.EndpointIPAMConfig{
- IPv4Address: ipv4Address,
- IPv6Address: ipv6Address,
- LinkLocalIPs: cfg.LinkLocalIPs,
- }
- }
- err := s.apiClient().NetworkConnect(ctx, netwrk, id, &network.EndpointSettings{
- Aliases: aliases,
- IPAddress: ipv4Address,
- GlobalIPv6Address: ipv6Address,
- Links: links,
- IPAMConfig: ipam,
- })
- if err != nil {
- return err
- }
- return nil
-}
-
func (s *composeService) isServiceHealthy(ctx context.Context, containers Containers, fallbackRunning bool) (bool, error) {
for _, c := range containers {
container, err := s.apiClient().ContainerInspect(ctx, c.ID)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.19.0/pkg/compose/create.go new/compose-2.19.1/pkg/compose/create.go
--- old/compose-2.19.0/pkg/compose/create.go 2023-06-21 13:02:20.000000000 +0200
+++ new/compose-2.19.1/pkg/compose/create.go 2023-06-29 22:50:10.000000000 +0200
@@ -48,6 +48,20 @@
"github.com/docker/compose/v2/pkg/utils"
)
+type createOptions struct {
+ AutoRemove bool
+ AttachStdin bool
+ UseNetworkAliases bool
+ Labels types.Labels
+}
+
+type createConfigs struct {
+ Container *container.Config
+ Host *container.HostConfig
+ Network *network.NetworkingConfig
+ Links []string
+}
+
func (s *composeService) Create(ctx context.Context, project *types.Project, options api.CreateOptions) error {
return progress.RunWithTitle(ctx, func(ctx context.Context) error {
return s.create(ctx, project, options)
@@ -166,18 +180,16 @@
return nil
}
-func (s *composeService) getCreateOptions(ctx context.Context,
+func (s *composeService) getCreateConfigs(ctx context.Context,
p *types.Project,
service types.ServiceConfig,
number int,
inherit *moby.Container,
- autoRemove, attachStdin bool,
- labels types.Labels,
-) (*container.Config, *container.HostConfig, *network.NetworkingConfig, error) {
-
- labels, err := s.prepareLabels(labels, service, number)
+ opts createOptions,
+) (createConfigs, error) {
+ labels, err := s.prepareLabels(opts.Labels, service, number)
if err != nil {
- return nil, nil, nil, err
+ return createConfigs{}, err
}
var (
@@ -196,11 +208,6 @@
stdinOpen = service.StdinOpen
)
- binds, mounts, err := s.buildContainerVolumes(ctx, *p, service, inherit)
- if err != nil {
- return nil, nil, nil, err
- }
-
proxyConfig := types.MappingWithEquals(s.configFile().ParseProxyConfig(s.apiClient().DaemonHost(), nil))
env := proxyConfig.OverrideBy(service.Environment)
@@ -211,8 +218,8 @@
ExposedPorts: buildContainerPorts(service),
Tty: tty,
OpenStdin: stdinOpen,
- StdinOnce: attachStdin && stdinOpen,
- AttachStdin: attachStdin,
+ StdinOnce: opts.AttachStdin && stdinOpen,
+ AttachStdin: opts.AttachStdin,
AttachStderr: true,
AttachStdout: true,
Cmd: runCmd,
@@ -228,20 +235,7 @@
StopTimeout: ToSeconds(service.StopGracePeriod),
}
- portBindings := buildContainerPortBindingOptions(service)
-
- resources := getDeployResources(service)
-
- if service.NetworkMode == "" {
- service.NetworkMode = getDefaultNetworkMode(p, service)
- }
-
- var networkConfig *network.NetworkingConfig
- for _, id := range service.NetworksByPriority() {
- networkConfig = s.createNetworkConfig(p, service, id)
- break
- }
-
+ // VOLUMES/MOUNTS/FILESYSTEMS
tmpfs := map[string]string{}
for _, t := range service.Tmpfs {
if arr := strings.SplitN(t, ":", 2); len(arr) > 1 {
@@ -250,39 +244,47 @@
tmpfs[arr[0]] = ""
}
}
-
- var logConfig container.LogConfig
- if service.Logging != nil {
- logConfig = container.LogConfig{
- Type: service.Logging.Driver,
- Config: service.Logging.Options,
- }
+ binds, mounts, err := s.buildContainerVolumes(ctx, *p, service, inherit)
+ if err != nil {
+ return createConfigs{}, err
}
-
var volumesFrom []string
for _, v := range service.VolumesFrom {
if !strings.HasPrefix(v, "container:") {
- return nil, nil, nil, fmt.Errorf("invalid volume_from: %s", v)
+ return createConfigs{}, fmt.Errorf("invalid volume_from: %s", v)
}
volumesFrom = append(volumesFrom, v[len("container:"):])
}
+ // NETWORKING
links, err := s.getLinks(ctx, p.Name, service, number)
if err != nil {
- return nil, nil, nil, err
+ return createConfigs{}, err
}
+ networkMode, networkingConfig := defaultNetworkSettings(p, service, number, links, opts.UseNetworkAliases)
+ portBindings := buildContainerPortBindingOptions(service)
+ // MISC
+ resources := getDeployResources(service)
+ var logConfig container.LogConfig
+ if service.Logging != nil {
+ logConfig = container.LogConfig{
+ Type: service.Logging.Driver,
+ Config: service.Logging.Options,
+ }
+ }
securityOpts, unconfined, err := parseSecurityOpts(p, service.SecurityOpt)
if err != nil {
- return nil, nil, nil, err
+ return createConfigs{}, err
}
+
hostConfig := container.HostConfig{
- AutoRemove: autoRemove,
+ AutoRemove: opts.AutoRemove,
Binds: binds,
Mounts: mounts,
CapAdd: strslice.StrSlice(service.CapAdd),
CapDrop: strslice.StrSlice(service.CapDrop),
- NetworkMode: container.NetworkMode(service.NetworkMode),
+ NetworkMode: networkMode,
Init: service.Init,
IpcMode: container.IpcMode(service.Ipc),
CgroupnsMode: container.CgroupnsMode(service.Cgroup),
@@ -317,12 +319,28 @@
hostConfig.ReadonlyPaths = []string{}
}
- return &containerConfig, &hostConfig, networkConfig, nil
+ cfgs := createConfigs{
+ Container: &containerConfig,
+ Host: &hostConfig,
+ Network: networkingConfig,
+ Links: links,
+ }
+ return cfgs, nil
}
-func (s *composeService) createNetworkConfig(p *types.Project, service types.ServiceConfig, networkID string) *network.NetworkingConfig {
- net := p.Networks[networkID]
- config := service.Networks[networkID]
+func getAliases(project *types.Project, service types.ServiceConfig, serviceIndex int, networkKey string, useNetworkAliases bool) []string {
+ aliases := []string{getContainerName(project.Name, service, serviceIndex)}
+ if useNetworkAliases {
+ aliases = append(aliases, service.Name)
+ if cfg := service.Networks[networkKey]; cfg != nil {
+ aliases = append(aliases, cfg.Aliases...)
+ }
+ }
+ return aliases
+}
+
+func createEndpointSettings(p *types.Project, service types.ServiceConfig, serviceIndex int, networkKey string, links []string, useNetworkAliases bool) *network.EndpointSettings {
+ config := service.Networks[networkKey]
var ipam *network.EndpointIPAMConfig
var (
ipv4Address string
@@ -337,15 +355,12 @@
LinkLocalIPs: config.LinkLocalIPs,
}
}
- return &network.NetworkingConfig{
- EndpointsConfig: map[string]*network.EndpointSettings{
- net.Name: {
- Aliases: getAliases(service, config),
- IPAddress: ipv4Address,
- IPv6Gateway: ipv6Address,
- IPAMConfig: ipam,
- },
- },
+ return &network.EndpointSettings{
+ Aliases: getAliases(p, service, serviceIndex, networkKey, useNetworkAliases),
+ Links: links,
+ IPAddress: ipv4Address,
+ IPv6Gateway: ipv6Address,
+ IPAMConfig: ipam,
}
}
@@ -404,17 +419,39 @@
return labels, nil
}
-func getDefaultNetworkMode(project *types.Project, service types.ServiceConfig) string {
+// defaultNetworkSettings determines the container.NetworkMode and corresponding network.NetworkingConfig (nil if not applicable).
+func defaultNetworkSettings(
+ project *types.Project,
+ service types.ServiceConfig,
+ serviceIndex int,
+ links []string,
+ useNetworkAliases bool,
+) (container.NetworkMode, *network.NetworkingConfig) {
+ if service.NetworkMode != "" {
+ return container.NetworkMode(service.NetworkMode), nil
+ }
+
if len(project.Networks) == 0 {
- return "none"
+ return "none", nil
}
+ var networkKey string
if len(service.Networks) > 0 {
- name := service.NetworksByPriority()[0]
- return project.Networks[name].Name
+ networkKey = service.NetworksByPriority()[0]
+ } else {
+ networkKey = "default"
+ }
+ mobyNetworkName := project.Networks[networkKey].Name
+ epSettings := createEndpointSettings(project, service, serviceIndex, networkKey, links, useNetworkAliases)
+ networkConfig := &network.NetworkingConfig{
+ EndpointsConfig: map[string]*network.EndpointSettings{
+ mobyNetworkName: epSettings,
+ },
}
-
- return project.Networks["default"].Name
+ // From the Engine API docs:
+ // > Supported standard values are: bridge, host, none, and container:<name|id>.
+ // > Any other value is taken as a custom network's name to which this container should connect to.
+ return container.NetworkMode(mobyNetworkName), networkConfig
}
func getRestartPolicy(service types.ServiceConfig) container.RestartPolicy {
@@ -1002,14 +1039,6 @@
}
}
-func getAliases(s types.ServiceConfig, c *types.ServiceNetworkConfig) []string {
- aliases := []string{s.Name}
- if c != nil {
- aliases = append(aliases, c.Aliases...)
- }
- return aliases
-}
-
func (s *composeService) ensureNetwork(ctx context.Context, n *types.NetworkConfig) error {
if n.External.External {
return s.resolveExternalNetwork(ctx, n)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.19.0/pkg/compose/create_test.go new/compose-2.19.1/pkg/compose/create_test.go
--- old/compose-2.19.0/pkg/compose/create_test.go 2023-06-21 13:02:20.000000000 +0200
+++ new/compose-2.19.1/pkg/compose/create_test.go 2023-06-29 22:50:10.000000000 +0200
@@ -22,6 +22,8 @@
"sort"
"testing"
+ "gotest.tools/v3/assert/cmp"
+
"github.com/docker/compose/v2/pkg/api"
composetypes "github.com/compose-spec/compose-go/types"
@@ -203,7 +205,7 @@
assert.Equal(t, mounts[2].Target, "\\\\.\\pipe\\docker_engine")
}
-func TestGetDefaultNetworkMode(t *testing.T) {
+func TestDefaultNetworkSettings(t *testing.T) {
t.Run("returns the network with the highest priority when service has multiple networks", func(t *testing.T) {
service := composetypes.ServiceConfig{
Name: "myService",
@@ -231,7 +233,10 @@
}),
}
- assert.Equal(t, getDefaultNetworkMode(&project, service), "myProject_myNetwork2")
+ networkMode, networkConfig := defaultNetworkSettings(&project, service, 1, nil, true)
+ assert.Equal(t, string(networkMode), "myProject_myNetwork2")
+ assert.Check(t, cmp.Len(networkConfig.EndpointsConfig, 1))
+ assert.Check(t, cmp.Contains(networkConfig.EndpointsConfig, "myProject_myNetwork2"))
})
t.Run("returns default network when service has no networks", func(t *testing.T) {
@@ -256,7 +261,10 @@
}),
}
- assert.Equal(t, getDefaultNetworkMode(&project, service), "myProject_default")
+ networkMode, networkConfig := defaultNetworkSettings(&project, service, 1, nil, true)
+ assert.Equal(t, string(networkMode), "myProject_default")
+ assert.Check(t, cmp.Len(networkConfig.EndpointsConfig, 1))
+ assert.Check(t, cmp.Contains(networkConfig.EndpointsConfig, "myProject_default"))
})
t.Run("returns none if project has no networks", func(t *testing.T) {
@@ -270,6 +278,28 @@
},
}
- assert.Equal(t, getDefaultNetworkMode(&project, service), "none")
+ networkMode, networkConfig := defaultNetworkSettings(&project, service, 1, nil, true)
+ assert.Equal(t, string(networkMode), "none")
+ assert.Check(t, cmp.Nil(networkConfig))
+ })
+
+ t.Run("returns defined network mode if explicitly set", func(t *testing.T) {
+ service := composetypes.ServiceConfig{
+ Name: "myService",
+ NetworkMode: "host",
+ }
+ project := composetypes.Project{
+ Name: "myProject",
+ Services: []composetypes.ServiceConfig{service},
+ Networks: composetypes.Networks(map[string]composetypes.NetworkConfig{
+ "default": {
+ Name: "myProject_default",
+ },
+ }),
+ }
+
+ networkMode, networkConfig := defaultNetworkSettings(&project, service, 1, nil, true)
+ assert.Equal(t, string(networkMode), "host")
+ assert.Check(t, cmp.Nil(networkConfig))
})
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.19.0/pkg/compose/run.go new/compose-2.19.1/pkg/compose/run.go
--- old/compose-2.19.0/pkg/compose/run.go 2023-06-21 13:02:20.000000000 +0200
+++ new/compose-2.19.1/pkg/compose/run.go 2023-06-29 22:50:10.000000000 +0200
@@ -99,8 +99,14 @@
return "", err
}
}
- created, err := s.createContainer(ctx, project, service, service.ContainerName, 1,
- opts.AutoRemove, opts.UseNetworkAliases, opts.Interactive)
+ createOpts := createOptions{
+ AutoRemove: opts.AutoRemove,
+ AttachStdin: opts.Interactive,
+ UseNetworkAliases: opts.UseNetworkAliases,
+ Labels: mergeLabels(service.Labels, service.CustomLabels),
+ }
+
+ created, err := s.createContainer(ctx, project, service, service.ContainerName, 1, createOpts)
if err != nil {
return "", err
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.19.0/pkg/compose/watch.go new/compose-2.19.1/pkg/compose/watch.go
--- old/compose-2.19.0/pkg/compose/watch.go 2023-06-21 13:02:20.000000000 +0200
+++ new/compose-2.19.1/pkg/compose/watch.go 2023-06-29 22:50:10.000000000 +0200
@@ -143,6 +143,10 @@
var paths []string
for _, trigger := range config.Watch {
+ if checkIfPathAlreadyBindMounted(trigger.Path, service.Volumes) {
+ logrus.Warnf("path '%s' also declared by a bind mount volume, this path won't be monitored!\n", trigger.Path)
+ continue
+ }
paths = append(paths, trigger.Path)
}
@@ -383,3 +387,12 @@
}
}
}
+
+func checkIfPathAlreadyBindMounted(watchPath string, volumes []types.ServiceVolumeConfig) bool {
+ for _, volume := range volumes {
+ if volume.Bind != nil && strings.HasPrefix(watchPath, volume.Source) {
+ return true
+ }
+ }
+ return false
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.19.0/pkg/e2e/compose_test.go new/compose-2.19.1/pkg/e2e/compose_test.go
--- old/compose-2.19.0/pkg/e2e/compose_test.go 2023-06-21 13:02:20.000000000 +0200
+++ new/compose-2.19.1/pkg/e2e/compose_test.go 2023-06-29 22:50:10.000000000 +0200
@@ -277,7 +277,7 @@
})
}
-func TestStopWithDependeciesAttached(t *testing.T) {
+func TestStopWithDependenciesAttached(t *testing.T) {
const projectName = "compose-e2e-stop-with-deps"
c := NewParallelCLI(t, WithEnv("COMMAND=echo hello"))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.19.0/pkg/watch/notify.go new/compose-2.19.1/pkg/watch/notify.go
--- old/compose-2.19.0/pkg/watch/notify.go 2023-06-21 13:02:20.000000000 +0200
+++ new/compose-2.19.1/pkg/watch/notify.go 2023-06-29 22:50:10.000000000 +0200
@@ -68,7 +68,7 @@
// - Watch /src/repo, but ignore /src/repo/.git
// - Watch /src/repo, but ignore everything in /src/repo/bazel-bin except /src/repo/bazel-bin/app-binary
//
-// The PathMatcher inteface helps us manage these ignores.
+// The PathMatcher interface helps us manage these ignores.
type PathMatcher interface {
Matches(file string) (bool, error)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/compose-2.19.0/pkg/watch/paths.go new/compose-2.19.1/pkg/watch/paths.go
--- old/compose-2.19.0/pkg/watch/paths.go 2023-06-21 13:02:20.000000000 +0200
+++ new/compose-2.19.1/pkg/watch/paths.go 2023-06-29 22:50:10.000000000 +0200
@@ -59,7 +59,7 @@
}
if IsChild(current, existing) {
- // Mark the element empty fo removal.
+ // Mark the element empty for removal.
result[i] = ""
hasRemovals = true
}
++++++ compose.obsinfo ++++++
--- /var/tmp/diff_new_pack.LQzkZU/_old 2023-06-30 19:59:57.366030266 +0200
+++ /var/tmp/diff_new_pack.LQzkZU/_new 2023-06-30 19:59:57.370030290 +0200
@@ -1,5 +1,5 @@
name: compose
-version: 2.19.0
-mtime: 1687345340
-commit: db24023884cbd9657c5c64b80ea27da38e9c4cc7
+version: 2.19.1
+mtime: 1688071810
+commit: c496c230710d299834cf2586d0f75066dc60d06c
++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/docker-compose/vendor.tar.gz /work/SRC/openSUSE:Factory/.docker-compose.new.13546/vendor.tar.gz differ: char 5, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-PyQt6-WebEngine for openSUSE:Factory checked in at 2023-06-30 19:59:36
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-PyQt6-WebEngine (Old)
and /work/SRC/openSUSE:Factory/.python-PyQt6-WebEngine.new.13546 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-PyQt6-WebEngine"
Fri Jun 30 19:59:36 2023 rev:9 rq:1096075 version:6.5.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-PyQt6-WebEngine/python-PyQt6-WebEngine.changes 2023-04-27 20:01:11.550016530 +0200
+++ /work/SRC/openSUSE:Factory/.python-PyQt6-WebEngine.new.13546/python-PyQt6-WebEngine.changes 2023-06-30 19:59:54.646014088 +0200
@@ -1,0 +2,5 @@
+Wed Jun 28 13:51:47 UTC 2023 - ecsos <ecsos(a)opensuse.org>
+
+- Add %{?sle15_python_module_pythons}
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-PyQt6-WebEngine.spec ++++++
--- /var/tmp/diff_new_pack.SgkgrV/_old 2023-06-30 19:59:55.190017324 +0200
+++ /var/tmp/diff_new_pack.SgkgrV/_new 2023-06-30 19:59:55.194017348 +0200
@@ -19,6 +19,7 @@
%define mname PyQt6-WebEngine
%define muname PyQt6_WebEngine
%define pyqt_build_for_qt6 1
+%{?sle15_python_module_pythons}
Name: python-%{mname}
Version: 6.5.0
Release: 0
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package jython for openSUSE:Factory checked in at 2023-06-30 19:59:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/jython (Old)
and /work/SRC/openSUSE:Factory/.jython.new.13546 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "jython"
Fri Jun 30 19:59:34 2023 rev:31 rq:1095810 version:2.7.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/jython/jython.changes 2022-03-28 17:00:04.144929264 +0200
+++ /work/SRC/openSUSE:Factory/.jython.new.13546/jython.changes 2023-06-30 19:59:52.406000765 +0200
@@ -1,0 +2,21 @@
+Wed Jun 28 10:40:43 UTC 2023 - Pedro Monreal <pmonreal(a)suse.com>
+
+- Update to 2.7.3: [bsc#1186065]
+ * See full changelog in the NEWS file.
+ * Fetch sources by source _service in order to exclude
+ the different binary jar files
+ * Add jython-fix-tty-detection.patch
+ * Rebase patches:
+ - jython-dont-validate-pom.patch
+ - jython-build.patch
+ - jython-cachedir.patch
+ * Remove patches fixed upstream:
+ - jython-makeCompiledFilename.patch
+ - jython-module.patch
+ - jython-nofullbuildpath.patch
+ - jython-cacheperms.patch
+ - jython-compareto.patch
+ - jython-sourcetarget.patch
+ - jython-cached-classes.patch
+
+-------------------------------------------------------------------
Old:
----
fetch-jython.sh
jython-cached-classes.patch
jython-cacheperms.patch
jython-compareto.patch
jython-fetched-src-Release_2_2_1.tar.bz2
jython-makeCompiledFilename.patch
jython-module.patch
jython-nofullbuildpath.patch
jython-sourcetarget.patch
New:
----
_service
jython-2.7.3.tar.xz
jython-build.patch
jython-fix-tty-detection.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ jython.spec ++++++
--- /var/tmp/diff_new_pack.I1VMSw/_old 2023-06-30 19:59:54.090010781 +0200
+++ /var/tmp/diff_new_pack.I1VMSw/_new 2023-06-30 19:59:54.110010900 +0200
@@ -1,7 +1,7 @@
#
# spec file for package jython
#
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -19,55 +19,58 @@
%global pyver %(python3 -c 'import sys;print(sys.version[0:3])')
%global cpython_version %{pyver}
%global pyxml_version %{pyver}
-%global svn_tag Release_2_2_1
%global _python_bytecompile_errors_terminate_build 0
Name: jython
-Version: 2.2.1
+Version: 2.7.3
Release: 0
Summary: A Java implementation of the Python language
License: Apache-2.0 AND Python-2.0
Group: Development/Languages/Python
URL: https://www.jython.org/
-# Use the included fetch-jython.sh script to generate the source drop
-# for jython 2.2.1
-# sh fetch-jython.sh \
-# jython https://jython.svn.sourceforge.net/svnroot Release_2_2_1
-#
-Source0: %{name}-fetched-src-%{svn_tag}.tar.bz2
-Source2: fetch-%{name}.sh
-Patch0: %{name}-cachedir.patch
-# Make javadoc and copy-full tasks not depend upon "full-build"
-# Also, copy python's license from source directory and not
-# ${python.home}
-Patch1: %{name}-nofullbuildpath.patch
-# These address CVE-2013-2027 (http://bugs.jython.org/msg8004)
-Patch3: %{name}-cacheperms.patch
-Patch4: %{name}-makeCompiledFilename.patch
-Patch5: %{name}-cached-classes.patch
-Patch6: %{name}-sourcetarget.patch
-Patch7: %{name}-module.patch
-Patch8: %{name}-compareto.patch
-Patch9: %{name}-dont-validate-pom.patch
+Source0: %{name}-%{version}.tar.xz
+Patch0: %{name}-build.patch
+Patch1: %{name}-dont-validate-pom.patch
+Patch2: %{name}-cachedir.patch
+Patch3: %{name}-fix-tty-detection.patch
BuildRequires: ant
+BuildRequires: ant-junit
+BuildRequires: antlr3-java
+BuildRequires: antlr3-tool
+BuildRequires: apache-commons-compress
BuildRequires: fdupes
-BuildRequires: jakarta-oro
+BuildRequires: glassfish-servlet-api
+BuildRequires: guava
+BuildRequires: jansi
+BuildRequires: jarjar
BuildRequires: java-devel >= 1.8
BuildRequires: javapackages-local
-BuildRequires: jline1
-BuildRequires: libreadline-java >= 0.8.0
-BuildRequires: mysql-connector-java
+BuildRequires: jffi
+BuildRequires: jline
+BuildRequires: jnr-constants
+BuildRequires: jnr-ffi
+BuildRequires: jnr-posix
+BuildRequires: lucene-core
+BuildRequires: objectweb-asm
BuildRequires: python3 >= %{cpython_version}
BuildRequires: python3-xml >= %{pyxml_version}
-BuildRequires: servletapi5
-Requires: jakarta-oro
-Requires: java >= 1.8
-Requires: javapackages-local
-Requires: jline1
-Requires: libreadline-java >= 0.8.0
-Requires: python3 >= %{cpython_version}
-Requires: servletapi5
-Recommends: mysql-connector-java
-BuildArch: noarch
+BuildRequires: stringtemplate4
+Requires: antlr3-java
+Requires: antlr3-tool
+Requires: apache-commons-compress
+Requires: glassfish-servlet-api
+Requires: guava
+Requires: jansi
+Requires: jarjar
+Requires: jffi
+Requires: jline
+Requires: jnr-constants
+Requires: jnr-ffi
+Requires: jnr-posix
+Requires: junit
+Requires: lucene-core
+Requires: objectweb-asm
+Requires: stringtemplate4
+Obsoletes: %{name}-manual
%description
Jython is an implementation of the high-level, dynamic, object-oriented
@@ -88,132 +91,90 @@
Java allows developers to freely mix the two languages both during
development and in shipping products.
-%package manual
-Summary: Manual for jython
-Group: Development/Libraries/Java
-
-%description manual
-This package contains the manual for Jython.
-
-Jython is an implementation of the high-level, dynamic, object-oriented
-language Python seamlessly integrated with the Java platform. The
-predecessor to Jython, JPython, is certified as 100% Pure Java. Jython
-is freely available for both commercial and non-commercial use and is
-distributed with source code. Jython is complementary to Java and is
-especially suited for the following tasks: Embedded scripting - Java
-programmers can add the Jython libraries to their system to allow end
-users to write simple or complicated scripts that add functionality to
-the application. Interactive experimentation - Jython provides an
-interactive interpreter that can be used to interact with Java packages
-or with running Java applications. This allows programmers to
-experiment and debug any Java system using Jython. Rapid application
-development - Python programs are typically 2-10X shorter than the
-equivalent Java program. This translates directly to increased
-programmer productivity. The seamless interaction between Python and
-Java allows developers to freely mix the two languages both during
-development and in shipping products.
-
%package javadoc
Summary: Javadoc for jython
Group: Development/Libraries/Java
+Provides: jython-manual = %{version}
+Obsoletes: jython-manual < %{version}
+BuildArch: noarch
%description javadoc
-This package contains the javadoc documentation for jython.
-
-Jython is an implementation of the high-level, dynamic, object-oriented
-language Python seamlessly integrated with the Java platform. The
-predecessor to Jython, JPython, is certified as 100% Pure Java. Jython
-is freely available for both commercial and non-commercial use and is
-distributed with source code. Jython is complementary to Java and is
-especially suited for the following tasks: Embedded scripting - Java
-programmers can add the Jython libraries to their system to allow end
-users to write simple or complicated scripts that add functionality to
-the application. Interactive experimentation - Jython provides an
-interactive interpreter that can be used to interact with Java packages
-or with running Java applications. This allows programmers to
-experiment and debug any Java system using Jython. Rapid application
-development - Python programs are typically 2-10X shorter than the
-equivalent Java program. This translates directly to increased
-programmer productivity. The seamless interaction between Python and
-Java allows developers to freely mix the two languages both during
-development and in shipping products.
+API documentation for %{name}.
%package demo
Summary: Demonstration and samples for jython
Group: Development/Libraries/Java
Requires: %{name} = %{version}-%{release}
+BuildArch: noarch
%description demo
-This package contains demonstration and sample files for Jython.
-
-Jython is an implementation of the high-level, dynamic, object-oriented
-language Python seamlessly integrated with the Java platform. The
-predecessor to Jython, JPython, is certified as 100% Pure Java. Jython
-is freely available for both commercial and non-commercial use and is
-distributed with source code. Jython is complementary to Java and is
-especially suited for the following tasks: Embedded scripting - Java
-programmers can add the Jython libraries to their system to allow end
-users to write simple or complicated scripts that add functionality to
-the application. Interactive experimentation - Jython provides an
-interactive interpreter that can be used to interact with Java packages
-or with running Java applications. This allows programmers to
-experiment and debug any Java system using Jython. Rapid application
-development - Python programs are typically 2-10X shorter than the
-equivalent Java program. This translates directly to increased
-programmer productivity. The seamless interaction between Python and
-Java allows developers to freely mix the two languages both during
-development and in shipping products.
+Demonstrations and samples for %{name}.
%prep
-%setup -q -n %{name}-svn-%{svn_tag}
-%patch0 -p1
-%patch1 -p1
-%patch3 -p1
-%patch4 -p1
-%patch5 -p1
-%patch6 -p1
-%patch7 -p1
-%patch8 -p1
-%patch9 -p1
+%autosetup -p1
%build
-export CLASSPATH=$(build-classpath mysql-connector-java oro servlet jline1)
-# FIXME: fix jpackage-utils to handle multilib correctly
-export CLASSPATH=$CLASSPATH:%{_libdir}/libreadline-java/libreadline-java.jar
-
-rm -rf org/apache
-perl -p -i -e 's|execon|apply|g' build.xml
-
-%{ant} \
- -Dpython.home=%{_bindir} \
- -Dht2html.dir=%{_datadir}/ht2html \
- -Dpython.lib=./CPythonLib \
- -Dpython.exe=%{_bindir}/python3 \
- -DPyXmlHome=%{_libdir}/python%{pyver} \
- -Dtargetver=1.3 \
- copy-dist
-
-# remove #! from python files
-pushd dist
- for f in `find . -name '*.py'`
- do
- sed --in-place "s:#!\s*/usr.*::" $f
- done
-popd
+build-jar-repository -s -p extlibs \
+ jffi/jffi \
+ antlr3 \
+ antlr3-runtime \
+ commons-compress \
+ glassfish-servlet-api \
+ guava/guava \
+ jansi/jansi \
+ jarjar \
+ jline/jline \
+ jnr/jnr-constants \
+ jnr/jnr-ffi \
+ jnr/jnr-posix \
+ junit \
+ lucene/lucene-core \
+ objectweb-asm/asm \
+ objectweb-asm/asm-commons \
+ objectweb-asm/asm-util \
+ stringtemplate4/ST4
+
+%{ant} -Djython.version=%{version}
pushd maven
-# generate maven pom
-ant -Dproject.version=%{version} install
+%{ant} -Djython.version=%{version} bundle
popd
+# Symlink run-time libs
+rm dist/javalib/*.jar
+build-jar-repository -s -p dist/javalib \
+ jffi/jffi \
+ antlr3 \
+ antlr3-runtime \
+ commons-compress \
+ glassfish-servlet-api \
+ guava/guava \
+ jansi/jansi \
+ jarjar \
+ jline/jline \
+ jnr/jnr-constants \
+ jnr/jnr-ffi \
+ jnr/jnr-posix \
+ junit \
+ lucene/lucene-core \
+ objectweb-asm/asm \
+ objectweb-asm/asm-commons \
+ objectweb-asm/asm-util \
+ stringtemplate4/ST4
+
+# remove shebangs from python files
+find dist -type f -name '*.py' | xargs sed -i "s:#!\s*/usr.*::"
+
+# fix env-script-interpreter
+sed -i 's/env bash/bash/' dist/bin/%{name}{,.py}
+
%install
# jar
install -d -m 755 %{buildroot}%{_javadir}
-install -m 644 dist/%{name}.jar \
- %{buildroot}%{_javadir}/%{name}.jar
+install -m 644 dist/%{name}.jar %{buildroot}%{_javadir}/%{name}.jar
# pom
install -d -m 755 %{buildroot}%{_mavenpomdir}
-install -m 644 build/maven/pom.xml %{buildroot}%{_mavenpomdir}/JPP-%{name}.pom
+install -m 644 build/maven/%{name}-%{version}.pom %{buildroot}%{_mavenpomdir}/JPP-%{name}.pom
%add_maven_depmap JPP-%{name}.pom %{name}.jar -a org.python:jython-standalone,jython:jython
# javadoc
@@ -221,112 +182,54 @@
cp -pr dist/Doc/javadoc/* %{buildroot}%{_javadocdir}/%{name}
%fdupes -s %{buildroot}%{_javadocdir}/%{name}
-# data
-install -d -m 755 %{buildroot}%{_datadir}/%{name}
-# these are not supposed to be distributed
-find dist/Lib -type d -name test | xargs rm -rf
+# jython home dir
+install -d -m 755 %{buildroot}%{_libdir}/%{name}
+ln -s %{_javadir}/%{name}.jar %{buildroot}%{_libdir}/%{name}
+ln -s %{_javadir}/%{name}.jar %{buildroot}%{_libdir}/%{name}/%{name}-dev.jar
+cp -pr dist/javalib %{buildroot}%{_libdir}/%{name}
+rm dist/bin/jython_regrtest.bat
+rm dist/bin/jython.exe
+cp -pr dist/bin %{buildroot}%{_libdir}/%{name}
+install -m 644 dist/registry %{buildroot}%{_libdir}/%{name}
+
+# libs without tests
+rm -rf dist/Lib/{distutils/tests,email/test,json/tests,test,unittest/test}
+cp -pr dist/Lib %{buildroot}%{_libdir}/%{name}
+%fdupes -s %{buildroot}%{_libdir}/%{name}/Lib
-cp -pr dist/Lib %{buildroot}%{_datadir}/%{name}
-cp -pr dist/Tools %{buildroot}%{_datadir}/%{name}
# demo
-cp -pr dist/Demo %{buildroot}%{_datadir}/%{name}
-fdupes -s %{buildroot}%{_datadir}/%{name}/Demo
-fdupes -s %{buildroot}%{_datadir}/%{name}/{Lib,Tools}
-# manual
-rm -rf dist/Doc/javadoc
-mv dist/Doc %{name}-manual-%{version}
-%fdupes -s %{name}-manual-%{version}
+install -d -m 755 %{buildroot}%{_datadir}/%{name}
+cp -pr Demo %{buildroot}%{_datadir}/%{name}
+%fdupes -s %{buildroot}%{_datadir}/%{name}/Demo
+
+# javadoc
+install -d -m 755 %{buildroot}%{_datadir}/%{name}/Doc
+ln -s %{_javadocdir}/%{name} %{buildroot}%{_datadir}/%{name}/Doc/javadoc
-# registry
-install -m 644 registry %{buildroot}%{_datadir}/%{name}
# scripts
install -d %{buildroot}%{_bindir}
+ln -s %{_libdir}/%{name}/bin/jython %{buildroot}%{_bindir}
-cat > %{buildroot}%{_bindir}/%{name} << EOF
-#!/bin/sh
-#
-# %{name} script
-# JPackage Project (http://jpackage.sourceforge.net)
-#
-# Source functions library
-. %{_datadir}/java-utils/java-functions
-
-# Source system prefs
-if [ -f %{_sysconfdir}/%{name}.conf ] ; then
- . %{_sysconfdir}/%{name}.conf
-fi
-
-# Source user prefs
-if [ -f \$HOME/.%{name}rc ] ; then
- . \$HOME/.%{name}rc
-fi
-
-# Arch-specific location of dependency
-case \$(uname -m) in
- x86_64 | ia64 | s390x | ppc64 | sparc64 )
- JYTHONLIBDIR="%{_libdir}" ;;
- * )
- JYTHONLIBDIR="%{_prefix}/lib" ;;
-esac
-
-# Configuration
-MAIN_CLASS=org.python.util.%{name}
-BASE_FLAGS=-Dpython.home=%{_datadir}/%{name}
-BASE_JARS="%{name} oro servlet mysql-connector-java"
-
-BASE_FLAGS="\$BASE_FLAGS -Dpython.console=org.python.util.ReadlineConsole"
-BASE_FLAGS="\$BASE_FLAGS -Djava.library.path=\$JYTHONLIBDIR/libreadline-java"
-BASE_FLAGS="\$BASE_FLAGS -Dpython.console.readlinelib=Editline"
-
-# Set parameters
-set_jvm
-CLASSPATH=$CLASSPATH:\$JYTHONLIBDIR/libreadline-java/libreadline-java.jar
-set_classpath \$BASE_JARS
-set_flags \$BASE_FLAGS
-set_options \$BASE_OPTIONS
-
-# Let's start
-run "\$@"
-EOF
-
-cat > %{buildroot}%{_bindir}/%{name}c << EOF
-#!/bin/sh
-#
-# %{name}c script
-# JPackage Project (http://jpackage.sourceforge.net)
-
-%{_bindir}/%{name} %{_datadir}/%{name}/Tools/%{name}c/%{name}c.py "\$@"
-EOF
-
-%files
-%license LICENSE.txt
+%files -f .mfiles
%doc ACKNOWLEDGMENTS NEWS README.txt
+%license LICENSE.txt
%attr(0755,root,root) %{_bindir}/%{name}
-%attr(0755,root,root) %{_bindir}/%{name}c
-%{_javadir}/*
-%{_mavenpomdir}/*
-%dir %{_datadir}/%{name}
-%{_datadir}/%{name}/Lib
-%{_datadir}/%{name}/Tools
-%{_datadir}/%{name}/registry
-%if %{defined _maven_repository}
-%{_mavendepmapfragdir}/%{name}
-%else
-%{_datadir}/maven-metadata/%{name}.xml*
-%endif
+%dir %{_libdir}/%{name}
+%{_libdir}/%{name}/bin
+%{_libdir}/%{name}/javalib
+%{_libdir}/%{name}/jython.jar
+%{_libdir}/%{name}/jython-dev.jar
+%{_libdir}/%{name}/Lib
+%{_libdir}/%{name}/registry
%files javadoc
%license LICENSE.txt
%{_javadocdir}/%{name}
-
-%files manual
-%license LICENSE.txt
-%doc README.txt
-%doc %{name}-manual-%{version}
+%dir %{_datadir}/%{name}
+%{_datadir}/%{name}/Doc
%files demo
%license LICENSE.txt
-%doc ACKNOWLEDGMENTS NEWS README.txt
%{_datadir}/%{name}/Demo
%changelog
++++++ _service ++++++
<services>
<service name="tar_scm" mode="disabled">
<param name="scm">git</param>
<param name="url">https://github.com/jython/jython.git</param>
<param name="revision">v2.7.3</param>
<param name="match-tag">v*</param>
<param name="versionformat">@PARENT_TAG@</param>
<param name="versionrewrite-pattern">v(.*)</param>
<param name="exclude">**/*.jar</param>
<param name="exclude">**/*.zip</param>
</service>
<service name="recompress" mode="disabled">
<param name="file">*.tar</param>
<param name="compression">xz</param>
</service>
<service name="set_version" mode="disabled"/>
</services>
++++++ jython-build.patch ++++++
--- a/build.xml
+++ b/build.xml
@@ -242,44 +242,14 @@ informix.jar = ../support/jdbc-4.10.12.jar
<filelist files="${informix.location} ${oracle.location}" />
<!-- Further database and Java EE-related JARs -->
- <filelist dir="${extlibs.dir}">
- <file name="servlet-api-2.5.jar" />
- <file name="mysql-connector-java-5.1.42-bin.jar" />
- <file name="postgresql-42.1.1.jre7.jar" />
- </filelist>
+ <fileset dir="${extlibs.dir}">
+ <include name="**/*"/>
+ </fileset>
- <!-- Other JARs (alphabetical) -->
- <filelist dir="${extlibs.dir}">
- <file name="antlr-complete-3.5.2.jar" /> <!-- ANTLR 3 until we upgrade parsing -->
- <file name="asm-9.3.jar" />
- <file name="asm-commons-9.3.jar" />
- <file name="asm-util-9.3.jar" />
- <file name="commons-compress-1.21.jar"/>
- <file name="failureaccess-1.0.1.jar" />
- <file name="guava-31.0.1-jre.jar" />
- <file name="icu4j-71.1.jar" />
- <file name="jffi-1.3.9.jar"/>
- <file name="java-sizeof-0.0.5.jar"/>
- <file name="jnr-constants-0.10.3.jar"/>
- <file name="jnr-ffi-2.2.12.jar"/>
- <file name="jnr-netdb-1.2.0.jar"/>
- <file name="jnr-posix-3.1.15.jar"/>
- <file name="jline-2.14.5.jar"/>
- <file name="netty-buffer-4.1.73.Final.jar"/>
- <file name="netty-codec-4.1.73.Final.jar"/>
- <file name="netty-common-4.1.73.Final.jar"/>
- <file name="netty-handler-4.1.73.Final.jar"/>
- <file name="netty-resolver-4.1.73.Final.jar"/>
- <file name="netty-transport-4.1.73.Final.jar"/>
- </filelist>
</path>
<path id="test.classpath">
<path refid="main.classpath"/>
- <filelist dir="${extlibs.dir}">
- <!-- Pin to 4.10 until dependency on hamcrest classes resolved. -->
- <file name="junit-4.10.jar" />
- </filelist>
<pathelement location="${exposed.dir}" />
<pathelement location="${compile.dir}" />
<pathelement location="${test.compile.dir}" />
@@ -835,80 +805,13 @@ The text for an official release would continue like ...
</target>
<target name="jar-complete" depends="jar, pycompile">
- <taskdef name="jarjar" classname="org.pantsbuild.jarjar.JarJarTask">
+ <taskdef name="jarjar" classname="com.tonicsystems.jarjar.JarJarTask">
<classpath>
- <pathelement path="extlibs/jarjar-1.7.2.jar" />
<path refid="main.classpath" />
</classpath>
</taskdef>
<jarjar destfile="${dist.dir}/${jython.deploy.jar}" update="${jar.update}">
<zipfileset src="${dist.dir}/${jython.dev.jar}"/>
- <!-- pin to Antlr 3 until we upgrade parsing -->
- <zipfileset src="extlibs/antlr-runtime-3.5.2.jar"/>
- <rule pattern="org.antlr.runtime.**" result="org.python.antlr.runtime.@1"/>
- <zipfileset src="extlibs/asm-9.3.jar" excludes="module-info.class"/>
- <zipfileset src="extlibs/asm-commons-9.3.jar" excludes="module-info.class"/>
- <zipfileset src="extlibs/asm-util-9.3.jar" excludes="module-info.class"/>
- <rule pattern="org.objectweb.asm.**" result="org.python.objectweb.asm.@1"/>
- <zipfileset src="extlibs/bcpkix-jdk18on-1.71.jar" excludes="META-INF/**"/>
- <zipfileset src="extlibs/bcprov-jdk18on-1.71.jar" excludes="META-INF/**"/>
- <rule pattern="org.bouncycastle.**" result="org.python.bouncycastle.@1"/>
- <zipfileset src="extlibs/commons-compress-1.21.jar"/>
- <rule pattern="org.apache.commons.compress.**" result="org.python.apache.commons.compress.@1"/>
- <zipfileset src="extlibs/failureaccess-1.0.1.jar"/>
- <zipfileset src="extlibs/guava-31.0.1-jre.jar"/>
- <rule pattern="com.google.**" result="org.python.google.@1"/>
- <zipfileset src="extlibs/icu4j-71.1.jar"/>
- <rule pattern="com.ibm.icu.**" result="org.python.icu.@1"/>
- <zipfileset src="extlibs/netty-buffer-4.1.73.Final.jar" excludes="META-INF/**"/>
- <rule pattern="io.netty.**" result="org.python.netty.@1"/>
- <zipfileset src="extlibs/netty-codec-4.1.73.Final.jar" excludes="META-INF/**"/>
- <rule pattern="io.netty.**" result="org.python.netty.@1"/>
- <zipfileset src="extlibs/netty-common-4.1.73.Final.jar" excludes="META-INF/**"/>
- <rule pattern="io.netty.**" result="org.python.netty.@1"/>
- <zipfileset src="extlibs/netty-handler-4.1.73.Final.jar" excludes="META-INF/**"/>
- <rule pattern="io.netty.**" result="org.python.netty.@1"/>
- <zipfileset src="extlibs/netty-resolver-4.1.73.Final.jar" excludes="META-INF/**"/>
- <rule pattern="io.netty.**" result="org.python.netty.@1"/>
- <zipfileset src="extlibs/netty-transport-4.1.73.Final.jar" excludes="META-INF/**"/>
- <rule pattern="io.netty.**" result="org.python.netty.@1"/>
- <zipfileset src="${extlibs.dir}/java-sizeof-0.0.5.jar"/>
- <rule pattern="com.carrotsearch.sizeof.**" result="org.python.sizeof.@1"/>
- <!-- these stub jars are pre-built in https://github.com/jnr/jffi/tree/master/archive
- and rarely if ever change -->
- <zipfileset src="extlibs/jffi-aarch64-Linux.jar"/>
- <zipfileset src="extlibs/jffi-arm-Linux.jar"/>
- <zipfileset src="extlibs/jffi-Darwin.jar"/>
- <zipfileset src="extlibs/jffi-i386-FreeBSD.jar"/>
- <zipfileset src="extlibs/jffi-i386-Linux.jar"/>
- <zipfileset src="extlibs/jffi-i386-OpenBSD.jar"/>
- <zipfileset src="extlibs/jffi-i386-SunOS.jar"/>
- <zipfileset src="extlibs/jffi-i386-Windows.jar"/>
- <zipfileset src="extlibs/jffi-ppc64le-Linux.jar"/>
- <zipfileset src="extlibs/jffi-ppc-AIX.jar"/>
- <zipfileset src="extlibs/jffi-ppc-Linux.jar"/>
- <zipfileset src="extlibs/jffi-ppc64-Linux.jar"/>
- <zipfileset src="extlibs/jffi-s390x-Linux.jar"/>
- <zipfileset src="extlibs/jffi-sparc-SunOS.jar"/>
- <zipfileset src="extlibs/jffi-sparcv9-SunOS.jar"/>
- <zipfileset src="extlibs/jffi-x86_64-FreeBSD.jar"/>
- <zipfileset src="extlibs/jffi-x86_64-Linux.jar"/>
- <zipfileset src="extlibs/jffi-x86_64-OpenBSD.jar"/>
- <zipfileset src="extlibs/jffi-x86_64-SunOS.jar"/>
- <zipfileset src="extlibs/jffi-x86_64-Windows.jar"/>
- <!-- remainder of JNR, JFFI -->
- <zipfileset src="extlibs/jffi-1.3.9.jar"/>
- <zipfileset src="${extlibs.dir}/jnr-constants-0.10.3.jar"/>
- <zipfileset src="${extlibs.dir}/jnr-ffi-2.2.12.jar"/>
- <zipfileset src="${extlibs.dir}/jnr-netdb-1.2.0.jar"/>
- <zipfileset src="${extlibs.dir}/jnr-posix-3.1.15.jar"/>
- <zipfileset src="extlibs/xercesImpl-2.12.2.jar" excludes="META-INF/services/*"/>
- <rule pattern="org.apache.xml.**" result="org.python.apache.xml.@1"/>
- <rule pattern="org.apache.xerces.**" result="org.python.apache.xerces.@1"/>
- <rule pattern="org.apache.wml.**" result="org.python.apache.wml.@1"/>
- <rule pattern="org.apache.html.**" result="org.python.apache.html.@1"/>
- <zipfileset src="extlibs/jline-2.14.5.jar"/>
- <rule pattern="jline.**" result="org.python.jline.@1"/>
<manifest>
<attribute name="Main-Class" value="org.python.util.jython" />
<attribute name="Built-By" value="${user.name}" />
--- a/src/org/python/core/PySystemState.java
+++ b/src/org/python/core/PySystemState.java
@@ -55,7 +55,7 @@ import org.python.expose.ExposedType;
import org.python.modules.Setup;
import org.python.util.Generic;
-import com.carrotsearch.sizeof.RamUsageEstimator;
+import org.apache.lucene.util.RamUsageEstimator;
import jnr.posix.util.Platform;
++++++ jython-cachedir.patch ++++++
--- /var/tmp/diff_new_pack.I1VMSw/_old 2023-06-30 19:59:54.506013256 +0200
+++ /var/tmp/diff_new_pack.I1VMSw/_new 2023-06-30 19:59:54.514013303 +0200
@@ -1,19 +1,20 @@
-diff -ur jython-svn-Release_2_2beta1/src/org/python/core/PySystemState.java jython-svn-Release_2_2beta1.patched/src/org/python/core/PySystemState.java
---- jython-svn-Release_2_2beta1/src/org/python/core/PySystemState.java 2007-02-07 02:19:53.000000000 -0500
-+++ jython-svn-Release_2_2beta1/src/org/python/core/PySystemState.java 2007-03-23 09:41:27.000000000 -0400
-@@ -534,7 +534,13 @@
+diff --git a/src/org/python/core/PySystemState.java b/src/org/python/core/PySystemState.java
+index 1fb701d..ee9b38f 100644
+--- a/src/org/python/core/PySystemState.java
++++ b/src/org/python/core/PySystemState.java
+@@ -1278,9 +1278,11 @@ public class PySystemState extends PyObject
}
cachedir = new File(props.getProperty(PYTHON_CACHEDIR, CACHEDIR_DEFAULT_NAME));
if (!cachedir.isAbsolute()) {
-- cachedir = new File(PySystemState.prefix, cachedir.getPath());
+- String prefixString = props.getProperty("user.dir", "");
+- cachedir = new File(prefixString, cachedir.getPath());
+- cachedir = cachedir.getAbsoluteFile();
+ File jythondir = new File(System.getProperty("user.home"), ".jython-cache");
-+
+ if (!jythondir.isDirectory()) {
+ jythondir.mkdirs();
+ }
-+
+ cachedir = new File(jythondir, cachedir.getPath());
}
+ logger.log(Level.CONFIG, "cache at {0}", cachedir);
}
-
++++++ jython-dont-validate-pom.patch ++++++
--- /var/tmp/diff_new_pack.I1VMSw/_old 2023-06-30 19:59:54.534013422 +0200
+++ /var/tmp/diff_new_pack.I1VMSw/_new 2023-06-30 19:59:54.542013470 +0200
@@ -1,45 +1,100 @@
---- jython-svn-Release_2_2_1/maven/build.xml 2007-03-26 22:02:00.000000000 +0200
-+++ jython-svn-Release_2_2_1/maven/build.xml 2018-11-23 10:04:54.897037648 +0100
-@@ -85,8 +85,6 @@
-
- <move file="${stage}/${install.name}.jar"
- tofile="${install.dir}/${install.name}.jar"/>
-- <move file="${stage}/${install.name}-sources.jar"
-- tofile="${install.dir}/${install.name}-sources.jar"/>
-
- <checksum algorithm="SHA1" fileext=".sha1">
- <fileset dir="${install.dir}" excludes="*.sha1,*.md5,*.tmp"/>
-@@ -114,7 +112,7 @@
- <!--
- Performs Maven build staging
- -->
-- <target name="stage" depends="validate-pom">
-+ <target name="stage">
- <property name="stage" value="${build}/"/>
- <mkdir dir="${stage}"/>
-
-@@ -135,23 +133,6 @@
- </jar>
- </target>
+Only in jython-2.7.3: build.xml.orig
+Only in jython-2.7.3: build.xml.rej
+--- jython-2.7.3/maven/build.xml 2023-06-27 13:47:28.639774958 +0200
++++ jython-2.7.3/maven/build.xml 2023-06-27 13:58:10.216237299 +0200
+@@ -155,9 +155,6 @@
+ </filterset>
+ </copy>
-- <!--
-- Performs POM Schema validation.
-- -->
-- <target name="validate-pom">
-- <xmlvalidate failonerror="true" file="maven/pom.xml">
-- <attribute name="http://xml.org/sax/features/validation"
-- value="true"/>
-- <attribute name="http://apache.org/xml/features/validation/schema"
-- value="true"/>
-- <attribute name="http://xml.org/sax/features/namespaces"
-- value="true"/>
-- <property
-- name="http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation"
-- value="maven/maven-v4_0_0.xsd"/>
-- </xmlvalidate>
-- </target>
--
- <target name="build-jython" depends="clean">
- <ant antfile="build.xml" target="developer-build"/>
- </target>
+- <!-- Sign everything. -->
+- <sign-all stageDir="@{stageDir}" artifactId="@{artifactId}" version="@{version}" />
+-
+ <!-- JAR-up the entire contents of the staging directory. -->
+ <jar jarfile="${pubs.dir}/(a){basename}-bundle.jar">
+ <fileset dir="@{stageDir}" />
+@@ -175,9 +172,6 @@
+ <attribute name="stageDir" default="${build.maven}" />
+ <attribute name="basename" default="@{artifactId}-@{version}" />
+ <sequential>
+- <!-- Validate the POM -->
+- <validate-pom file="@{fromdir}/@{basename}.pom" />
+-
+ <!-- Clean the staging directory. -->
+ <delete dir="@{stageDir}" />
+ <mkdir dir="@{stageDir}" />
+@@ -190,9 +184,6 @@
+ </fileset>
+ </copy>
+
+- <!-- Sign everything. -->
+- <sign-all stageDir="@{stageDir}" artifactId="@{artifactId}" version="@{version}" />
+-
+ <!-- JAR-up the entire contents of the staging directory. -->
+ <jar jarfile="${pubs.dir}/(a){basename}-bundle.jar">
+ <fileset dir="@{stageDir}" />
+@@ -200,61 +191,11 @@
+ </sequential>
+ </macrodef>
+
+- <!-- Add detached signature for single artifact in staging directory. -->
+- <macrodef name="sign-detached">
+- <attribute name="file" />
+- <attribute name="stageDir" />
+- <sequential>
+- <!-- Generate a detached signature for each artifact in the bundle. -->
+- <exec executable="gpg" dir="@{stageDir}">
+- <arg value="-ab" />
+- <arg value="@{file}" />
+- </exec>
+- </sequential>
+- </macrodef>
+-
+- <!-- Add detached signatures for group of artifacts in staging directory. -->
+- <macrodef name="sign-all">
+- <attribute name="artifactId" />
+- <attribute name="version" />
+- <attribute name="stageDir" />
+- <attribute name="basename" default="@{artifactId}-@{version}" />
+- <sequential>
+- <sign-detached stageDir="@{stageDir}" file="@{basename}.pom" />
+- <sign-detached stageDir="@{stageDir}" file="@{basename}.jar" />
+- <sign-detached stageDir="@{stageDir}" file="@{basename}-sources.jar" />
+- <sign-detached stageDir="@{stageDir}" file="@{basename}-javadoc.jar" />
+- </sequential>
+- </macrodef>
+-
+- <!-- Validate a Maven POM . -->
+- <macrodef name="validate-pom">
+- <attribute name="file" />
+- <sequential>
+- <xmlvalidate failonerror="true" file="@{file}">
+- <attribute name="http://xml.org/sax/features/validation" value="true" />
+- <attribute name="http://apache.org/xml/features/validation/schema" value="true" />
+- <attribute name="http://xml.org/sax/features/namespaces" value="true" />
+- <property name="http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation" value="maven/maven-v4_0_0.xsd" />
+- </xmlvalidate>
+- </sequential>
+- </macrodef>
+-
+- <!-- Validate the POM template. -->
+- <target name="validate-template-pom">
+- <validate-pom file="maven/pom-template.xml"/>
+- </target>
+-
+- <!-- Validate the base POM produced by Gradle task generatePomFileForMainPublication. -->
+- <target name="validate-gradle-pom" depends="version">
+- <validate-pom file="${gradle.base}/publications/main/pom-default.xml"/>
+- </target>
+-
+ <target name="build-jython" if="do.build">
+ <ant antfile="build.xml" target="all-jars" />
+ </target>
+
+- <target name="prepare" depends="build-jython, validate-template-pom, version">
++ <target name="prepare" depends="build-jython, version">
+ <local name="artifacts" />
+ <property name="artifacts" value="${gradle.repo}/${m2.groupDir}/jython-slim/${jython.version}" />
+ <condition property="gradle.published">
+Only in jython-2.7.3/maven: build.xml.orig
+Only in jython-2.7.3/maven: build.xml.rej
++++++ jython-fix-tty-detection.patch ++++++
--- jython-2.7.3/src/shell/jython.orig 2017-08-11 16:24:32.831309328 +0100
+++ jython-2.7.3/src/shell/jython 2017-08-11 16:23:55.346726416 +0100
@@ -242,6 +242,11 @@
fi
fi
+# Detect absence of tty
+if ! tty -s; then
+ JAVA_OPTS="$JAVA_OPTS -Dpython.launcher.tty=false"
+fi
+
if [ -n "$profile_requested" -o -z "$boot_requested" ] ; then
[ -n "$profile_requested" ] && echo "Running with instrumented profiler"
java_args=("${java_args[@]}" -classpath "$CP$CP_DELIMITER$CLASSPATH")
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package ungoogled-chromium for openSUSE:Factory checked in at 2023-06-30 19:58:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ungoogled-chromium (Old)
and /work/SRC/openSUSE:Factory/.ungoogled-chromium.new.13546 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ungoogled-chromium"
Fri Jun 30 19:58:55 2023 rev:5 rq:1096043 version:114.0.5735.198
Changes:
--------
--- /work/SRC/openSUSE:Factory/ungoogled-chromium/ungoogled-chromium.changes 2023-06-18 23:08:10.265542822 +0200
+++ /work/SRC/openSUSE:Factory/.ungoogled-chromium.new.13546/ungoogled-chromium.changes 2023-06-30 19:59:34.741895701 +0200
@@ -1,0 +2,9 @@
+Thu Jun 29 05:31:55 UTC 2023 - Micha�� Szczepaniak <m.szczepaniak.000(a)gmail.com>
+
+- ungoogled-chromium 114.0.5735.198:
+ * CVE-2023-3420: Type Confusion in V8
+ * CVE-2023-3421: Use after free in Media
+ * CVE-2023-3422: Use after free in Guest View
+- Install Qt5 library & prepare for Qt6 in 115
+
+-------------------------------------------------------------------
Old:
----
chromium-114.0.5735.133.tar.xz
ungoogled-chromium-114.0.5735.133-1.tar.gz
New:
----
chromium-114.0.5735.198.tar.xz
ungoogled-chromium-114.0.5735.198-1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ungoogled-chromium.spec ++++++
--- /var/tmp/diff_new_pack.OhzX9k/_old 2023-06-30 19:59:50.745990891 +0200
+++ /var/tmp/diff_new_pack.OhzX9k/_new 2023-06-30 19:59:50.749990915 +0200
@@ -41,12 +41,14 @@
%bcond_without arm_bti
%bcond_without system_icu
%bcond_without ffmpeg_51
+%bcond_without qt6
%else
%bcond_with system_harfbuzz
%bcond_with system_freetype
%bcond_with arm_bti
%bcond_with system_icu
%bcond_with ffmpeg_51
+%bcond_with qt6
%endif
%bcond_with system_avif
# LLVM version
@@ -76,7 +78,7 @@
%define n_suffix %{nil}
%endif
Name: ungoogled-chromium%{n_suffix}
-Version: 114.0.5735.133
+Version: 114.0.5735.198
Release: 0
Summary: Google's open source browser project
License: BSD-3-Clause AND LGPL-2.1-or-later
@@ -309,6 +311,10 @@
BuildRequires: pkgconfig(Qt5Core)
BuildRequires: pkgconfig(Qt5Widgets)
%endif
+%if %{with qt6}
+BuildRequires: pkgconfig(Qt6Core)
+BuildRequires: pkgconfig(Qt6Widgets)
+%endif
%if %{with clang}
%if 0%{?suse_version} < 1550
BuildRequires: clang%{llvm_version}
@@ -838,6 +844,9 @@
%if %{without qt}
myconf_gn+=" use_qt=false"
%endif
+%if %{with qt6}
+myconf_gn+=" use_qt6=true"
+%endif
# See dependency logic in third_party/BUILD.gn
%if %{with system_harfbuzz}
myconf_gn+=" use_system_harfbuzz=true"
++++++ INSTALL.sh ++++++
--- /var/tmp/diff_new_pack.OhzX9k/_old 2023-06-30 19:59:50.773991058 +0200
+++ /var/tmp/diff_new_pack.OhzX9k/_new 2023-06-30 19:59:50.773991058 +0200
@@ -90,6 +90,18 @@
# Install the ICD json file to point ANGLE to libvk_swiftshader.so
install -m 644 "${OUTPUTDIR}/vk_swiftshader_icd.json" "${STAGEDIR}/${INSTALLDIR}/"
+# QT shim
+if [ -f "${OUTPUTDIR}/libqt5_shim.so" ]; then
+ file="libqt5_shim.so"
+ buildfile="${OUTPUTDIR}/${file}"
+ install -m ${SHLIB_PERMS} "${buildfile}" "${STAGEDIR}/${INSTALLDIR}/${file}"
+fi
+if [ -f "${OUTPUTDIR}/libqt6_shim.so" ]; then
+ file="libqt6_shim.so"
+ buildfile="${OUTPUTDIR}/${file}"
+ install -m ${SHLIB_PERMS} "${buildfile}" "${STAGEDIR}/${INSTALLDIR}/${file}"
+fi
+
# default apps
if [ -d "${OUTPUTDIR}/default_apps" ]; then
cp -a "${OUTPUTDIR}/default_apps" "${STAGEDIR}/${INSTALLDIR}/"
++++++ chromium-114.0.5735.133.tar.xz -> chromium-114.0.5735.198.tar.xz ++++++
/work/SRC/openSUSE:Factory/ungoogled-chromium/chromium-114.0.5735.133.tar.xz /work/SRC/openSUSE:Factory/.ungoogled-chromium.new.13546/chromium-114.0.5735.198.tar.xz differ: char 15, line 1
++++++ ungoogled-chromium-114.0.5735.133-1.tar.gz -> ungoogled-chromium-114.0.5735.198-1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ungoogled-chromium-114.0.5735.133-1/.github/ISSUE_TEMPLATE/bugreport.yml new/ungoogled-chromium-114.0.5735.198-1/.github/ISSUE_TEMPLATE/bugreport.yml
--- old/ungoogled-chromium-114.0.5735.133-1/.github/ISSUE_TEMPLATE/bugreport.yml 2023-06-14 18:02:29.000000000 +0200
+++ new/ungoogled-chromium-114.0.5735.198-1/.github/ISSUE_TEMPLATE/bugreport.yml 2023-06-28 14:59:38.000000000 +0200
@@ -52,7 +52,7 @@
options:
- label: I have tried reproducing this issue in Chrome and it could not be reproduced there
- label: I have tried reproducing this issue in vanilla Chromium and it could not be reproduced there
- - label: I have tried reproducing this issue in ungoogled-chromium with a new and empty profile and it could not be reproduced there
+ - label: I have tried reproducing this issue in ungoogled-chromium with a new and empty profile using `--user-data-dir` command line argument and it could not be reproduced there
- type: input
id: description
attributes:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ungoogled-chromium-114.0.5735.133-1/chromium_version.txt new/ungoogled-chromium-114.0.5735.198-1/chromium_version.txt
--- old/ungoogled-chromium-114.0.5735.133-1/chromium_version.txt 2023-06-14 18:02:29.000000000 +0200
+++ new/ungoogled-chromium-114.0.5735.198-1/chromium_version.txt 2023-06-28 14:59:38.000000000 +0200
@@ -1 +1 @@
-114.0.5735.133
+114.0.5735.198
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ungoogled-chromium-114.0.5735.133-1/patches/extra/ungoogled-chromium/add-flags-for-referrer-customization.patch new/ungoogled-chromium-114.0.5735.198-1/patches/extra/ungoogled-chromium/add-flags-for-referrer-customization.patch
--- old/ungoogled-chromium-114.0.5735.133-1/patches/extra/ungoogled-chromium/add-flags-for-referrer-customization.patch 2023-06-14 18:02:29.000000000 +0200
+++ new/ungoogled-chromium-114.0.5735.198-1/patches/extra/ungoogled-chromium/add-flags-for-referrer-customization.patch 2023-06-28 14:59:38.000000000 +0200
@@ -162,6 +162,35 @@
"//chrome/test/chromedriver/constants:version_header",
"//components/crx_file",
"//components/embedder_support",
+--- a/components/BUILD.gn
++++ b/components/BUILD.gn
+@@ -51,7 +51,7 @@ if (is_ios) {
+
+ # Omit Lacros because it allows //components to depend on //chrome, which in
+ # turn depends on //extensions.
+-if (!is_chromeos_lacros) {
++if (false) {
+ disallowed_extension_deps_ = [
+ # Components should largely not depend on //extensions. Since // extensions
+ # is not a component target and is linked with //chrome, depending on most
+@@ -709,7 +709,7 @@ test("components_unittests") {
+ # On other platforms, no components should depend on Chrome.
+ # Since //chrome depends on //extensions, we also only assert_no_deps on
+ # extensions targets for non-lacros builds.
+- if (!is_chromeos_lacros) {
++ if (false) {
+ assert_no_deps = [ "//chrome/*" ]
+ assert_no_deps += disallowed_extension_deps_
+ }
+@@ -988,7 +988,7 @@ if (use_blink) {
+ # dependency. On other platforms, no components should depend on Chrome.
+ # Since //chrome depends on //extensions, we also only assert_no_deps on
+ # extensions targets for non-lacros builds.
+- if (!is_chromeos_lacros) {
++ if (false) {
+ assert_no_deps = [ "//chrome/*" ]
+ assert_no_deps += disallowed_extension_deps_
+ }
--- a/content/browser/renderer_host/navigation_request.cc
+++ b/content/browser/renderer_host/navigation_request.cc
@@ -41,6 +41,7 @@
@@ -215,6 +244,16 @@
}
void RenderFrameImpl::DidLoadResourceFromMemoryCache(
+--- a/content/shell/BUILD.gn
++++ b/content/shell/BUILD.gn
+@@ -266,6 +266,7 @@ static_library("content_shell_lib") {
+ "//base/third_party/dynamic_annotations",
+ "//build:chromeos_buildflags",
+ "//cc/base",
++ "//chrome/common",
+ "//components/cdm/renderer",
+ "//components/custom_handlers",
+ "//components/custom_handlers:test_support",
--- a/services/network/network_service_network_delegate.cc
+++ b/services/network/network_service_network_delegate.cc
@@ -12,6 +12,7 @@
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package youtube-dl for openSUSE:Factory checked in at 2023-06-30 19:58:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/youtube-dl (Old)
and /work/SRC/openSUSE:Factory/.youtube-dl.new.13546 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "youtube-dl"
Fri Jun 30 19:58:53 2023 rev:179 rq:1096042 version:2021.12.17
Changes:
--------
--- /work/SRC/openSUSE:Factory/youtube-dl/youtube-dl.changes 2023-05-30 22:03:06.347244877 +0200
+++ /work/SRC/openSUSE:Factory/.youtube-dl.new.13546/youtube-dl.changes 2023-06-30 19:59:13.225767727 +0200
@@ -1,0 +2,6 @@
+Thu Jun 29 15:45:39 UTC 2023 - Matej Cepl <mcepl(a)suse.com>
+
+- Add 10795-facebook-plugin.patch fixing download from
+ facebook.com/plugin URLs (gh#ytdl-org/youtube-dl#10795).
+
+-------------------------------------------------------------------
New:
----
10795-facebook-plugin.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ youtube-dl.spec ++++++
--- /var/tmp/diff_new_pack.h3jnZv/_old 2023-06-30 19:59:14.041772581 +0200
+++ /var/tmp/diff_new_pack.h3jnZv/_new 2023-06-30 19:59:14.045772604 +0200
@@ -42,6 +42,9 @@
# Patch from gh#yt-dlp/yt-dlp@149eb0bbf34f
# Fix uploader_id extraction regexp
Patch2: fix-uploader-id-extraction.patch
+# PATCH-FIX-UPSTREAM 10795-facebook-plugin.patch gh#ytdl-org/youtube-dl#10795 mcepl(a)suse.com
+# Plugin to fix download from Facebook plugin URLs
+Patch3: 10795-facebook-plugin.patch
BuildRequires: make >= 4
BuildRequires: python3-devel
BuildRequires: python3-xml
++++++ 10795-facebook-plugin.patch ++++++
---
youtube_dl/extractor/facebook.py | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
--- a/youtube_dl/extractor/facebook.py
+++ b/youtube_dl/extractor/facebook.py
@@ -681,8 +681,7 @@ class FacebookIE(InfoExtractor):
class FacebookPluginsVideoIE(InfoExtractor):
- _VALID_URL = r'https?://(?:[\w-]+\.)?facebook\.com/plugins/video\.php\?.*?\bhref=(?P<id>https.+)'
-
+ _VALID_URL = r'(?s)https?://(?:[\w-]+\.)?facebook\.com/(?:v[\d.]+/)?plugins/video\.php\?(?:.*?&)?href=(?P<id>(?:http|%2[fF]|/).+?)(?:$|&)'
_TESTS = [{
'url': 'https://www.facebook.com/plugins/video.php?href=https%3A%2F%2Fwww.facebook.…',
'md5': '5954e92cdfe51fe5782ae9bda7058a07',
@@ -704,6 +703,5 @@ class FacebookPluginsVideoIE(InfoExtract
}]
def _real_extract(self, url):
- return self.url_result(
- compat_urllib_parse_unquote(self._match_id(url)),
- FacebookIE.ie_key())
+ return self.url_result(urljoin(
+ 'https://www.facebook.com', compat_urllib_parse_unquote(self._match_id(url))))
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package ghc-optics-core for openSUSE:Factory checked in at 2023-06-30 19:58:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-optics-core (Old)
and /work/SRC/openSUSE:Factory/.ghc-optics-core.new.13546 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-optics-core"
Fri Jun 30 19:58:52 2023 rev:6 rq:1096039 version:0.4.1.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-optics-core/ghc-optics-core.changes 2023-04-04 21:22:10.337792227 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-optics-core.new.13546/ghc-optics-core.changes 2023-06-30 19:59:12.277762088 +0200
@@ -1,0 +2,7 @@
+Thu Jun 22 21:12:56 UTC 2023 - Peter Simons <psimons(a)suse.com>
+
+- Update optics-core to version 0.4.1.1.
+ # optics-core-0.4.1.1 (2023-06-22)
+ * Add INLINE pragmas to small functions that really should inline
+
+-------------------------------------------------------------------
Old:
----
optics-core-0.4.1.tar.gz
optics-core.cabal
New:
----
optics-core-0.4.1.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-optics-core.spec ++++++
--- /var/tmp/diff_new_pack.fnyZ3w/_old 2023-06-30 19:59:12.885765705 +0200
+++ /var/tmp/diff_new_pack.fnyZ3w/_new 2023-06-30 19:59:12.889765728 +0200
@@ -19,13 +19,12 @@
%global pkg_name optics-core
%global pkgver %{pkg_name}-%{version}
Name: ghc-%{pkg_name}
-Version: 0.4.1
+Version: 0.4.1.1
Release: 0
Summary: Optics as an abstract interface: core definitions
License: BSD-3-Clause
URL: https://hackage.haskell.org/package/%{pkg_name}
Source0: https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{ve…
-Source1: https://hackage.haskell.org/package/%{pkg_name}-%{version}/revision/1.cabal…
BuildRequires: ghc-Cabal-devel
BuildRequires: ghc-array-devel
BuildRequires: ghc-array-prof
@@ -78,7 +77,6 @@
%prep
%autosetup -n %{pkg_name}-%{version}
-cp -p %{SOURCE1} %{pkg_name}.cabal
%build
%ghc_lib_build
++++++ optics-core-0.4.1.tar.gz -> optics-core-0.4.1.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/optics-core-0.4.1/CHANGELOG.md new/optics-core-0.4.1.1/CHANGELOG.md
--- old/optics-core-0.4.1/CHANGELOG.md 2001-09-09 03:46:40.000000000 +0200
+++ new/optics-core-0.4.1.1/CHANGELOG.md 2001-09-09 03:46:40.000000000 +0200
@@ -1,3 +1,6 @@
+# optics-core-0.4.1.1 (2023-06-22)
+* Add INLINE pragmas to small functions that really should inline
+
# optics-core-0.4.1 (2022-03-22)
* Add support for GHC-9.2
* Add `is` ([#410](https://github.com/well-typed/optics/pull/410))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/optics-core-0.4.1/optics-core.cabal new/optics-core-0.4.1.1/optics-core.cabal
--- old/optics-core-0.4.1/optics-core.cabal 2001-09-09 03:46:40.000000000 +0200
+++ new/optics-core-0.4.1.1/optics-core.cabal 2001-09-09 03:46:40.000000000 +0200
@@ -1,13 +1,13 @@
cabal-version: 2.2
name: optics-core
-version: 0.4.1
+version: 0.4.1.1
license: BSD-3-Clause
license-file: LICENSE
build-type: Simple
maintainer: optics(a)well-typed.com
author: Adam Gundry, Andres L��h, Andrzej Rybczak, Oleg Grenrus
tested-with: GHC ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.7
- || ==9.0.2 || ==9.2.2, GHCJS ==8.4
+ || ==9.0.2 || ==9.2.8 || ==9.4.5 || ==9.6.2, GHCJS ==8.4
synopsis: Optics as an abstract interface: core definitions
category: Data, Optics, Lenses
description:
@@ -75,7 +75,7 @@
, array >= 0.5.2.0 && <0.6
, containers >= 0.5.10.2 && <0.7
, indexed-profunctors >= 0.1 && <0.2
- , transformers >= 0.5 && <0.6
+ , transformers >= 0.5 && <0.7
, indexed-traversable >= 0.1 && <0.2
exposed-modules: Optics.Core
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/optics-core-0.4.1/src/Optics/Internal/Optic/TypeLevel.hs new/optics-core-0.4.1.1/src/Optics/Internal/Optic/TypeLevel.hs
--- old/optics-core-0.4.1/src/Optics/Internal/Optic/TypeLevel.hs 2001-09-09 03:46:40.000000000 +0200
+++ new/optics-core-0.4.1.1/src/Optics/Internal/Optic/TypeLevel.hs 2001-09-09 03:46:40.000000000 +0200
@@ -111,12 +111,12 @@
class AppendIndices xs ys ks | xs ys -> ks where
appendIndices :: IxEq i (Curry xs (Curry ys i)) (Curry ks i)
--- | If the second list is empty, we can shortcircuit and pick the first list
--- immediately.
-instance {-# INCOHERENT #-} AppendIndices xs '[] xs where
+-- | If the second list is empty, we can pick the first list
+-- even if nothing is known about it.
+instance {-# INCOHERENT #-} xs ~ zs => AppendIndices xs '[] zs where
appendIndices = IxEq
-instance AppendIndices '[] ys ys where
+instance ys ~ zs => AppendIndices '[] ys zs where
appendIndices = IxEq
instance AppendIndices xs ys ks => AppendIndices (x ': xs) ys (x ': ks) where
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/optics-core-0.4.1/src/Optics/Internal/Optic.hs new/optics-core-0.4.1.1/src/Optics/Internal/Optic.hs
--- old/optics-core-0.4.1/src/Optics/Internal/Optic.hs 2001-09-09 03:46:40.000000000 +0200
+++ new/optics-core-0.4.1.1/src/Optics/Internal/Optic.hs 2001-09-09 03:46:40.000000000 +0200
@@ -106,6 +106,7 @@
. Optic_ srcKind p i (Curry is i) s t a b
-> Optic_ destKind p i (Curry is i) s t a b
cast x = implies @srcKind @destKind @p x
+{-# INLINE castOptic #-}
-- | Compose two optics of compatible flavours.
--
@@ -128,6 +129,7 @@
m :: forall p i. (Profunctor p, Constraints m p)
=> Optic__ p i (Curry ks i) s t a b
m | IxEq <- appendIndices @is @js @ks @i = km . lm
+{-# INLINE (%) #-}
-- | Compose two optics of the same flavour.
--
@@ -144,6 +146,7 @@
oo :: forall p i. (Profunctor p, Constraints k p)
=> Optic__ p i (Curry ks i) s t a b
oo | IxEq <- appendIndices @is @js @ks @i = o . o'
+{-# INLINE (%%) #-}
-- | Flipped function application, specialised to optics and binding tightly.
--
@@ -157,6 +160,7 @@
-> (Optic k is s t a b -> Optic l js s' t' a' b')
-> Optic l js s' t' a' b'
(%&) = (&)
+{-# INLINE (%&) #-}
-- $setup
-- >>> import Optics.Core
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/optics-core-0.4.1/src/Optics/Iso.hs new/optics-core-0.4.1.1/src/Optics/Iso.hs
--- old/optics-core-0.4.1/src/Optics/Iso.hs 2001-09-09 03:46:40.000000000 +0200
+++ new/optics-core-0.4.1.1/src/Optics/Iso.hs 2001-09-09 03:46:40.000000000 +0200
@@ -50,8 +50,8 @@
-- | The functions translating back and forth must be mutually inverse:
--
-- @
- -- 'Optics.Getter.view' i . 'Optics.Getter.review' i ��� 'id'
- -- 'Optics.Getter.review' i . 'Optics.Getter.view' i ��� 'id'
+ -- 'Optics.Getter.view' i . 'Optics.Review.review' i ��� 'id'
+ -- 'Optics.Review.review' i . 'Optics.Getter.view' i ��� 'id'
-- @
-- * Additional introduction forms
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package ghc-indexed-profunctors for openSUSE:Factory checked in at 2023-06-30 19:58:51
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ghc-indexed-profunctors (Old)
and /work/SRC/openSUSE:Factory/.ghc-indexed-profunctors.new.13546 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ghc-indexed-profunctors"
Fri Jun 30 19:58:51 2023 rev:6 rq:1096038 version:0.1.1.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/ghc-indexed-profunctors/ghc-indexed-profunctors.changes 2023-04-04 21:21:05.377424377 +0200
+++ /work/SRC/openSUSE:Factory/.ghc-indexed-profunctors.new.13546/ghc-indexed-profunctors.changes 2023-06-30 19:59:11.577757925 +0200
@@ -1,0 +2,7 @@
+Thu Jun 22 21:12:45 UTC 2023 - Peter Simons <psimons(a)suse.com>
+
+- Update indexed-profunctors to version 0.1.1.1.
+ # indexed-profunctors-0.1.1.1 (2023-06-22)
+ * Add INLINE pragmas to small functions that really should inline
+
+-------------------------------------------------------------------
Old:
----
indexed-profunctors-0.1.1.tar.gz
New:
----
indexed-profunctors-0.1.1.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ghc-indexed-profunctors.spec ++++++
--- /var/tmp/diff_new_pack.yTicch/_old 2023-06-30 19:59:12.093760994 +0200
+++ /var/tmp/diff_new_pack.yTicch/_new 2023-06-30 19:59:12.097761018 +0200
@@ -19,7 +19,7 @@
%global pkg_name indexed-profunctors
%global pkgver %{pkg_name}-%{version}
Name: ghc-%{pkg_name}
-Version: 0.1.1
+Version: 0.1.1.1
Release: 0
Summary: Utilities for indexed profunctors
License: BSD-3-Clause
++++++ indexed-profunctors-0.1.1.tar.gz -> indexed-profunctors-0.1.1.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/indexed-profunctors-0.1.1/CHANGELOG.md new/indexed-profunctors-0.1.1.1/CHANGELOG.md
--- old/indexed-profunctors-0.1.1/CHANGELOG.md 2001-09-09 03:46:40.000000000 +0200
+++ new/indexed-profunctors-0.1.1.1/CHANGELOG.md 2001-09-09 03:46:40.000000000 +0200
@@ -1,3 +1,6 @@
+# indexed-profunctors-0.1.1.1 (2023-06-22)
+* Add INLINE pragmas to small functions that really should inline
+
# indexed-profunctors-0.1.1 (2021-04-09)
* Remove unnecessary INLINE pragmas
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/indexed-profunctors-0.1.1/indexed-profunctors.cabal new/indexed-profunctors-0.1.1.1/indexed-profunctors.cabal
--- old/indexed-profunctors-0.1.1/indexed-profunctors.cabal 2001-09-09 03:46:40.000000000 +0200
+++ new/indexed-profunctors-0.1.1.1/indexed-profunctors.cabal 2001-09-09 03:46:40.000000000 +0200
@@ -1,12 +1,13 @@
+cabal-version: 2.2
name: indexed-profunctors
-version: 0.1.1
-license: BSD3
+version: 0.1.1.1
+license: BSD-3-Clause
license-file: LICENSE
build-type: Simple
-cabal-version: 1.24
maintainer: optics(a)well-typed.com
author: Adam Gundry, Andres L��h, Andrzej Rybczak, Oleg Grenrus
-tested-with: GHC ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.4 || ==9.0.1, GHCJS ==8.4
+tested-with: GHC ==8.2.2 || ==8.4.4 || ==8.6.5 || ==8.8.4 || ==8.10.7
+ || ==9.0.2 || ==9.2.8 || ==9.4.5 || ==9.6.2, GHCJS ==8.4
synopsis: Utilities for indexed profunctors
category: Data, Optics, Lenses, Profunctors
description:
@@ -23,10 +24,40 @@
location: https://github.com/well-typed/optics.git
subdir: indexed-profunctors
+common language
+ ghc-options: -Wall -Wcompat
+
+ default-language: Haskell2010
+
+ default-extensions: BangPatterns
+ ConstraintKinds
+ DefaultSignatures
+ DeriveFoldable
+ DeriveFunctor
+ DeriveGeneric
+ DeriveTraversable
+ EmptyCase
+ FlexibleContexts
+ FlexibleInstances
+ FunctionalDependencies
+ GADTs
+ GeneralizedNewtypeDeriving
+ InstanceSigs
+ KindSignatures
+ LambdaCase
+ OverloadedLabels
+ PatternSynonyms
+ RankNTypes
+ ScopedTypeVariables
+ TupleSections
+ TypeApplications
+ TypeFamilies
+ TypeOperators
+ ViewPatterns
+
library
- default-language: Haskell2010
+ import: language
hs-source-dirs: src
- ghc-options: -Wall
build-depends: base >= 4.10 && <5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/indexed-profunctors-0.1.1/src/Data/Profunctor/Indexed.hs new/indexed-profunctors-0.1.1.1/src/Data/Profunctor/Indexed.hs
--- old/indexed-profunctors-0.1.1/src/Data/Profunctor/Indexed.hs 2001-09-09 03:46:40.000000000 +0200
+++ new/indexed-profunctors-0.1.1.1/src/Data/Profunctor/Indexed.hs 2001-09-09 03:46:40.000000000 +0200
@@ -1,10 +1,4 @@
-{-# LANGUAGE DefaultSignatures #-}
-{-# LANGUAGE DeriveFunctor #-}
-{-# LANGUAGE RankNTypes #-}
-{-# LANGUAGE ScopedTypeVariables #-}
-{-# LANGUAGE TupleSections #-}
{-# OPTIONS_HADDOCK not-home #-}
-
-- | Definitions of concrete profunctors and profunctor classes.
module Data.Profunctor.Indexed
(
@@ -667,6 +661,7 @@
(#.) :: Coercible b c => (b -> c) -> (a -> b) -> (a -> c)
(#.) _f = coerce
infixl 8 .#
+{-# INLINE (.#) #-}
-- | Composition operator where the second argument must be an
-- identity function up to representational equivalence (e.g. a
@@ -674,3 +669,4 @@
(.#) :: Coercible a b => (b -> c) -> (a -> b) -> (a -> c)
(.#) f _g = coerce f
infixr 9 #.
+{-# INLINE (#.) #-}
1
0