openSUSE Commits
Threads by month
- ----- 2024 -----
- 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
September 2024
- 2 participants
- 1277 discussions
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package stockfish for openSUSE:Factory checked in at 2024-09-12 16:56:16
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/stockfish (Old)
and /work/SRC/openSUSE:Factory/.stockfish.new.17570 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "stockfish"
Thu Sep 12 16:56:16 2024 rev:15 rq:1200136 version:17
Changes:
--------
--- /work/SRC/openSUSE:Factory/stockfish/stockfish.changes 2024-02-26 19:47:54.255360498 +0100
+++ /work/SRC/openSUSE:Factory/.stockfish.new.17570/stockfish.changes 2024-09-12 16:57:21.579355567 +0200
@@ -1,0 +2,19 @@
+Mon Sep 9 06:09:08 UTC 2024 - Michael Vetter <mvetter(a)suse.com>
+
+- Update to 17:
+ * Improved engine lines
+ This release introduces principal variations (PVs) that are more
+ informative for mate and decisive table base (TB) scores. In both
+ cases, the PV will contain all moves up to checkmate. For mate scores,
+ the PV shown is the best variation known to the engine at that point,
+ while for table base wins, it follows, based on the TB, a sequence of
+ moves that preserves the game outcome to checkmate.
+ * NUMA performance optimization
+ For high-end computers with multiple CPUs (typically a dual-socket
+ architecture with 100+ cores), this release automatically improves
+ performance with a NumaPolicy setting that optimizes non-uniform memory
+ access (NUMA). Although typical consumer hardware will not benefit,
+ speedups of up to 2.8x have been measured.
+- Update date.pach, stockfish-remove-net.patch
+
+-------------------------------------------------------------------
Old:
----
Stockfish-sf_16.1.tar.gz
nn-b1a57edbea57.nnue
nn-baff1ede1f90.nnue
New:
----
Stockfish-sf_17.tar.gz
nn-1111cefa1111.nnue
nn-37f18f62d772.nnue
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ stockfish.spec ++++++
--- /var/tmp/diff_new_pack.lQ801w/_old 2024-09-12 16:57:24.175463571 +0200
+++ /var/tmp/diff_new_pack.lQ801w/_new 2024-09-12 16:57:24.175463571 +0200
@@ -17,10 +17,10 @@
# See evaluate.h > EvalFileDefaultName
-%define nnuenetS nn-baff1ede1f90.nnue
-%define nnuenetB nn-b1a57edbea57.nnue
+%define nnuenetS nn-37f18f62d772.nnue
+%define nnuenetB nn-1111cefa1111.nnue
Name: stockfish
-Version: 16.1
+Version: 17
Release: 0
Summary: Chess engine
License: GPL-3.0-or-later
++++++ Stockfish-sf_16.1.tar.gz -> Stockfish-sf_17.tar.gz ++++++
++++ 13063 lines of diff (skipped)
++++++ date.patch ++++++
--- /var/tmp/diff_new_pack.lQ801w/_old 2024-09-12 16:57:24.283468064 +0200
+++ /var/tmp/diff_new_pack.lQ801w/_new 2024-09-12 16:57:24.287468231 +0200
@@ -1,15 +1,16 @@
-Index: Stockfish-sf_16.1/src/misc.cpp
+Index: Stockfish-sf_17/src/misc.cpp
===================================================================
---- Stockfish-sf_16.1.orig/src/misc.cpp
-+++ Stockfish-sf_16.1/src/misc.cpp
-@@ -166,14 +166,6 @@ std::string engine_info(bool to_uci) {
+--- Stockfish-sf_17.orig/src/misc.cpp
++++ Stockfish-sf_17/src/misc.cpp
+@@ -131,15 +131,6 @@ std::string engine_info(bool to_uci) {
ss << "-";
#ifdef GIT_DATE
ss << stringify(GIT_DATE);
-#else
- constexpr std::string_view months("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec");
-- std::string month, day, year;
-- std::stringstream date(__DATE__); // From compiler, format is "Sep 21 2008"
+-
+- std::string month, day, year;
+- std::stringstream date(__DATE__); // From compiler, format is "Sep 21 2008"
-
- date >> month >> day >> year;
- ss << year << std::setw(2) << std::setfill('0') << (1 + months.find(month) / 4)
++++++ stockfish-remove-net.patch ++++++
--- /var/tmp/diff_new_pack.lQ801w/_old 2024-09-12 16:57:24.331470061 +0200
+++ /var/tmp/diff_new_pack.lQ801w/_new 2024-09-12 16:57:24.335470228 +0200
@@ -1,8 +1,8 @@
-Index: Stockfish-sf_16.1/src/Makefile
+Index: Stockfish-sf_17/src/Makefile
===================================================================
---- Stockfish-sf_16.1.orig/src/Makefile
-+++ Stockfish-sf_16.1/src/Makefile
-@@ -806,7 +806,6 @@ help:
+--- Stockfish-sf_17.orig/src/Makefile
++++ Stockfish-sf_17/src/Makefile
+@@ -801,7 +801,6 @@ help:
@echo "help > Display architecture details"
@echo "profile-build > standard build with profile-guided optimization"
@echo "build > skip profile-guided optimization"
@@ -10,7 +10,7 @@
@echo "strip > Strip executable"
@echo "install > Install executable"
@echo "clean > Clean up"
-@@ -867,20 +866,20 @@ ifneq ($(SUPPORTED_ARCH), true)
+@@ -862,20 +861,20 @@ ifneq ($(SUPPORTED_ARCH), true)
endif
@@ -35,7 +35,7 @@
@echo ""
@echo "Step 1/4. Building instrumented executable ..."
$(MAKE) ARCH=$(ARCH) COMP=$(COMP) $(profile_make)
-@@ -922,44 +921,6 @@ profileclean:
+@@ -917,44 +916,6 @@ profileclean:
@rm -f stockfish.res
@rm -f ./-lstdc++.res
@@ -80,7 +80,7 @@
# set up shell variables for the net stuff
define netvariables
$(eval nnuenet := $(shell grep $(1) evaluate.h | grep define | sed 's/.*\(nn-[a-z0-9]\{12\}.nnue\).*/\1/'))
-@@ -989,7 +950,7 @@ default:
+@@ -984,7 +945,7 @@ default:
all: $(EXE) .depend
@@ -89,7 +89,7 @@
@echo ""
@echo "Config:"
@echo "debug: '$(debug)'"
-@@ -1098,6 +1059,6 @@ icx-profile-use:
+@@ -1093,6 +1054,6 @@ icx-profile-use:
.depend: $(SRCS)
-@$(CXX) $(DEPENDFLAGS) -MM $(SRCS) > $@ 2> /dev/null
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package element-desktop for openSUSE:Factory checked in at 2024-09-12 16:56:14
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/element-desktop (Old)
and /work/SRC/openSUSE:Factory/.element-desktop.new.17570 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "element-desktop"
Thu Sep 12 16:56:14 2024 rev:65 rq:1200139 version:1.11.77
Changes:
--------
--- /work/SRC/openSUSE:Factory/element-desktop/element-desktop.changes 2024-09-06 17:19:27.754178936 +0200
+++ /work/SRC/openSUSE:Factory/.element-desktop.new.17570/element-desktop.changes 2024-09-12 16:57:04.162630994 +0200
@@ -1,0 +2,37 @@
+Wed Sep 11 10:58:18 UTC 2024 - Dominik Heidler <dheidler(a)suse.com>
+
+- Version 1.11.77
+ ## Licensing
+
+ matrix-react-sdk is being forked by Element at https://github.com/element-hq/matrix-react-sdk. Contributions are licensed to Element under a CLA and made available under an AGPLv3.0 or GPLv3.0 license at your choice.
+
+ You can read more about this here:
+ https://matrix.org/blog/2024/08/heart-of-matrix/
+ https://element.io/blog/sustainable-licensing-at-element-with-agpl/
+
+ The Matrix.org Foundation copy of the project will be archived. We don't expect any changes are needed by system administrators. Any updates will be communicated via our usual announcements channels and we are striving to make this as seamless as possible.
+
+ ## ✨ Features
+
+ * Add docs for widget container height option (https://github.com/element-hq/element-web/pull/27922) Contributed by @dbkr.
+ * Allow user to set timezone (https://github.com/matrix-org/matrix-react-sdk/pull/12775) Contributed by @Timshel.
+ * Implement download\_file in widget driver (https://github.com/matrix-org/matrix-react-sdk/pull/12931) Contributed by @weeman1337.
+ * Sort the pinning message list in the same order than the banner. By timeline order. (https://github.com/matrix-org/matrix-react-sdk/pull/12937) Contributed by @florianduros.
+ * Display pinned messages on a banner at the top of a room (https://github.com/matrix-org/matrix-react-sdk/pull/12917) Contributed by @florianduros.
+ * Add a config option to control the default widget container height (https://github.com/matrix-org/matrix-react-sdk/pull/12893) Contributed by @dbkr.
+ * RTE drafts (https://github.com/matrix-org/matrix-react-sdk/pull/12674) Contributed by @langleyd.
+ * Add thread information in pinned message list (https://github.com/matrix-org/matrix-react-sdk/pull/12902) Contributed by @florianduros.
+ * Add Pin/Unpin action in quick access of the message action bar (https://github.com/matrix-org/matrix-react-sdk/pull/12897) Contributed by @florianduros.
+
+ ## 🐛 Bug Fixes
+
+ * Fix read receipt animation (https://github.com/matrix-org/matrix-react-sdk/pull/12923) Contributed by @dbkr.
+ * Display the indicator even with one message in pinned message banner (https://github.com/matrix-org/matrix-react-sdk/pull/12946) Contributed by @florianduros.
+ * Always display last pinned message on the banner (https://github.com/matrix-org/matrix-react-sdk/pull/12945) Contributed by @florianduros.
+ * The pinned message banner or list are triggering 🎉 effect. (https://github.com/matrix-org/matrix-react-sdk/pull/12944) Contributed by @florianduros.
+ * Fix reply message truncation on 2 lines (https://github.com/matrix-org/matrix-react-sdk/pull/12929) Contributed by @florianduros.
+ * Fix pin/unpin slowness and non refresh from the message action bar (https://github.com/matrix-org/matrix-react-sdk/pull/12934) Contributed by @florianduros.
+ * Ignore desktop for minimum browser support. (https://github.com/matrix-org/matrix-react-sdk/pull/12928) Contributed by @florianduros.
+
+
+-------------------------------------------------------------------
Old:
----
element-desktop-1.11.76.tar.gz
New:
----
element-desktop-1.11.77.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ element-desktop.spec ++++++
--- /var/tmp/diff_new_pack.q1toIF/_old 2024-09-12 16:57:10.954913568 +0200
+++ /var/tmp/diff_new_pack.q1toIF/_new 2024-09-12 16:57:10.954913568 +0200
@@ -17,7 +17,7 @@
Name: element-desktop
-Version: 1.11.76
+Version: 1.11.77
Release: 0
Summary: A glossy Matrix collaboration client - desktop
License: Apache-2.0
++++++ element-desktop-1.11.76.tar.gz -> element-desktop-1.11.77.tar.gz ++++++
++++ 2107 lines of diff (skipped)
++++++ vendor.tar.zst ++++++
/work/SRC/openSUSE:Factory/element-desktop/vendor.tar.zst /work/SRC/openSUSE:Factory/.element-desktop.new.17570/vendor.tar.zst differ: char 8, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package element-web for openSUSE:Factory checked in at 2024-09-12 16:56:13
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/element-web (Old)
and /work/SRC/openSUSE:Factory/.element-web.new.17570 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "element-web"
Thu Sep 12 16:56:13 2024 rev:63 rq:1200138 version:1.11.77
Changes:
--------
--- /work/SRC/openSUSE:Factory/element-web/element-web.changes 2024-09-06 17:19:25.122069560 +0200
+++ /work/SRC/openSUSE:Factory/.element-web.new.17570/element-web.changes 2024-09-12 16:56:18.048712556 +0200
@@ -1,0 +2,26 @@
+Wed Sep 11 09:49:48 UTC 2024 - Dominik Heidler <dheidler(a)suse.de>
+
+- Version 1.11.77
+ ## ✨ Features
+
+ * Add docs for widget container height option (https://github.com/element-hq/element-web/pull/27922) Contributed by @dbkr.
+ * Allow user to set timezone (https://github.com/matrix-org/matrix-react-sdk/pull/12775) Contributed by @Timshel.
+ * Implement download\_file in widget driver (https://github.com/matrix-org/matrix-react-sdk/pull/12931) Contributed by @weeman1337.
+ * Sort the pinning message list in the same order than the banner. By timeline order. (https://github.com/matrix-org/matrix-react-sdk/pull/12937) Contributed by @florianduros.
+ * Display pinned messages on a banner at the top of a room (https://github.com/matrix-org/matrix-react-sdk/pull/12917) Contributed by @florianduros.
+ * Add a config option to control the default widget container height (https://github.com/matrix-org/matrix-react-sdk/pull/12893) Contributed by @dbkr.
+ * RTE drafts (https://github.com/matrix-org/matrix-react-sdk/pull/12674) Contributed by @langleyd.
+ * Add thread information in pinned message list (https://github.com/matrix-org/matrix-react-sdk/pull/12902) Contributed by @florianduros.
+ * Add Pin/Unpin action in quick access of the message action bar (https://github.com/matrix-org/matrix-react-sdk/pull/12897) Contributed by @florianduros.
+
+ ## 🐛 Bug Fixes
+
+ * Fix read receipt animation (https://github.com/matrix-org/matrix-react-sdk/pull/12923) Contributed by @dbkr.
+ * Display the indicator even with one message in pinned message banner (https://github.com/matrix-org/matrix-react-sdk/pull/12946) Contributed by @florianduros.
+ * Always display last pinned message on the banner (https://github.com/matrix-org/matrix-react-sdk/pull/12945) Contributed by @florianduros.
+ * The pinned message banner or list are triggering 🎉 effect. (https://github.com/matrix-org/matrix-react-sdk/pull/12944) Contributed by @florianduros.
+ * Fix reply message truncation on 2 lines (https://github.com/matrix-org/matrix-react-sdk/pull/12929) Contributed by @florianduros.
+ * Fix pin/unpin slowness and non refresh from the message action bar (https://github.com/matrix-org/matrix-react-sdk/pull/12934) Contributed by @florianduros.
+ * Ignore desktop for minimum browser support. (https://github.com/matrix-org/matrix-react-sdk/pull/12928) Contributed by @florianduros.
+
+-------------------------------------------------------------------
Old:
----
element-web-1.11.76.tar.gz
New:
----
element-web-1.11.77.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ element-web.spec ++++++
--- /var/tmp/diff_new_pack.Esr2P3/_old 2024-09-12 16:57:03.622608528 +0200
+++ /var/tmp/diff_new_pack.Esr2P3/_new 2024-09-12 16:57:03.626608695 +0200
@@ -17,7 +17,7 @@
Name: element-web
-Version: 1.11.76
+Version: 1.11.77
Release: 0
Summary: A glossy Matrix collaboration client - web files
License: Apache-2.0
++++++ element-web-1.11.76.tar.gz -> element-web-1.11.77.tar.gz ++++++
++++ 1766 lines of diff (skipped)
++++++ npm-packages-offline-cache.tar.gz ++++++
/work/SRC/openSUSE:Factory/element-web/npm-packages-offline-cache.tar.gz /work/SRC/openSUSE:Factory/.element-web.new.17570/npm-packages-offline-cache.tar.gz differ: char 15, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package chromium for openSUSE:Factory checked in at 2024-09-12 16:54:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/chromium (Old)
and /work/SRC/openSUSE:Factory/.chromium.new.17570 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "chromium"
Thu Sep 12 16:54:08 2024 rev:430 rq:1200106 version:128.0.6613.137
Changes:
--------
--- /work/SRC/openSUSE:Factory/chromium/chromium.changes 2024-09-04 13:25:29.467943486 +0200
+++ /work/SRC/openSUSE:Factory/.chromium.new.17570/chromium.changes 2024-09-12 16:55:54.207720719 +0200
@@ -1,0 +2,9 @@
+Wed Sep 11 12:07:53 CEST 2024 - ro(a)suse.de
+
+- Chromium 128.0.6613.137 (released 2024-09-10) (boo#1230391)
+ * CVE-2024-8636: Heap buffer overflow in Skia
+ * CVE-2024-8637: Use after free in Media Router
+ * CVE-2024-8638: Type Confusion in V8
+ * CVE-2024-8639: Use after free in Autofill
+
+-------------------------------------------------------------------
Old:
----
chromium-128.0.6613.119.tar.xz
New:
----
chromium-128.0.6613.137.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ chromium.spec ++++++
--- /var/tmp/diff_new_pack.5bXmse/_old 2024-09-12 16:56:12.704490225 +0200
+++ /var/tmp/diff_new_pack.5bXmse/_new 2024-09-12 16:56:12.708490391 +0200
@@ -96,7 +96,7 @@
%define n_suffix %{nil}
%endif
Name: chromium%{n_suffix}
-Version: 128.0.6613.119
+Version: 128.0.6613.137
Release: 0
Summary: Google's open source browser project
License: BSD-3-Clause AND LGPL-2.1-or-later
++++++ chromium-128.0.6613.119.tar.xz -> chromium-128.0.6613.137.tar.xz ++++++
/work/SRC/openSUSE:Factory/chromium/chromium-128.0.6613.119.tar.xz /work/SRC/openSUSE:Factory/.chromium.new.17570/chromium-128.0.6613.137.tar.xz differ: char 15, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package selinux-policy for openSUSE:Factory checked in at 2024-09-12 16:54:06
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/selinux-policy (Old)
and /work/SRC/openSUSE:Factory/.selinux-policy.new.17570 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "selinux-policy"
Thu Sep 12 16:54:06 2024 rev:79 rq:1200261 version:20240912
Changes:
--------
--- /work/SRC/openSUSE:Factory/selinux-policy/selinux-policy.changes 2024-09-10 21:12:23.883949470 +0200
+++ /work/SRC/openSUSE:Factory/.selinux-policy.new.17570/selinux-policy.changes 2024-09-12 16:54:16.791668002 +0200
@@ -1,0 +2,16 @@
+Thu Sep 12 07:34:20 UTC 2024 - cathy.hu(a)suse.com
+
+- Update to version 20240912:
+ * Allow systemd_ibft_rule_generator_t to create udev_rules_t dirs (bsc#1230011)
+ * Allow systemd_udev_trigger_generator_t list and read sysctls (bsc#1230315)
+ * Initial policy for udev-trigger-generator (bsc#1230315)
+
+-------------------------------------------------------------------
+Tue Sep 10 13:33:53 UTC 2024 - cathy.hu(a)suse.com
+
+- Update to version 20240910:
+ * Allow init_t mount syslog socket (bsc#1230134)
+ * Allow init_t create syslog files (bsc#1230134)
+ * Introduce initial policy for btrfs-soft-reboot-generator (bsc#1230134)
+
+-------------------------------------------------------------------
Old:
----
selinux-policy-20240905.tar.xz
New:
----
selinux-policy-20240912.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ selinux-policy.spec ++++++
--- /var/tmp/diff_new_pack.VrvO9j/_old 2024-09-12 16:54:17.623702616 +0200
+++ /var/tmp/diff_new_pack.VrvO9j/_new 2024-09-12 16:54:17.623702616 +0200
@@ -36,7 +36,7 @@
License: GPL-2.0-or-later
Group: System/Management
Name: selinux-policy
-Version: 20240905
+Version: 20240912
Release: 0
Source0: %{name}-%{version}.tar.xz
Source1: container.fc
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.VrvO9j/_old 2024-09-12 16:54:17.699705778 +0200
+++ /var/tmp/diff_new_pack.VrvO9j/_new 2024-09-12 16:54:17.703705945 +0200
@@ -1,7 +1,7 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://gitlab.suse.de/selinux/selinux-policy.git</param>
- <param name="changesrevision">48af429a1e0c001269e8f1e0cf4f677e74cfce46</param></service><service name="tar_scm">
+ <param name="changesrevision">f8d70ad2b8a5d2628cd1ee881ccedbcebf189d3d</param></service><service name="tar_scm">
<param name="url">https://github.com/containers/container-selinux.git</param>
<param name="changesrevision">07b3034f6d9625ab84508a2f46515d8ff79b4204</param></service><service name="tar_scm">
<param name="url">https://gitlab.suse.de/jsegitz/selinux-policy.git</param>
++++++ selinux-policy-20240905.tar.xz -> selinux-policy-20240912.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-policy-20240905/policy/modules/system/init.te new/selinux-policy-20240912/policy/modules/system/init.te
--- old/selinux-policy-20240905/policy/modules/system/init.te 2024-09-05 16:10:07.000000000 +0200
+++ new/selinux-policy-20240912/policy/modules/system/init.te 2024-09-12 09:33:00.000000000 +0200
@@ -397,6 +397,7 @@
libs_rw_ld_so_cache(init_t)
logging_create_devlog_dev(init_t)
+logging_create_journal_files(init_t)
logging_send_syslog_msg(init_t)
logging_send_audit_msgs(init_t)
logging_manage_generic_logs(init_t)
@@ -404,6 +405,7 @@
logging_relabel_devlog_dev(init_t)
logging_manage_audit_config(init_t)
logging_create_syslog_netlink_audit_socket(init_t)
+logging_mounton_syslog_pid_socket(init_t)
logging_write_var_log_dirs(init_t)
logging_manage_var_log_symlinks(init_t)
logging_dgram_accept(init_t)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-policy-20240905/policy/modules/system/logging.if new/selinux-policy-20240912/policy/modules/system/logging.if
--- old/selinux-policy-20240905/policy/modules/system/logging.if 2024-09-05 16:10:07.000000000 +0200
+++ new/selinux-policy-20240912/policy/modules/system/logging.if 2024-09-12 09:33:00.000000000 +0200
@@ -739,6 +739,24 @@
########################################
## <summary>
+## Use the syslog pid sock_file as mount point.
+## </summary>
+## <param name="domain">
+## <summary>
+## Domain allowed access.
+## </summary>
+## </param>
+#
+interface(`logging_mounton_syslog_pid_socket',`
+ gen_require(`
+ type syslogd_var_run_t;
+ ')
+
+ allow $1 syslogd_var_run_t:sock_file mounton;
+')
+
+########################################
+## <summary>
## Relabel the syslog pid sock_file.
## </summary>
## <param name="domain">
@@ -1790,6 +1808,24 @@
')
#######################################
+## <summary>
+## Create files in /run/log/journal/ directory.
+## </summary>
+## <param name="domain">
+## <summary>
+## Domain allowed access.
+## </summary>
+## </param>
+#
+interface(`logging_create_journal_files',`
+ gen_require(`
+ type syslogd_var_run_t;
+ ')
+
+ allow $1 syslogd_var_run_t:file { create };
+')
+
+#######################################
## <summary>
## Map files in /run/log/journal/ directory.
## </summary>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-policy-20240905/policy/modules/system/systemd.fc new/selinux-policy-20240912/policy/modules/system/systemd.fc
--- old/selinux-policy-20240905/policy/modules/system/systemd.fc 2024-09-05 16:10:07.000000000 +0200
+++ new/selinux-policy-20240912/policy/modules/system/systemd.fc 2024-09-12 09:33:00.000000000 +0200
@@ -78,6 +78,7 @@
/usr/lib/systemd/systemd-modules-load -- gen_context(system_u:object_r:systemd_modules_load_exec_t,s0)
/usr/lib/systemd/systemd-network-generator -- gen_context(system_u:object_r:systemd_network_generator_exec_t,s0)
+/usr/lib/systemd/system-generators/btrfs-soft-reboot-generator -- gen_context(system_u:object_r:systemd_btrfs_soft_reboot_generator_exec_t,s0)
/usr/lib/systemd/system-generators/growpart-generator.sh -- gen_context(system_u:object_r:systemd_growpart_generator_exec_t,s0)
/usr/lib/systemd/system-generators/ibft-rule-generator -- gen_context(system_u:object_r:systemd_ibft_rule_generator_exec_t,s0)
/usr/lib/systemd/system-generators/systemd-bless-boot-generator -- gen_context(system_u:object_r:systemd_bless_boot_generator_exec_t,s0)
@@ -91,6 +92,7 @@
/usr/lib/systemd/system-generators/status-mail-generator.sh -- gen_context(system_u:object_r:systemd_status_mail_generator_exec_t,s0)
/usr/lib/systemd/system-generators/systemd-sysv-generator -- gen_context(system_u:object_r:systemd_sysv_generator_exec_t,s0)
/usr/lib/systemd/system-generators/systemd-tpm2-generator -- gen_context(system_u:object_r:systemd_tpm2_generator_exec_t,s0)
+/usr/lib/systemd/system-generators/udev-trigger-generator -- gen_context(system_u:object_r:systemd_udev_trigger_generator_exec_t,s0)
/usr/lib/systemd/system-generators/zram-generator -- gen_context(system_u:object_r:systemd_zram_generator_exec_t,s0)
/usr/lib/systemd/system-generators/.+ -- gen_context(system_u:object_r:systemd_generic_generator_exec_t,s0)
/usr/lib/systemd/zram-generator.conf -- gen_context(system_u:object_r:systemd_zram_generator_conf_t,s0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-policy-20240905/policy/modules/system/systemd.te new/selinux-policy-20240912/policy/modules/system/systemd.te
--- old/selinux-policy-20240905/policy/modules/system/systemd.te 2024-09-05 16:10:07.000000000 +0200
+++ new/selinux-policy-20240912/policy/modules/system/systemd.te 2024-09-12 09:33:00.000000000 +0200
@@ -195,6 +195,8 @@
### domains and file types for systemd generators
# bless-boot-generator
systemd_generator_template(systemd_bless_boot_generator)
+# btrfs-soft-reboot-generator
+systemd_generator_template(systemd_btrfs_soft_reboot_generator)
# cryptsetup-generator
systemd_generator_template(systemd_cryptsetup_generator)
# debug-generator
@@ -219,6 +221,8 @@
systemd_generator_template(systemd_sysv_generator)
# tpm2-generator
systemd_generator_template(systemd_tpm2_generator)
+# udev-trigger-generator
+systemd_generator_template(systemd_udev_trigger_generator)
# zram-generator
systemd_generator_template(systemd_zram_generator)
type systemd_zram_generator_conf_t;
@@ -1319,6 +1323,11 @@
### bless-boot generator
fs_read_efivarfs_files(systemd_bless_boot_generator_t)
+### systemd-btrfs-soft-reboot generator
+mount_read_pid_files(systemd_btrfs_soft_reboot_generator_t)
+
+permissive systemd_btrfs_soft_reboot_generator_t;
+
### cryptsetup generator
manage_dirs_pattern(systemd_cryptsetup_generator_t, systemd_fstab_generator_unit_file_t, systemd_fstab_generator_unit_file_t)
manage_files_pattern(systemd_cryptsetup_generator_t, systemd_fstab_generator_unit_file_t, systemd_fstab_generator_unit_file_t)
@@ -1406,7 +1415,9 @@
### ibft-rule-generator (from open-iscsi package)
corecmd_exec_bin(systemd_ibft_rule_generator_t)
+udev_create_rules_dir(systemd_ibft_rule_generator_t)
udev_manage_rules_files(systemd_ibft_rule_generator_t)
+udev_named_filetrans_runtime_generated_rules(systemd_ibft_rule_generator_t)
optional_policy(`
# ignore #!/bin/bash reading passwd file
@@ -1448,6 +1459,19 @@
### tpm2 generator
dev_list_sysfs(systemd_tpm2_generator_t)
+### udev trigger generator
+corecmd_exec_bin(systemd_udev_trigger_generator_t)
+
+dev_list_sysfs(systemd_udev_trigger_generator_t)
+dev_read_sysfs(systemd_udev_trigger_generator_t)
+
+optional_policy(`
+ # ignore #!/bin/bash reading passwd file
+ auth_dontaudit_read_passwd_file(systemd_udev_trigger_generator_t)
+')
+
+permissive systemd_udev_trigger_generator_t;
+
### zram generator
allow systemd_zram_generator_t systemd_fstab_generator_unit_file_t:file write_file_perms;
permissive systemd_zram_generator_t;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/selinux-policy-20240905/policy/modules/system/udev.if new/selinux-policy-20240912/policy/modules/system/udev.if
--- old/selinux-policy-20240905/policy/modules/system/udev.if 2024-09-05 16:10:07.000000000 +0200
+++ new/selinux-policy-20240912/policy/modules/system/udev.if 2024-09-12 09:33:00.000000000 +0200
@@ -172,6 +172,42 @@
########################################
## <summary>
+## Create udev rules directory
+## </summary>
+## <param name="domain">
+## <summary>
+## Domain allowed access.
+## </summary>
+## </param>
+#
+interface(`udev_create_rules_dir',`
+ gen_require(`
+ type udev_rules_t;
+ ')
+
+ allow $1 udev_rules_t:dir create_dir_perms;
+')
+
+########################################
+## <summary>
+## named filetrans from udev_var_run_t to udev_rules_t
+## </summary>
+## <param name="domain">
+## <summary>
+## Domain allowed access.
+## </summary>
+## </param>
+interface(`udev_named_filetrans_runtime_generated_rules',`
+ gen_require(`
+ type udev_rules_t;
+ type udev_var_run_t;
+ ')
+
+ filetrans_pattern($1, udev_var_run_t, udev_rules_t, dir, "rules.d")
+')
+
+########################################
+## <summary>
## Do not audit search of udev database directories.
## </summary>
## <param name="domain">
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package curl for openSUSE:Factory checked in at 2024-09-12 16:54:04
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/curl (Old)
and /work/SRC/openSUSE:Factory/.curl.new.17570 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "curl"
Thu Sep 12 16:54:04 2024 rev:202 rq:1200087 version:8.10.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/curl/curl.changes 2024-08-13 13:22:17.399861424 +0200
+++ /work/SRC/openSUSE:Factory/.curl.new.17570/curl.changes 2024-09-12 16:54:14.103556171 +0200
@@ -1,0 +2,64 @@
+Wed Sep 11 06:36:42 UTC 2024 - Pedro Monreal <pmonreal(a)suse.com>
+
+- Update to version 8.10.0:
+ * Security fixes:
+ - [bsc#1230093, CVE-2024-8096] curl: OCSP stapling bypass with GnuTLS
+ * Changes:
+ - curl: make --rate accept "number of units"
+ - curl: make --show-headers the same as --include
+ - curl: support --dump-header % to direct to stderr
+ - curl: support embedding a CA bundle and --dump-ca-embed
+ - curl: support repeated use of the verbose option; -vv etc
+ - curl: use libuv for parallel transfers with --test-event
+ - vtls: stop offering alpn http/1.1 for http2-prior-knowledge
+ * Bugfixes:
+ - curl: allow 500MB data URL encode strings
+ - curl: warn on unsupported SSL options
+ - Curl_rand_bytes to control env override
+ - curl_sha512_256: fix symbol collisions with nettle library
+ - dist: fix reproducible build from release tarball
+ - http2: fix GOAWAY message sent to server
+ - http2: improve rate limiting of downloads
+ - INSTALL.md: MultiSSL and QUIC are mutually exclusive
+ - lib: add eos flag to send methods
+ - lib: make SSPI global symbols use Curl_ prefix
+ - lib: prefer `CURL_SHA256_DIGEST_LENGTH` over the unprefixed name
+ - lib: remove the final strncpy() calls
+ - lib: remove use of RANDOM_FILE
+ - Makefile.mk: fixup enabling libidn2
+ - max-filesize.md: mention zero disables the limit
+ - mime: avoid inifite loop in client reader
+ - ngtcp2: use NGHTTP3 prefix instead of NGTCP2 for errors in h3 callbacks
+ - openssl quic: fix memory leak
+ - openssl: certinfo errors now fail correctly
+ - openssl: fix the data race when sharing an SSL session between threads
+ - openssl: improve shutdown handling
+ - POP3: fix multi-line responses
+ - pop3: use the protocol handler ->write_resp
+ - progress: ratelimit/progress tweaks
+ - rand: only provide weak random when needed
+ - sectransp: fix setting tls version
+ - setopt: make CURLOPT_TFTP_BLKSIZE accept bad values
+ - sha256: fix symbol collision between nettle (GnuTLS) and OpenSSL
+ - sigpipe: init the struct so that first apply ignores
+ - smb: convert superflous assign into assert
+ - smtp: add tracing feature
+ - spnego_gssapi: implement TLS channel bindings for openssl
+ - src: delete `curlx_m*printf()` aliases
+ - ssh: deduplicate SSH backend includes (and fix libssh cmake unity build)
+ - tool_operhlp: fix "potentially uninitialized local variable 'pc' used"
+ - tool_paramhlp: bump maximum post data size in memory to 16GB
+ - transfer: skip EOS read when download done
+ - url: fix connection reuse for HTTP/2 upgrades
+ - urlapi: verify URL *decoded* hostname when set
+ - urldata: introduce `data->mid`, a unique identifier inside a multi
+ - vtls: add SSLSUPP_CIPHER_LIST
+ - vtls: fix static function name collisions between TLS backends
+ - vtls: init ssl peer only once
+ - websocket: introduce blocking sends
+ - ws: flags to opcodes should ignore CURLWS_CONT flag
+ - x509asn1: raise size limit for x509 certification information
+ * Remove curl-sigpipe.patch upstream
+ * Rebase curl-secure-getenv.patch
+
+-------------------------------------------------------------------
Old:
----
curl-8.9.1.tar.xz
curl-8.9.1.tar.xz.asc
curl-sigpipe.patch
New:
----
curl-8.10.0.tar.xz
curl-8.10.0.tar.xz.asc
BETA DEBUG BEGIN:
Old: - x509asn1: raise size limit for x509 certification information
* Remove curl-sigpipe.patch upstream
* Rebase curl-secure-getenv.patch
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ curl.spec ++++++
--- /var/tmp/diff_new_pack.CQHVTD/_old 2024-09-12 16:54:14.731582298 +0200
+++ /var/tmp/diff_new_pack.CQHVTD/_new 2024-09-12 16:54:14.735582464 +0200
@@ -29,7 +29,7 @@
%endif
Name: curl%{?psuffix}
-Version: 8.9.1
+Version: 8.10.0
Release: 0
Summary: A Tool for Transferring Data from URLs
License: curl
@@ -43,8 +43,6 @@
Patch2: curl-secure-getenv.patch
#PATCH-FIX-OPENSUSE bsc#1076446 protocol redirection not supported or disabled
Patch3: curl-disabled-redirect-protocol-message.patch
-#PATCH-FIX-UPSTREAM sigpipe: init the struct so that first apply ignores
-Patch4: curl-sigpipe.patch
BuildRequires: groff
BuildRequires: libtool
BuildRequires: pkgconfig
@@ -228,7 +226,7 @@
%if !%{with mini}
%files
-%doc README RELEASE-NOTES CHANGES
+%doc README RELEASE-NOTES CHANGES.md
%doc docs/{BUGS.md,FAQ,FEATURES.md,TODO,TheArtOfHttpScripting.md}
%{_bindir}/curl
%{_mandir}/man1/curl.1%{?ext_man}
++++++ curl-8.9.1.tar.xz -> curl-8.10.0.tar.xz ++++++
++++ 110075 lines of diff (skipped)
++++++ curl-secure-getenv.patch ++++++
--- /var/tmp/diff_new_pack.CQHVTD/_old 2024-09-12 16:54:15.763625233 +0200
+++ /var/tmp/diff_new_pack.CQHVTD/_new 2024-09-12 16:54:15.767625400 +0200
@@ -1,7 +1,7 @@
-Index: curl-8.5.0/lib/getenv.c
+Index: curl-8.10.0/lib/getenv.c
===================================================================
---- curl-8.5.0.orig/lib/getenv.c
-+++ curl-8.5.0/lib/getenv.c
+--- curl-8.10.0.orig/lib/getenv.c
++++ curl-8.10.0/lib/getenv.c
@@ -29,6 +29,14 @@
#include "memdebug.h"
@@ -26,17 +26,17 @@
return (env && env[0])?strdup(env):NULL;
#endif
}
-Index: curl-8.5.0/configure.ac
+Index: curl-8.10.0/configure.ac
===================================================================
---- curl-8.5.0.orig/configure.ac
-+++ curl-8.5.0/configure.ac
-@@ -4767,6 +4767,8 @@ if test "x$want_curldebug_assumed" = "xy
+--- curl-8.10.0.orig/configure.ac
++++ curl-8.10.0/configure.ac
+@@ -5213,6 +5213,8 @@ if test "x$want_curldebug_assumed" = "xy
ac_configure_args="$ac_configure_args --enable-curldebug"
fi
+AC_CHECK_FUNCS([__secure_getenv secure_getenv])
+
- AC_CONFIG_FILES([Makefile \
- docs/Makefile \
- docs/examples/Makefile \
+ AC_CONFIG_FILES([\
+ Makefile \
+ docs/Makefile \
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package suse-module-tools for openSUSE:Factory checked in at 2024-09-12 16:54:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/suse-module-tools (Old)
and /work/SRC/openSUSE:Factory/.suse-module-tools.new.17570 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "suse-module-tools"
Thu Sep 12 16:54:02 2024 rev:82 rq:1200081 version:16.0.51
Changes:
--------
--- /work/SRC/openSUSE:Factory/suse-module-tools/suse-module-tools.changes 2024-09-01 19:21:06.887248571 +0200
+++ /work/SRC/openSUSE:Factory/.suse-module-tools.new.17570/suse-module-tools.changes 2024-09-12 16:54:12.643495429 +0200
@@ -1,0 +2,9 @@
+Thu Sep 5 10:01:04 UTC 2024 - Martin Wilck <mwilck(a)suse.com>
+
+- Update to version 16.0.51:
+ * Improve handling of /boot/vmlinuz and /boot/initrd symlinks
+ (boo#1207703)
+ * Add preliminary support for mkosi-initrd
+ * spec file: remove redundant dependency on sdbootutil
+
+-------------------------------------------------------------------
@@ -3,0 +13 @@
+- Update to version 16.0.50:
Old:
----
suse-module-tools-16.0.50.obscpio
New:
----
suse-module-tools-16.0.51.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ suse-module-tools.spec ++++++
--- /var/tmp/diff_new_pack.r4zWe2/_old 2024-09-12 16:54:13.375525883 +0200
+++ /var/tmp/diff_new_pack.r4zWe2/_new 2024-09-12 16:54:13.379526050 +0200
@@ -37,7 +37,7 @@
%global modprobe_conf_rpmsave %(echo "%{modprobe_conf_files}" | sed 's,\\([^ ]*\\),%{_sysconfdir}/modprobe.d/\\1.conf.rpmsave,g')
Name: suse-module-tools
-Version: 16.0.50
+Version: 16.0.51
Release: 0
Summary: Configuration for module loading and SUSE-specific utilities for KMPs
License: GPL-2.0-or-later
@@ -52,7 +52,6 @@
Requires: coreutils
Requires: findutils
Requires: systemd-rpm-macros
-Requires: (sdbootutil if sdbootutil)
Requires: rpm
Requires(post): /usr/bin/grep
Requires(post): /usr/bin/sed
@@ -120,6 +119,8 @@
install -d -m 755 "%{buildroot}/usr/lib/module-init-tools"
install -pm 755 -t "%{buildroot}/usr/lib/module-init-tools/" \
weak-modules2 driver-check.sh unblacklist lsinitrd-quick get_dracut_drivers
+install -pm 755 "dracut-posttrans" "%{buildroot}/usr/lib/module-init-tools/"
+install -pm 755 "mkosi-initrd-posttrans" "%{buildroot}/usr/lib/module-init-tools/"
install -pm 755 "regenerate-initrd-posttrans" "%{buildroot}/usr/lib/module-init-tools/"
install -d -m 755 "%{buildroot}/usr/lib/module-init-tools/kernel-scriptlets"
install -pm 755 "kernel-scriptlets/cert-script" "%{buildroot}/usr/lib/module-init-tools/kernel-scriptlets"
@@ -249,5 +250,7 @@
#
%files scriptlets
/usr/lib/module-init-tools/kernel-scriptlets
+/usr/lib/module-init-tools/dracut-posttrans
+/usr/lib/module-init-tools/mkosi-initrd-posttrans
/usr/lib/module-init-tools/regenerate-initrd-posttrans
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.r4zWe2/_old 2024-09-12 16:54:13.423527880 +0200
+++ /var/tmp/diff_new_pack.r4zWe2/_new 2024-09-12 16:54:13.427528047 +0200
@@ -1,6 +1,6 @@
<servicedata>
<service name="tar_scm">
<param name="url">https://github.com/openSUSE/suse-module-tools.git</param>
- <param name="changesrevision">503d772e6951ef8c268bc14f39b4c8d5f5a90986</param></service></servicedata>
+ <param name="changesrevision">747e2bfce7f245987ff87cea6b80c31ce39dc2fa</param></service></servicedata>
(No newline at EOF)
++++++ suse-module-tools-16.0.50.obscpio -> suse-module-tools-16.0.51.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/suse-module-tools-16.0.50/README.md new/suse-module-tools-16.0.51/README.md
--- old/suse-module-tools-16.0.50/README.md 2024-08-30 15:03:25.000000000 +0200
+++ new/suse-module-tools-16.0.51/README.md 2024-09-05 11:58:31.000000000 +0200
@@ -120,8 +120,8 @@
# Boot Loader Specification (BLS) and EFI System Partition (ESP)
There are scripts generating boot entries (via perl-Bootloader), new
-initrds (via dracut) and updating the kernel module dependency lists
-(via depmod). If we are in a system using the boot entries defined in
+initrds (via dracut or mkosi-initrd) and updating the kernel module dependency
+lists (via depmod). If we are in a system using the boot entries defined in
the bootloader specification (BLS), then we need to take special
considerations.
@@ -141,76 +141,80 @@
system. The following table summarizes those interactions:
-| Model | Operation | Element | Done |
-|------------------|-----------|------------|--------------------------------|
-| Traditional | Kernel | depmod | wm2 (rpm-script/post[un]) |
-| | | initrd | wm2 (rpm-script/post[un]) |
-| | | boot entry | rpm-script/post[un] |
-| | | | |
-| | KMP | depmod | wm2 (inkmp-script/post[un]) |
-| | | initrd | wm2 (inkmp-script/post[un]) |
-| | | | |
-| | Dracut | initrd | regenerate-initrd-posttrans[1] |
-|------------------|-----------|------------|--------------------------------|
-| MicroOS[2] | Kernel | depmod | wm2 (rpm-script/post[un]) |
-| | | initrd | wm2 (rpm-script/post[un]) |
-| | | boot entry | rpm-script/post[un] |
-| | | | |
-| | KMP | depmod | wm2 (inkmp-script/post[un]) |
-| | | initrd | wm2 (inkmp-script/post[un]) |
-| | | | |
-| | Dracut | initrd | regenerate-initrd-posttrans |
-|------------------|-----------|------------|--------------------------------|
-| Tumbleweed + BLS | Kernel | depmod | wm2 (rpm-script/post[un])[3] |
-| | | initrd | wm2 (rpm-script/post[un]) |
-| | | boot entry | rpm-script/post[un] |
-| | | | |
-| | KMP | depmod | wm2 (inkmp-script/post[un]) |
-| | | initrd | wm2 (inkmp-script/post[un]) |
-| | | | |
-| | Dracut | initrd | regenerate-initrd-posttrans |
-|------------------|-----------|------------|--------------------------------|
-| MicroOS + BLS | Kernel | depmod | wm2 (rpm-script/post[un]) |
-| | | initrd | snapper plugin[4] |
-| | | boot entry | snapper plugin |
-| | | | |
-| | KMP | depmod | snapper plugin[5] |
-| | | initrd | wm2 (rpm-script/post[un]) |
-| | | | |
-| | Dracut | initrd | snapper plugin |
-|------------------|-----------|------------|--------------------------------|
-| Tumbleweed + BLS | Kernel | depmod | wm2 (rpm-script/post[un])[6] |
-| (no btrfs) | | initrd | wm2 (rpm-script/post[un]) |
-| | | boot entry | rpm-script/post[un] |
-| | | | |
-| | KMP | depmod | wm2 (inkmp-script/post[un]) |
-| | | initrd | wm2 (inkmp-script/post[un]) |
-| | | | |
-| | Dracut | initrd | regenerate-initrd-posttrans |
-|------------------|-----------|------------|--------------------------------|
+| Model | Operation | Element | Done |
+|------------------|-----------------|------------|--------------------------------|
+| Traditional | Kernel | depmod | wm2 (rpm-script/post[un]) |
+| | | initrd | wm2 (rpm-script/post[un]) |
+| | | boot entry | rpm-script/post[un] |
+| | | | |
+| | KMP | depmod | wm2 (inkmp-script/post[un]) |
+| | | initrd | wm2 (inkmp-script/post[un]) |
+| | | | |
+| | dracut / | initrd | regenerate-initrd-posttrans[2] |
+| | mkosi-initrd[1] | | |
+|------------------|-----------------|------------|--------------------------------|
+| MicroOS[3] | Kernel | depmod | wm2 (rpm-script/post[un]) |
+| | | initrd | wm2 (rpm-script/post[un]) |
+| | | boot entry | rpm-script/post[un] |
+| | | | |
+| | KMP | depmod | wm2 (inkmp-script/post[un]) |
+| | | initrd | wm2 (inkmp-script/post[un]) |
+| | | | |
+| | dracut | initrd | regenerate-initrd-posttrans |
+|------------------|-----------------|------------|--------------------------------|
+| Tumbleweed + BLS | Kernel | depmod | wm2 (rpm-script/post[un])[4] |
+| | | initrd | wm2 (rpm-script/post[un]) |
+| | | boot entry | rpm-script/post[un] |
+| | | | |
+| | KMP | depmod | wm2 (inkmp-script/post[un]) |
+| | | initrd | wm2 (inkmp-script/post[un]) |
+| | | | |
+| | dracut | initrd | regenerate-initrd-posttrans |
+|------------------|-----------------|------------|--------------------------------|
+| MicroOS + BLS | Kernel | depmod | wm2 (rpm-script/post[un]) |
+| | | initrd | snapper plugin[5] |
+| | | boot entry | snapper plugin |
+| | | | |
+| | KMP | depmod | snapper plugin[6] |
+| | | initrd | wm2 (rpm-script/post[un]) |
+| | | | |
+| | dracut | initrd | snapper plugin |
+|------------------|-----------------|------------|--------------------------------|
+| Tumbleweed + BLS | Kernel | depmod | wm2 (rpm-script/post[un])[7] |
+| (no btrfs) | | initrd | wm2 (rpm-script/post[un]) |
+| | | boot entry | rpm-script/post[un] |
+| | | | |
+| | KMP | depmod | wm2 (inkmp-script/post[un]) |
+| | | initrd | wm2 (inkmp-script/post[un]) |
+| | | | |
+| | dracut | initrd | regenerate-initrd-posttrans |
+|------------------|-----------------|------------|--------------------------------|
Notes:
-[1] Triggered by the `%regenerate_initrd_post[trans]` macros
+[1] The `mkosi-initrd` integration is in its initial phase and is intended for
+ traditional systems only.
-[2] In MicroOS (or any system that use transactional-update) the
+[2] Triggered by the `%regenerate_initrd_post[trans]` macros
+
+[3] In MicroOS (or any system that use transactional-update) the
kernel in /boot is inside the transaction, so gets discarded if
the snapshot is dropped.
-[3] Could be done in the snapper plugin, but it is done in
+[4] Could be done in the snapper plugin, but it is done in
weak-modules2 as in the traditional case, by calling `sdbootutil
--no-reuse-initrd`, which also creates the boot entry. The initrd
name is selected from the current default boot entry
-[4] When adding or removing a kernel, the `sdbootutil
+[5] When adding or removing a kernel, the `sdbootutil
set_default_snapshot` will regenerate boot entries for all the
remaining kernels in the snapshot. This will synchronize also the
initrds (but can leave old initrds in the ESP). Also, wm2 will
create a mark in `/run/regenerate-initrd`.
-[5] A direct call to `regenerate-initrd-posttrans` inside the
+[6] A direct call to `regenerate-initrd-posttrans` inside the
transaction will drop the call and keep the
`/run/regenerate-initrd` directory. A second call (from the
snapper plugin) will complete it.
-[6] `sdbootutil` partially understand BLS systems without snapshots.
+[7] `sdbootutil` partially understand BLS systems without snapshots.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/suse-module-tools-16.0.50/dracut-posttrans new/suse-module-tools-16.0.51/dracut-posttrans
--- old/suse-module-tools-16.0.50/dracut-posttrans 1970-01-01 01:00:00.000000000 +0100
+++ new/suse-module-tools-16.0.51/dracut-posttrans 2024-09-05 11:58:31.000000000 +0200
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+: "${DRACUT:=/usr/bin/dracut}"
+
+if [ ! -x "$DRACUT" ]; then
+ echo "${0##*/}: dracut is not installed, not rebuilding the initrd." >&2
+ exit 0
+fi
+
+initrd_warn_chroot_build() {
+ echo "Please run \"$DRACUT -f --regenerate-all\" as soon as your system is complete." >&2
+}
+
+initrd_regenerate() {
+ local kver="$1"
+ "$DRACUT" -f --kver "$kver"
+ return $?
+}
+
+initrd_regenerate_all() {
+ "$DRACUT" -f --regenerate-all
+}
+
+initrd_cleanup() {
+ :
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/suse-module-tools-16.0.50/kernel-scriptlets/rpm-script new/suse-module-tools-16.0.51/kernel-scriptlets/rpm-script
--- old/suse-module-tools-16.0.50/kernel-scriptlets/rpm-script 2024-08-30 15:03:25.000000000 +0200
+++ new/suse-module-tools-16.0.51/kernel-scriptlets/rpm-script 2024-09-05 11:58:31.000000000 +0200
@@ -133,8 +133,10 @@
message_install_bl
fi
fi
+ create_boot_symlinks "$kernelrelease-$flavor"
else
message_install_bl
+ create_boot_symlinks "$kernelrelease-$flavor"
fi
fi
}
@@ -188,14 +190,37 @@
fi
fi
done
+}
+create_boot_symlinks() {
+ rel_flav=$1
+ broken=
for x in /boot/"$image" /boot/initrd; do
- rm -f "$x"
- ln -s "${x##*/}-$kernelrelease-$flavor" "$x"
+ [ -f "$x-$rel_flav" ] || broken=yes
done
+ if [ "$broken" ]; then
+ echo "ERROR: cannot create symlinks /boot/$image and /boot/initrd" >&2
+ else
+ for x in /boot/"$image" /boot/initrd; do
+ rm -f "$x"
+ ln -s "${x##*/}-$rel_flav" "$x"
+ done
+ fi
rm -f /boot/.vmlinuz.hmac
- [ ! -e "/boot/.vmlinuz-$kernelrelease-$flavor.hmac" ] ||
- ln -s ".vmlinuz-$kernelrelease-$flavor.hmac" /boot/.vmlinuz.hmac
+ [ ! -e "/boot/.vmlinuz-$rel_flav.hmac" ] ||
+ ln -s ".vmlinuz-$rel_flav.hmac" /boot/.vmlinuz.hmac
+}
+
+find_latest_kernel() {
+ # shellcheck disable=SC2012
+ ls -rv /boot/initrd-* 2>/dev/null | \
+ while read -r _x; do
+ [ -f "$_x" ] || continue
+ _rel=${_x#/boot/initrd-}
+ [ -f "/boot/$image-$_rel" ] || continue
+ echo "$_rel"
+ return
+ done
}
check_arm_pagesize() {
@@ -265,7 +290,7 @@
if [ -x $wm2 ]; then
run_wm2 --add-kernel "$kernelrelease"-"$flavor" || script_rc=$?
else
- echo "$wm2 does not exist, please run depmod and dracut manually" >&2
+ echo "$wm2 does not exist, please run depmod and dracut/mkosi-initrd manually" >&2
script_rc=1
fi
@@ -313,6 +338,19 @@
"$image"-"$kernelrelease"-"$flavor" \
initrd-"$kernelrelease"-"$flavor"
fi
+ if [ -L /boot/initrd ] && \
+ { [ ! -f /boot/initrd ] || \
+ [ "$(readlink /boot/initrd)" = "initrd-$kernelrelease-$flavor" ]; }; then
+ rm -f /boot/initrd "/boot/$image"
+ fi
+ if [ ! -f /boot/initrd ] || [ ! -f "/boot/$image" ]; then
+ latest=$(find_latest_kernel)
+ if [ "$latest" ]; then
+ create_boot_symlinks "$latest"
+ else
+ echo "WARNING: no installed kernel found after deinstallation of $kernelrelease-$flavor" >&2
+ fi
+ fi
fi
run_cert_script "$@"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/suse-module-tools-16.0.50/mkosi-initrd-posttrans new/suse-module-tools-16.0.51/mkosi-initrd-posttrans
--- old/suse-module-tools-16.0.50/mkosi-initrd-posttrans 1970-01-01 01:00:00.000000000 +0100
+++ new/suse-module-tools-16.0.51/mkosi-initrd-posttrans 2024-09-05 11:58:31.000000000 +0200
@@ -0,0 +1,55 @@
+#!/bin/sh
+
+: "${MKOSI_INITRD:=/usr/bin/mkosi-initrd}"
+
+if [ ! -x "$MKOSI_INITRD" ]; then
+ echo "${0##*/}: mkosi-initrd is not installed, not rebuilding the initrd." >&2
+ exit 0
+fi
+
+# FIXME: mkosi-initrd fails to cp files directly to /boot
+MKOSI_INITRD_STAGING_DIR="$(mktemp -p /var/tmp/ -d -t mkosi-initrd-stagingXXXXXXXX)"
+if [ ! -d "$MKOSI_INITRD_STAGING_DIR" ]; then
+ echo "${0##*/}: failed to create mkosi-initrd staging directory." >&2
+ exit 1
+fi
+
+initrd_warn_chroot_build() {
+ # FIXME: mkosi-initrd does not provide anything like --regenerate-all yet
+ echo "Please regenerate all the initrds with \"$MKOSI_INITRD\" as soon as your system is complete." >&2
+}
+
+initrd_regenerate() {
+ local kver="$1"
+ local res
+
+ "$MKOSI_INITRD" --kernel-version "$kver" -O "$MKOSI_INITRD_STAGING_DIR" -o "initrd-$kver"
+ res=$?
+ [ $res -ne 0 ] && return $res
+
+ chmod 600 "$MKOSI_INITRD_STAGING_DIR/initrd-$kver"
+ res=$?
+ [ $res -ne 0 ] && return $res
+
+ cp --reflink=auto "$MKOSI_INITRD_STAGING_DIR/initrd-$kver" "/boot/initrd-$kver"
+ return $?
+}
+
+initrd_regenerate_all() {
+ # FIXME: mkosi-initrd does not provide anything like --regenerate-all yet
+ for d in /lib/modules/*; do
+ [ -d "$d" ] || continue
+ kver=${d##*/}
+ if "$MKOSI_INITRD" --kernel-version "$kver" -O "$MKOSI_INITRD_STAGING_DIR" -o "initrd-$kver" \
+ && chmod 600 "$MKOSI_INITRD_STAGING_DIR/initrd-$kver"; then
+ # The staging dir will contain: initrd-<kver> -> initrd-<kver>.cpio.zst
+ cp --reflink=auto "$MKOSI_INITRD_STAGING_DIR/initrd-$kver" "/boot/initrd-$kver"
+ rm -f "$MKOSI_INITRD_STAGING_DIR/initrd-$kver"*
+ fi
+ done
+}
+
+initrd_cleanup() {
+ rm -rf "$MKOSI_INITRD_STAGING_DIR"
+}
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/suse-module-tools-16.0.50/regenerate-initrd-posttrans new/suse-module-tools-16.0.51/regenerate-initrd-posttrans
--- old/suse-module-tools-16.0.50/regenerate-initrd-posttrans 2024-08-30 15:03:25.000000000 +0200
+++ new/suse-module-tools-16.0.51/regenerate-initrd-posttrans 2024-09-05 11:58:31.000000000 +0200
@@ -15,14 +15,29 @@
# to have all initrds generated. This script is called from posttrans
# and takes care of generating the initrds
-: ${DRACUT:=/usr/bin/dracut}
-if [ ! -x "$DRACUT" ]; then
- echo "${0##*/}: dracut is not installed, not rebuilding the initrd" >&2
- exit 0
-fi
+# get the configured INITRD_GENERATOR from /etc/sysconfig/bootloader
+INITRD_GENERATOR="$(. /etc/sysconfig/bootloader 2>/dev/null && echo "$INITRD_GENERATOR")"
+[ "$INITRD_GENERATOR" = "mkosi" ] && INITRD_GENERATOR="mkosi-initrd"
+
+# dracut is the default initrd generator
+: "${INITRD_GENERATOR:=dracut}"
+
+# check if the configured initrd generator is supported
+[ "$INITRD_GENERATOR" = "dracut" ] || [ "$INITRD_GENERATOR" = "mkosi-initrd" ] || {
+ echo "${0##*/}: the initrd generator \"$INITRD_GENERATOR\" configured in /etc/sysconfig/bootloader is not supported." >&2
+ echo "${0##*/}: valid options are \"dracut\" or \"mkosi-initrd\"." >&2
+ exit 1
+}
+
+# check if the specific posttrans script is available
+[ -x "/usr/lib/module-init-tools/${INITRD_GENERATOR}-posttrans" ] || {
+ echo "${0##*/}: missing required /usr/lib/module-init-tools/${INITRD_GENERATOR}-posttrans." >&2
+ exit 1
+}
+. /usr/lib/module-init-tools/"${INITRD_GENERATOR}"-posttrans
if [ -e "/usr/bin/sdbootutil" ] && /usr/bin/sdbootutil is-installed; then
- is_sdbootutil=1
+ is_sdbootutil=1
fi
dir=/run/regenerate-initrd
@@ -45,12 +60,12 @@
for f in "$dir"/*; do
case $f in
- "$dir/*")
+ "$dir/*")
[ -e "$f" ] || break;;
esac
# check if we are in a build chroot
- if ! [ -f /etc/fstab -a ! -e /.buildenv -a -x "$DRACUT" ] ; then
- echo "Please run \"$DRACUT -f --regenerate-all\" as soon as your system is complete." >&2
+ if [ ! -f /etc/fstab ] || [ -e /.buildenv ]; then
+ initrd_warn_chroot_build
rm "$dir"/*
exit 0
fi
@@ -66,7 +81,7 @@
if [ -n "$is_sdbootutil" ]; then
/usr/bin/sdbootutil --no-reuse-initrd --default-snapshot add-all-kernels
else
- "$DRACUT" -f --regenerate-all
+ initrd_regenerate_all
fi
work_done=yes
}
@@ -88,19 +103,20 @@
continue
}
if [ -n "$is_sdbootutil" ]; then
- if ! /usr/bin/sdbootutil --no-reuse-initrd --default-snapshot add-kernel "$kver"; then
- err=$?
- else
- work_done=yes
- fi
- elif ! "$DRACUT" -f --kver "$kver"; then
+ /usr/bin/sdbootutil --no-reuse-initrd --default-snapshot add-kernel "$kver"
err=$?
+ [ $err -eq 0 ] && work_done=yes
else
- work_done=yes
+ initrd_regenerate "$kver"
+ err=$?
+ [ $err -eq 0 ] && work_done=yes
fi
done
fi
+# Clean-up before exit
+trap 'initrd_cleanup' EXIT
+
# For XEN/grub2 configurations, make sure the updated initrds are copied
# to the EFI system partition. See /etc/grub.d/20_linux_xen.
# The test for xen*.gz is simplistic but should be correct here.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/suse-module-tools-16.0.50/suse-module-tools.spec new/suse-module-tools-16.0.51/suse-module-tools.spec
--- old/suse-module-tools-16.0.50/suse-module-tools.spec 2024-08-30 15:03:25.000000000 +0200
+++ new/suse-module-tools-16.0.51/suse-module-tools.spec 2024-09-05 11:58:31.000000000 +0200
@@ -37,7 +37,7 @@
%global modprobe_conf_rpmsave %(echo "%{modprobe_conf_files}" | sed 's,\\([^ ]*\\),%{_sysconfdir}/modprobe.d/\\1.conf.rpmsave,g')
Name: suse-module-tools
-Version: 16.0.50
+Version: 16.0.51
Release: 0
Summary: Configuration for module loading and SUSE-specific utilities for KMPs
License: GPL-2.0-or-later
@@ -52,7 +52,6 @@
Requires: coreutils
Requires: findutils
Requires: systemd-rpm-macros
-Requires: (sdbootutil if sdbootutil)
Requires: rpm
Requires(post): /usr/bin/grep
Requires(post): /usr/bin/sed
@@ -120,6 +119,8 @@
install -d -m 755 "%{buildroot}/usr/lib/module-init-tools"
install -pm 755 -t "%{buildroot}/usr/lib/module-init-tools/" \
weak-modules2 driver-check.sh unblacklist lsinitrd-quick get_dracut_drivers
+install -pm 755 "dracut-posttrans" "%{buildroot}/usr/lib/module-init-tools/"
+install -pm 755 "mkosi-initrd-posttrans" "%{buildroot}/usr/lib/module-init-tools/"
install -pm 755 "regenerate-initrd-posttrans" "%{buildroot}/usr/lib/module-init-tools/"
install -d -m 755 "%{buildroot}/usr/lib/module-init-tools/kernel-scriptlets"
install -pm 755 "kernel-scriptlets/cert-script" "%{buildroot}/usr/lib/module-init-tools/kernel-scriptlets"
@@ -249,6 +250,8 @@
#
%files scriptlets
/usr/lib/module-init-tools/kernel-scriptlets
+/usr/lib/module-init-tools/dracut-posttrans
+/usr/lib/module-init-tools/mkosi-initrd-posttrans
/usr/lib/module-init-tools/regenerate-initrd-posttrans
%changelog
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/suse-module-tools-16.0.50/weak-modules2 new/suse-module-tools-16.0.51/weak-modules2
--- old/suse-module-tools-16.0.50/weak-modules2 2024-08-30 15:03:25.000000000 +0200
+++ new/suse-module-tools-16.0.51/weak-modules2 2024-09-05 11:58:31.000000000 +0200
@@ -56,7 +56,9 @@
# kmps: list of kmps, newest first
#
-: ${DRACUT:=/usr/bin/dracut}
+: "${DRACUT:=/usr/bin/dracut}"
+: "${MKOSI_INITRD:=/usr/bin/mkosi-initrd}"
+
find_lsinitrd() {
local lsi
LSINITRD=
@@ -100,6 +102,24 @@
dlog "SDBOOTUTIL=$SDBOOTUTIL"
}
+find_initrd_generator() {
+ INITRD_GENERATOR="$(. /etc/sysconfig/bootloader 2>/dev/null && echo "$INITRD_GENERATOR")"
+
+ # dracut is the default initrd generator
+ if [ -z "$INITRD_GENERATOR" ]; then
+ INITRD_GENERATOR="dracut"
+ elif [ "$INITRD_GENERATOR" = "mkosi" ]; then
+ INITRD_GENERATOR="mkosi-initrd"
+ fi
+
+ [ "$INITRD_GENERATOR" = "dracut" ] || [ "$INITRD_GENERATOR" = "mkosi-initrd" ] || {
+ echo "ERROR: the initrd generator \"$INITRD_GENERATOR\" configured in /etc/sysconfig/bootloader is not supported." >&2
+ exit 1
+ }
+
+ dlog "INITRD_GENERATOR=$INITRD_GENERATOR"
+}
+
find_usrmerge_boot() {
local filename=$1
local kver=$2
@@ -453,7 +473,7 @@
DRACUT_BUILTIN_CONFDIR=/usr/lib/dracut/dracut.conf.d
GET_DRACUT_DRIVERS=/usr/lib/module-init-tools/get_dracut_drivers
-get_initrd_basenames() {
+get_dracut_basenames() {
local setpriv=$(command -v setpriv)
local conf= cf
@@ -479,6 +499,24 @@
"$GET_DRACUT_DRIVERS" "$conf"
}
+get_mkosi_initrd_basenames() {
+ # TODO: get drivers from mkosi-initrd conf (KernelModulesInclude=, KernelModulesExclude=)
+ get_current_basenames "$1"
+}
+
+get_initrd_basenames() {
+ local krel=$1
+
+ case "$INITRD_GENERATOR" in
+ "dracut")
+ get_dracut_basenames "$krel"
+ ;;
+ "mkosi-initrd")
+ get_mkosi_initrd_basenames "$krel"
+ ;;
+ esac
+}
+
# test if rebuilding initrd is needed for $krel.
# stdin - list of changed modules ("_kernel_" for the whole kernel)
needs_initrd() {
@@ -487,12 +525,21 @@
# Don't generate an initrd for kdump here. It's done automatically with mkdumprd when
# /etc/init.d/boot.kdump is called to load the kdump kernel. See mkdumprd(8) why
# it is done this way.
- if [[ "$krel" == *kdump* ]] ; then
+ if [[ "$krel" == *kdump* ]]; then
return 1
fi
- if ! [ -f /etc/fstab -a ! -e /.buildenv -a -x "$DRACUT" ] ; then
- echo "Please run \"$DRACUT -f /boot/initrd-$krel $krel\" as soon as your system is complete." >&2
+ if ! [ -f /etc/fstab -a ! -e /.buildenv ]; then
+ case "$INITRD_GENERATOR" in
+ "dracut")
+ echo "Please run \"$DRACUT -f /boot/initrd-$krel $krel\" as soon as your system is complete." >&2
+ ;;
+ "mkosi-initrd")
+ # FIXME: mkosi-initrd fails to cp files directly to /boot
+ echo "Please run \"$MKOSI_INITRD --kernel-version $krel -o initrd-$krel && \
+chmod 600 initrd-$krel && cp initrd-$krel /boot\" as soon as your system is complete." >&2
+ ;;
+ esac
return 1
fi
# KMPs can force initrd rebuild with %kernel_module_package -b that sets
@@ -556,7 +603,18 @@
doit "$SDBOOTUTIL" --no-reuse-initrd add-kernel "$krel"
elif [ -z "$SDBOOTUTIL" ]; then
local initrd="$(get_current_initrd $krel)"
- doit "$DRACUT" -f "$initrd" $krel
+ case "$INITRD_GENERATOR" in
+ "dracut")
+ doit "$DRACUT" -f "$initrd" $krel
+ ;;
+ "mkosi-initrd")
+ # FIXME: mkosi-initrd fails to cp files directly to /boot
+ doit "$MKOSI_INITRD" --kernel-version "$krel" -O "$tmpdir" -o "initrd-$krel" && \
+ doit chmod 600 "$tmpdir/initrd-$krel" && \
+ doit cp --reflink=auto "$tmpdir/initrd-$krel" "$initrd" && \
+ doit rm -f "$tmpdir/initrd-$krel"*
+ ;;
+ esac
fi
status=$?
fi
@@ -929,6 +987,7 @@
find_depmod
find_lsinitrd
find_sdbootutil
+find_initrd_generator
tmpdir=$(mktemp -d /var/tmp/${0##*/}.XXXXXX)
trap "rm -rf $tmpdir" EXIT
++++++ suse-module-tools.obsinfo ++++++
--- /var/tmp/diff_new_pack.r4zWe2/_old 2024-09-12 16:54:13.547533039 +0200
+++ /var/tmp/diff_new_pack.r4zWe2/_new 2024-09-12 16:54:13.551533206 +0200
@@ -1,5 +1,5 @@
name: suse-module-tools
-version: 16.0.50
-mtime: 1725023005
-commit: 503d772e6951ef8c268bc14f39b4c8d5f5a90986
+version: 16.0.51
+mtime: 1725530311
+commit: 747e2bfce7f245987ff87cea6b80c31ce39dc2fa
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package containerd for openSUSE:Factory checked in at 2024-09-12 16:54:01
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/containerd (Old)
and /work/SRC/openSUSE:Factory/.containerd.new.17570 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "containerd"
Thu Sep 12 16:54:01 2024 rev:70 rq:1200080 version:1.7.22
Changes:
--------
--- /work/SRC/openSUSE:Factory/containerd/containerd.changes 2024-09-06 17:18:21.839440126 +0200
+++ /work/SRC/openSUSE:Factory/.containerd.new.17570/containerd.changes 2024-09-12 16:54:06.291231009 +0200
@@ -1,0 +2,9 @@
+Wed Sep 11 08:58:49 UTC 2024 - Aleksa Sarai <asarai(a)suse.com>
+
+- Update to containerd v1.7.22. Upstream release notes:
+ <https://github.com/containerd/containerd/releases/tag/v1.7.22>
+- Bump minimum Go version to 1.22.
+- Rebase patches:
+ * 0001-BUILD-SLE12-revert-btrfs-depend-on-kernel-UAPI-inste.patch
+
+-------------------------------------------------------------------
Old:
----
containerd-1.7.21_472731909fa3.tar.xz
New:
----
containerd-1.7.22_7f7fdf5fed64.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ containerd.spec ++++++
--- /var/tmp/diff_new_pack.g1IeYw/_old 2024-09-12 16:54:07.919298843 +0200
+++ /var/tmp/diff_new_pack.g1IeYw/_new 2024-09-12 16:54:07.931299342 +0200
@@ -23,14 +23,14 @@
%endif
# MANUAL: Update the git_version.
-%define git_version 472731909fa34bd7bc9c087e4c27943f9835f111
-%define git_short 472731909fa3
+%define git_version 7f7fdf5fed64eb6a7caf99b3e12efcf9d60e311c
+%define git_short 7f7fdf5fed64
%global provider_prefix github.com/containerd/containerd
%global import_path %{provider_prefix}
Name: containerd
-Version: 1.7.21
+Version: 1.7.22
Release: 0
Summary: Standalone OCI Container Daemon
License: Apache-2.0
@@ -43,7 +43,7 @@
Patch1: 0001-BUILD-SLE12-revert-btrfs-depend-on-kernel-UAPI-inste.patch
BuildRequires: fdupes
BuildRequires: glibc-devel-static
-BuildRequires: go >= 1.19
+BuildRequires: go >= 1.22
BuildRequires: go-go-md2man
BuildRequires: golang-packaging
BuildRequires: libbtrfs-devel >= 3.8
++++++ 0001-BUILD-SLE12-revert-btrfs-depend-on-kernel-UAPI-inste.patch ++++++
--- /var/tmp/diff_new_pack.g1IeYw/_old 2024-09-12 16:54:08.159308842 +0200
+++ /var/tmp/diff_new_pack.g1IeYw/_new 2024-09-12 16:54:08.191310176 +0200
@@ -1,4 +1,4 @@
-From 876958fd21984b77e0a70d6ac5763e757ca976ef Mon Sep 17 00:00:00 2001
+From 0d0424334da85c9192a29a4e108094f7c28bbab5 Mon Sep 17 00:00:00 2001
From: Aleksa Sarai <cyphar(a)cyphar.com>
Date: Wed, 22 May 2024 12:58:32 -0700
Subject: [PATCH] BUILD: SLE12: revert "btrfs: depend on kernel UAPI instead of
++++++ _service ++++++
--- /var/tmp/diff_new_pack.g1IeYw/_old 2024-09-12 16:54:08.371317676 +0200
+++ /var/tmp/diff_new_pack.g1IeYw/_new 2024-09-12 16:54:08.407319176 +0200
@@ -3,8 +3,8 @@
<param name="url">https://github.com/containerd/containerd.git</param>
<param name="scm">git</param>
<param name="filename">containerd</param>
- <param name="versionformat">1.7.21_%h</param>
- <param name="revision">v1.7.21</param>
+ <param name="versionformat">1.7.22_%h</param>
+ <param name="revision">v1.7.22</param>
<param name="exclude">.git</param>
</service>
<service name="recompress" mode="manual">
++++++ containerd-1.7.21_472731909fa3.tar.xz -> containerd-1.7.22_7f7fdf5fed64.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/containerd-1.7.21_472731909fa3/.github/actions/install-go/action.yml new/containerd-1.7.22_7f7fdf5fed64/.github/actions/install-go/action.yml
--- old/containerd-1.7.21_472731909fa3/.github/actions/install-go/action.yml 2024-08-27 00:04:19.000000000 +0200
+++ new/containerd-1.7.22_7f7fdf5fed64/.github/actions/install-go/action.yml 2024-09-09 22:09:31.000000000 +0200
@@ -3,7 +3,7 @@
inputs:
go-version:
required: true
- default: "1.22.6"
+ default: "1.22.7"
description: "Go version to install"
runs:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/containerd-1.7.21_472731909fa3/.github/workflows/api-release.yml new/containerd-1.7.22_7f7fdf5fed64/.github/workflows/api-release.yml
--- old/containerd-1.7.21_472731909fa3/.github/workflows/api-release.yml 2024-08-27 00:04:19.000000000 +0200
+++ new/containerd-1.7.22_7f7fdf5fed64/.github/workflows/api-release.yml 2024-09-09 22:09:31.000000000 +0200
@@ -6,7 +6,7 @@
name: API Release
env:
- GO_VERSION: "1.22.6"
+ GO_VERSION: "1.22.7"
permissions: # added using https://github.com/step-security/secure-workflows
contents: read
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/containerd-1.7.21_472731909fa3/.github/workflows/ci.yml new/containerd-1.7.22_7f7fdf5fed64/.github/workflows/ci.yml
--- old/containerd-1.7.21_472731909fa3/.github/workflows/ci.yml 2024-08-27 00:04:19.000000000 +0200
+++ new/containerd-1.7.22_7f7fdf5fed64/.github/workflows/ci.yml 2024-09-09 22:09:31.000000000 +0200
@@ -192,7 +192,7 @@
strategy:
matrix:
os: [ubuntu-20.04, actuated-arm64-4cpu-16gb, macos-12, windows-2019, windows-2022]
- go-version: ["1.22.6", "1.23.0"]
+ go-version: ["1.22.7", "1.23.1"]
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/install-go
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/containerd-1.7.21_472731909fa3/.github/workflows/release.yml new/containerd-1.7.22_7f7fdf5fed64/.github/workflows/release.yml
--- old/containerd-1.7.21_472731909fa3/.github/workflows/release.yml 2024-08-27 00:04:19.000000000 +0200
+++ new/containerd-1.7.22_7f7fdf5fed64/.github/workflows/release.yml 2024-09-09 22:09:31.000000000 +0200
@@ -13,7 +13,7 @@
name: Release
env:
- GO_VERSION: "1.22.6"
+ GO_VERSION: "1.22.7"
permissions: # added using https://github.com/step-security/secure-workflows
contents: read
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/containerd-1.7.21_472731909fa3/Vagrantfile new/containerd-1.7.22_7f7fdf5fed64/Vagrantfile
--- old/containerd-1.7.21_472731909fa3/Vagrantfile 2024-08-27 00:04:19.000000000 +0200
+++ new/containerd-1.7.22_7f7fdf5fed64/Vagrantfile 2024-09-09 22:09:31.000000000 +0200
@@ -104,7 +104,7 @@
config.vm.provision "install-golang", type: "shell", run: "once" do |sh|
sh.upload_path = "/tmp/vagrant-install-golang"
sh.env = {
- 'GO_VERSION': ENV['GO_VERSION'] || "1.22.6",
+ 'GO_VERSION': ENV['GO_VERSION'] || "1.22.7",
}
sh.inline = <<~SHELL
#!/usr/bin/env bash
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/containerd-1.7.21_472731909fa3/contrib/Dockerfile.test new/containerd-1.7.22_7f7fdf5fed64/contrib/Dockerfile.test
--- old/containerd-1.7.21_472731909fa3/contrib/Dockerfile.test 2024-08-27 00:04:19.000000000 +0200
+++ new/containerd-1.7.22_7f7fdf5fed64/contrib/Dockerfile.test 2024-09-09 22:09:31.000000000 +0200
@@ -29,7 +29,7 @@
# docker run --privileged containerd-test
# ------------------------------------------------------------------------------
-ARG GOLANG_VERSION=1.22.6
+ARG GOLANG_VERSION=1.22.7
ARG GOLANG_IMAGE=golang
FROM ${GOLANG_IMAGE}:${GOLANG_VERSION} AS golang
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/containerd-1.7.21_472731909fa3/contrib/fuzz/oss_fuzz_build.sh new/containerd-1.7.22_7f7fdf5fed64/contrib/fuzz/oss_fuzz_build.sh
--- old/containerd-1.7.21_472731909fa3/contrib/fuzz/oss_fuzz_build.sh 2024-08-27 00:04:19.000000000 +0200
+++ new/containerd-1.7.22_7f7fdf5fed64/contrib/fuzz/oss_fuzz_build.sh 2024-09-09 22:09:31.000000000 +0200
@@ -43,11 +43,11 @@
apt-get update && apt-get install -y wget
cd $SRC
-wget --quiet https://go.dev/dl/go1.22.6.linux-amd64.tar.gz
+wget --quiet https://go.dev/dl/go1.22.7.linux-amd64.tar.gz
mkdir temp-go
rm -rf /root/.go/*
-tar -C temp-go/ -xzf go1.22.6.linux-amd64.tar.gz
+tar -C temp-go/ -xzf go1.22.7.linux-amd64.tar.gz
mv temp-go/go/* /root/.go/
cd $SRC/containerd
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/containerd-1.7.21_472731909fa3/integration/client/container_linux_test.go new/containerd-1.7.22_7f7fdf5fed64/integration/client/container_linux_test.go
--- old/containerd-1.7.21_472731909fa3/integration/client/container_linux_test.go 2024-08-27 00:04:19.000000000 +0200
+++ new/containerd-1.7.22_7f7fdf5fed64/integration/client/container_linux_test.go 2024-09-09 22:09:31.000000000 +0200
@@ -37,7 +37,9 @@
. "github.com/containerd/containerd"
"github.com/containerd/containerd/cio"
"github.com/containerd/containerd/containers"
+ "github.com/containerd/containerd/integration/failpoint"
"github.com/containerd/containerd/oci"
+ "github.com/containerd/containerd/pkg/fifosync"
"github.com/containerd/containerd/plugin"
"github.com/containerd/containerd/runtime/linux/runctypes"
"github.com/containerd/containerd/runtime/v2/runc/options"
@@ -45,6 +47,7 @@
"github.com/containerd/errdefs"
"github.com/opencontainers/runtime-spec/specs-go"
+ "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"golang.org/x/sys/unix"
)
@@ -1595,3 +1598,210 @@
})
}
}
+
+// TestIssue10589 is used as regression case for issue 10589.
+//
+// This issue was caused by a race between init exits and new exec process tracking inside the shim. The test operates
+// by controlling the time between when the shim invokes "runc exec" and when the actual "runc exec" is triggered. This
+// allows validating that races for shim state tracking between pre- and post-start of the exec process do not exist.
+//
+// The workflow is as follows:
+// 1. Create a container as normal
+// 2. Make an exec1 using runc-fp with delayexec
+// 3. Wait until the exec is waiting to start (triggered by delayexec)
+// 4. Kill the container init process (signalling it is easiest)
+// 5. Make an exec2 using runc-fp with delayexec
+// 6. Wait until the exec is waiting to start
+// 7. Allow exec1 to proceed
+// 8. Allow exec2 to proceed
+// 9. See that the container has exited and all execs have exited too
+//
+// https://github.com/containerd/containerd/issues/10589
+func TestIssue10589(t *testing.T) {
+ if f := os.Getenv("RUNC_FLAVOR"); f != "" && f != "runc" {
+ t.Skip("test requires runc")
+ }
+ if rt := os.Getenv("TEST_RUNTIME"); rt != "" && rt != plugin.RuntimeRuncV2 {
+ t.Skip("test requires io.containerd.runc.v2")
+ }
+
+ client, err := newClient(t, address)
+ require.NoError(t, err)
+ t.Cleanup(func() {
+ client.Close()
+ })
+
+ var (
+ image Image
+ ctx, cancel = testContext(t)
+ id = t.Name()
+ )
+ t.Cleanup(cancel)
+
+ image, err = client.GetImage(ctx, testImage)
+ require.NoError(t, err)
+
+ // 1. Create a sleeping container
+ t.Log("1. Create a sleeping container")
+ container, err := client.NewContainer(ctx, id,
+ WithNewSnapshot(id, image),
+ WithNewSpec(oci.WithImageConfig(image),
+ withProcessArgs("sleep", "inf"),
+ oci.WithAnnotations(map[string]string{
+ "oci.runc.failpoint.profile": "delayExec",
+ }),
+ ),
+ WithRuntime(client.Runtime(), &options.Options{
+ BinaryName: "runc-fp",
+ }),
+ )
+ require.NoError(t, err, "create container")
+ t.Cleanup(func() {
+ ctx, cancel := context.WithTimeout(ctx, 10*time.Second)
+ err := container.Delete(ctx, WithSnapshotCleanup)
+ if err != nil {
+ t.Log("delete err", err)
+ }
+ cancel()
+ })
+
+ task, err := container.NewTask(ctx, empty())
+ require.NoError(t, err, "create task")
+ t.Cleanup(func() {
+ ctx, cancel := context.WithTimeout(ctx, 2*time.Second)
+ st, err := task.Delete(ctx, WithProcessKill)
+ t.Log("exit status", st)
+ if err != nil {
+ t.Log("kill err", err)
+ }
+ cancel()
+ })
+
+ err = task.Start(ctx)
+ require.NoError(t, err, "start container")
+
+ status, err := task.Status(ctx)
+ require.NoError(t, err, "container status")
+ require.Equal(t, Running, status.Status)
+
+ // 2. Create an exec
+ t.Log("2. Create exec1")
+ exec1ReadyFifo, err := fifosync.NewWaiter(filepath.Join(t.TempDir(), "exec1-ready.fifo"), 0600)
+ require.NoError(t, err, "create exec1 ready fifo")
+ exec1DelayFifo, err := fifosync.NewTrigger(filepath.Join(t.TempDir(), "exec1-delay.fifo"), 0600)
+ require.NoError(t, err, "create exec1 delay fifo")
+ exec1, err := task.Exec(ctx, "exec1", &specs.Process{
+ Args: []string{"/bin/sleep", "301"},
+ Cwd: "/",
+ Env: []string{
+ failpoint.DelayExecReadyEnv + "=" + exec1ReadyFifo.Name(),
+ failpoint.DelayExecDelayEnv + "=" + exec1DelayFifo.Name(),
+ },
+ }, cio.NullIO)
+ require.NoError(t, err, "create exec1")
+
+ exec1done := make(chan struct{})
+ go func() {
+ defer close(exec1done)
+ t.Log("Starting exec1")
+ err := exec1.Start(ctx)
+ assert.Error(t, err, "start exec1")
+ t.Logf("error starting exec1: %s", err)
+ }()
+
+ // 3. Wait until the exec is waiting to start
+ t.Log("3. Wait until exec1 is waiting to start")
+ err = exec1ReadyFifo.Wait()
+ require.NoError(t, err, "open exec1 fifo")
+
+ // 4. Kill the container init process
+ t.Log("4. Kill the container init process")
+ target := task.Pid()
+ t.Logf("Killing main pid (%v) of container %s", target, container.ID())
+ syscall.Kill(int(target), syscall.SIGKILL)
+ status, err = task.Status(ctx)
+ require.NoError(t, err, "container status")
+ t.Log("container status", status.Status)
+
+ // 5. Make an exec (2) using this failpoint
+ t.Log("5. Create exec2")
+ exec2ReadyFifo, err := fifosync.NewWaiter(filepath.Join(t.TempDir(), "exec2-ready.fifo"), 0600)
+ require.NoError(t, err, "create exec2 ready fifo: %q", exec2ReadyFifo)
+ exec2DelayFifo, err := fifosync.NewTrigger(filepath.Join(t.TempDir(), "exec2-delay.fifo"), 0600)
+ require.NoError(t, err, "create exec2 delay fifo: %q", exec2DelayFifo)
+ exec2, err := task.Exec(ctx, "exec2", &specs.Process{
+ Args: []string{"/bin/sleep", "302"},
+ Cwd: "/",
+ Env: []string{
+ failpoint.DelayExecReadyEnv + "=" + exec2ReadyFifo.Name(),
+ failpoint.DelayExecDelayEnv + "=" + exec2DelayFifo.Name(),
+ },
+ }, cio.NullIO)
+ require.NoError(t, err, "create exec2")
+
+ exec2done := make(chan struct{})
+ didExec2Run := true
+ go func() {
+ defer close(exec2done)
+ t.Log("Starting exec2")
+ err := exec2.Start(ctx)
+ assert.Error(t, err, "start exec2")
+ t.Logf("error starting exec2: %s", err)
+ }()
+
+ // 6. Wait until the exec is waiting to start
+ t.Log("6. Wait until exec2 is waiting to start")
+ exec2ready := make(chan struct{})
+ go func() {
+ exec2ReadyFifo.Wait()
+ close(exec2ready)
+ }()
+ select {
+ case <-exec2ready:
+ case <-exec2done:
+ didExec2Run = false
+ }
+
+ // 7. Allow exec=1 to proceed
+ t.Log("7. Allow exec=1 to proceed")
+ err = exec1DelayFifo.Trigger()
+ assert.NoError(t, err, "trigger exec1 fifo")
+ status, err = task.Status(ctx)
+ require.NoError(t, err, "container status")
+ t.Log("container status", status.Status)
+ <-exec1done
+ status, err = task.Status(ctx)
+ require.NoError(t, err, "container status")
+ t.Log("container status", status.Status)
+
+ // 8. Allow exec=2 to proceed
+ if didExec2Run {
+ t.Log("8. Allow exec2 to proceed")
+ err = exec2DelayFifo.Trigger()
+ assert.NoError(t, err, "trigger exec2 fifo")
+ status, err = task.Status(ctx)
+ require.NoError(t, err, "container status")
+ t.Log("container status", status.Status)
+ <-exec2done
+ status, err = task.Status(ctx)
+ require.NoError(t, err, "container status")
+ t.Log("container status", status.Status)
+ } else {
+ t.Log("8. Skip exec2")
+ }
+
+ // 9. Validate
+ t.Log("9. Validate")
+ status, err = exec1.Status(ctx)
+ require.NoError(t, err, "exec1 status")
+ t.Logf("exec1 status: %s", status.Status)
+ assert.Equal(t, Created, status.Status)
+ status, err = exec2.Status(ctx)
+ require.NoError(t, err, "exec2 status")
+ t.Logf("exec2 status: %s", status.Status)
+ assert.Equal(t, Created, status.Status)
+ status, err = task.Status(ctx)
+ t.Logf("task status: %s", status.Status)
+ require.NoError(t, err, "container status")
+ assert.Equal(t, Stopped, status.Status)
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/containerd-1.7.21_472731909fa3/integration/failpoint/cmd/runc-fp/delayexec.go new/containerd-1.7.22_7f7fdf5fed64/integration/failpoint/cmd/runc-fp/delayexec.go
--- old/containerd-1.7.21_472731909fa3/integration/failpoint/cmd/runc-fp/delayexec.go 1970-01-01 01:00:00.000000000 +0100
+++ new/containerd-1.7.22_7f7fdf5fed64/integration/failpoint/cmd/runc-fp/delayexec.go 2024-09-09 22:09:31.000000000 +0200
@@ -0,0 +1,131 @@
+//go:build linux
+
+/*
+ Copyright The containerd Authors.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+package main
+
+import (
+ "context"
+ "encoding/json"
+ "errors"
+ "fmt"
+ "io"
+ "os"
+ "strings"
+
+ "github.com/opencontainers/runtime-spec/specs-go"
+ "github.com/sirupsen/logrus"
+
+ "github.com/containerd/containerd/integration/failpoint"
+ "github.com/containerd/containerd/pkg/fifosync"
+)
+
+// delayExec delays an "exec" command until a trigger is received from the calling test program. This can be used to
+// test races around container lifecycle and exec processes.
+func delayExec(ctx context.Context, method invoker) error {
+ isExec := strings.Contains(strings.Join(os.Args, ","), ",exec,")
+ if !isExec {
+ if err := method(ctx); err != nil {
+ return err
+ }
+ return nil
+ }
+ logrus.Debug("EXEC!")
+
+ if err := delay(); err != nil {
+ return err
+ }
+ if err := method(ctx); err != nil {
+ return err
+ }
+ return nil
+}
+
+func delay() error {
+ ready, delay, err := fifoFromProcessEnv()
+ if err != nil {
+ return err
+ }
+ if err := ready.Trigger(); err != nil {
+ return err
+ }
+ return delay.Wait()
+}
+
+// fifoFromProcessEnv finds a fifo specified in the environment variables of an exec process
+func fifoFromProcessEnv() (fifosync.Trigger, fifosync.Waiter, error) {
+ env, err := processEnvironment()
+ if err != nil {
+ return nil, nil, err
+ }
+
+ readyName, ok := env[failpoint.DelayExecReadyEnv]
+ if !ok {
+ return nil, nil, fmt.Errorf("fifo: failed to find %q env var in %v", failpoint.DelayExecReadyEnv, env)
+ }
+ delayName, ok := env[failpoint.DelayExecDelayEnv]
+ if !ok {
+ return nil, nil, fmt.Errorf("fifo: failed to find %q env var in %v", failpoint.DelayExecDelayEnv, env)
+ }
+ logrus.WithField("ready", readyName).WithField("delay", delayName).Debug("Found FIFOs!")
+ readyFIFO, err := fifosync.NewTrigger(readyName, 0600)
+ if err != nil {
+ return nil, nil, err
+ }
+ delayFIFO, err := fifosync.NewWaiter(delayName, 0600)
+ if err != nil {
+ return nil, nil, err
+ }
+ return readyFIFO, delayFIFO, nil
+}
+
+func processEnvironment() (map[string]string, error) {
+ idx := 2
+ for ; idx < len(os.Args); idx++ {
+ if os.Args[idx] == "--process" {
+ break
+ }
+ }
+
+ if idx >= len(os.Args)-1 || os.Args[idx] != "--process" {
+ return nil, errors.New("env: option --process required")
+ }
+
+ specFile := os.Args[idx+1]
+ f, err := os.OpenFile(specFile, os.O_RDONLY, 0o644)
+ if err != nil {
+ return nil, fmt.Errorf("env: failed to open %s: %w", specFile, err)
+ }
+
+ b, err := io.ReadAll(f)
+ if err != nil {
+ return nil, fmt.Errorf("env: failed to read spec from %q", specFile)
+ }
+ var spec specs.Process
+ if err := json.Unmarshal(b, &spec); err != nil {
+ return nil, fmt.Errorf("env: failed to unmarshal spec from %q: %w", specFile, err)
+ }
+
+ // XXX: env vars can be specified multiple times, but we only keep one
+ env := make(map[string]string)
+ for _, e := range spec.Env {
+ k, v, _ := strings.Cut(e, "=")
+ env[k] = v
+ }
+
+ return env, nil
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/containerd-1.7.21_472731909fa3/integration/failpoint/cmd/runc-fp/main.go new/containerd-1.7.22_7f7fdf5fed64/integration/failpoint/cmd/runc-fp/main.go
--- old/containerd-1.7.21_472731909fa3/integration/failpoint/cmd/runc-fp/main.go 2024-08-27 00:04:19.000000000 +0200
+++ new/containerd-1.7.22_7f7fdf5fed64/integration/failpoint/cmd/runc-fp/main.go 2024-09-09 22:09:31.000000000 +0200
@@ -25,8 +25,9 @@
"os/exec"
"syscall"
- "github.com/containerd/containerd/oci"
"github.com/sirupsen/logrus"
+
+ "github.com/containerd/containerd/oci"
)
const (
@@ -40,6 +41,7 @@
var (
failpointProfiles = map[string]invokerInterceptor{
"issue9103": issue9103KillInitAfterCreate,
+ "delayExec": delayExec,
}
)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/containerd-1.7.21_472731909fa3/integration/failpoint/const.go new/containerd-1.7.22_7f7fdf5fed64/integration/failpoint/const.go
--- old/containerd-1.7.21_472731909fa3/integration/failpoint/const.go 1970-01-01 01:00:00.000000000 +0100
+++ new/containerd-1.7.22_7f7fdf5fed64/integration/failpoint/const.go 2024-09-09 22:09:31.000000000 +0200
@@ -0,0 +1,22 @@
+/*
+ Copyright The containerd Authors.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+package failpoint
+
+const (
+ DelayExecReadyEnv = "_RUNC_FP_DELAY_EXEC_READY"
+ DelayExecDelayEnv = "_RUNC_FP_DELAY_EXEC_DELAY"
+)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/containerd-1.7.21_472731909fa3/pkg/cri/sbserver/container_stats_list.go new/containerd-1.7.22_7f7fdf5fed64/pkg/cri/sbserver/container_stats_list.go
--- old/containerd-1.7.21_472731909fa3/pkg/cri/sbserver/container_stats_list.go 2024-08-27 00:04:19.000000000 +0200
+++ new/containerd-1.7.22_7f7fdf5fed64/pkg/cri/sbserver/container_stats_list.go 2024-09-09 22:09:31.000000000 +0200
@@ -192,6 +192,11 @@
return 0, nil
}
+ // can't go backwards, this value might come in as 0 if the container was just removed
+ if currentUsageCoreNanoSeconds < oldStats.UsageCoreNanoSeconds {
+ return 0, nil
+ }
+
newUsageNanoCores := uint64(float64(currentUsageCoreNanoSeconds-oldStats.UsageCoreNanoSeconds) /
float64(nanoSeconds) * float64(time.Second/time.Nanosecond))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/containerd-1.7.21_472731909fa3/pkg/cri/sbserver/container_stats_list_test.go new/containerd-1.7.22_7f7fdf5fed64/pkg/cri/sbserver/container_stats_list_test.go
--- old/containerd-1.7.21_472731909fa3/pkg/cri/sbserver/container_stats_list_test.go 2024-08-27 00:04:19.000000000 +0200
+++ new/containerd-1.7.22_7f7fdf5fed64/pkg/cri/sbserver/container_stats_list_test.go 2024-09-09 22:09:31.000000000 +0200
@@ -35,45 +35,56 @@
func TestContainerMetricsCPUNanoCoreUsage(t *testing.T) {
c := newTestCRIService()
timestamp := time.Now()
- secondAfterTimeStamp := timestamp.Add(time.Second)
- ID := "ID"
+ tenSecondAftertimeStamp := timestamp.Add(time.Second * 10)
for desc, test := range map[string]struct {
+ id string
+ desc string
firstCPUValue uint64
secondCPUValue uint64
expectedNanoCoreUsageFirst uint64
expectedNanoCoreUsageSecond uint64
}{
"metrics": {
+ id: "id1",
+ desc: "metrics",
firstCPUValue: 50,
secondCPUValue: 500,
expectedNanoCoreUsageFirst: 0,
- expectedNanoCoreUsageSecond: 450,
+ expectedNanoCoreUsageSecond: 45,
+ },
+ "no metrics in second CPU sample": {
+ id: "id2",
+ desc: "metrics",
+ firstCPUValue: 234235,
+ secondCPUValue: 0,
+ expectedNanoCoreUsageFirst: 0,
+ expectedNanoCoreUsageSecond: 0,
},
} {
t.Run(desc, func(t *testing.T) {
container, err := containerstore.NewContainer(
- containerstore.Metadata{ID: ID},
+ containerstore.Metadata{ID: test.id},
)
assert.NoError(t, err)
assert.Nil(t, container.Stats)
err = c.containerStore.Add(container)
assert.NoError(t, err)
- cpuUsage, err := c.getUsageNanoCores(ID, false, test.firstCPUValue, timestamp)
+ cpuUsage, err := c.getUsageNanoCores(test.id, false, test.firstCPUValue, timestamp)
assert.NoError(t, err)
- container, err = c.containerStore.Get(ID)
+ container, err = c.containerStore.Get(test.id)
assert.NoError(t, err)
assert.NotNil(t, container.Stats)
assert.Equal(t, test.expectedNanoCoreUsageFirst, cpuUsage)
- cpuUsage, err = c.getUsageNanoCores(ID, false, test.secondCPUValue, secondAfterTimeStamp)
+ cpuUsage, err = c.getUsageNanoCores(test.id, false, test.secondCPUValue, tenSecondAftertimeStamp)
assert.NoError(t, err)
assert.Equal(t, test.expectedNanoCoreUsageSecond, cpuUsage)
- container, err = c.containerStore.Get(ID)
+ container, err = c.containerStore.Get(test.id)
assert.NoError(t, err)
assert.NotNil(t, container.Stats)
})
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/containerd-1.7.21_472731909fa3/pkg/cri/server/container_stats_list.go new/containerd-1.7.22_7f7fdf5fed64/pkg/cri/server/container_stats_list.go
--- old/containerd-1.7.21_472731909fa3/pkg/cri/server/container_stats_list.go 2024-08-27 00:04:19.000000000 +0200
+++ new/containerd-1.7.22_7f7fdf5fed64/pkg/cri/server/container_stats_list.go 2024-09-09 22:09:31.000000000 +0200
@@ -122,6 +122,11 @@
return 0, nil
}
+ // can't go backwards, this value might come in as 0 if the container was just removed
+ if currentUsageCoreNanoSeconds < oldStats.UsageCoreNanoSeconds {
+ return 0, nil
+ }
+
newUsageNanoCores := uint64(float64(currentUsageCoreNanoSeconds-oldStats.UsageCoreNanoSeconds) /
float64(nanoSeconds) * float64(time.Second/time.Nanosecond))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/containerd-1.7.21_472731909fa3/pkg/cri/server/container_stats_list_test.go new/containerd-1.7.22_7f7fdf5fed64/pkg/cri/server/container_stats_list_test.go
--- old/containerd-1.7.21_472731909fa3/pkg/cri/server/container_stats_list_test.go 2024-08-27 00:04:19.000000000 +0200
+++ new/containerd-1.7.22_7f7fdf5fed64/pkg/cri/server/container_stats_list_test.go 2024-09-09 22:09:31.000000000 +0200
@@ -27,48 +27,58 @@
func TestContainerMetricsCPUNanoCoreUsage(t *testing.T) {
c := newTestCRIService()
timestamp := time.Now()
- secondAfterTimeStamp := timestamp.Add(time.Second)
- ID := "ID"
+ tenSecondAftertimeStamp := timestamp.Add(time.Second * 10)
for desc, test := range map[string]struct {
+ id string
+ desc string
firstCPUValue uint64
secondCPUValue uint64
expectedNanoCoreUsageFirst uint64
expectedNanoCoreUsageSecond uint64
}{
"metrics": {
+ id: "id1",
+ desc: "metrics",
firstCPUValue: 50,
secondCPUValue: 500,
expectedNanoCoreUsageFirst: 0,
- expectedNanoCoreUsageSecond: 450,
+ expectedNanoCoreUsageSecond: 45,
+ },
+ "no metrics in second CPU sample": {
+ id: "id2",
+ desc: "metrics",
+ firstCPUValue: 234235,
+ secondCPUValue: 0,
+ expectedNanoCoreUsageFirst: 0,
+ expectedNanoCoreUsageSecond: 0,
},
} {
t.Run(desc, func(t *testing.T) {
container, err := containerstore.NewContainer(
- containerstore.Metadata{ID: ID},
+ containerstore.Metadata{ID: test.id},
)
assert.NoError(t, err)
assert.Nil(t, container.Stats)
err = c.containerStore.Add(container)
assert.NoError(t, err)
- cpuUsage, err := c.getUsageNanoCores(ID, false, test.firstCPUValue, timestamp)
+ cpuUsage, err := c.getUsageNanoCores(test.id, false, test.firstCPUValue, timestamp)
assert.NoError(t, err)
- container, err = c.containerStore.Get(ID)
+ container, err = c.containerStore.Get(test.id)
assert.NoError(t, err)
assert.NotNil(t, container.Stats)
assert.Equal(t, test.expectedNanoCoreUsageFirst, cpuUsage)
- cpuUsage, err = c.getUsageNanoCores(ID, false, test.secondCPUValue, secondAfterTimeStamp)
+ cpuUsage, err = c.getUsageNanoCores(test.id, false, test.secondCPUValue, tenSecondAftertimeStamp)
assert.NoError(t, err)
assert.Equal(t, test.expectedNanoCoreUsageSecond, cpuUsage)
- container, err = c.containerStore.Get(ID)
+ container, err = c.containerStore.Get(test.id)
assert.NoError(t, err)
assert.NotNil(t, container.Stats)
})
}
-
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/containerd-1.7.21_472731909fa3/pkg/fifosync/fifo_unix.go new/containerd-1.7.22_7f7fdf5fed64/pkg/fifosync/fifo_unix.go
--- old/containerd-1.7.21_472731909fa3/pkg/fifosync/fifo_unix.go 1970-01-01 01:00:00.000000000 +0100
+++ new/containerd-1.7.22_7f7fdf5fed64/pkg/fifosync/fifo_unix.go 2024-09-09 22:09:31.000000000 +0200
@@ -0,0 +1,125 @@
+//go:build unix
+
+/*
+ Copyright The containerd Authors.
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+*/
+
+/*
+Package fifosync provides a pattern on Unix-like operating systems for synchronizing across processes using Unix FIFOs
+(named pipes).
+*/
+package fifosync
+
+import (
+ "errors"
+ "fmt"
+ "io"
+ "os"
+
+ "golang.org/x/sys/unix"
+)
+
+// Trigger is a FIFO which is used to signal another process to proceed.
+type Trigger interface {
+ // Name returns the name of the trigger
+ Name() string
+ // Trigger triggers another process to proceed.
+ Trigger() error
+}
+
+// Waiter is a FIFO which is used to wait for trigger provided by another process.
+type Waiter interface {
+ // Name returns the name of the waiter
+ Name() string
+ // Wait waits for a trigger from another process.
+ Wait() error
+}
+
+type fifo struct {
+ name string
+}
+
+// NewTrigger creates a new Trigger
+func NewTrigger(name string, mode uint32) (Trigger, error) {
+ return new(name, mode)
+}
+
+// NewWaiter creates a new Waiter
+func NewWaiter(name string, mode uint32) (Waiter, error) {
+ return new(name, mode)
+}
+
+// New creates a new FIFO if it does not already exist. Use AsTrigger or AsWaiter to convert the new FIFO to a Trigger
+// or Waiter.
+func new(name string, mode uint32) (*fifo, error) {
+ s, err := os.Stat(name)
+ exist := true
+ if err != nil {
+ if !errors.Is(err, os.ErrNotExist) {
+ return nil, fmt.Errorf("fifo: failed to stat %q: %w", name, err)
+ }
+ exist = false
+ }
+ if s != nil && s.Mode()&os.ModeNamedPipe == 0 {
+ return nil, fmt.Errorf("fifo: not a named pipe: %q", name)
+ }
+ if !exist {
+ err = unix.Mkfifo(name, mode)
+ if err != nil && !errors.Is(err, unix.EEXIST) {
+ return nil, fmt.Errorf("fifo: failed to create %q: %w", name, err)
+ }
+ }
+ return &fifo{
+ name: name,
+ }, nil
+}
+
+func (f *fifo) Name() string {
+ return f.name
+}
+
+// AsTrigger converts the FIFO to a Trigger.
+func (f *fifo) AsTrigger() Trigger {
+ return f
+}
+
+// Trigger triggers another process to proceed.
+func (f *fifo) Trigger() error {
+ file, err := os.OpenFile(f.name, os.O_RDONLY, 0)
+ if err != nil {
+ return fmt.Errorf("fifo: failed to open %s: %w", f.name, err)
+ }
+ defer file.Close()
+ _, err = io.ReadAll(file)
+ return err
+}
+
+// AsWaiter converts the FIFO to a Waiter.
+func (f *fifo) AsWaiter() Waiter {
+ return f
+}
+
+// Wait waits for a trigger from another process.
+func (f *fifo) Wait() error {
+ fd, err := unix.Open(f.name, unix.O_WRONLY, 0)
+ if err != nil {
+ return fmt.Errorf("fifo: failed to open %s: %w", f.name, err)
+ }
+ defer unix.Close(fd)
+ if _, err := unix.Write(fd, []byte("0")); err != nil {
+ return fmt.Errorf("failed to write to %d: %w", fd, err)
+ }
+ return nil
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/containerd-1.7.21_472731909fa3/releases/v1.7.22.toml new/containerd-1.7.22_7f7fdf5fed64/releases/v1.7.22.toml
--- old/containerd-1.7.21_472731909fa3/releases/v1.7.22.toml 1970-01-01 01:00:00.000000000 +0100
+++ new/containerd-1.7.22_7f7fdf5fed64/releases/v1.7.22.toml 2024-09-09 22:09:31.000000000 +0200
@@ -0,0 +1,27 @@
+# commit to be tagged for new release
+commit = "HEAD"
+
+# project_name is used to refer to the project in the notes
+project_name = "containerd"
+
+# github_repo is the github project, only github is currently supported
+github_repo = "containerd/containerd"
+
+# match_deps is a pattern to determine which dependencies should be included
+# as part of this release. The changelog will also include changes for these
+# dependencies based on the change in the dependency's version.
+match_deps = "^github.com/(containerd/[a-zA-Z0-9-]+)$"
+
+# previous release of this project for determining changes
+previous = "v1.7.21"
+
+# pre_release is whether to include a disclaimer about being a pre-release
+pre_release = false
+
+# preface is the description of the release which precedes the author list
+# and changelog. This description could include highlights as well as any
+# description of changes. Use markdown formatting.
+preface = """\
+The twenty-second patch release for containerd 1.7 contains various fixes
+and updates.
+"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/containerd-1.7.21_472731909fa3/runtime/v2/runc/task/service.go new/containerd-1.7.22_7f7fdf5fed64/runtime/v2/runc/task/service.go
--- old/containerd-1.7.21_472731909fa3/runtime/v2/runc/task/service.go 2024-08-27 00:04:19.000000000 +0200
+++ new/containerd-1.7.22_7f7fdf5fed64/runtime/v2/runc/task/service.go 2024-09-09 22:09:31.000000000 +0200
@@ -73,15 +73,17 @@
}
go ep.Run(ctx)
s := &service{
- context: ctx,
- events: make(chan interface{}, 128),
- ec: reaper.Default.Subscribe(),
- ep: ep,
- shutdown: sd,
- containers: make(map[string]*runc.Container),
- running: make(map[int][]containerProcess),
- pendingExecs: make(map[*runc.Container]int),
- exitSubscribers: make(map[*map[int][]runcC.Exit]struct{}),
+ context: ctx,
+ events: make(chan interface{}, 128),
+ ec: reaper.Default.Subscribe(),
+ ep: ep,
+ shutdown: sd,
+ containers: make(map[string]*runc.Container),
+ running: make(map[int][]containerProcess),
+ runningExecs: make(map[*runc.Container]int),
+ execCountSubscribers: make(map[*runc.Container]chan<- int),
+ containerInitExit: make(map[*runc.Container]runcC.Exit),
+ exitSubscribers: make(map[*map[int][]runcC.Exit]struct{}),
}
go s.processExits()
runcC.Monitor = reaper.Default
@@ -116,7 +118,19 @@
lifecycleMu sync.Mutex
running map[int][]containerProcess // pid -> running process, guarded by lifecycleMu
- pendingExecs map[*runc.Container]int // container -> num pending execs, guarded by lifecycleMu
+ runningExecs map[*runc.Container]int // container -> num running execs, guarded by lifecycleMu
+ // container -> subscription to exec exits/changes to s.runningExecs[container],
+ // guarded by lifecycleMu
+ execCountSubscribers map[*runc.Container]chan<- int
+ // container -> init exits, guarded by lifecycleMu
+ // Used to stash container init process exits, so that we can hold them
+ // until after we've made sure to publish all the container's exec exits.
+ // Also used to prevent starting new execs from being started if the
+ // container's init process (read: pid, not [process.Init]) has already been
+ // reaped by the shim.
+ // Note that this flag gets updated before the container's [process.Init.Status]
+ // is transitioned to "stopped".
+ containerInitExit map[*runc.Container]runcC.Exit
// Subscriptions to exits for PIDs. Adding/deleting subscriptions and
// dereferencing the subscription pointers must only be done while holding
// lifecycleMu.
@@ -137,8 +151,7 @@
//
// The returned handleStarted closure records that the process has started so
// that its exit can be handled efficiently. If the process has already exited,
-// it handles the exit immediately. In addition, if the process is an exec and
-// its container's init process has already exited, that exit is also processed.
+// it handles the exit immediately.
// handleStarted should be called after the event announcing the start of the
// process has been published. Note that s.lifecycleMu must not be held when
// calling handleStarted.
@@ -173,44 +186,8 @@
pid = p.Pid()
}
- _, init := p.(*process.Init)
s.lifecycleMu.Lock()
- var initExits []runcC.Exit
- var initCps []containerProcess
- if !init {
- s.pendingExecs[c]--
-
- initPid := c.Pid()
- iExits, initExited := exits[initPid]
- if initExited && s.pendingExecs[c] == 0 {
- // c's init process has exited before handleStarted was called and
- // this is the last pending exec process start - we need to process
- // the exit for the init process after processing this exec, so:
- // - delete c from the s.pendingExecs map
- // - keep the exits for the init pid to process later (after we process
- // this exec's exits)
- // - get the necessary containerProcesses for the init process (that we
- // need to process the exits), and remove them from s.running (which we skipped
- // doing in processExits).
- delete(s.pendingExecs, c)
- initExits = iExits
- var skipped []containerProcess
- for _, initPidCp := range s.running[initPid] {
- if initPidCp.Container == c {
- initCps = append(initCps, initPidCp)
- } else {
- skipped = append(skipped, initPidCp)
- }
- }
- if len(skipped) == 0 {
- delete(s.running, initPid)
- } else {
- s.running[initPid] = skipped
- }
- }
- }
-
ees, exited := exits[pid]
delete(s.exitSubscribers, &exits)
exits = nil
@@ -219,11 +196,6 @@
for _, ee := range ees {
s.handleProcessExit(ee, c, p)
}
- for _, eee := range initExits {
- for _, cp := range initCps {
- s.handleProcessExit(eee, cp.Container, cp.Process)
- }
- }
} else {
// Process start was successful, add to `s.running`.
s.running[pid] = append(s.running[pid], containerProcess{
@@ -304,7 +276,11 @@
if r.ExecID == "" {
cinit = container
} else {
- s.pendingExecs[container]++
+ if _, initExited := s.containerInitExit[container]; initExited {
+ s.lifecycleMu.Unlock()
+ return nil, errdefs.ToGRPCf(errdefs.ErrFailedPrecondition, "container %s init process is not running", container.ID)
+ }
+ s.runningExecs[container]++
}
handleStarted, cleanup := s.preStart(cinit)
s.lifecycleMu.Unlock()
@@ -312,6 +288,17 @@
p, err := container.Start(ctx, r)
if err != nil {
+ // If we failed to even start the process, s.runningExecs
+ // won't get decremented in s.handleProcessExit. We still need
+ // to update it.
+ if r.ExecID != "" {
+ s.lifecycleMu.Lock()
+ s.runningExecs[container]--
+ if ch, ok := s.execCountSubscribers[container]; ok {
+ ch <- s.runningExecs[container]
+ }
+ s.lifecycleMu.Unlock()
+ }
handleStarted(container, p)
return nil, errdefs.ToGRPC(err)
}
@@ -676,28 +663,23 @@
// Handle the exit for a created/started process. If there's more than
// one, assume they've all exited. One of them will be the correct
// process.
- var cps, skipped []containerProcess
+ var cps []containerProcess
for _, cp := range s.running[e.Pid] {
_, init := cp.Process.(*process.Init)
- if init && s.pendingExecs[cp.Container] != 0 {
- // This exit relates to a container for which we have pending execs. In
- // order to ensure order between execs and the init process for a given
- // container, skip processing this exit here and let the `handleStarted`
- // closure for the pending exec publish it.
- skipped = append(skipped, cp)
- } else {
- cps = append(cps, cp)
+ if init {
+ s.containerInitExit[cp.Container] = e
}
+ cps = append(cps, cp)
}
- if len(skipped) > 0 {
- s.running[e.Pid] = skipped
- } else {
- delete(s.running, e.Pid)
- }
+ delete(s.running, e.Pid)
s.lifecycleMu.Unlock()
for _, cp := range cps {
- s.handleProcessExit(e, cp.Container, cp.Process)
+ if ip, ok := cp.Process.(*process.Init); ok {
+ s.handleInitExit(e, cp.Container, ip)
+ } else {
+ s.handleProcessExit(e, cp.Container, cp.Process)
+ }
}
}
}
@@ -706,18 +688,60 @@
s.events <- evt
}
-// s.mu must be locked when calling handleProcessExit
-func (s *service) handleProcessExit(e runcC.Exit, c *runc.Container, p process.Process) {
- if ip, ok := p.(*process.Init); ok {
- // Ensure all children are killed
- if runc.ShouldKillAllOnExit(s.context, c.Bundle) {
- if err := ip.KillAll(s.context); err != nil {
- logrus.WithError(err).WithField("id", ip.ID()).
- Error("failed to kill init's children")
- }
+// handleInitExit processes container init process exits.
+// This is handled separately from non-init exits, because there
+// are some extra invariants we want to ensure in this case, namely:
+// - for a given container, the init process exit MUST be the last exit published
+// This is achieved by:
+// - killing all running container processes (if the container has a shared pid
+// namespace, otherwise all other processes have been reaped already).
+// - waiting for the container's running exec counter to reach 0.
+// - finally, publishing the init exit.
+func (s *service) handleInitExit(e runcC.Exit, c *runc.Container, p *process.Init) {
+ // kill all running container processes
+ if runc.ShouldKillAllOnExit(s.context, c.Bundle) {
+ if err := p.KillAll(s.context); err != nil {
+ logrus.WithError(err).WithField("id", p.ID()).
+ Error("failed to kill init's children")
}
}
+ s.lifecycleMu.Lock()
+ numRunningExecs := s.runningExecs[c]
+ if numRunningExecs == 0 {
+ delete(s.runningExecs, c)
+ s.lifecycleMu.Unlock()
+ s.handleProcessExit(e, c, p)
+ return
+ }
+
+ events := make(chan int, numRunningExecs)
+ s.execCountSubscribers[c] = events
+
+ s.lifecycleMu.Unlock()
+
+ go func() {
+ defer func() {
+ s.lifecycleMu.Lock()
+ defer s.lifecycleMu.Unlock()
+ delete(s.execCountSubscribers, c)
+ delete(s.runningExecs, c)
+ }()
+
+ // wait for running processes to exit
+ for {
+ if runningExecs := <-events; runningExecs == 0 {
+ break
+ }
+ }
+
+ // all running processes have exited now, and no new
+ // ones can start, so we can publish the init exit
+ s.handleProcessExit(e, c, p)
+ }()
+}
+
+func (s *service) handleProcessExit(e runcC.Exit, c *runc.Container, p process.Process) {
p.SetExited(e.Status)
s.send(&eventstypes.TaskExit{
ContainerID: c.ID,
@@ -726,6 +750,14 @@
ExitStatus: uint32(e.Status),
ExitedAt: protobuf.ToTimestamp(p.ExitedAt()),
})
+ if _, init := p.(*process.Init); !init {
+ s.lifecycleMu.Lock()
+ s.runningExecs[c]--
+ if ch, ok := s.execCountSubscribers[c]; ok {
+ ch <- s.runningExecs[c]
+ }
+ s.lifecycleMu.Unlock()
+ }
}
func (s *service) getContainerPids(ctx context.Context, container *runc.Container) ([]uint32, error) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/containerd-1.7.21_472731909fa3/script/setup/prepare_env_windows.ps1 new/containerd-1.7.22_7f7fdf5fed64/script/setup/prepare_env_windows.ps1
--- old/containerd-1.7.21_472731909fa3/script/setup/prepare_env_windows.ps1 2024-08-27 00:04:19.000000000 +0200
+++ new/containerd-1.7.22_7f7fdf5fed64/script/setup/prepare_env_windows.ps1 2024-09-09 22:09:31.000000000 +0200
@@ -5,7 +5,7 @@
# lived test environment.
Set-MpPreference -DisableRealtimeMonitoring:$true
-$PACKAGES= @{ mingw = "10.2.0"; git = ""; golang = "1.22.6"; make = ""; nssm = "" }
+$PACKAGES= @{ mingw = "10.2.0"; git = ""; golang = "1.22.7"; make = ""; nssm = "" }
Write-Host "Downloading chocolatey package"
curl.exe -L "https://packages.chocolatey.org/chocolatey.0.10.15.nupkg" -o 'c:\choco.zip'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/containerd-1.7.21_472731909fa3/script/setup/runc-version new/containerd-1.7.22_7f7fdf5fed64/script/setup/runc-version
--- old/containerd-1.7.21_472731909fa3/script/setup/runc-version 2024-08-27 00:04:19.000000000 +0200
+++ new/containerd-1.7.22_7f7fdf5fed64/script/setup/runc-version 2024-09-09 22:09:31.000000000 +0200
@@ -1 +1 @@
-v1.1.13
+v1.1.14
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/containerd-1.7.21_472731909fa3/version/version.go new/containerd-1.7.22_7f7fdf5fed64/version/version.go
--- old/containerd-1.7.21_472731909fa3/version/version.go 2024-08-27 00:04:19.000000000 +0200
+++ new/containerd-1.7.22_7f7fdf5fed64/version/version.go 2024-09-09 22:09:31.000000000 +0200
@@ -23,7 +23,7 @@
Package = "github.com/containerd/containerd"
// Version holds the complete version number. Filled in at linking time.
- Version = "1.7.21+unknown"
+ Version = "1.7.22+unknown"
// Revision is filled with the VCS (e.g. git) revision being used to build
// the program at linking time.
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package prctl for openSUSE:Factory checked in at 2024-09-12 16:53:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/prctl (Old)
and /work/SRC/openSUSE:Factory/.prctl.new.17570 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "prctl"
Thu Sep 12 16:53:59 2024 rev:24 rq:1199987 version:1.7
Changes:
--------
--- /work/SRC/openSUSE:Factory/prctl/prctl.changes 2024-05-11 18:19:00.749439240 +0200
+++ /work/SRC/openSUSE:Factory/.prctl.new.17570/prctl.changes 2024-09-12 16:54:02.591076843 +0200
@@ -1,0 +2,14 @@
+Wed Sep 11 07:18:57 UTC 2024 - pgajdos(a)suse.com
+
+- version update to 1.7
+ * Added missing defines to Makefile.in
+ * Replace pre-generated configure with configure.ac
+ * Added missing function types in prctl.c
+- deleted patches
+ - prctl-1.5-Makefile.patch (partially, upstreamed, the rest in)
+ - prctl-1.5-warnings.patch (upstreamed)
+ - prctl-gcc14.patch (upstreamed)
+- added patches
+ + prctl-destdir.patch
+
+-------------------------------------------------------------------
Old:
----
prctl-1.5-Makefile.patch
prctl-1.5-warnings.patch
prctl-1.6.tar.gz
prctl-gcc14.patch
New:
----
prctl-1.7.tar.gz
prctl-destdir.patch
BETA DEBUG BEGIN:
Old:- deleted patches
- prctl-1.5-Makefile.patch (partially, upstreamed, the rest in)
- prctl-1.5-warnings.patch (upstreamed)
Old: - prctl-1.5-Makefile.patch (partially, upstreamed, the rest in)
- prctl-1.5-warnings.patch (upstreamed)
- prctl-gcc14.patch (upstreamed)
Old: - prctl-1.5-warnings.patch (upstreamed)
- prctl-gcc14.patch (upstreamed)
- added patches
BETA DEBUG END:
BETA DEBUG BEGIN:
New:- added patches
+ prctl-destdir.patch
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ prctl.spec ++++++
--- /var/tmp/diff_new_pack.5DEF8P/_old 2024-09-12 16:54:03.127099176 +0200
+++ /var/tmp/diff_new_pack.5DEF8P/_new 2024-09-12 16:54:03.127099176 +0200
@@ -17,18 +17,16 @@
Name: prctl
-Version: 1.6
+Version: 1.7
Release: 0
Summary: A utility to perform process operations
License: GPL-2.0-or-later
Group: System/Monitoring
-URL: http://sourceforge.net/projects/prctl
-Source0: http://downloads.sourceforge.net/project/prctl/prctl/%{version}/prctl-%{ver…
+URL: https://github.com/hikerockies/prctl/
+Source0: https://github.com/hikerockies/prctl/archive/refs/tags/v%{version}.tar.gz#/…
Source1: COPYING
-Patch0: prctl-1.5-Makefile.patch
-Patch1: prctl-1.5-warnings.patch
-# work with gcc14
-Patch2: prctl-gcc14.patch
+BuildRequires: automake
+Patch0: prctl-destdir.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
@@ -40,11 +38,13 @@
cp %{SOURCE1} .
%build
+autoreconf -fiv
%configure
make
%install
-make DESTDIR=%{buildroot} install
+export man1dir="%{_mandir}/man1"
+%make_install
%files
%defattr(-, root, root)
++++++ prctl-1.6.tar.gz -> prctl-1.7.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prctl-1.6/BUILD new/prctl-1.7/BUILD
--- old/prctl-1.6/BUILD 1970-01-01 01:00:00.000000000 +0100
+++ new/prctl-1.7/BUILD 2024-07-27 21:35:04.000000000 +0200
@@ -0,0 +1,7 @@
+Steps to build
+--------------
+
+- Autoconfigure with "autoreconf -i"
+- Run configuration script - "./configure"
+- Build with "make"
+- Install with "make install"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prctl-1.6/ChangeLog new/prctl-1.7/ChangeLog
--- old/prctl-1.6/ChangeLog 2014-02-27 18:40:42.000000000 +0100
+++ new/prctl-1.7/ChangeLog 2024-07-27 21:35:04.000000000 +0200
@@ -1,3 +1,10 @@
+V1.7:
+Fri Jul 26 15:55:24 MDT 2024 Khalid Aziz (khalid(a)gonehiking.org)
+ * Added missing defines to Makefile.in
+ * Replace pre-generated configure with configure.ac
+ * Added missing function types in prctl.c
+
+---------------------------
V1.6:
Wed Feb 26 10:39:10 MST 2014 Khalid Aziz (khalid.aziz(a)oracle.com)
* Improved messages and suppressed unnecessary error messages
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prctl-1.6/Makefile.in new/prctl-1.7/Makefile.in
--- old/prctl-1.6/Makefile.in 2014-02-27 18:40:42.000000000 +0100
+++ new/prctl-1.7/Makefile.in 2024-07-27 21:35:04.000000000 +0200
@@ -29,9 +29,10 @@
DEFS = @DEFS@
LIBS = @LIBS@
+CPPFLAGS = @CPPFLAGS@
CFLAGS = @CFLAGS@
# If you want debug on by default, use: CFLAGS="-g" ./configure
-LDFLAGS = $(CFLAGS)
+LDFLAGS = @LDFLAGS@
prefix = @prefix@
exec_prefix = $(prefix)
@@ -106,7 +107,8 @@
rm -f *.o prctl
distclean: clean
- rm -f Makefile config.status config.log config.cache
+ rm -f Makefile config.status config.log config.cache config.h configure configure~ config.h.in install-sh
+ rm -fr autom4te.cache
prctl: Makefile $(OBJS)
$(CC) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prctl-1.6/configure new/prctl-1.7/configure
--- old/prctl-1.6/configure 2014-02-27 18:40:42.000000000 +0100
+++ new/prctl-1.7/configure 1970-01-01 01:00:00.000000000 +0100
@@ -1,1384 +0,0 @@
-#! /bin/sh
-
-# Guess values for system-dependent variables and create Makefiles.
-# Generated automatically using autoconf version 2.13
-# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
-#
-# This configure script is free software; the Free Software Foundation
-# gives unlimited permission to copy, distribute and modify it.
-
-# Defaults:
-ac_help=
-ac_default_prefix=/usr/local
-# Any additions from configure.in:
-
-# Initialize some variables set by options.
-# The variables have the same names as the options, with
-# dashes changed to underlines.
-build=NONE
-cache_file=./config.cache
-exec_prefix=NONE
-host=NONE
-no_create=
-nonopt=NONE
-no_recursion=
-prefix=NONE
-program_prefix=NONE
-program_suffix=NONE
-program_transform_name=s,x,x,
-silent=
-site=
-srcdir=
-target=NONE
-verbose=
-x_includes=NONE
-x_libraries=NONE
-bindir='${exec_prefix}/bin'
-sbindir='${exec_prefix}/sbin'
-libexecdir='${exec_prefix}/libexec'
-datadir='${prefix}/share'
-sysconfdir='${prefix}/etc'
-sharedstatedir='${prefix}/com'
-localstatedir='${prefix}/var'
-libdir='${exec_prefix}/lib'
-includedir='${prefix}/include'
-oldincludedir='/usr/include'
-infodir='${prefix}/info'
-mandir='${prefix}/man'
-
-# Initialize some other variables.
-subdirs=
-MFLAGS= MAKEFLAGS=
-SHELL=${CONFIG_SHELL-/bin/sh}
-# Maximum number of lines to put in a shell here document.
-ac_max_here_lines=12
-
-ac_prev=
-for ac_option
-do
-
- # If the previous option needs an argument, assign it.
- if test -n "$ac_prev"; then
- eval "$ac_prev=\$ac_option"
- ac_prev=
- continue
- fi
-
- case "$ac_option" in
- -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
- *) ac_optarg= ;;
- esac
-
- # Accept the important Cygnus configure options, so we can diagnose typos.
-
- case "$ac_option" in
-
- -bindir | --bindir | --bindi | --bind | --bin | --bi)
- ac_prev=bindir ;;
- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
- bindir="$ac_optarg" ;;
-
- -build | --build | --buil | --bui | --bu)
- ac_prev=build ;;
- -build=* | --build=* | --buil=* | --bui=* | --bu=*)
- build="$ac_optarg" ;;
-
- -cache-file | --cache-file | --cache-fil | --cache-fi \
- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
- ac_prev=cache_file ;;
- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
- cache_file="$ac_optarg" ;;
-
- -datadir | --datadir | --datadi | --datad | --data | --dat | --da)
- ac_prev=datadir ;;
- -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \
- | --da=*)
- datadir="$ac_optarg" ;;
-
- -disable-* | --disable-*)
- ac_feature=`echo $ac_option|sed -e 's/-*disable-//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then
- { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
- fi
- ac_feature=`echo $ac_feature| sed 's/-/_/g'`
- eval "enable_${ac_feature}=no" ;;
-
- -enable-* | --enable-*)
- ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then
- { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; }
- fi
- ac_feature=`echo $ac_feature| sed 's/-/_/g'`
- case "$ac_option" in
- *=*) ;;
- *) ac_optarg=yes ;;
- esac
- eval "enable_${ac_feature}='$ac_optarg'" ;;
-
- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
- | --exec | --exe | --ex)
- ac_prev=exec_prefix ;;
- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
- | --exec=* | --exe=* | --ex=*)
- exec_prefix="$ac_optarg" ;;
-
- -gas | --gas | --ga | --g)
- # Obsolete; use --with-gas.
- with_gas=yes ;;
-
- -help | --help | --hel | --he)
- # Omit some internal or obsolete options to make the list less imposing.
- # This message is too long to be a string in the A/UX 3.1 sh.
- cat << EOF
-Usage: configure [options] [host]
-Options: [defaults in brackets after descriptions]
-Configuration:
- --cache-file=FILE cache test results in FILE
- --help print this message
- --no-create do not create output files
- --quiet, --silent do not print \`checking...' messages
- --version print the version of autoconf that created configure
-Directory and file names:
- --prefix=PREFIX install architecture-independent files in PREFIX
- [$ac_default_prefix]
- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- [same as prefix]
- --bindir=DIR user executables in DIR [EPREFIX/bin]
- --sbindir=DIR system admin executables in DIR [EPREFIX/sbin]
- --libexecdir=DIR program executables in DIR [EPREFIX/libexec]
- --datadir=DIR read-only architecture-independent data in DIR
- [PREFIX/share]
- --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc]
- --sharedstatedir=DIR modifiable architecture-independent data in DIR
- [PREFIX/com]
- --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var]
- --libdir=DIR object code libraries in DIR [EPREFIX/lib]
- --includedir=DIR C header files in DIR [PREFIX/include]
- --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include]
- --infodir=DIR info documentation in DIR [PREFIX/info]
- --mandir=DIR man documentation in DIR [PREFIX/man]
- --srcdir=DIR find the sources in DIR [configure dir or ..]
- --program-prefix=PREFIX prepend PREFIX to installed program names
- --program-suffix=SUFFIX append SUFFIX to installed program names
- --program-transform-name=PROGRAM
- run sed PROGRAM on installed program names
-EOF
- cat << EOF
-Host type:
- --build=BUILD configure for building on BUILD [BUILD=HOST]
- --host=HOST configure for HOST [guessed]
- --target=TARGET configure for TARGET [TARGET=HOST]
-Features and packages:
- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
- --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
- --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
- --x-includes=DIR X include files are in DIR
- --x-libraries=DIR X library files are in DIR
-EOF
- if test -n "$ac_help"; then
- echo "--enable and --with options recognized:$ac_help"
- fi
- exit 0 ;;
-
- -host | --host | --hos | --ho)
- ac_prev=host ;;
- -host=* | --host=* | --hos=* | --ho=*)
- host="$ac_optarg" ;;
-
- -includedir | --includedir | --includedi | --included | --include \
- | --includ | --inclu | --incl | --inc)
- ac_prev=includedir ;;
- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
- | --includ=* | --inclu=* | --incl=* | --inc=*)
- includedir="$ac_optarg" ;;
-
- -infodir | --infodir | --infodi | --infod | --info | --inf)
- ac_prev=infodir ;;
- -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
- infodir="$ac_optarg" ;;
-
- -libdir | --libdir | --libdi | --libd)
- ac_prev=libdir ;;
- -libdir=* | --libdir=* | --libdi=* | --libd=*)
- libdir="$ac_optarg" ;;
-
- -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
- | --libexe | --libex | --libe)
- ac_prev=libexecdir ;;
- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
- | --libexe=* | --libex=* | --libe=*)
- libexecdir="$ac_optarg" ;;
-
- -localstatedir | --localstatedir | --localstatedi | --localstated \
- | --localstate | --localstat | --localsta | --localst \
- | --locals | --local | --loca | --loc | --lo)
- ac_prev=localstatedir ;;
- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
- | --localstate=* | --localstat=* | --localsta=* | --localst=* \
- | --locals=* | --local=* | --loca=* | --loc=* | --lo=*)
- localstatedir="$ac_optarg" ;;
-
- -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
- ac_prev=mandir ;;
- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
- mandir="$ac_optarg" ;;
-
- -nfp | --nfp | --nf)
- # Obsolete; use --without-fp.
- with_fp=no ;;
-
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c)
- no_create=yes ;;
-
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
- no_recursion=yes ;;
-
- -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
- | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
- | --oldin | --oldi | --old | --ol | --o)
- ac_prev=oldincludedir ;;
- -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
- | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
- oldincludedir="$ac_optarg" ;;
-
- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
- ac_prev=prefix ;;
- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
- prefix="$ac_optarg" ;;
-
- -program-prefix | --program-prefix | --program-prefi | --program-pref \
- | --program-pre | --program-pr | --program-p)
- ac_prev=program_prefix ;;
- -program-prefix=* | --program-prefix=* | --program-prefi=* \
- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
- program_prefix="$ac_optarg" ;;
-
- -program-suffix | --program-suffix | --program-suffi | --program-suff \
- | --program-suf | --program-su | --program-s)
- ac_prev=program_suffix ;;
- -program-suffix=* | --program-suffix=* | --program-suffi=* \
- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
- program_suffix="$ac_optarg" ;;
-
- -program-transform-name | --program-transform-name \
- | --program-transform-nam | --program-transform-na \
- | --program-transform-n | --program-transform- \
- | --program-transform | --program-transfor \
- | --program-transfo | --program-transf \
- | --program-trans | --program-tran \
- | --progr-tra | --program-tr | --program-t)
- ac_prev=program_transform_name ;;
- -program-transform-name=* | --program-transform-name=* \
- | --program-transform-nam=* | --program-transform-na=* \
- | --program-transform-n=* | --program-transform-=* \
- | --program-transform=* | --program-transfor=* \
- | --program-transfo=* | --program-transf=* \
- | --program-trans=* | --program-tran=* \
- | --progr-tra=* | --program-tr=* | --program-t=*)
- program_transform_name="$ac_optarg" ;;
-
- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
- | -silent | --silent | --silen | --sile | --sil)
- silent=yes ;;
-
- -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
- ac_prev=sbindir ;;
- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
- | --sbi=* | --sb=*)
- sbindir="$ac_optarg" ;;
-
- -sharedstatedir | --sharedstatedir | --sharedstatedi \
- | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
- | --sharedst | --shareds | --shared | --share | --shar \
- | --sha | --sh)
- ac_prev=sharedstatedir ;;
- -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
- | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
- | --sha=* | --sh=*)
- sharedstatedir="$ac_optarg" ;;
-
- -site | --site | --sit)
- ac_prev=site ;;
- -site=* | --site=* | --sit=*)
- site="$ac_optarg" ;;
-
- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
- ac_prev=srcdir ;;
- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
- srcdir="$ac_optarg" ;;
-
- -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
- | --syscon | --sysco | --sysc | --sys | --sy)
- ac_prev=sysconfdir ;;
- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
- | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
- sysconfdir="$ac_optarg" ;;
-
- -target | --target | --targe | --targ | --tar | --ta | --t)
- ac_prev=target ;;
- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
- target="$ac_optarg" ;;
-
- -v | -verbose | --verbose | --verbos | --verbo | --verb)
- verbose=yes ;;
-
- -version | --version | --versio | --versi | --vers)
- echo "configure generated by autoconf version 2.13"
- exit 0 ;;
-
- -with-* | --with-*)
- ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then
- { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
- fi
- ac_package=`echo $ac_package| sed 's/-/_/g'`
- case "$ac_option" in
- *=*) ;;
- *) ac_optarg=yes ;;
- esac
- eval "with_${ac_package}='$ac_optarg'" ;;
-
- -without-* | --without-*)
- ac_package=`echo $ac_option|sed -e 's/-*without-//'`
- # Reject names that are not valid shell variable names.
- if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then
- { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; }
- fi
- ac_package=`echo $ac_package| sed 's/-/_/g'`
- eval "with_${ac_package}=no" ;;
-
- --x)
- # Obsolete; use --with-x.
- with_x=yes ;;
-
- -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
- | --x-incl | --x-inc | --x-in | --x-i)
- ac_prev=x_includes ;;
- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
- x_includes="$ac_optarg" ;;
-
- -x-libraries | --x-libraries | --x-librarie | --x-librari \
- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
- ac_prev=x_libraries ;;
- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
- x_libraries="$ac_optarg" ;;
-
- -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; }
- ;;
-
- *)
- if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then
- echo "configure: warning: $ac_option: invalid host type" 1>&2
- fi
- if test "x$nonopt" != xNONE; then
- { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; }
- fi
- nonopt="$ac_option"
- ;;
-
- esac
-done
-
-if test -n "$ac_prev"; then
- { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; }
-fi
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-# File descriptor usage:
-# 0 standard input
-# 1 file creation
-# 2 errors and warnings
-# 3 some systems may open it to /dev/tty
-# 4 used on the Kubota Titan
-# 6 checking for... messages and results
-# 5 compiler messages saved in config.log
-if test "$silent" = yes; then
- exec 6>/dev/null
-else
- exec 6>&1
-fi
-exec 5>./config.log
-
-echo "\
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-" 1>&5
-
-# Strip out --no-create and --no-recursion so they do not pile up.
-# Also quote any args containing shell metacharacters.
-ac_configure_args=
-for ac_arg
-do
- case "$ac_arg" in
- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
- | --no-cr | --no-c) ;;
- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;;
- *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*)
- ac_configure_args="$ac_configure_args '$ac_arg'" ;;
- *) ac_configure_args="$ac_configure_args $ac_arg" ;;
- esac
-done
-
-# NLS nuisances.
-# Only set these to C if already set. These must not be set unconditionally
-# because not all systems understand e.g. LANG=C (notably SCO).
-# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'!
-# Non-C LC_CTYPE values break the ctype check.
-if test "${LANG+set}" = set; then LANG=C; export LANG; fi
-if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi
-if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi
-if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi
-
-# confdefs.h avoids OS command line length limits that DEFS can exceed.
-rm -rf conftest* confdefs.h
-# AIX cpp loses on an empty file, so make sure it contains at least a newline.
-echo > confdefs.h
-
-# A filename unique to this package, relative to the directory that
-# configure is in, which we can look for to find out if srcdir is correct.
-ac_unique_file=prctl.c
-
-# Find the source files, if location was not specified.
-if test -z "$srcdir"; then
- ac_srcdir_defaulted=yes
- # Try the directory containing this script, then its parent.
- ac_prog=$0
- ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'`
- test "x$ac_confdir" = "x$ac_prog" && ac_confdir=.
- srcdir=$ac_confdir
- if test ! -r $srcdir/$ac_unique_file; then
- srcdir=..
- fi
-else
- ac_srcdir_defaulted=no
-fi
-if test ! -r $srcdir/$ac_unique_file; then
- if test "$ac_srcdir_defaulted" = yes; then
- { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; }
- else
- { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; }
- fi
-fi
-srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'`
-
-# Prefer explicitly selected file to automatically selected ones.
-if test -z "$CONFIG_SITE"; then
- if test "x$prefix" != xNONE; then
- CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site"
- else
- CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site"
- fi
-fi
-for ac_site_file in $CONFIG_SITE; do
- if test -r "$ac_site_file"; then
- echo "loading site script $ac_site_file"
- . "$ac_site_file"
- fi
-done
-
-if test -r "$cache_file"; then
- echo "loading cache $cache_file"
- . $cache_file
-else
- echo "creating cache $cache_file"
- > $cache_file
-fi
-
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-ac_exeext=
-ac_objext=o
-if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
- # Stardent Vistra SVR4 grep lacks -e, says ghazi(a)caip.rutgers.edu.
- if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
- ac_n= ac_c='
-' ac_t=' '
- else
- ac_n=-n ac_c= ac_t=
- fi
-else
- ac_n= ac_c='\c' ac_t=
-fi
-
-
-
-echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:527: checking whether ln -s works" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- rm -f conftestdata
-if ln -s X conftestdata 2>/dev/null
-then
- rm -f conftestdata
- ac_cv_prog_LN_S="ln -s"
-else
- ac_cv_prog_LN_S=ln
-fi
-fi
-LN_S="$ac_cv_prog_LN_S"
-if test "$ac_cv_prog_LN_S" = "ln -s"; then
- echo "$ac_t""yes" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-# Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:550: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_CC="gcc"
- break
- fi
- done
- IFS="$ac_save_ifs"
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
- echo "$ac_t""$CC" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
-if test -z "$CC"; then
- # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:580: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_prog_rejected=no
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then
- ac_prog_rejected=yes
- continue
- fi
- ac_cv_prog_CC="cc"
- break
- fi
- done
- IFS="$ac_save_ifs"
-if test $ac_prog_rejected = yes; then
- # We found a bogon in the path, so make sure we never use it.
- set dummy $ac_cv_prog_CC
- shift
- if test $# -gt 0; then
- # We chose a different compiler from the bogus one.
- # However, it has the same basename, so the bogon will be chosen
- # first if we set CC to just the basename; use the full file name.
- shift
- set dummy "$ac_dir/$ac_word" "$@"
- shift
- ac_cv_prog_CC="$@"
- fi
-fi
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
- echo "$ac_t""$CC" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
-
- if test -z "$CC"; then
- case "`uname -s`" in
- *win32* | *WIN32*)
- # Extract the first word of "cl", so it can be a program name with args.
-set dummy cl; ac_word=$2
-echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:631: checking for $ac_word" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- if test -n "$CC"; then
- ac_cv_prog_CC="$CC" # Let the user override the test.
-else
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":"
- ac_dummy="$PATH"
- for ac_dir in $ac_dummy; do
- test -z "$ac_dir" && ac_dir=.
- if test -f $ac_dir/$ac_word; then
- ac_cv_prog_CC="cl"
- break
- fi
- done
- IFS="$ac_save_ifs"
-fi
-fi
-CC="$ac_cv_prog_CC"
-if test -n "$CC"; then
- echo "$ac_t""$CC" 1>&6
-else
- echo "$ac_t""no" 1>&6
-fi
- ;;
- esac
- fi
- test -z "$CC" && { echo "configure: error: no acceptable cc found in \$PATH" 1>&2; exit 1; }
-fi
-
-echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:663: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
-
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-cat > conftest.$ac_ext << EOF
-
-#line 674 "configure"
-#include "confdefs.h"
-
-main(){return(0);}
-EOF
-if { (eval echo configure:679: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- ac_cv_prog_cc_works=yes
- # If we can't run a trivial program, we are probably using a cross compiler.
- if (./conftest; exit) 2>/dev/null; then
- ac_cv_prog_cc_cross=no
- else
- ac_cv_prog_cc_cross=yes
- fi
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- ac_cv_prog_cc_works=no
-fi
-rm -fr conftest*
-ac_ext=c
-# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5'
-ac_link='${CC-cc} -o conftest${ac_exeext} $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5'
-cross_compiling=$ac_cv_prog_cc_cross
-
-echo "$ac_t""$ac_cv_prog_cc_works" 1>&6
-if test $ac_cv_prog_cc_works = no; then
- { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
-fi
-echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:705: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
-echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
-cross_compiling=$ac_cv_prog_cc_cross
-
-echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:710: checking whether we are using GNU C" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.c <<EOF
-#ifdef __GNUC__
- yes;
-#endif
-EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:719: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
- ac_cv_prog_gcc=yes
-else
- ac_cv_prog_gcc=no
-fi
-fi
-
-echo "$ac_t""$ac_cv_prog_gcc" 1>&6
-
-if test $ac_cv_prog_gcc = yes; then
- GCC=yes
-else
- GCC=
-fi
-
-ac_test_CFLAGS="${CFLAGS+set}"
-ac_save_CFLAGS="$CFLAGS"
-CFLAGS=
-echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:738: checking whether ${CC-cc} accepts -g" >&5
-if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- echo 'void f(){}' > conftest.c
-if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
- ac_cv_prog_cc_g=yes
-else
- ac_cv_prog_cc_g=no
-fi
-rm -f conftest*
-
-fi
-
-echo "$ac_t""$ac_cv_prog_cc_g" 1>&6
-if test "$ac_test_CFLAGS" = set; then
- CFLAGS="$ac_save_CFLAGS"
-elif test $ac_cv_prog_cc_g = yes; then
- if test "$GCC" = yes; then
- CFLAGS="-O2"
- else
- CFLAGS=""
- fi
-else
- if test "$GCC" = yes; then
- CFLAGS="-O2"
- else
- CFLAGS=
- fi
-fi
-
-echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:770: checking how to run the C preprocessor" >&5
-# On Suns, sometimes $CPP names a directory.
-if test -n "$CPP" && test -d "$CPP"; then
- CPP=
-fi
-if test -z "$CPP"; then
-if eval "test \"`echo '$''{'ac_cv_prog_CPP'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- # This must be in double quotes, not single quotes, because CPP may get
- # substituted into the Makefile and "${CC-cc}" will confuse make.
- CPP="${CC-cc} -E"
- # On the NeXT, cc -E runs the code through the compiler's parser,
- # not just through cpp.
- cat > conftest.$ac_ext <<EOF
-#line 785 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:791: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
- :
-else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- CPP="${CC-cc} -E -traditional-cpp"
- cat > conftest.$ac_ext <<EOF
-#line 802 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:808: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
- :
-else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- CPP="${CC-cc} -nologo -E"
- cat > conftest.$ac_ext <<EOF
-#line 819 "configure"
-#include "confdefs.h"
-#include <assert.h>
-Syntax Error
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:825: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
- :
-else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- CPP=/lib/cpp
-fi
-rm -f conftest*
-fi
-rm -f conftest*
-fi
-rm -f conftest*
- ac_cv_prog_CPP="$CPP"
-fi
- CPP="$ac_cv_prog_CPP"
-else
- ac_cv_prog_CPP="$CPP"
-fi
-echo "$ac_t""$CPP" 1>&6
-
-ac_config_guess=$ac_aux_dir/config.guess
-ac_config_sub=$ac_aux_dir/config.sub
-ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
-
-# Find a good install program. We prefer a C program (faster),
-# so one script is as good as another. But avoid the broken or
-# incompatible versions:
-# SysV /etc/install, /usr/sbin/install
-# SunOS /usr/etc/install
-# IRIX /sbin/install
-# AIX /bin/install
-# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
-# AFS /usr/afsws/bin/install, which mishandles nonexistent args
-# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
-# ./install, which can be erroneously created by make from ./install.sh.
-echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:880: checking for a BSD compatible install" >&5
-if test -z "$INSTALL"; then
-if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- IFS="${IFS= }"; ac_save_IFS="$IFS"; IFS=":"
- for ac_dir in $PATH; do
- # Account for people who put trailing slashes in PATH elements.
- case "$ac_dir/" in
- /|./|.//|/etc/*|/usr/sbin/*|/usr/etc/*|/sbin/*|/usr/afsws/bin/*|/usr/ucb/*) ;;
- *)
- # OSF1 and SCO ODT 3.0 have their own names for install.
- # Don't use installbsd from OSF since it installs stuff as root
- # by default.
- for ac_prog in ginstall scoinst install; do
- if test -f $ac_dir/$ac_prog; then
- if test $ac_prog = install &&
- grep dspmsg $ac_dir/$ac_prog >/dev/null 2>&1; then
- # AIX install. It has an incompatible calling convention.
- :
- else
- ac_cv_path_install="$ac_dir/$ac_prog -c"
- break 2
- fi
- fi
- done
- ;;
- esac
- done
- IFS="$ac_save_IFS"
-
-fi
- if test "${ac_cv_path_install+set}" = set; then
- INSTALL="$ac_cv_path_install"
- else
- # As a last resort, use the slow shell script. We don't cache a
- # path for INSTALL within a source directory, because that will
- # break other packages using the cache if that directory is
- # removed, or if the path is relative.
- INSTALL="$ac_install_sh"
- fi
-fi
-echo "$ac_t""$INSTALL" 1>&6
-
-# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
-# It thinks the first close brace ends the variable substitution.
-test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
-
-test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL_PROGRAM}'
-
-test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
-
-
-
-echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:935: checking for ANSI C header files" >&5
-if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 940 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:948: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
- rm -rf conftest*
- ac_cv_header_stdc=yes
-else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-if test $ac_cv_header_stdc = yes; then
- # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-cat > conftest.$ac_ext <<EOF
-#line 965 "configure"
-#include "confdefs.h"
-#include <string.h>
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "memchr" >/dev/null 2>&1; then
- :
-else
- rm -rf conftest*
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-cat > conftest.$ac_ext <<EOF
-#line 983 "configure"
-#include "confdefs.h"
-#include <stdlib.h>
-EOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- egrep "free" >/dev/null 2>&1; then
- :
-else
- rm -rf conftest*
- ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
- # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-if test "$cross_compiling" = yes; then
- :
-else
- cat > conftest.$ac_ext <<EOF
-#line 1004 "configure"
-#include "confdefs.h"
-#include <ctype.h>
-#define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-#define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int main () { int i; for (i = 0; i < 256; i++)
-if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
-exit (0); }
-
-EOF
-if { (eval echo configure:1015: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null
-then
- :
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -fr conftest*
- ac_cv_header_stdc=no
-fi
-rm -fr conftest*
-fi
-
-fi
-fi
-
-echo "$ac_t""$ac_cv_header_stdc" 1>&6
-if test $ac_cv_header_stdc = yes; then
- cat >> confdefs.h <<\EOF
-#define STDC_HEADERS 1
-EOF
-
-fi
-
-for ac_hdr in unistd.h
-do
-ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1042: checking for $ac_hdr" >&5
-if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 1047 "configure"
-#include "confdefs.h"
-#include <$ac_hdr>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1052: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=yes"
-else
- echo "$ac_err" >&5
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-fi
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
- cat >> confdefs.h <<EOF
-#define $ac_tr_hdr 1
-EOF
-
-else
- echo "$ac_t""no" 1>&6
-fi
-done
-
-
-
-for ac_func in strerror
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1083: checking for $ac_func" >&5
-if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- cat > conftest.$ac_ext <<EOF
-#line 1088 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
- which can conflict with char $ac_func(); below. */
-#include <assert.h>
-/* Override any gcc2 internal prototype to avoid an error. */
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char $ac_func();
-
-int main() {
-
-/* The GNU C library defines this for functions which it implements
- to always fail with ENOSYS. Some functions are actually named
- something starting with __ and the normal name is an alias. */
-#if defined (__stub_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:1111: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=yes"
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-fi
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
- cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
-
-else
- echo "$ac_t""no" 1>&6
-fi
-done
-
-
-trap '' 1 2 15
-cat > confcache <<\EOF
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs. It is not useful on other systems.
-# If it contains results you don't want to keep, you may remove or edit it.
-#
-# By default, configure uses ./config.cache as the cache file,
-# creating it if it does not exist already. You can give configure
-# the --cache-file=FILE option to use a different cache file; that is
-# what configure does when it calls configure scripts in
-# subdirectories, so they share the cache.
-# Giving --cache-file=/dev/null disables caching, for debugging configure.
-# config.status only pays attention to the cache file if you give it the
-# --recheck option to rerun configure.
-#
-EOF
-# The following way of writing the cache mishandles newlines in values,
-# but we know of no workaround that is simple, portable, and efficient.
-# So, don't put newlines in cache variables' values.
-# Ultrix sh set writes to stderr and can't be redirected directly,
-# and sets the high bit in the cache file unless we assign to the vars.
-(set) 2>&1 |
- case `(ac_space=' '; set | grep ac_space) 2>&1` in
- *ac_space=\ *)
- # `set' does not quote correctly, so add quotes (double-quote substitution
- # turns \\\\ into \\, and sed turns \\ into \).
- sed -n \
- -e "s/'/'\\\\''/g" \
- -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p"
- ;;
- *)
- # `set' quotes correctly as required by POSIX, so do not add quotes.
- sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p'
- ;;
- esac >> confcache
-if cmp -s $cache_file confcache; then
- :
-else
- if test -w $cache_file; then
- echo "updating cache $cache_file"
- cat confcache > $cache_file
- else
- echo "not updating unwritable cache $cache_file"
- fi
-fi
-rm -f confcache
-
-trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15
-
-test "x$prefix" = xNONE && prefix=$ac_default_prefix
-# Let make expand exec_prefix.
-test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
-
-# Any assignment to VPATH causes Sun make to only execute
-# the first set of double-colon rules, so remove it if not needed.
-# If there is a colon in the path, we need to keep it.
-if test "x$srcdir" = x.; then
- ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d'
-fi
-
-trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15
-
-# Transform confdefs.h into DEFS.
-# Protect against shell expansion while executing Makefile rules.
-# Protect against Makefile macro expansion.
-cat > conftest.defs <<\EOF
-s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g
-s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g
-s%\[%\\&%g
-s%\]%\\&%g
-s%\$%$$%g
-EOF
-DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '`
-rm -f conftest.defs
-
-
-# Without the "./", some shells look in PATH for config.status.
-: ${CONFIG_STATUS=./config.status}
-
-echo creating $CONFIG_STATUS
-rm -f $CONFIG_STATUS
-cat > $CONFIG_STATUS <<EOF
-#! /bin/sh
-# Generated automatically by configure.
-# Run this file to recreate the current configuration.
-# This directory was configured as follows,
-# on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-#
-# $0 $ac_configure_args
-#
-# Compiler output produced by configure, useful for debugging
-# configure, is in ./config.log if it exists.
-
-ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]"
-for ac_option
-do
- case "\$ac_option" in
- -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
- echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion"
- exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;;
- -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
- echo "$CONFIG_STATUS generated by autoconf version 2.13"
- exit 0 ;;
- -help | --help | --hel | --he | --h)
- echo "\$ac_cs_usage"; exit 0 ;;
- *) echo "\$ac_cs_usage"; exit 1 ;;
- esac
-done
-
-ac_given_srcdir=$srcdir
-ac_given_INSTALL="$INSTALL"
-
-trap 'rm -fr `echo "Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-# Protect against being on the right side of a sed subst in config.status.
-sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g;
- s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF
-$ac_vpsub
-$extrasub
-s%@SHELL@%$SHELL%g
-s%@CFLAGS@%$CFLAGS%g
-s%@CPPFLAGS@%$CPPFLAGS%g
-s%@CXXFLAGS@%$CXXFLAGS%g
-s%@FFLAGS@%$FFLAGS%g
-s%@DEFS@%$DEFS%g
-s%@LDFLAGS@%$LDFLAGS%g
-s%@LIBS@%$LIBS%g
-s%@exec_prefix@%$exec_prefix%g
-s%@prefix@%$prefix%g
-s%@program_transform_name@%$program_transform_name%g
-s%@bindir@%$bindir%g
-s%@sbindir@%$sbindir%g
-s%@libexecdir@%$libexecdir%g
-s%@datadir@%$datadir%g
-s%@sysconfdir@%$sysconfdir%g
-s%@sharedstatedir@%$sharedstatedir%g
-s%@localstatedir@%$localstatedir%g
-s%@libdir@%$libdir%g
-s%@includedir@%$includedir%g
-s%@oldincludedir@%$oldincludedir%g
-s%@infodir@%$infodir%g
-s%@mandir@%$mandir%g
-s%@LN_S@%$LN_S%g
-s%@CC@%$CC%g
-s%@CPP@%$CPP%g
-s%@INSTALL_PROGRAM@%$INSTALL_PROGRAM%g
-s%@INSTALL_SCRIPT@%$INSTALL_SCRIPT%g
-s%@INSTALL_DATA@%$INSTALL_DATA%g
-s%@ASCPP@%$ASCPP%g
-s%@INSTALL@%$INSTALL%g
-
-CEOF
-EOF
-
-cat >> $CONFIG_STATUS <<\EOF
-
-# Split the substitutions into bite-sized pieces for seds with
-# small command number limits, like on Digital OSF/1 and HP-UX.
-ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
-ac_file=1 # Number of current file.
-ac_beg=1 # First line for current file.
-ac_end=$ac_max_sed_cmds # Line after last line for current file.
-ac_more_lines=:
-ac_sed_cmds=""
-while $ac_more_lines; do
- if test $ac_beg -gt 1; then
- sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
- else
- sed "${ac_end}q" conftest.subs > conftest.s$ac_file
- fi
- if test ! -s conftest.s$ac_file; then
- ac_more_lines=false
- rm -f conftest.s$ac_file
- else
- if test -z "$ac_sed_cmds"; then
- ac_sed_cmds="sed -f conftest.s$ac_file"
- else
- ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
- fi
- ac_file=`expr $ac_file + 1`
- ac_beg=$ac_end
- ac_end=`expr $ac_end + $ac_max_sed_cmds`
- fi
-done
-if test -z "$ac_sed_cmds"; then
- ac_sed_cmds=cat
-fi
-EOF
-
-cat >> $CONFIG_STATUS <<EOF
-
-CONFIG_FILES=\${CONFIG_FILES-"Makefile"}
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
- # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
- case "$ac_file" in
- *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
- ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
- *) ac_file_in="${ac_file}.in" ;;
- esac
-
- # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
-
- # Remove last slash and all that follows it. Not all systems have dirname.
- ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
- if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
- # The file is in a subdirectory.
- test ! -d "$ac_dir" && mkdir "$ac_dir"
- ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
- # A "../" for each directory in $ac_dir_suffix.
- ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
- else
- ac_dir_suffix= ac_dots=
- fi
-
- case "$ac_given_srcdir" in
- .) srcdir=.
- if test -z "$ac_dots"; then top_srcdir=.
- else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
- /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
- *) # Relative path.
- srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
- top_srcdir="$ac_dots$ac_given_srcdir" ;;
- esac
-
- case "$ac_given_INSTALL" in
- [/$]*) INSTALL="$ac_given_INSTALL" ;;
- *) INSTALL="$ac_dots$ac_given_INSTALL" ;;
- esac
-
- echo creating "$ac_file"
- rm -f "$ac_file"
- configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
- case "$ac_file" in
- *Makefile*) ac_comsub="1i\\
-# $configure_input" ;;
- *) ac_comsub= ;;
- esac
-
- ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
- sed -e "$ac_comsub
-s%@configure_input@%$configure_input%g
-s%@srcdir@%$srcdir%g
-s%@top_srcdir@%$top_srcdir%g
-s%@INSTALL@%$INSTALL%g
-" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
-fi; done
-rm -f conftest.s*
-
-EOF
-cat >> $CONFIG_STATUS <<EOF
-
-EOF
-cat >> $CONFIG_STATUS <<\EOF
-
-exit 0
-EOF
-chmod +x $CONFIG_STATUS
-rm -fr confdefs* $ac_clean_files
-test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1
-
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prctl-1.6/configure.ac new/prctl-1.7/configure.ac
--- old/prctl-1.6/configure.ac 1970-01-01 01:00:00.000000000 +0100
+++ new/prctl-1.7/configure.ac 2024-07-27 21:35:04.000000000 +0200
@@ -0,0 +1,26 @@
+# -*- Autoconf -*-
+# Process this file with autoconf to produce a configure script.
+
+AC_PREREQ([2.71])
+AC_INIT([FULL-PACKAGE-NAME], [VERSION], [BUG-REPORT-ADDRESS])
+AC_CONFIG_SRCDIR([prctl.c])
+AC_CONFIG_HEADERS([config.h])
+
+# Checks for programs.
+AC_PROG_CC
+AC_PROG_LN_S
+AC_PROG_INSTALL
+
+# Checks for libraries.
+
+# Checks for header files.
+AC_CHECK_HEADERS([unistd.h])
+
+# Checks for typedefs, structures, and compiler characteristics.
+
+# Checks for library functions.
+AC_CHECK_FUNCS([strerror strrchr])
+
+AC_CONFIG_FILES([Makefile])
+
+AC_OUTPUT
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/prctl-1.6/prctl.c new/prctl-1.7/prctl.c
--- old/prctl-1.6/prctl.c 2014-02-27 18:40:42.000000000 +0100
+++ new/prctl-1.7/prctl.c 2024-07-27 21:35:04.000000000 +0200
@@ -26,11 +26,11 @@
#include <getopt.h>
#include <errno.h>
#include <pwd.h>
-#include <linux/prctl.h>
+#include <sys/prctl.h>
#include <string.h>
/* Version */
-#define VERSION "1.6"
+#define VERSION "1.7"
/* Shell to fall back on if no other shell can be found */
#define DEFAULT_SHELL "/bin/bash"
@@ -50,11 +50,13 @@
/* Verbose mode */
int verbose=0;
+void
print_version(char *progname)
{
printf("%s version %s\n", progname, VERSION);
}
+void
usage(char *progname)
{
print_version(progname);
@@ -70,7 +72,8 @@
printf(" --mcekill=[early|late|default]\n");
}
-int set_unaligned(int prctl_val)
+int
+set_unaligned(int prctl_val)
{
int alignval, retval;
int umask;
@@ -137,7 +140,8 @@
return(retval);
}
-int set_fpemu(int prctl_val)
+int
+set_fpemu(int prctl_val)
{
int fpemuval, retval;
@@ -203,7 +207,8 @@
return(retval);
}
-int set_mcekill(int prctl_val)
+int
+set_mcekill(int prctl_val)
{
int killval, retval;
int umask;
@@ -264,7 +269,8 @@
return(retval);
}
-int main(int argc, char **argv)
+int
+main(int argc, char **argv)
{
int opt, cmd_start;
char *progname;
@@ -371,7 +377,7 @@
case '?':
fprintf(stderr, "%s: invalid option - %c\n",
progname, optopt);
- exit (1);
+ exit(1);
break;
}
}
++++++ prctl-destdir.patch ++++++
---
Makefile.in | 41 +++++++++++++++++++++--------------------
1 file changed, 21 insertions(+), 20 deletions(-)
Index: prctl-1.7/Makefile.in
===================================================================
--- prctl-1.7.orig/Makefile.in
+++ prctl-1.7/Makefile.in
@@ -76,25 +76,25 @@ all: prctl
install: installdirs installbin installman
installdirs:
- -if test ! -d $(prefix)/share; then \
- mkdir -p $(prefix)/share; fi
- -if test ! -d $(prefix)/share/man; then \
- mkdir -p $(prefix)/share/man; fi
- -for dir in $(alldirs) ; do \
- if test ! -d $${dir}; then \
- mkdir -p $${dir}; fi; \
+ -if test ! -d "$(DESTDIR)/$(mandir)"; then \
+ mkdir -p "$(DESTDIR)/$(mandir)"; fi
+ -if test ! -d "$(DESTDIR)/$(datadir)"; then \
+ mkdir -p "$(DESTDIR)/$(datadir)"; fi
+ -for dir in $(alldirs); do \
+ if test ! -d $(DESTDIR)/$${dir}; then \
+ mkdir -p $(DESTDIR)/$${dir}; fi; \
done
installbin: all
- $(INSTALL_PROGRAM) prctl $(bindir)/prctl
+ $(INSTALL_PROGRAM) prctl $(DESTDIR)/$(bindir)/prctl
installman: prctl.1
- rm -f $(mandir)/prctl.$(manext)
- $(INSTALL_DATA) prctl.1 $(mandir)/prctl.$(manext)
+ rm -f $(DESTDIR)/$(man1dir)/prctl.$(manext)
+ $(INSTALL_DATA) prctl.1 $(DESTDIR)/$(man1dir)/prctl.$(manext)
uninstall:
- rm -f $(bindir)/prctl
- rm -f $(mandir)/prctl.$(manext)
+ rm -f $(DESTDIR)/$(bindir)/prctl
+ rm -f $(DESTDIR)/$(man1dir)/prctl.$(manext)
Makefile: Makefile.in ./config.status
./config.status
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-mypy for openSUSE:Factory checked in at 2024-09-12 16:53:58
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-mypy (Old)
and /work/SRC/openSUSE:Factory/.python-mypy.new.17570 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-mypy"
Thu Sep 12 16:53:58 2024 rev:7 rq:1199970 version:1.11.2
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-mypy/python-mypy.changes 2024-06-21 16:02:59.477594175 +0200
+++ /work/SRC/openSUSE:Factory/.python-mypy.new.17570/python-mypy.changes 2024-09-12 16:54:01.115015343 +0200
@@ -1,0 +2,83 @@
+Tue Sep 10 15:01:11 UTC 2024 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- Update to 1.11.2
+ * Support Python 3.12 Syntax for Generics (PEP 695)
+ * Support for `functools.partial`
+ * Stricter Checks for Untyped Overrides
+ * Type Inference Improvements
+ * Improvements to Detection of Overlapping Overloads
+ * Better Support for Type Hints in Expressions
+ * Mypyc Improvements
+ + Support Python 3.12 syntax for generic functions and classes
+ + Support Python 3.12 type alias syntax
+ + Fix ParamSpec
+ + Inline fast paths of integer unboxing operations
+ + Inline tagged integer arithmetic and bitwise operations
+ + Allow specifying primitives as pure
+ * Changes to Stubtest
+ + Ignore `_ios_support`
+ + Improve support for Python 3.13
+ * Changes to Stubgen
+ + Gracefully handle invalid `Optional` and recognize aliases to PEP 604 unions
+ + Fix for Python 3.13
+ + Preserve enum value initialisers
+ * Miscellaneous New Features
+ + Add error format support and JSON output option via `--output json`
+ + Support `enum.member` in Python 3.11+
+ + Support `enum.nonmember` in Python 3.11+
+ + Support `namedtuple.__replace__` in Python 3.13
+ + Support `rename=True` in collections.namedtuple
+ + Add support for `__spec__`
+ * Changes to Error Reporting
+ + Mention `--enable-incomplete-feature=NewGenericSyntax` in messages
+ + Do not report plugin-generated methods with `explicit-override`
+ + Use and display namespaces for function type variables
+ + Fix false positive for Final local scope variable in Protocol
+ + Use Never in more messages, use ambiguous in join
+ + Log full path to config file in verbose output
+ + Added `[prop-decorator]` code for unsupported property decorators (#14461)
+ + Suppress second error message with `:=` and `[truthy-bool]`
+ + Generate error for assignment of functional Enum to variable of different name
+ + Fix error reporting on cached run after uninstallation of third party library
+ * Fixes for Crashes
+ + Fix daemon crash on invalid type in TypedDict
+ + Fix crash and bugs related to `partial()`
+ + Fix crash when overriding with unpacked TypedDict
+ + Fix crash on TypedDict unpacking for ParamSpec
+ + Fix crash involving recursive union of tuples
+ + Fix crash on invalid callable property override
+ + Fix crash on unpacking self in NamedTuple
+ + Fix crash on recursive alias with an optional type
+ + Fix crash on type comment inside generic definitions
+ * Changes to Documentation
+ + Use inline config in documentation for optional error codes
+ + Use lower-case generics in documentation
+ + Add documentation for show-error-code-links
+ + Update CONTRIBUTING.md to include commands for Windows
+ * Other Notable Improvements and Fixes
+ + Fix ParamSpec inference against TypeVarTuple
+ + Fix explicit type for `partial`
+ + Always allow lambda calls
+ + Fix isinstance checks with PEP 604 unions containing None
+ + Fix self-referential upper bound in new-style type variables
+ + Consider overlap between instances and callables
+ + Allow new-style self-types in classmethods
+ + Fix isinstance with type aliases to PEP 604 unions
+ + Properly handle unpacks in overlap checks
+ + Fix type application for classes with generic constructors
+ + Update `typing_extensions` to >=4.6.0 to fix Python 3.12 error
+ + Avoid "does not return" error in lambda
+ + Fix bug with descriptors in non-strict-optional mode
+ + Don’t leak unreachability from lambda body to surrounding scope
+ + Fix issues with non-ASCII characters on Windows
+ + Fix for type narrowing of negative integer literals
+ + Fix confusion between .py and .pyi files in mypy daemon
+ + Fix type of `tuple[X, Y]` expression
+ + Don't forget that a `TypedDict` was wrapped in `Unpack`
+ after a `name-defined` error occurred
+ + Mark annotated argument as having an explicit, not inferred type
+ + Don't consider Enum private attributes as enum members
+ + Fix Literal strings containing pipe characters
+- Update BuildRequires from setup.py
+
+-------------------------------------------------------------------
Old:
----
mypy-1.10.0.tar.gz
New:
----
mypy-1.11.2.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-mypy.spec ++++++
--- /var/tmp/diff_new_pack.sFAFcu/_old 2024-09-12 16:54:01.715040343 +0200
+++ /var/tmp/diff_new_pack.sFAFcu/_new 2024-09-12 16:54:01.715040343 +0200
@@ -21,7 +21,7 @@
%define types_psutil_version 5.9.5.17
%define types_setuptools_version 68.2.0.0
Name: python-mypy
-Version: 1.10.0
+Version: 1.11.2
Release: 0
Summary: Optional static typing for Python
License: MIT
@@ -37,7 +37,7 @@
BuildRequires: %{python_module pip}
BuildRequires: %{python_module setuptools}
BuildRequires: %{python_module tomli >= 1.1.0}
-BuildRequires: %{python_module typing_extensions >= 4.1.0}
+BuildRequires: %{python_module typing_extensions >= 4.6.0}
BuildRequires: %{python_module wheel}
BuildRequires: %{python_module wheel}
BuildRequires: fdupes
++++++ mypy-1.10.0.tar.gz -> mypy-1.11.2.tar.gz ++++++
++++ 26696 lines of diff (skipped)
1
0