openSUSE Commits
Threads by month
- ----- 2024 -----
- 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
April 2023
- 1 participants
- 3148 discussions
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package libdnet for openSUSE:Factory checked in at 2023-04-29 17:27:41
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libdnet (Old)
and /work/SRC/openSUSE:Factory/.libdnet.new.1533 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libdnet"
Sat Apr 29 17:27:41 2023 rev:26 rq:1083358 version:1.16.4
Changes:
--------
--- /work/SRC/openSUSE:Factory/libdnet/libdnet.changes 2023-01-14 20:31:04.988987991 +0100
+++ /work/SRC/openSUSE:Factory/.libdnet.new.1533/libdnet.changes 2023-04-29 17:27:49.666463589 +0200
@@ -1,0 +2,7 @@
+Thu Apr 27 22:21:49 UTC 2023 - Dirk M��ller <dmueller(a)suse.com>
+
+- update to 1.16.4:
+ * Various fixes around the build process (esp. cmake support +
+ string.h include fixes)
+
+-------------------------------------------------------------------
Old:
----
libdnet-1.16.3.tar.gz
New:
----
libdnet-1.16.4.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libdnet.spec ++++++
--- /var/tmp/diff_new_pack.OcHsrm/_old 2023-04-29 17:27:50.146465599 +0200
+++ /var/tmp/diff_new_pack.OcHsrm/_new 2023-04-29 17:27:50.154465633 +0200
@@ -17,7 +17,7 @@
Name: libdnet
-Version: 1.16.3
+Version: 1.16.4
Release: 0
Summary: Library for Portable Interface to Low-Level Networking Routines
License: BSD-3-Clause
++++++ libdnet-1.16.3.tar.gz -> libdnet-1.16.4.tar.gz ++++++
++++ 14106 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package rpcbind for openSUSE:Factory checked in at 2023-04-29 17:27:40
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rpcbind (Old)
and /work/SRC/openSUSE:Factory/.rpcbind.new.1533 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rpcbind"
Sat Apr 29 17:27:40 2023 rev:68 rq:1083350 version:1.2.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/rpcbind/rpcbind.changes 2023-01-27 10:22:06.125383766 +0100
+++ /work/SRC/openSUSE:Factory/.rpcbind.new.1533/rpcbind.changes 2023-04-29 17:27:48.466458565 +0200
@@ -11,0 +12,6 @@
+Tue Nov 16 07:39:53 UTC 2021 - Johannes Segitz <jsegitz(a)suse.com>
+
+- Added hardening to systemd service(s) (bsc#1181400). Added patch(es):
+ * harden_rpcbind.service.patch
+
+-------------------------------------------------------------------
New:
----
harden_rpcbind.service.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ rpcbind.spec ++++++
--- /var/tmp/diff_new_pack.4e1v7W/_old 2023-04-29 17:27:49.026460910 +0200
+++ /var/tmp/diff_new_pack.4e1v7W/_new 2023-04-29 17:27:49.030460927 +0200
@@ -33,6 +33,7 @@
Source5: rpc-user.conf
Patch1: 0001-systemd-unit-files.patch
Patch2: 0001-change-lockingdir-to-run.patch
+Patch3: harden_rpcbind.service.patch
BuildRequires: libtirpc-devel >= 1.0.1
BuildRequires: libtool
BuildRequires: pkgconfig
++++++ harden_rpcbind.service.patch ++++++
Index: rpcbind-1.2.6/systemd/rpcbind.service.in
===================================================================
--- rpcbind-1.2.6.orig/systemd/rpcbind.service.in
+++ rpcbind-1.2.6/systemd/rpcbind.service.in
@@ -11,6 +11,19 @@ Wants=rpcbind.target
After=sysinit.target
[Service]
+# added automatically, for details please see
+# https://en.opensuse.org/openSUSE:Security_Features#Systemd_hardening_effort
+ProtectSystem=full
+ProtectHome=true
+PrivateDevices=true
+ProtectHostname=true
+ProtectClock=true
+ProtectKernelTunables=true
+ProtectKernelModules=true
+ProtectKernelLogs=true
+ProtectControlGroups=true
+RestrictRealtime=true
+# end of automatic additions
Type=notify
# distro can provide a drop-in adding EnvironmentFile=-/??? if needed.
EnvironmentFile=-/etc/sysconfig/rpcbind
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package squashfs for openSUSE:Factory checked in at 2023-04-29 17:27:39
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/squashfs (Old)
and /work/SRC/openSUSE:Factory/.squashfs.new.1533 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "squashfs"
Sat Apr 29 17:27:39 2023 rev:46 rq:1083348 version:4.6.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/squashfs/squashfs.changes 2022-10-15 16:36:25.426004374 +0200
+++ /work/SRC/openSUSE:Factory/.squashfs.new.1533/squashfs.changes 2023-04-29 17:27:47.486454462 +0200
@@ -1,0 +2,32 @@
+Sat Apr 15 09:55:32 UTC 2023 - Dirk M��ller <dmueller(a)suse.com>
+
+- update to 4.6.1:
+ * Race condition which can cause corruption of the "fragment
+ table" fixed. This is a regression introduced in August 2022,
+ and it has been seen when tailend packing is used (-tailends option).
+ * Fix build failure when the tools are being built without
+ extended attribute (XATTRs) support.
+ * Fix XATTR error message when an unrecognised prefix is
+ found
+ * Fix incorrect free of pointer when an unrecognised XATTR
+ prefix is found.
+ * Major improvements in extended attribute handling,
+ pseudo file handling, and miscellaneous new options and
+ improvements
+ * Extended attribute handling improved in Mksquashfs and
+ Sqfstar
+ * New Pseudo file xattr definition to add extended
+ attributes to files.
+ * New xattrs-add Action to add extended attributes to files
+ * Extended attribute handling improved in Unsquashfs
+ * Other major improvements
+ * Unsquashfs can now output Pseudo files to standard out.
+ * Mksquashfs can now input Pseudo files from standard in.
+ * Squashfs filesystems can now be converted (different
+ block size compression etc) without unpacking to an
+ intermediate filesystem or mounting, by piping the output of
+ Unsquashfs to Mksquashfs.
+ * Pseudo files are now supported by Sqfstar.
+ * "Non-anchored" excludes are now supported by Unsquashfs.
+
+-------------------------------------------------------------------
Old:
----
4.5.1.tar.gz
New:
----
4.6.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ squashfs.spec ++++++
--- /var/tmp/diff_new_pack.zlZX5w/_old 2023-04-29 17:27:48.038456773 +0200
+++ /var/tmp/diff_new_pack.zlZX5w/_new 2023-04-29 17:27:48.050456824 +0200
@@ -1,7 +1,7 @@
#
# spec file for package squashfs
#
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: squashfs
-Version: 4.5.1
+Version: 4.6.1
Release: 0
Summary: A Read-Only File System with Efficient Compression
License: GPL-2.0-or-later
@@ -60,8 +60,10 @@
%files
%license COPYING
-%doc README-%{version} ACKNOWLEDGEMENTS CHANGES USAGE
-%{_bindir}/*
+%doc README-%{version} ACKNOWLEDGEMENTS CHANGES USAGE-4.6
+%{_bindir}/sqfs*
+%{_bindir}/mksquashfs
+%{_bindir}/unsquashfs
%{_mandir}/man1/*
%changelog
++++++ 4.5.1.tar.gz -> 4.6.1.tar.gz ++++++
++++ 19256 lines of diff (skipped)
++++++ squashfs-64k.patch ++++++
--- /var/tmp/diff_new_pack.zlZX5w/_old 2023-04-29 17:27:48.202457460 +0200
+++ /var/tmp/diff_new_pack.zlZX5w/_new 2023-04-29 17:27:48.206457476 +0200
@@ -1,26 +1,26 @@
-Index: squashfs-tools-4.5.1/squashfs-tools/mksquashfs.c
+Index: squashfs-tools-4.6.1/squashfs-tools/mksquashfs.c
===================================================================
---- squashfs-tools-4.5.1.orig/squashfs-tools/mksquashfs.c
-+++ squashfs-tools-4.5.1/squashfs-tools/mksquashfs.c
-@@ -6079,7 +6079,7 @@ static void print_options(FILE *stream,
- fprintf(stream, "\t\t\tOptionally a suffix of K, M or G can be given to ");
- fprintf(stream, "specify\n\t\t\tKbytes, Mbytes or Gbytes respectively\n");
+--- squashfs-tools-4.6.1.orig/squashfs-tools/mksquashfs.c
++++ squashfs-tools-4.6.1/squashfs-tools/mksquashfs.c
+@@ -6378,7 +6378,7 @@ static void print_options(FILE *stream,
+ fprintf(stream, "file on\n\t\t\tencountering them. This option makes ");
+ fprintf(stream, "Mksquashfs ignore\n\t\t\tthe zero filled blocks\n");
fprintf(stream, "\nExpert options (these may make the filesystem unmountable):\n");
- fprintf(stream, "-nopad\t\t\tdo not pad filesystem to a multiple of 4K\n");
+ fprintf(stream, "-nopad\t\t\tdo not pad filesystem to a multiple of 64K\n");
- fprintf(stream, "-offset <offset>\tSkip <offset> bytes at the beginning of ");
+ fprintf(stream, "-offset <offset>\tskip <offset> bytes at the beginning of ");
fprintf(stream, "FILESYSTEM.\n\t\t\tOptionally a suffix of K, M or G can be given ");
fprintf(stream, "to specify\n\t\t\tKbytes, Mbytes or Gbytes respectively.\n");
-@@ -6210,7 +6210,7 @@ static void print_sqfstar_options(FILE *
- fprintf(stream, "\t\t\tOptionally a suffix of K, M or G can be given to ");
- fprintf(stream, "specify\n\t\t\tKbytes, Mbytes or Gbytes respectively\n");
+@@ -6606,7 +6606,7 @@ static void print_sqfstar_options(FILE *
+ fprintf(stream, "memory for caches. Default 25%%\n");
+ fprintf(stream, "-mem-default\t\tprint default memory usage in Mbytes\n");
fprintf(stream, "\nExpert options (these may make the filesystem unmountable):\n");
- fprintf(stream, "-nopad\t\t\tdo not pad filesystem to a multiple of 4K\n");
+ fprintf(stream, "-nopad\t\t\tdo not pad filesystem to a multiple of 64K\n");
- fprintf(stream, "-offset <offset>\tSkip <offset> bytes at the beginning of ");
+ fprintf(stream, "-offset <offset>\tskip <offset> bytes at the beginning of ");
fprintf(stream, "FILESYSTEM.\n\t\t\tOptionally a suffix of K, M or G can be given ");
fprintf(stream, "to specify\n\t\t\tKbytes, Mbytes or Gbytes respectively.\n");
-@@ -6958,9 +6958,9 @@ print_sqfstar_compressor_options:
+@@ -7605,9 +7605,9 @@ print_sqfstar_compressor_options:
set_progressbar_state(FALSE);
write_filesystem_tables(&sBlk);
@@ -32,5 +32,20 @@
+ write_destination(fd, bytes, 65536 - i, temp);
}
- close(fd);
+ res = close(fd);
+@@ -8877,10 +8877,10 @@ print_compressor_options:
+
+ set_progressbar_state(FALSE);
+ write_filesystem_tables(&sBlk);
+-
+- if(!nopad && (i = bytes & (4096 - 1))) {
+- char temp[4096] = {0};
+- write_destination(fd, bytes, 4096 - i, temp);
++
++ if(!nopad && (i = bytes & (65536 - 1))) {
++ char temp[65536] = {0};
++ write_destination(fd, bytes, 65536 - i, temp);
+ }
+
+ res = close(fd);
++++++ squashfs-thread-limit ++++++
--- /var/tmp/diff_new_pack.zlZX5w/_old 2023-04-29 17:27:48.222457544 +0200
+++ /var/tmp/diff_new_pack.zlZX5w/_new 2023-04-29 17:27:48.222457544 +0200
@@ -1,8 +1,9 @@
-diff -dupr squashfs4.4_orig/squashfs-tools/mksquashfs.c squashfs4.4/squashfs-tools/mksquashfs.c
---- squashfs4.4_orig/squashfs-tools/mksquashfs.c 2019-10-21 15:36:52.002369471 +0200
-+++ squashfs4.4/squashfs-tools/mksquashfs.c 2019-10-21 15:37:13.402549491 +0200
-@@ -4384,6 +4384,15 @@ void initialise_threads(int readq, int f
- processors = sysconf(_SC_NPROCESSORS_ONLN);
+Index: squashfs-tools-4.6.1/squashfs-tools/mksquashfs.c
+===================================================================
+--- squashfs-tools-4.6.1.orig/squashfs-tools/mksquashfs.c
++++ squashfs-tools-4.6.1/squashfs-tools/mksquashfs.c
+@@ -5276,6 +5276,15 @@ static void initialise_threads(int readq
+ }
#endif
}
+ /* Every frag_thrd will:
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package postfix for openSUSE:Factory checked in at 2023-04-29 17:27:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/postfix (Old)
and /work/SRC/openSUSE:Factory/.postfix.new.1533 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "postfix"
Sat Apr 29 17:27:37 2023 rev:225 rq:1083347 version:3.8.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/postfix/postfix-bdb.changes 2023-03-07 16:49:14.597240060 +0100
+++ /work/SRC/openSUSE:Factory/.postfix.new.1533/postfix-bdb.changes 2023-04-29 17:27:43.142436274 +0200
@@ -1,0 +2,38 @@
+Tue Apr 18 18:14:49 UTC 2023 - Arjen de Korte <suse+build(a)de-korte.org>
+
+- update to 3.8.0
+ * Support to look up DNS SRV records in the Postfix SMTP/LMTP
+ client, Based on code by Tomas Korbar (Red Hat). For example,
+ with "use_srv_lookup = submission" and "relayhost =
+ example.com:submission", the Postfix SMTP client will look up
+ DNS SRV records for _submission._tcp.example.com, and will relay
+ email through the hosts and ports that are specified with those
+ records.
+ * TLS obsolescence: Postfix now treats the "export" and "low"
+ cipher grade settings as "medium". The "export" and "low" grades
+ are no longer supported in OpenSSL 1.1.1, the minimum version
+ required in Postfix 3.6.0 and later. Also, Postfix default
+ settings now exclude deprecated or unused ciphers (SEED, IDEA,
+ 3DES, RC2, RC4, RC5), digest (MD5), key exchange algorithms
+ (DH, ECDH), and public key algorithm (DSS).
+ * Attack resistance: the Postfix SMTP server can now aggregate
+ smtpd_client_*_rate and smtpd_client_*_count statistics by
+ network block instead of by IP address, to raise the bar against
+ a memory exhaustion attack in the anvil(8) server; Postfix TLS
+ support unconditionally disables TLS renegotiation in the middle
+ of an SMTP connection, to avoid a CPU exhaustion attack.
+ * The PostgreSQL client encoding is now configurable with the
+ "encoding" Postfix configuration file attribute. The default
+ is "UTF8". Previously the encoding was hard-coded as "LATIN1",
+ which is not useful in the context of SMTP.
+ * The postconf command now warns for #comment in or after a Postfix
+ parameter value. Postfix programs do not support #comment after
+ other text, and treat that as input.
+- rebase/refresh patches
+ * pointer_to_literals.patch
+ * postfix-linux45.patch
+ * postfix-master.cf.patch
+ * postfix-ssl-release-buffers.patch
+ * set-default-db-type.patch
+
+-------------------------------------------------------------------
postfix.changes: same change
Old:
----
postfix-3.7.4.tar.gz
postfix-3.7.4.tar.gz.asc
New:
----
postfix-3.8.0.tar.gz
postfix-3.8.0.tar.gz.asc
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ postfix-bdb.spec ++++++
--- /var/tmp/diff_new_pack.XELVXJ/_old 2023-04-29 17:27:44.594442354 +0200
+++ /var/tmp/diff_new_pack.XELVXJ/_new 2023-04-29 17:27:44.602442387 +0200
@@ -1,7 +1,7 @@
#
# spec file for package postfix-bdb
#
-# Copyright (c) 2020 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -59,7 +59,7 @@
%endif
%bcond_without ldap
Name: postfix-bdb
-Version: 3.7.4
+Version: 3.8.0
Release: 0
Summary: A fast, secure, and flexible mailer
License: IPL-1.0 OR EPL-2.0
++++++ postfix.spec ++++++
--- /var/tmp/diff_new_pack.XELVXJ/_old 2023-04-29 17:27:44.638442538 +0200
+++ /var/tmp/diff_new_pack.XELVXJ/_new 2023-04-29 17:27:44.646442571 +0200
@@ -1,7 +1,7 @@
#
# spec file for package postfix
#
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -46,7 +46,7 @@
%endif
%bcond_without ldap
Name: postfix
-Version: 3.7.4
+Version: 3.8.0
Release: 0
Summary: A fast, secure, and flexible mailer
License: IPL-1.0 OR EPL-2.0
@@ -126,6 +126,7 @@
Summary: Development headers for the %{name} package
Group: Development/Libraries/C and C++
Requires(pre): %{name} = %{version}
+BuildArch: noarch
%description devel
Postfix aims to be an alternative to the widely-used sendmail program.
++++++ pointer_to_literals.patch ++++++
--- /var/tmp/diff_new_pack.XELVXJ/_old 2023-04-29 17:27:44.678442705 +0200
+++ /var/tmp/diff_new_pack.XELVXJ/_new 2023-04-29 17:27:44.682442722 +0200
@@ -28,7 +28,7 @@
===================================================================
--- src/smtpd/smtpd_check.c.orig
+++ src/smtpd/smtpd_check.c
-@@ -383,6 +383,10 @@ static STRING_LIST *smtpd_acl_perm_log;
+@@ -384,6 +384,10 @@ static STRING_LIST *smtpd_acl_perm_log;
#define CONST_STR(x) ((const char *) vstring_str(x))
#define UPDATE_STRING(ptr,val) { if (ptr) myfree(ptr); ptr = mystrdup(val); }
@@ -39,7 +39,7 @@
/*
* If some decision can't be made due to a temporary error, then change
* other decisions into deferrals.
-@@ -2394,8 +2398,6 @@ static int check_table_result(SMTPD_STAT
+@@ -2395,8 +2399,6 @@ static int check_table_result(SMTPD_STAT
if (msg_verbose)
msg_info("%s: %s %s %s", myname, table, value, datum);
@@ -48,7 +48,7 @@
/*
* DUNNO means skip this table. Silently ignore optional text.
*/
-@@ -3482,8 +3484,6 @@ static const char *rbl_expand_lookup(con
+@@ -3483,8 +3485,6 @@ static const char *rbl_expand_lookup(con
SMTPD_RBL_EXPAND_CONTEXT *rbl_exp = (SMTPD_RBL_EXPAND_CONTEXT *) context;
SMTPD_STATE *state = rbl_exp->state;
++++++ postfix-3.7.4.tar.gz -> postfix-3.8.0.tar.gz ++++++
++++ 23099 lines of diff (skipped)
++++++ postfix-linux45.patch ++++++
--- /var/tmp/diff_new_pack.XELVXJ/_old 2023-04-29 17:27:46.286449438 +0200
+++ /var/tmp/diff_new_pack.XELVXJ/_new 2023-04-29 17:27:46.294449471 +0200
@@ -4,12 +4,14 @@
--- makedefs.orig
+++ makedefs
-@@ -627,7 +627,7 @@ EOF
+@@ -631,8 +631,8 @@ EOF
: ${SHLIB_ENV="LD_LIBRARY_PATH=`pwd`/lib"}
: ${PLUGIN_LD="${CC-gcc} -shared"}
;;
--Linux.[3456].*) SYSTYPE=LINUX$RELEASE_MAJOR
-+Linux.[3-9].*|Linux.[1-9][0-9].*) SYSTYPE=LINUX3
+- Linux.[3456].*)
+- SYSTYPE=LINUX$RELEASE_MAJOR
++ Linux.[3-9].*|Linux.[1-9][0-9].*)
++ SYSTYPE=LINUX3
case "$CCARGS" in
*-DNO_DB*) ;;
*-DHAS_DB*) ;;
++++++ postfix-master.cf.patch ++++++
--- /var/tmp/diff_new_pack.XELVXJ/_old 2023-04-29 17:27:46.314449555 +0200
+++ /var/tmp/diff_new_pack.XELVXJ/_new 2023-04-29 17:27:46.318449572 +0200
@@ -14,7 +14,7 @@
#smtp inet n - n - 1 postscreen
#smtpd pass - - n - - smtpd
#dnsblog unix - - n - 0 dnsblog
-@@ -17,38 +22,40 @@ smtp inet n - n
+@@ -17,40 +22,42 @@ smtp inet n - n
# Choose one: enable submission for loopback clients only, or for any client.
#127.0.0.1:submission inet n - n - - smtpd
#submission inet n - n - - smtpd
@@ -22,12 +22,14 @@
-# -o smtpd_tls_security_level=encrypt
-# -o smtpd_sasl_auth_enable=yes
-# -o smtpd_tls_auth_only=yes
+-# -o local_header_rewrite_clients=static:all
-# -o smtpd_reject_unlisted_recipient=no
+# -o syslog_name=postfix/submission
+# -o smtpd_tls_security_level=encrypt
+# -o content_filter=smtp:[127.0.0.1]:10024
+# -o smtpd_sasl_auth_enable=yes
+# -o smtpd_tls_auth_only=yes
++# -o local_header_rewrite_clients=static:all
+# -o smtpd_reject_unlisted_recipient=no
# Instead of specifying complex smtpd_<xxx>_restrictions here,
# specify "smtpd_<xxx>_restrictions=$mua_<xxx>_restrictions"
@@ -51,11 +53,13 @@
-# -o syslog_name=postfix/submissions
-# -o smtpd_tls_wrappermode=yes
-# -o smtpd_sasl_auth_enable=yes
+-# -o local_header_rewrite_clients=static:all
-# -o smtpd_reject_unlisted_recipient=no
+# -o syslog_name=postfix/submissions
+# -o smtpd_tls_wrappermode=yes
+# -o content_filter=smtp:[127.0.0.1]:10024
+# -o smtpd_sasl_auth_enable=yes
++# -o local_header_rewrite_clients=static:all
+# -o smtpd_reject_unlisted_recipient=no
# Instead of specifying complex smtpd_<xxx>_restrictions here,
# specify "smtpd_<xxx>_restrictions=$mua_<xxx>_restrictions"
@@ -76,7 +80,7 @@
#628 inet n - n - - qmqpd
pickup unix n - n 60 1 pickup
cleanup unix n - n - 0 cleanup
-@@ -77,6 +84,26 @@ lmtp unix - - n
+@@ -79,6 +86,26 @@ lmtp unix - - n
anvil unix - - n - 1 anvil
scache unix - - n - 1 scache
postlog unix-dgram n - n - 1 postlogd
@@ -103,7 +107,7 @@
#
# ====================================================================
# Interfaces to non-Postfix software. Be sure to examine the manual
-@@ -110,7 +137,7 @@ postlog unix-dgram n - n
+@@ -112,7 +139,7 @@ postlog unix-dgram n - n
# Also specify in main.cf: cyrus_destination_recipient_limit=1
#
#cyrus unix - n n - - pipe
@@ -112,7 +116,7 @@
#
# ====================================================================
#
-@@ -143,3 +170,10 @@ postlog unix-dgram n - n
+@@ -145,3 +172,10 @@ postlog unix-dgram n - n
#mailman unix - n n - - pipe
# flags=FRX user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
# ${nexthop} ${user}
++++++ postfix-ssl-release-buffers.patch ++++++
--- /var/tmp/diff_new_pack.XELVXJ/_old 2023-04-29 17:27:46.358449739 +0200
+++ /var/tmp/diff_new_pack.XELVXJ/_new 2023-04-29 17:27:46.362449756 +0200
@@ -18,7 +18,7 @@
===================================================================
--- src/tls/tls_server.c.orig
+++ src/tls/tls_server.c
-@@ -490,6 +490,10 @@ TLS_APPL_STATE *tls_server_init(const TL
+@@ -493,6 +493,10 @@ TLS_APPL_STATE *tls_server_init(const TL
SSL_CTX_set_security_level(sni_ctx, 0);
#endif
++++++ set-default-db-type.patch ++++++
--- /var/tmp/diff_new_pack.XELVXJ/_old 2023-04-29 17:27:46.418449991 +0200
+++ /var/tmp/diff_new_pack.XELVXJ/_new 2023-04-29 17:27:46.422450007 +0200
@@ -29,7 +29,7 @@
#define ALIAS_DB_MAP DEF_DB_TYPE ":/etc/aliases"
#else
#define HAS_DBM
-@@ -763,7 +763,7 @@ extern int initgroups(const char *, int)
+@@ -775,7 +775,7 @@ extern int initgroups(const char *, int)
#define DEF_MAILBOX_LOCK "fcntl, dotlock" /* RedHat >= 4.x */
#define HAS_FSYNC
#define HAS_DB
@@ -38,7 +38,7 @@
#define ALIAS_DB_MAP DEF_DB_TYPE ":/etc/aliases"
#ifndef NO_NIS
#define HAS_NIS
-@@ -846,7 +846,7 @@ extern int initgroups(const char *, int)
+@@ -851,7 +851,7 @@ extern int initgroups(const char *, int)
#define DEF_MAILBOX_LOCK "dotlock" /* verified RedHat 3.03 */
#define HAS_FSYNC
#define HAS_DB
@@ -47,7 +47,7 @@
#define ALIAS_DB_MAP DEF_DB_TYPE ":/etc/aliases"
#ifndef NO_NIS
#define HAS_NIS
-@@ -879,7 +879,7 @@ extern int initgroups(const char *, int)
+@@ -884,7 +884,7 @@ extern int initgroups(const char *, int)
#define DEF_MAILBOX_LOCK "fcntl, dotlock" /* RedHat >= 4.x */
#define HAS_FSYNC
#define HAS_DB
@@ -56,7 +56,7 @@
#define ALIAS_DB_MAP DEF_DB_TYPE ":/etc/aliases"
#ifndef NO_NIS
#define HAS_NIS
-@@ -1204,7 +1204,7 @@ extern int opterr; /* XXX use <getopt.
+@@ -1209,7 +1209,7 @@ extern int opterr; /* XXX use <getopt.
#define INTERNAL_LOCK MYFLOCK_STYLE_FCNTL
#define DEF_MAILBOX_LOCK "fcntl, dotlock"
#define HAS_FSYNC
@@ -78,7 +78,7 @@
extern char *var_verify_map;
#define VAR_VERIFY_POS_EXP "address_verify_positive_expire_time"
-@@ -3728,7 +3728,7 @@ extern char *var_multi_cntrl_cmds;
+@@ -3762,7 +3762,7 @@ extern char *var_multi_cntrl_cmds;
* postscreen(8)
*/
#define VAR_PSC_CACHE_MAP "postscreen_cache_map"
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package libverto for openSUSE:Factory checked in at 2023-04-29 17:27:36
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libverto (Old)
and /work/SRC/openSUSE:Factory/.libverto.new.1533 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libverto"
Sat Apr 29 17:27:36 2023 rev:10 rq:1083346 version:0.3.2
Changes:
--------
libverto-libev.changes: same change
--- /work/SRC/openSUSE:Factory/libverto/libverto.changes 2022-10-03 13:44:57.413375151 +0200
+++ /work/SRC/openSUSE:Factory/.libverto.new.1533/libverto.changes 2023-04-29 17:27:37.330411940 +0200
@@ -1,0 +2,6 @@
+Mon Apr 24 10:09:44 UTC 2023 - Dominique Leuenberger <dimstar(a)opensuse.org>
+
+- Add _multibuild to define 2nd spec file as additional flavor.
+ Eliminates the need for source package links in OBS.
+
+-------------------------------------------------------------------
New:
----
_multibuild
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libverto-glib.spec ++++++
--- /var/tmp/diff_new_pack.fX8O5I/_old 2023-04-29 17:27:38.858418337 +0200
+++ /var/tmp/diff_new_pack.fX8O5I/_new 2023-04-29 17:27:38.862418354 +0200
@@ -1,7 +1,7 @@
#
# spec file for package libverto-glib
#
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
libverto-libev.spec: same change
libverto.spec: same change
++++++ _multibuild ++++++
<multibuild>
<package>libverto-glib.spec</package>
<package>libverto-libev.spec</package>
</multibuild>
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package libgudev for openSUSE:Factory checked in at 2023-04-29 17:27:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libgudev (Old)
and /work/SRC/openSUSE:Factory/.libgudev.new.1533 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libgudev"
Sat Apr 29 17:27:35 2023 rev:11 rq:1083345 version:237
Changes:
--------
--- /work/SRC/openSUSE:Factory/libgudev/libgudev.changes 2022-02-05 23:23:01.875987044 +0100
+++ /work/SRC/openSUSE:Factory/.libgudev.new.1533/libgudev.changes 2023-04-29 17:27:36.518408540 +0200
@@ -1,0 +2,10 @@
+Thu Apr 20 07:28:19 UTC 2023 - Bj��rn Lie <bjorn.lie(a)gmail.com>
+
+- Add 2 upstream bug fix patches:
+ * 71b2fda04dd71c637361e8ead103980ad6f27ed5.patch: gudev: Fix
+ newline stripping by always reading using udev.
+ * 4216ecd4513bd4c8af73543817a51d6f72f166cc.patch: build: let
+ meson handle gir, vala, gtk-doc dependencies
+- Use ldconfig_scriptlets macro.
+
+-------------------------------------------------------------------
New:
----
4216ecd4513bd4c8af73543817a51d6f72f166cc.patch
71b2fda04dd71c637361e8ead103980ad6f27ed5.patch
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libgudev.spec ++++++
--- /var/tmp/diff_new_pack.e5kPYX/_old 2023-04-29 17:27:37.014410617 +0200
+++ /var/tmp/diff_new_pack.e5kPYX/_new 2023-04-29 17:27:37.018410633 +0200
@@ -1,7 +1,7 @@
#
# spec file for package libgudev
#
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -25,6 +25,11 @@
URL: https://wiki.gnome.org/Projects/libgudev
Source0: https://download.gnome.org/sources/libgudev/%{version}/%{name}-%{version}.t…
Source99: baselibs.conf
+# PATCH-FIX-UPSTREAM 71b2fda04dd71c637361e8ead103980ad6f27ed5.patch -- gudev: Fix newline stripping by always reading using udev
+Patch: https://gitlab.gnome.org/GNOME/libgudev/-/commit/71b2fda04dd71c637361e8ead1…
+# PATCH-FIX-UPSTREAM 4216ecd4513bd4c8af73543817a51d6f72f166cc.patch -- build: let meson handle gir, vala, gtk-doc dependencies
+Patch2: https://gitlab.gnome.org/GNOME/libgudev/-/commit/4216ecd4513bd4c8af73543817…
+
# For testsuite, uses fr_FR.UTF-8
BuildRequires: glibc-locale
BuildRequires: meson
@@ -83,8 +88,7 @@
%check
%meson_test
-%post -n libgudev-1_0-0 -p /sbin/ldconfig
-%postun -n libgudev-1_0-0 -p /sbin/ldconfig
+%ldconfig_scriptlets -n libgudev-1_0-0
%files -n libgudev-1_0-0
%license COPYING
++++++ 4216ecd4513bd4c8af73543817a51d6f72f166cc.patch ++++++
From 4216ecd4513bd4c8af73543817a51d6f72f166cc Mon Sep 17 00:00:00 2001
From: Artturi <artturin(a)artturin.com>
Date: Mon, 11 Jul 2022 08:35:09 +0000
Subject: [PATCH] build: let meson handle gir, vala, gtk-doc dependencies
---
gudev/meson.build | 2 +-
meson.build | 23 ++++++-----------------
2 files changed, 7 insertions(+), 18 deletions(-)
diff --git a/gudev/meson.build b/gudev/meson.build
index fd06a11..e904203 100644
--- a/gudev/meson.build
+++ b/gudev/meson.build
@@ -97,7 +97,7 @@ pkg.generate(
]
)
-if introspection_dep.found()
+if gir_dep.found()
libgudev_gir = gnome.generate_gir(
libgudev,
sources: libgudev_sources + libgudev_public_h,
diff --git a/meson.build b/meson.build
index eae2c80..f547a6d 100644
--- a/meson.build
+++ b/meson.build
@@ -42,9 +42,6 @@ cc = meson.get_compiler('c')
glib_req = '>= 2.38.0'
libudev_req = '>= 199'
-introspection_req = '>= 1.31.1'
-vapigen_req = '>= 0.38.0'
-gtk_doc_req = '>= 1.18'
glib_dep = dependency('glib-2.0', version: glib_req)
gobject_dep = dependency('gobject-2.0', version: glib_req)
@@ -58,20 +55,12 @@ umockdev_dep = dependency(
required: get_option('tests')
)
-introspection_dep = dependency(
- 'gobject-introspection-1.0', version: introspection_req,
- required: get_option('introspection')
-)
-
-vapigen_dep = dependency(
- 'vapigen', version: vapigen_req,
- required: get_option('vapi')
-)
+gir_dep = find_program('g-ir-scanner', required: get_option('introspection'))
+vapigen_dep = find_program('vapigen', required : get_option('vapi'))
-gtk_doc_dep = dependency(
- 'gtk-doc', version: gtk_doc_req,
- required: get_option('gtk_doc')
-)
+if vapigen_dep.found()
+ assert(gir_dep.found(), 'vapi requires introspection')
+endif
# Configurations
config_h = configuration_data()
@@ -95,7 +84,7 @@ if get_option('gtk_doc')
endif
summary('Documentation', get_option('gtk_doc'), section: 'Build')
-summary('Introspection', introspection_dep.found(), section: 'Build')
+summary('Introspection', gir_dep.found(), section: 'Build')
summary('Vala API', vapigen_dep.found(), section: 'Build')
summary('Tests', umockdev_dep.found(), section: 'Build')
--
GitLab
++++++ 71b2fda04dd71c637361e8ead103980ad6f27ed5.patch ++++++
From 71b2fda04dd71c637361e8ead103980ad6f27ed5 Mon Sep 17 00:00:00 2001
From: Benjamin Berg <bberg(a)redhat.com>
Date: Mon, 30 May 2022 16:52:36 +0200
Subject: [PATCH] gudev: Fix newline stripping by always reading using udev
libudev will strip trailing newline characters ("\r\n") when reading
sysfs attributes. The uncached reading functions however bypassed the
udev mechanism unnecessarily and then added their own cache on top.
Setting the value to NULL clears the internal cache in systemd. As such,
we can simply do this and then fall back to the normal implementation to
implement the _uncached version of the sysfs attribute getters.
---
gudev/gudevdevice.c | 106 ++++++--------------------------------------
1 file changed, 13 insertions(+), 93 deletions(-)
diff --git a/gudev/gudevdevice.c b/gudev/gudevdevice.c
index 38473dd..112c89e 100644
--- a/gudev/gudevdevice.c
+++ b/gudev/gudevdevice.c
@@ -78,7 +78,6 @@ struct _GUdevDevicePrivate
gchar **tags;
GHashTable *prop_strvs;
GHashTable *sysfs_attr_strvs;
- GHashTable *sysfs_attr;
};
G_DEFINE_TYPE_WITH_CODE (GUdevDevice, g_udev_device, G_TYPE_OBJECT, G_ADD_PRIVATE(GUdevDevice))
@@ -102,9 +101,6 @@ g_udev_device_finalize (GObject *object)
if (device->priv->sysfs_attr_strvs != NULL)
g_hash_table_unref (device->priv->sysfs_attr_strvs);
- if (device->priv->sysfs_attr != NULL)
- g_hash_table_unref (device->priv->sysfs_attr);
-
if (G_OBJECT_CLASS (g_udev_device_parent_class)->finalize != NULL)
(* G_OBJECT_CLASS (g_udev_device_parent_class)->finalize) (object);
}
@@ -131,10 +127,6 @@ _g_udev_device_new (struct udev_device *udevice)
device = G_UDEV_DEVICE (g_object_new (G_UDEV_TYPE_DEVICE, NULL));
device->priv->udevice = udev_device_ref (udevice);
- device->priv->sysfs_attr = g_hash_table_new_full (g_str_hash,
- g_str_equal,
- g_free,
- g_free);
return device;
}
@@ -773,14 +765,8 @@ const gchar *
g_udev_device_get_sysfs_attr (GUdevDevice *device,
const gchar *name)
{
- const char *attr;
-
g_return_val_if_fail (G_UDEV_IS_DEVICE (device), NULL);
g_return_val_if_fail (name != NULL, NULL);
-
- attr = g_hash_table_lookup (device->priv->sysfs_attr, name);
- if (attr)
- return attr;
return udev_device_get_sysattr_value (device->priv->udevice, name);
}
@@ -1030,18 +1016,11 @@ const gchar *
g_udev_device_get_sysfs_attr_uncached (GUdevDevice *device,
const gchar *name)
{
- g_autofree char *path = NULL;
- char *contents = NULL;
-
g_return_val_if_fail (G_UDEV_IS_DEVICE (device), NULL);
g_return_val_if_fail (name != NULL, NULL);
- path = g_build_filename (udev_device_get_syspath (device->priv->udevice), name, NULL);
- if (!g_file_get_contents (path, &contents, NULL, NULL))
- return NULL;
- g_hash_table_insert (device->priv->sysfs_attr, g_strdup (name), contents);
-
- return contents;
+ udev_device_set_sysattr_value (device->priv->udevice, name, NULL);
+ return g_udev_device_get_sysfs_attr (device, name);
}
/**
@@ -1060,20 +1039,11 @@ gint
g_udev_device_get_sysfs_attr_as_int_uncached (GUdevDevice *device,
const gchar *name)
{
- gint result;
- const gchar *s;
-
g_return_val_if_fail (G_UDEV_IS_DEVICE (device), 0);
g_return_val_if_fail (name != NULL, 0);
- result = 0;
- s = g_udev_device_get_sysfs_attr_uncached (device, name);
- if (s == NULL)
- goto out;
-
- result = strtol (s, NULL, 0);
-out:
- return result;
+ udev_device_set_sysattr_value (device->priv->udevice, name, NULL);
+ return g_udev_device_get_sysfs_attr_as_int (device, name);
}
/**
@@ -1092,20 +1062,11 @@ guint64
g_udev_device_get_sysfs_attr_as_uint64_uncached (GUdevDevice *device,
const gchar *name)
{
- guint64 result;
- const gchar *s;
-
g_return_val_if_fail (G_UDEV_IS_DEVICE (device), 0);
g_return_val_if_fail (name != NULL, 0);
- result = 0;
- s = g_udev_device_get_sysfs_attr_uncached (device, name);
- if (s == NULL)
- goto out;
-
- result = g_ascii_strtoull (s, NULL, 0);
-out:
- return result;
+ udev_device_set_sysattr_value (device->priv->udevice, name, NULL);
+ return g_udev_device_get_sysfs_attr_as_uint64 (device, name);
}
/**
@@ -1124,20 +1085,11 @@ gdouble
g_udev_device_get_sysfs_attr_as_double_uncached (GUdevDevice *device,
const gchar *name)
{
- gdouble result;
- const gchar *s;
-
g_return_val_if_fail (G_UDEV_IS_DEVICE (device), 0.0);
g_return_val_if_fail (name != NULL, 0.0);
- result = 0.0;
- s = g_udev_device_get_sysfs_attr_uncached (device, name);
- if (s == NULL)
- goto out;
-
- result = g_ascii_strtod (s, NULL);
-out:
- return result;
+ udev_device_set_sysattr_value (device->priv->udevice, name, NULL);
+ return g_udev_device_get_sysfs_attr_as_double (device, name);
}
/**
@@ -1157,29 +1109,11 @@ gboolean
g_udev_device_get_sysfs_attr_as_boolean_uncached (GUdevDevice *device,
const gchar *name)
{
- gboolean result;
- const gchar *raw;
- g_autofree char *truncated = NULL;
- const char *s;
-
g_return_val_if_fail (G_UDEV_IS_DEVICE (device), FALSE);
g_return_val_if_fail (name != NULL, FALSE);
- result = FALSE;
- raw = g_udev_device_get_sysfs_attr_uncached (device, name);
- if (raw == NULL)
- goto out;
-
- truncated = truncate_at_linefeed (raw);
- s = truncated ?: raw;
- if (strcmp (s, "1") == 0 ||
- g_ascii_strcasecmp (s, "true") == 0 ||
- g_ascii_strcasecmp (s, "y") == 0) {
- result = TRUE;
- }
-
- out:
- return result;
+ udev_device_set_sysattr_value (device->priv->udevice, name, NULL);
+ return g_udev_device_get_sysfs_attr_as_boolean (device, name);
}
/**
@@ -1204,27 +1138,13 @@ const gchar * const *
g_udev_device_get_sysfs_attr_as_strv_uncached (GUdevDevice *device,
const gchar *name)
{
- gchar **result;
- const gchar *s;
-
g_return_val_if_fail (G_UDEV_IS_DEVICE (device), NULL);
g_return_val_if_fail (name != NULL, NULL);
- result = NULL;
- s = g_udev_device_get_sysfs_attr_uncached (device, name);
- if (s == NULL)
- goto out;
+ g_hash_table_remove (device->priv->sysfs_attr_strvs, name);
- result = split_at_whitespace (s);
- if (result == NULL)
- goto out;
-
- if (device->priv->sysfs_attr_strvs == NULL)
- device->priv->sysfs_attr_strvs = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, (GDestroyNotify) g_strfreev);
- g_hash_table_insert (device->priv->sysfs_attr_strvs, g_strdup (name), result);
-
-out:
- return (const gchar* const *) result;
+ udev_device_set_sysattr_value (device->priv->udevice, name, NULL);
+ return g_udev_device_get_sysfs_attr_as_strv (device, name);
}
/**
--
GitLab
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-filelock for openSUSE:Factory checked in at 2023-04-29 17:27:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-filelock (Old)
and /work/SRC/openSUSE:Factory/.python-filelock.new.1533 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-filelock"
Sat Apr 29 17:27:34 2023 rev:12 rq:1083340 version:3.12.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-filelock/python-filelock.changes 2023-04-22 22:01:56.693748952 +0200
+++ /work/SRC/openSUSE:Factory/.python-filelock.new.1533/python-filelock.changes 2023-04-29 17:27:35.646404889 +0200
@@ -1,0 +2,28 @@
+Tue Apr 25 23:29:13 UTC 2023 - John Vandenberg <jayvdb(a)gmail.com>
+
+- Update to v3.12.0
+ * Make the thread local behaviour something the caller can
+ enable/disable via a flag during the lock creation. on by default.
+ * Better error handling on Windows.
+- from v3.11.0
+ * Make the lock thread local.
+- from v3.10.7
+ * Use fchmod instead of chmod to work around bug in PyPy via Anaconda.
+- from v3.10.6
+ * Enhance the robustness of the try/catch block in _soft.py.
+- from v3.10.5
+ * Add explicit error check as certain UNIX filesystems do not support
+ flock.
+- from v3.10.4
+ * Update os.open to preserve mode= for certain edge cases.
+- from v3.10.3
+ * Fix permission issue
+- from v3.10.2
+ * Bug fix for using filelock with threaded programs causing undesired
+ file permissions
+- from v3.10.1
+ * Handle pickle for :class:`filelock.Timeout`
+- from v3.10.0
+ * Add support for explicit file modes for lockfiles
+
+-------------------------------------------------------------------
Old:
----
filelock-3.9.1.tar.gz
New:
----
filelock-3.12.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-filelock.spec ++++++
--- /var/tmp/diff_new_pack.lAp0tF/_old 2023-04-29 17:27:36.250407417 +0200
+++ /var/tmp/diff_new_pack.lAp0tF/_new 2023-04-29 17:27:36.254407435 +0200
@@ -19,7 +19,7 @@
%{?sle15_python_module_pythons}
Name: python-filelock
-Version: 3.9.1
+Version: 3.12.0
Release: 0
Summary: Platform Independent File Lock in Python
License: Unlicense
@@ -29,6 +29,7 @@
BuildRequires: %{python_module hatchling}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module pytest}
+BuildRequires: %{python_module pytest-mock}
BuildRequires: %{python_module wheel}
BuildRequires: fdupes
BuildRequires: python-rpm-macros
@@ -51,7 +52,7 @@
%python_expand %fdupes %{buildroot}/%{$python_sitelib}
%check
-%pytest
+%pytest -rs
%files %{python_files}
%doc README.md
++++++ filelock-3.9.1.tar.gz -> filelock-3.12.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/filelock-3.9.1/PKG-INFO new/filelock-3.12.0/PKG-INFO
--- old/filelock-3.9.1/PKG-INFO 2020-02-02 01:00:00.000000000 +0100
+++ new/filelock-3.12.0/PKG-INFO 2020-02-02 01:00:00.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: filelock
-Version: 3.9.1
+Version: 3.12.0
Summary: A platform independent file lock.
Project-URL: Documentation, https://py-filelock.readthedocs.io
Project-URL: Homepage, https://github.com/tox-dev/py-filelock
@@ -22,15 +22,17 @@
Classifier: Topic :: System
Requires-Python: >=3.7
Provides-Extra: docs
-Requires-Dist: furo>=2022.12.7; extra == 'docs'
-Requires-Dist: sphinx-autodoc-typehints!=1.23.4,>=1.22; extra == 'docs'
+Requires-Dist: furo>=2023.3.27; extra == 'docs'
+Requires-Dist: sphinx-autodoc-typehints!=1.23.4,>=1.23; extra == 'docs'
Requires-Dist: sphinx>=6.1.3; extra == 'docs'
Provides-Extra: testing
Requires-Dist: covdefaults>=2.3; extra == 'testing'
-Requires-Dist: coverage>=7.2.1; extra == 'testing'
+Requires-Dist: coverage>=7.2.3; extra == 'testing'
+Requires-Dist: diff-cover>=7.5; extra == 'testing'
Requires-Dist: pytest-cov>=4; extra == 'testing'
+Requires-Dist: pytest-mock>=3.10; extra == 'testing'
Requires-Dist: pytest-timeout>=2.1; extra == 'testing'
-Requires-Dist: pytest>=7.2.2; extra == 'testing'
+Requires-Dist: pytest>=7.3.1; extra == 'testing'
Description-Content-Type: text/markdown
# py-filelock
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/filelock-3.9.1/pyproject.toml new/filelock-3.12.0/pyproject.toml
--- old/filelock-3.9.1/pyproject.toml 2020-02-02 01:00:00.000000000 +0100
+++ new/filelock-3.12.0/pyproject.toml 2020-02-02 01:00:00.000000000 +0100
@@ -2,7 +2,7 @@
build-backend = "hatchling.build"
requires = [
"hatch-vcs>=0.3",
- "hatchling>=1.13",
+ "hatchling>=1.14",
]
[project]
@@ -35,15 +35,17 @@
"version",
]
optional-dependencies.docs = [
- "furo>=2022.12.7",
+ "furo>=2023.3.27",
"sphinx>=6.1.3",
- "sphinx-autodoc-typehints!=1.23.4,>=1.22",
+ "sphinx-autodoc-typehints!=1.23.4,>=1.23",
]
optional-dependencies.testing = [
"covdefaults>=2.3",
- "coverage>=7.2.1",
- "pytest>=7.2.2",
+ "coverage>=7.2.3",
+ "diff-cover>=7.5",
+ "pytest>=7.3.1",
"pytest-cov>=4",
+ "pytest-mock>=3.10",
"pytest-timeout>=2.1",
]
urls.Documentation = "https://py-filelock.readthedocs.io"
@@ -56,6 +58,21 @@
build.targets.sdist.include = ["/src", "/tests"]
version.source = "vcs"
+[tool.black]
+line-length = 120
+
+[tool.isort]
+profile = "black"
+known_first_party = ["filelock"]
+add_imports = ["from __future__ import annotations"]
+
+[tool.flake8]
+max-complexity = 22
+max-line-length = 120
+unused-arguments-ignore-abstract-functions = true
+noqa-require-code = true
+dictionaries = ["en_US", "python", "technical", "django"]
+
[tool.coverage]
html.show_contexts = true
html.skip_covered = false
@@ -65,13 +82,6 @@
run.parallel = true
run.plugins = ["covdefaults"]
-[tool.black]
-line-length = 120
-
-[tool.isort]
-profile = "black"
-known_first_party = ["filelock"]
-
[tool.mypy]
python_version = "3.11"
show_error_codes = true
@@ -80,10 +90,3 @@
[tool.pep8]
max-line-length = "120"
-
-[tool.flake8]
-max-complexity = 22
-max-line-length = 120
-unused-arguments-ignore-abstract-functions = true
-noqa-require-code = true
-dictionaries = ["en_US", "python", "technical", "django"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/filelock-3.9.1/src/filelock/__init__.py new/filelock-3.12.0/src/filelock/__init__.py
--- old/filelock-3.9.1/src/filelock/__init__.py 2020-02-02 01:00:00.000000000 +0100
+++ new/filelock-3.12.0/src/filelock/__init__.py 2020-02-02 01:00:00.000000000 +0100
@@ -32,11 +32,10 @@
if warnings is not None:
warnings.warn("only soft file lock is available", stacklevel=2)
-#: Alias for the lock, which should be used for the current platform. On Windows, this is an alias for
-# :class:`WindowsFileLock`, on Unix for :class:`UnixFileLock` and otherwise for :class:`SoftFileLock`.
if TYPE_CHECKING:
FileLock = SoftFileLock
else:
+ #: Alias for the lock, which should be used for the current platform.
FileLock = _FileLock
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/filelock-3.9.1/src/filelock/_api.py new/filelock-3.12.0/src/filelock/_api.py
--- old/filelock-3.9.1/src/filelock/_api.py 2020-02-02 01:00:00.000000000 +0100
+++ new/filelock-3.12.0/src/filelock/_api.py 2020-02-02 01:00:00.000000000 +0100
@@ -6,7 +6,8 @@
import time
import warnings
from abc import ABC, abstractmethod
-from threading import Lock
+from dataclasses import dataclass
+from threading import local
from types import TracebackType
from typing import Any
@@ -36,10 +37,47 @@
self.lock.release()
+@dataclass
+class FileLockContext:
+ """
+ A dataclass which holds the context for a ``BaseFileLock`` object.
+ """
+
+ # The context is held in a separate class to allow optional use of thread local storage via the
+ # ThreadLocalFileContext class.
+
+ #: The path to the lock file.
+ lock_file: str
+
+ #: The default timeout value.
+ timeout: float
+
+ #: The mode for the lock files
+ mode: int
+
+ #: The file descriptor for the *_lock_file* as it is returned by the os.open() function, not None when lock held
+ lock_file_fd: int | None = None
+
+ #: The lock counter is used for implementing the nested locking mechanism.
+ lock_counter: int = 0 # When the lock is acquired is increased and the lock is only released, when this value is 0
+
+
+class ThreadLocalFileContext(FileLockContext, local):
+ """
+ A thread local version of the ``FileLockContext`` class.
+ """
+
+
class BaseFileLock(ABC, contextlib.ContextDecorator):
"""Abstract base class for a file lock object."""
- def __init__(self, lock_file: str | os.PathLike[Any], timeout: float = -1) -> None:
+ def __init__(
+ self,
+ lock_file: str | os.PathLike[Any],
+ timeout: float = -1,
+ mode: int = 0o644,
+ thread_local: bool = True,
+ ) -> None:
"""
Create a new lock object.
@@ -47,28 +85,29 @@
:param timeout: default timeout when acquiring the lock, in seconds. It will be used as fallback value in
the acquire method, if no timeout value (``None``) is given. If you want to disable the timeout, set it
to a negative value. A timeout of 0 means, that there is exactly one attempt to acquire the file lock.
- """
- # The path to the lock file.
- self._lock_file: str = os.fspath(lock_file)
-
- # The file descriptor for the *_lock_file* as it is returned by the os.open() function.
- # This file lock is only NOT None, if the object currently holds the lock.
- self._lock_file_fd: int | None = None
-
- # The default timeout value.
- self._timeout: float = timeout
-
- # We use this lock primarily for the lock counter.
- self._thread_lock: Lock = Lock()
-
- # The lock counter is used for implementing the nested locking mechanism. Whenever the lock is acquired, the
- # counter is increased and the lock is only released, when this value is 0 again.
- self._lock_counter: int = 0
+ :param mode: file permissions for the lockfile.
+ :param thread_local: Whether this object's internal context should be thread local or not.
+ If this is set to ``False`` then the lock will be reentrant across threads.
+ """
+ self._is_thread_local = thread_local
+
+ # Create the context. Note that external code should not work with the context directly and should instead use
+ # properties of this class.
+ kwargs: dict[str, Any] = {
+ "lock_file": os.fspath(lock_file),
+ "timeout": timeout,
+ "mode": mode,
+ }
+ self._context: FileLockContext = (ThreadLocalFileContext if thread_local else FileLockContext)(**kwargs)
+
+ def is_thread_local(self) -> bool:
+ """:return: a flag indicating if this lock is thread local or not"""
+ return self._is_thread_local
@property
def lock_file(self) -> str:
""":return: path to the lock file"""
- return self._lock_file
+ return self._context.lock_file
@property
def timeout(self) -> float:
@@ -77,7 +116,7 @@
.. versionadded:: 2.0.0
"""
- return self._timeout
+ return self._context.timeout
@timeout.setter
def timeout(self, value: float | str) -> None:
@@ -86,16 +125,16 @@
:param value: the new value, in seconds
"""
- self._timeout = float(value)
+ self._context.timeout = float(value)
@abstractmethod
def _acquire(self) -> None:
- """If the file lock could be acquired, self._lock_file_fd holds the file descriptor of the lock file."""
+ """If the file lock could be acquired, self._context.lock_file_fd holds the file descriptor of the lock file."""
raise NotImplementedError
@abstractmethod
def _release(self) -> None:
- """Releases the lock and sets self._lock_file_fd to None."""
+ """Releases the lock and sets self._context.lock_file_fd to None."""
raise NotImplementedError
@property
@@ -108,7 +147,14 @@
This was previously a method and is now a property.
"""
- return self._lock_file_fd is not None
+ return self._context.lock_file_fd is not None
+
+ @property
+ def lock_counter(self) -> int:
+ """
+ :return: The number of times this lock has been acquired (but not yet released).
+ """
+ return self._context.lock_counter
def acquire(
self,
@@ -126,7 +172,7 @@
:param poll_interval: interval of trying to acquire the lock file
:param poll_intervall: deprecated, kept for backwards compatibility, use ``poll_interval`` instead
:param blocking: defaults to True. If False, function will return immediately if it cannot obtain a lock on the
- first attempt. Otherwise this method will block until the timeout expires or the lock is acquired.
+ first attempt. Otherwise, this method will block until the timeout expires or the lock is acquired.
:raises Timeout: if fails to acquire lock within the timeout period
:return: a context object that will unlock the file when the context is exited
@@ -151,7 +197,7 @@
"""
# Use the default timeout, if no timeout is provided.
if timeout is None:
- timeout = self.timeout
+ timeout = self._context.timeout
if poll_intervall is not None:
msg = "use poll_interval instead of poll_intervall"
@@ -159,35 +205,31 @@
poll_interval = poll_intervall
# Increment the number right at the beginning. We can still undo it, if something fails.
- with self._thread_lock:
- self._lock_counter += 1
+ self._context.lock_counter += 1
lock_id = id(self)
- lock_filename = self._lock_file
+ lock_filename = self.lock_file
start_time = time.perf_counter()
try:
while True:
- with self._thread_lock:
- if not self.is_locked:
- _LOGGER.debug("Attempting to acquire lock %s on %s", lock_id, lock_filename)
- self._acquire()
-
+ if not self.is_locked:
+ _LOGGER.debug("Attempting to acquire lock %s on %s", lock_id, lock_filename)
+ self._acquire()
if self.is_locked:
_LOGGER.debug("Lock %s acquired on %s", lock_id, lock_filename)
break
elif blocking is False:
_LOGGER.debug("Failed to immediately acquire lock %s on %s", lock_id, lock_filename)
- raise Timeout(self._lock_file)
+ raise Timeout(lock_filename)
elif 0 <= timeout < time.perf_counter() - start_time:
_LOGGER.debug("Timeout on acquiring lock %s on %s", lock_id, lock_filename)
- raise Timeout(self._lock_file)
+ raise Timeout(lock_filename)
else:
msg = "Lock %s not acquired on %s, waiting %s seconds ..."
_LOGGER.debug(msg, lock_id, lock_filename, poll_interval)
time.sleep(poll_interval)
except BaseException: # Something did go wrong, so decrement the counter.
- with self._thread_lock:
- self._lock_counter = max(0, self._lock_counter - 1)
+ self._context.lock_counter = max(0, self._context.lock_counter - 1)
raise
return AcquireReturnProxy(lock=self)
@@ -198,17 +240,16 @@
:param force: If true, the lock counter is ignored and the lock is released in every case/
"""
- with self._thread_lock:
- if self.is_locked:
- self._lock_counter -= 1
-
- if self._lock_counter == 0 or force:
- lock_id, lock_filename = id(self), self._lock_file
-
- _LOGGER.debug("Attempting to release lock %s on %s", lock_id, lock_filename)
- self._release()
- self._lock_counter = 0
- _LOGGER.debug("Lock %s released on %s", lock_id, lock_filename)
+ if self.is_locked:
+ self._context.lock_counter -= 1
+
+ if self._context.lock_counter == 0 or force:
+ lock_id, lock_filename = id(self), self.lock_file
+
+ _LOGGER.debug("Attempting to release lock %s on %s", lock_id, lock_filename)
+ self._release()
+ self._context.lock_counter = 0
+ _LOGGER.debug("Lock %s released on %s", lock_id, lock_filename)
def __enter__(self) -> BaseFileLock:
"""
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/filelock-3.9.1/src/filelock/_error.py new/filelock-3.12.0/src/filelock/_error.py
--- old/filelock-3.9.1/src/filelock/_error.py 2020-02-02 01:00:00.000000000 +0100
+++ new/filelock-3.12.0/src/filelock/_error.py 2020-02-02 01:00:00.000000000 +0100
@@ -1,15 +1,28 @@
from __future__ import annotations
+from typing import Any
+
class Timeout(TimeoutError):
"""Raised when the lock could not be acquired in *timeout* seconds."""
def __init__(self, lock_file: str) -> None:
- #: The path of the file lock.
- self.lock_file = lock_file
+ super().__init__()
+ self._lock_file = lock_file
+
+ def __reduce__(self) -> str | tuple[Any, ...]:
+ return self.__class__, (self._lock_file,) # Properly pickle the exception
def __str__(self) -> str:
- return f"The file lock '{self.lock_file}' could not be acquired."
+ return f"The file lock '{self._lock_file}' could not be acquired."
+
+ def __repr__(self) -> str:
+ return f"{self.__class__.__name__}({self.lock_file!r})"
+
+ @property
+ def lock_file(self) -> str:
+ """:return: The path of the file lock."""
+ return self._lock_file
__all__ = [
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/filelock-3.9.1/src/filelock/_soft.py new/filelock-3.12.0/src/filelock/_soft.py
--- old/filelock-3.9.1/src/filelock/_soft.py 2020-02-02 01:00:00.000000000 +0100
+++ new/filelock-3.12.0/src/filelock/_soft.py 2020-02-02 01:00:00.000000000 +0100
@@ -2,42 +2,40 @@
import os
import sys
-from errno import EACCES, EEXIST, ENOENT
+from errno import EACCES, EEXIST
from ._api import BaseFileLock
-from ._util import raise_on_exist_ro_file
+from ._util import raise_on_not_writable_file
class SoftFileLock(BaseFileLock):
"""Simply watches the existence of the lock file."""
def _acquire(self) -> None:
- raise_on_exist_ro_file(self._lock_file)
+ raise_on_not_writable_file(self.lock_file)
# first check for exists and read-only mode as the open will mask this case as EEXIST
- mode = (
+ flags = (
os.O_WRONLY # open for writing only
| os.O_CREAT
| os.O_EXCL # together with above raise EEXIST if the file specified by filename exists
| os.O_TRUNC # truncate the file to zero byte
)
try:
- fd = os.open(self._lock_file, mode)
- except OSError as exception:
- if exception.errno == EEXIST: # expected if cannot lock
- pass
- elif exception.errno == ENOENT: # No such file or directory - parent directory is missing
+ file_handler = os.open(self.lock_file, flags, self._context.mode)
+ except OSError as exception: # re-raise unless expected exception
+ if not (
+ exception.errno == EEXIST # lock already exist
+ or (exception.errno == EACCES and sys.platform == "win32") # has no access to this lock
+ ): # pragma: win32 no cover
raise
- elif exception.errno == EACCES and sys.platform != "win32": # pragma: win32 no cover
- # Permission denied - parent dir is R/O
- raise # note windows does not allow you to make a folder r/o only files
else:
- self._lock_file_fd = fd
+ self._context.lock_file_fd = file_handler
def _release(self) -> None:
- os.close(self._lock_file_fd) # type: ignore # the lock file is definitely not None
- self._lock_file_fd = None
+ os.close(self._context.lock_file_fd) # type: ignore # the lock file is definitely not None
+ self._context.lock_file_fd = None
try:
- os.remove(self._lock_file)
+ os.remove(self.lock_file)
except OSError: # the file is already deleted and that's what we want
pass
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/filelock-3.9.1/src/filelock/_unix.py new/filelock-3.12.0/src/filelock/_unix.py
--- old/filelock-3.9.1/src/filelock/_unix.py 2020-02-02 01:00:00.000000000 +0100
+++ new/filelock-3.12.0/src/filelock/_unix.py 2020-02-02 01:00:00.000000000 +0100
@@ -2,6 +2,7 @@
import os
import sys
+from errno import ENOSYS
from typing import cast
from ._api import BaseFileLock
@@ -31,21 +32,27 @@
"""Uses the :func:`fcntl.flock` to hard lock the lock file on unix systems."""
def _acquire(self) -> None:
- open_mode = os.O_RDWR | os.O_CREAT | os.O_TRUNC
- fd = os.open(self._lock_file, open_mode)
+ open_flags = os.O_RDWR | os.O_CREAT | os.O_TRUNC
+ fd = os.open(self.lock_file, open_flags, self._context.mode)
+ try:
+ os.fchmod(fd, self._context.mode)
+ except PermissionError:
+ pass # This locked is not owned by this UID
try:
fcntl.flock(fd, fcntl.LOCK_EX | fcntl.LOCK_NB)
- except OSError:
+ except OSError as exception:
os.close(fd)
+ if exception.errno == ENOSYS: # NotImplemented error
+ raise NotImplementedError("FileSystem does not appear to support flock; user SoftFileLock instead")
else:
- self._lock_file_fd = fd
+ self._context.lock_file_fd = fd
def _release(self) -> None:
# Do not remove the lockfile:
# https://github.com/tox-dev/py-filelock/issues/31
# https://stackoverflow.com/questions/17708885/flock-removing-locked-file-wit…
- fd = cast(int, self._lock_file_fd)
- self._lock_file_fd = None
+ fd = cast(int, self._context.lock_file_fd)
+ self._context.lock_file_fd = None
fcntl.flock(fd, fcntl.LOCK_UN)
os.close(fd)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/filelock-3.9.1/src/filelock/_util.py new/filelock-3.12.0/src/filelock/_util.py
--- old/filelock-3.9.1/src/filelock/_util.py 2020-02-02 01:00:00.000000000 +0100
+++ new/filelock-3.12.0/src/filelock/_util.py 2020-02-02 01:00:00.000000000 +0100
@@ -2,9 +2,18 @@
import os
import stat
+import sys
+from errno import EACCES, EISDIR
-def raise_on_exist_ro_file(filename: str) -> None:
+def raise_on_not_writable_file(filename: str) -> None:
+ """
+ Raise an exception if attempting to open the file for writing would fail.
+ This is done so files that will never be writable can be separated from
+ files that are writable but currently locked
+ :param filename: file to check
+ :raises OSError: as if the file was opened for writing
+ """
try:
file_stat = os.stat(filename) # use stat to do exists + can write to check without race condition
except OSError:
@@ -12,9 +21,17 @@
if file_stat.st_mtime != 0: # if os.stat returns but modification is zero that's an invalid os.stat - ignore it
if not (file_stat.st_mode & stat.S_IWUSR):
- raise PermissionError(f"Permission denied: {filename!r}")
+ raise PermissionError(EACCES, "Permission denied", filename)
+
+ if stat.S_ISDIR(file_stat.st_mode):
+ if sys.platform == "win32": # pragma: win32 cover
+ # On Windows, this is PermissionError
+ raise PermissionError(EACCES, "Permission denied", filename)
+ else: # pragma: win32 no cover
+ # On linux / macOS, this is IsADirectoryError
+ raise IsADirectoryError(EISDIR, "Is a directory", filename)
__all__ = [
- "raise_on_exist_ro_file",
+ "raise_on_not_writable_file",
]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/filelock-3.9.1/src/filelock/_windows.py new/filelock-3.12.0/src/filelock/_windows.py
--- old/filelock-3.9.1/src/filelock/_windows.py 2020-02-02 01:00:00.000000000 +0100
+++ new/filelock-3.12.0/src/filelock/_windows.py 2020-02-02 01:00:00.000000000 +0100
@@ -2,46 +2,48 @@
import os
import sys
-from errno import ENOENT
+from errno import EACCES
from typing import cast
from ._api import BaseFileLock
-from ._util import raise_on_exist_ro_file
+from ._util import raise_on_not_writable_file
if sys.platform == "win32": # pragma: win32 cover
import msvcrt
class WindowsFileLock(BaseFileLock):
- """Uses the :func:`msvcrt.locking` function to hard lock the lock file on windows systems."""
+ """Uses the :func:`msvcrt.locking` function to hard lock the lock file on Windows systems."""
def _acquire(self) -> None:
- raise_on_exist_ro_file(self._lock_file)
- mode = (
+ raise_on_not_writable_file(self.lock_file)
+ flags = (
os.O_RDWR # open for read and write
| os.O_CREAT # create file if not exists
- | os.O_TRUNC # truncate file if not empty
+ | os.O_TRUNC # truncate file if not empty
)
try:
- fd = os.open(self._lock_file, mode)
+ fd = os.open(self.lock_file, flags, self._context.mode)
except OSError as exception:
- if exception.errno == ENOENT: # No such file or directory
+ if exception.errno != EACCES: # has no access to this lock
raise
else:
try:
msvcrt.locking(fd, msvcrt.LK_NBLCK, 1)
- except OSError:
- os.close(fd)
+ except OSError as exception:
+ os.close(fd) # close file first
+ if exception.errno != EACCES: # file is already locked
+ raise
else:
- self._lock_file_fd = fd
+ self._context.lock_file_fd = fd
def _release(self) -> None:
- fd = cast(int, self._lock_file_fd)
- self._lock_file_fd = None
+ fd = cast(int, self._context.lock_file_fd)
+ self._context.lock_file_fd = None
msvcrt.locking(fd, msvcrt.LK_UNLCK, 1)
os.close(fd)
try:
- os.remove(self._lock_file)
+ os.remove(self.lock_file)
# Probably another instance of the application hat acquired the file lock.
except OSError:
pass
@@ -49,7 +51,7 @@
else: # pragma: win32 no cover
class WindowsFileLock(BaseFileLock):
- """Uses the :func:`msvcrt.locking` function to hard lock the lock file on windows systems."""
+ """Uses the :func:`msvcrt.locking` function to hard lock the lock file on Windows systems."""
def _acquire(self) -> None:
raise NotImplementedError
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/filelock-3.9.1/src/filelock/version.py new/filelock-3.12.0/src/filelock/version.py
--- old/filelock-3.9.1/src/filelock/version.py 2020-02-02 01:00:00.000000000 +0100
+++ new/filelock-3.12.0/src/filelock/version.py 2020-02-02 01:00:00.000000000 +0100
@@ -1,4 +1,4 @@
# file generated by setuptools_scm
# don't change, don't track in version control
-__version__ = version = '3.9.1'
-__version_tuple__ = version_tuple = (3, 9, 1)
+__version__ = version = '3.12.0'
+__version_tuple__ = version_tuple = (3, 12, 0)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/filelock-3.9.1/tests/test_error.py new/filelock-3.12.0/tests/test_error.py
--- old/filelock-3.9.1/tests/test_error.py 1970-01-01 01:00:00.000000000 +0100
+++ new/filelock-3.12.0/tests/test_error.py 2020-02-02 01:00:00.000000000 +0100
@@ -0,0 +1,30 @@
+from __future__ import annotations
+
+import pickle
+
+from filelock import Timeout
+
+
+def test_timeout_str() -> None:
+ timeout = Timeout("/path/to/lock")
+ assert str(timeout) == "The file lock '/path/to/lock' could not be acquired."
+
+
+def test_timeout_repr() -> None:
+ timeout = Timeout("/path/to/lock")
+ assert repr(timeout) == "Timeout('/path/to/lock')"
+
+
+def test_timeout_lock_file() -> None:
+ timeout = Timeout("/path/to/lock")
+ assert timeout.lock_file == "/path/to/lock"
+
+
+def test_timeout_pickle() -> None:
+ timeout = Timeout("/path/to/lock")
+ timeout_loaded = pickle.loads(pickle.dumps(timeout))
+
+ assert timeout.__class__ == timeout_loaded.__class__
+ assert str(timeout) == str(timeout_loaded)
+ assert repr(timeout) == repr(timeout_loaded)
+ assert timeout.lock_file == timeout_loaded.lock_file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/filelock-3.9.1/tests/test_filelock.py new/filelock-3.12.0/tests/test_filelock.py
--- old/filelock-3.9.1/tests/test_filelock.py 2020-02-02 01:00:00.000000000 +0100
+++ new/filelock-3.12.0/tests/test_filelock.py 2020-02-02 01:00:00.000000000 +0100
@@ -2,17 +2,22 @@
import inspect
import logging
+import os
import sys
import threading
+from concurrent.futures import ThreadPoolExecutor
from contextlib import contextmanager
+from errno import ENOSYS
from inspect import getframeinfo, stack
from pathlib import Path, PurePath
-from stat import S_IWGRP, S_IWOTH, S_IWUSR
+from stat import S_IWGRP, S_IWOTH, S_IWUSR, filemode
from types import TracebackType
from typing import Callable, Iterator, Tuple, Type, Union
+from uuid import uuid4
import pytest
from _pytest.logging import LogCaptureFixture
+from pytest_mock import MockerFixture
from filelock import (
BaseFileLock,
@@ -78,6 +83,10 @@
@pytest.mark.parametrize("lock_type", [FileLock, SoftFileLock])
@pytest.mark.skipif(sys.platform == "win32", reason="Windows does not have read only folders")
+(a)pytest.mark.skipif(
+ sys.platform != "win32" and os.geteuid() == 0, # noqa: SC200
+ reason="Cannot make a read only file (that the current user: root can't read)",
+)
def test_ro_folder(lock_type: type[BaseFileLock], tmp_path_ro: Path) -> None:
lock = lock_type(str(tmp_path_ro / "a"))
with pytest.raises(PermissionError, match="Permission denied"):
@@ -93,18 +102,46 @@
@pytest.mark.parametrize("lock_type", [FileLock, SoftFileLock])
+(a)pytest.mark.skipif(
+ sys.platform != "win32" and os.geteuid() == 0, # noqa: SC200
+ reason="Cannot make a read only file (that the current user: root can't read)",
+)
def test_ro_file(lock_type: type[BaseFileLock], tmp_file_ro: Path) -> None:
lock = lock_type(str(tmp_file_ro))
with pytest.raises(PermissionError, match="Permission denied"):
lock.acquire()
+WindowsOnly = pytest.mark.skipif(sys.platform != "win32", reason="Windows only")
+
+
@pytest.mark.parametrize("lock_type", [FileLock, SoftFileLock])
-def test_missing_directory(lock_type: type[BaseFileLock], tmp_path_ro: Path) -> None:
- lock_path = tmp_path_ro / "a" / "b"
- lock = lock_type(str(lock_path))
+(a)pytest.mark.parametrize(
+ ("expected_error", "match", "bad_lock_file"),
+ [
+ pytest.param(FileNotFoundError, "No such file or directory:", "a/b", id="non_existent_directory"),
+ pytest.param(FileNotFoundError, "No such file or directory:", "", id="blank_filename"),
+ pytest.param(ValueError, "embedded null (byte|character)", "\0", id="null_byte"),
+ pytest.param(
+ PermissionError if sys.platform == "win32" else IsADirectoryError,
+ "Permission denied:" if sys.platform == "win32" else "Is a directory",
+ ".",
+ id="current_directory",
+ ),
+ ]
+ + [pytest.param(OSError, "Invalid argument", i, id=f"invalid_{i}", marks=WindowsOnly) for i in '<>:"|?*\a']
+ + [pytest.param(PermissionError, "Permission denied:", i, id=f"permission_{i}", marks=WindowsOnly) for i in "/\\"],
+)
+(a)pytest.mark.timeout(5) # timeout in case of infinite loop
+def test_bad_lock_file(
+ lock_type: type[BaseFileLock],
+ expected_error: type[Exception],
+ match: str,
+ bad_lock_file: str,
+) -> None:
+ lock = lock_type(bad_lock_file)
- with pytest.raises(OSError, match="No such file or directory:"):
+ with pytest.raises(expected_error, match=match):
lock.acquire()
@@ -334,8 +371,8 @@
with lock as lock_1:
assert lock is lock_1
assert lock.is_locked
- raise Exception
- except Exception:
+ raise ValueError
+ except ValueError:
assert not lock.is_locked
@@ -349,8 +386,8 @@
with lock.acquire() as lock_1:
assert lock is lock_1
assert lock.is_locked
- raise Exception
- except Exception:
+ raise ValueError
+ except ValueError:
assert not lock.is_locked
@@ -382,9 +419,8 @@
def test_cleanup_soft_lock(tmp_path: Path) -> None:
# tests if the lock file is removed after use
lock_path = tmp_path / "a"
- lock = SoftFileLock(str(lock_path))
- with lock:
+ with SoftFileLock(lock_path):
assert lock_path.exists()
assert not lock_path.exists()
@@ -396,9 +432,9 @@
with pytest.deprecated_call(match="use poll_interval instead of poll_intervall") as checker:
lock.acquire(poll_intervall=0.05) # the deprecation warning will be captured by the checker
- frameinfo = getframeinfo(stack()[0][0]) # get frameinfo of current file and lineno (+1 than the above lineno)
+ frame_info = getframeinfo(stack()[0][0]) # get frame info of current file and lineno (+1 than the above lineno)
for warning in checker:
- if warning.filename == frameinfo.filename and warning.lineno + 1 == frameinfo.lineno: # pragma: no cover
+ if warning.filename == frame_info.filename and warning.lineno + 1 == frame_info.lineno: # pragma: no cover
break
else: # pragma: no cover
pytest.fail("No warnings of stacklevel=2 matching.")
@@ -418,15 +454,178 @@
assert not lock.is_locked
+def test_lock_mode(tmp_path: Path) -> None:
+ # test file lock permissions are independent of umask
+ lock_path = tmp_path / "a.lock"
+ lock = FileLock(str(lock_path), mode=0o666)
+
+ # set umask so permissions can be anticipated
+ initial_umask = os.umask(0o022)
+ try:
+ lock.acquire()
+ assert lock.is_locked
+
+ mode = filemode(os.stat(lock_path).st_mode)
+ assert mode == "-rw-rw-rw-"
+ finally:
+ os.umask(initial_umask)
+
+ lock.release()
+
+
+def test_lock_mode_soft(tmp_path: Path) -> None:
+ # test soft lock permissions are dependent of umask
+ lock_path = tmp_path / "a.lock"
+ lock = SoftFileLock(str(lock_path), mode=0o666)
+
+ # set umask so permissions can be anticipated
+ initial_umask = os.umask(0o022)
+ try:
+ lock.acquire()
+ assert lock.is_locked
+
+ mode = filemode(os.stat(lock_path).st_mode)
+ if sys.platform == "win32":
+ assert mode == "-rw-rw-rw-"
+ else:
+ assert mode == "-rw-r--r--"
+ finally:
+ os.umask(initial_umask)
+
+ lock.release()
+
+
+def test_umask(tmp_path: Path) -> None:
+ lock_path = tmp_path / "a.lock"
+ lock = FileLock(str(lock_path), mode=0o666)
+
+ initial_umask = os.umask(0)
+ os.umask(initial_umask)
+
+ lock.acquire()
+ assert lock.is_locked
+
+ current_umask = os.umask(0)
+ os.umask(current_umask)
+ assert initial_umask == current_umask
+
+ lock.release()
+
+
+def test_umask_soft(tmp_path: Path) -> None:
+ lock_path = tmp_path / "a.lock"
+ lock = SoftFileLock(str(lock_path), mode=0o666)
+
+ initial_umask = os.umask(0)
+ os.umask(initial_umask)
+
+ lock.acquire()
+ assert lock.is_locked
+
+ current_umask = os.umask(0)
+ os.umask(current_umask)
+ assert initial_umask == current_umask
+
+ lock.release()
+
+
def test_wrong_platform(tmp_path: Path) -> None:
assert not inspect.isabstract(UnixFileLock)
assert not inspect.isabstract(WindowsFileLock)
assert inspect.isabstract(BaseFileLock)
lock_type = UnixFileLock if sys.platform == "win32" else WindowsFileLock
- lock = lock_type(str(tmp_path / "lockfile"))
+ lock = lock_type(tmp_path / "lockfile")
with pytest.raises(NotImplementedError):
lock.acquire()
with pytest.raises(NotImplementedError):
lock._release()
+
+
+(a)pytest.mark.skipif(sys.platform == "win32", reason="flock not run on windows")
+def test_flock_not_implemented_unix(tmp_path: Path, mocker: MockerFixture) -> None:
+ mocker.patch("fcntl.flock", side_effect=OSError(ENOSYS, "mock error"))
+ with pytest.raises(NotImplementedError):
+ with FileLock(tmp_path / "a.lock"):
+ pass
+
+
+def test_soft_errors(tmp_path: Path, mocker: MockerFixture) -> None:
+ mocker.patch("os.open", side_effect=OSError(ENOSYS, "mock error"))
+ with pytest.raises(OSError, match="mock error"):
+ SoftFileLock(tmp_path / "a.lock").acquire()
+
+
+def _check_file_read_write(txt_file: Path) -> None:
+ for _ in range(3):
+ uuid = str(uuid4())
+ txt_file.write_text(uuid)
+ assert txt_file.read_text() == uuid
+
+
+(a)pytest.mark.parametrize("lock_type", [FileLock, SoftFileLock])
+def test_thrashing_with_thread_pool_passing_lock_to_threads(tmp_path: Path, lock_type: type[BaseFileLock]) -> None:
+ def mess_with_file(lock_: BaseFileLock) -> None:
+ with lock_:
+ _check_file_read_write(txt_file)
+
+ lock_file, txt_file = tmp_path / "test.txt.lock", tmp_path / "test.txt"
+ lock = lock_type(lock_file)
+ results = []
+ with ThreadPoolExecutor() as executor:
+ for _ in range(100):
+ results.append(executor.submit(mess_with_file, lock))
+
+ assert all(r.result() is None for r in results)
+
+
+(a)pytest.mark.parametrize("lock_type", [FileLock, SoftFileLock])
+def test_thrashing_with_thread_pool_global_lock(tmp_path: Path, lock_type: type[BaseFileLock]) -> None:
+ def mess_with_file() -> None:
+ with lock:
+ _check_file_read_write(txt_file)
+
+ lock_file, txt_file = tmp_path / "test.txt.lock", tmp_path / "test.txt"
+ lock = lock_type(lock_file)
+ results = []
+ with ThreadPoolExecutor() as executor:
+ for _ in range(100):
+ results.append(executor.submit(mess_with_file))
+
+ assert all(r.result() is None for r in results)
+
+
+(a)pytest.mark.parametrize("lock_type", [FileLock, SoftFileLock])
+def test_thrashing_with_thread_pool_lock_recreated_in_each_thread(
+ tmp_path: Path,
+ lock_type: type[BaseFileLock],
+) -> None:
+ def mess_with_file() -> None:
+ with lock_type(lock_file):
+ _check_file_read_write(txt_file)
+
+ lock_file, txt_file = tmp_path / "test.txt.lock", tmp_path / "test.txt"
+ results = []
+ with ThreadPoolExecutor() as executor:
+ for _ in range(100):
+ results.append(executor.submit(mess_with_file))
+
+ assert all(r.result() is None for r in results)
+
+
+(a)pytest.mark.parametrize("lock_type", [FileLock, SoftFileLock])
+def test_lock_can_be_non_thread_local(
+ tmp_path: Path,
+ lock_type: type[BaseFileLock],
+) -> None:
+ lock = lock_type(tmp_path / "test.lock", thread_local=False)
+
+ for _ in range(2):
+ thread = threading.Thread(target=lock.acquire, kwargs={"timeout": 2})
+ thread.start()
+ thread.join()
+
+ assert lock.lock_counter == 2
+
+ lock.release(force=True)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package perl-Bootloader for openSUSE:Factory checked in at 2023-04-29 17:27:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Bootloader (Old)
and /work/SRC/openSUSE:Factory/.perl-Bootloader.new.1533 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-Bootloader"
Sat Apr 29 17:27:33 2023 rev:204 rq:1082810 version:1.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-Bootloader/perl-Bootloader.changes 2023-01-15 17:57:40.366027216 +0100
+++ /work/SRC/openSUSE:Factory/.perl-Bootloader.new.1533/perl-Bootloader.changes 2023-04-29 17:27:34.638400668 +0200
@@ -1,0 +2,18 @@
+Mon Apr 24 17:38:14 UTC 2023 - wfeldt(a)opensuse.org
+
+- merge gh#openSUSE/perl-bootloader#143
+- adjust Makefile for usrmerge and legacy package split
+- move obs spec file to git repo
+- split off old perl code to perl-Bootloader-legacy package
+- remove legacy part completely
+- 1.0
+
+--------------------------------------------------------------------
+Mon Apr 24 15:07:57 UTC 2023 - wfeldt(a)opensuse.org
+
+- merge gh#openSUSE/perl-bootloader#142
+- use fw_platform_size to distinguish between 32 bit and 64 bit
+ UEFI platforms (bsc#1208003)
+- 0.942
+
+--------------------------------------------------------------------
Old:
----
perl-Bootloader-0.941.tar.xz
New:
----
perl-Bootloader-1.0.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ perl-Bootloader.spec ++++++
--- /var/tmp/diff_new_pack.xthyF3/_old 2023-04-29 17:27:35.126402712 +0200
+++ /var/tmp/diff_new_pack.xthyF3/_new 2023-04-29 17:27:35.134402745 +0200
@@ -16,47 +16,31 @@
#
-%if 0%{suse_version} > 1550
+%if %{suse_version} > 1550
%define sbindir %{_sbindir}
%else
%define sbindir /sbin
%endif
+%{!?_distconfdir:%global _distconfdir /etc}
+
Name: perl-Bootloader
-Version: 0.941
+Version: 1.0
Release: 0
Requires: coreutils
Requires: perl-base = %{perl_version}
-Recommends: perl-gettext
-Summary: Library for Configuring Boot Loaders
+Obsoletes: perl-Bootloader-YAML < %{version}
+Summary: Tool for boot loader configuration
License: GPL-2.0-or-later
Group: System/Boot
+URL: https://github.com/openSUSE/perl-bootloader
Source: %{name}-%{version}.tar.xz
BuildRoot: %{_tmppath}/%{name}-%{version}-build
BuildRequires: perl
-Conflicts: multipath-tools < 0.4.8-40.25.1
#!BuildIgnore: mdadm e2fsprogs limal-bootloader
%description
-Perl modules for configuring various boot loaders.
-
-
-
-Authors:
---------
- Jiri Srain <jsrain(a)suse.cz>
- Joachim Plack <jplack(a)suse.de>
- Alexander Osthof <aosthof(a)suse.de>
- Josef Reidinger <jreidinger(a)suse.cz>
-
-%package YAML
-Requires: %{name} = %{version}
-Requires: perl-YAML-LibYAML
-Summary: YAML interface for perl-Bootloader
-Group: System/Boot
-
-%description YAML
-A command line interface to perl-Bootloader using YAML files for input and output.
+Shell script wrapper for configuring various boot loaders.
%prep
%setup -q
@@ -64,46 +48,9 @@
%build
%install
-make DESTDIR=$RPM_BUILD_ROOT install
-%if %{suse_version} > 1550
-mv %{buildroot}/sbin/* %{buildroot}%{_sbindir}
-ln -sf ../../sbin/pbl %{buildroot}/usr/lib/bootloader/bootloader_entry
-rm $RPM_BUILD_ROOT/boot/boot.readme
-%endif
-install -d -m 700 $RPM_BUILD_ROOT/var/log/YaST2
-touch $RPM_BUILD_ROOT/var/log/pbl.log
-%perl_process_packlist
-#install only needed files for bootloader for specific architecture
-%ifarch %ix86 x86_64
-rm -f $RPM_BUILD_ROOT/%{perl_vendorlib}/Bootloader/Core/{ZIPL*,PowerLILO*}
-rm -f $RPM_BUILD_ROOT/%{_mandir}/man?/{*ZIPL*,*PowerLILO*}
-%if 0%{?suse_version} == 0 || 0%{?suse_version} <= 1130
-sed -i '/ZIPL/D;/PowerLILO/D;' $RPM_BUILD_ROOT/%{perl_vendorarch}/auto/Bootloader/.packlist
-%endif
-%endif
-%ifarch ppc ppc64
-rm -f $RPM_BUILD_ROOT/%{perl_vendorlib}/Bootloader/Core/{ZIPL*,LILO*,ELILO*,GRUB.*}
-%if 0%{?suse_version} == 0 || 0%{?suse_version} <= 1130
-sed -i '/ZIPL/D;/ELILO/D;/\/LILO/D;/GRUB/D;' $RPM_BUILD_ROOT/%{perl_vendorarch}/auto/Bootloader/.packlist
-%endif
-%endif
-%ifarch s390 s390x
-rm -f $RPM_BUILD_ROOT/%{perl_vendorlib}/Bootloader/Core/{*LILO*,GRUB.*,GRUB2EFI.*}
-%if 0%{?suse_version} == 0 || 0%{?suse_version} <= 1130
-sed -i '/LILO/D;/GRUB/D;' $RPM_BUILD_ROOT/%{perl_vendorarch}/auto/Bootloader/.packlist
-%endif
-%endif
-%ifarch ia32 ia64
-rm -f $RPM_BUILD_ROOT/%{perl_vendorlib}/Bootloader/Core/{LILO*,GRUB*,ZIPL*,PowerLILO*}
-%if 0%{?suse_version} == 0 || 0%{?suse_version} <= 1130
-sed -i '/ZIPL/D;/PowerLILO/D;/\/LILO/D;/GRUB/D;' $RPM_BUILD_ROOT/%{perl_vendorarch}/auto/Bootloader/.packlist
-%endif
-%endif
-# move logrotate files from /etc/logrotate.d to /usr/etc/logrotate.d
-%if 0%{?suse_version} > 1500
-mkdir -p %{buildroot}%{_distconfdir}/logrotate.d
-mv %{buildroot}/%{_sysconfdir}/logrotate.d/pbl %{buildroot}%{_distconfdir}/logrotate.d
-%endif
+make install DESTDIR=%{buildroot} SBINDIR=%{sbindir} ETCDIR=%{_distconfdir}
+mkdir -p %{buildroot}/var/log
+touch %{buildroot}/var/log/pbl.log
%post
echo -n >>/var/log/pbl.log
@@ -112,26 +59,16 @@
%files
%defattr(-, root, root)
%license COPYING
-%doc %{_mandir}/man?/*
+%doc %{_mandir}/man8/*
%doc boot.readme
-%{perl_vendorarch}/auto/Bootloader
-%{perl_vendorlib}/Bootloader
-%if 0%{?suse_version} == 0 || 0%{?suse_version} <= 1130
-/var/adm/perl-modules/perl-Bootloader
-%endif
%{sbindir}/update-bootloader
%{sbindir}/pbl
/usr/lib/bootloader
-%if 0%{?suse_version} > 1500
-%{_distconfdir}/logrotate.d/pbl
+%if "%{_distconfdir}" == "/etc"
+%config(noreplace) %{_distconfdir}/logrotate.d/pbl
%else
-%config(noreplace) %{_sysconfdir}/logrotate.d/pbl
+%{_distconfdir}/logrotate.d/pbl
%endif
-%dir %attr(0700,root,root) /var/log/YaST2
%ghost %attr(0600,root,root) /var/log/pbl.log
-%files YAML
-%defattr(-, root, root)
-%{_sbindir}/pbl-yaml
-
%changelog
++++++ perl-Bootloader-0.941.tar.xz -> perl-Bootloader-1.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/perl-Bootloader-0.941/Makefile new/perl-Bootloader-1.0/Makefile
--- old/perl-Bootloader-0.941/Makefile 2023-01-12 18:30:54.000000000 +0100
+++ new/perl-Bootloader-1.0/Makefile 2023-04-24 19:38:14.000000000 +0200
@@ -4,6 +4,9 @@
BRANCH := $(shell git branch | perl -ne 'print $$_ if s/^\*\s*//')
PREFIX := perl-Bootloader-$(VERSION)
+SBINDIR ?= /usr/sbin
+ETCDIR ?= /usr/etc
+
PM_FILES = $(shell find src -name '*.pm')
.PHONY: export clean archive test install check
@@ -22,21 +25,6 @@
@cd .check ; find -name *.pm -exec perl -I. -c '{}' ';'
install: check
- @rm -rf .install
- @mkdir -p .install/lib
- @cp -a src .install/lib/Bootloader
- @rm -f `find .install/lib/Bootloader -name '*~'`
- @perl -pi -e 's/0\.000/$(VERSION)/ if /VERSION = /' .install/lib/Bootloader/Library.pm
- @cd .install ; \
- touch Makefile.PL ; \
- perl -Ilib -MExtUtils::MakeMaker -e 'WriteMakefile (NAME => "Bootloader", VERSION_FROM => "lib/Bootloader/Library.pm" )' ; \
- make install_vendor
- @mkdir -p $(DESTDIR)/sbin $(DESTDIR)/usr/sbin
- @install -m 755 pbl-yaml $(DESTDIR)/usr/sbin
- @install -d -m 755 $(DESTDIR)/usr/lib/bootloader
- @install -m 755 bootloader_entry $(DESTDIR)/usr/lib/bootloader/bootloader_entry.old
- @install -m 755 update-bootloader $(DESTDIR)/usr/lib/bootloader/update-bootloader.old
-
@install -d -m 755 $(DESTDIR)/usr/lib/bootloader/grub2
@install -m 755 grub2/install $(DESTDIR)/usr/lib/bootloader/grub2
@install -m 755 grub2/config $(DESTDIR)/usr/lib/bootloader/grub2
@@ -60,14 +48,13 @@
@install -m 755 systemd-boot/add-kernel $(DESTDIR)/usr/lib/bootloader/systemd-boot
@install -m 755 systemd-boot/remove-kernel $(DESTDIR)/usr/lib/bootloader/systemd-boot
- @install -m 755 pbl $(DESTDIR)/sbin/pbl
- @perl -pi -e 's/0\.0/$(VERSION)/ if /VERSION = /' $(DESTDIR)/sbin/pbl
- @ln -snf pbl $(DESTDIR)/sbin/update-bootloader
- @ln -snf ../../../sbin/pbl $(DESTDIR)/usr/lib/bootloader/bootloader_entry
- @install -d -m 755 $(DESTDIR)/boot
- @install -m 644 boot.readme $(DESTDIR)/boot/
- @install -d -m 755 $(DESTDIR)/usr/share/man/man8/
- @install -D -m 644 pbl.logrotate $(DESTDIR)/etc/logrotate.d/pbl
+ @install -D -m 755 pbl $(DESTDIR)$(SBINDIR)/pbl
+ @perl -pi -e 's/0\.0/$(VERSION)/ if /VERSION = /' $(DESTDIR)$(SBINDIR)/pbl
+ @ln -snf pbl $(DESTDIR)$(SBINDIR)/update-bootloader
+ @ln -rsnf $(DESTDIR)$(SBINDIR)/pbl $(DESTDIR)/usr/lib/bootloader/bootloader_entry
+ @install -D -m 644 boot.readme $(DESTDIR)/usr/share/doc/packages/perl-Bootloader/boot.readme
+ @install -d -m 755 $(DESTDIR)/usr/share/man/man8
+ @install -D -m 644 pbl.logrotate $(DESTDIR)$(ETCDIR)/logrotate.d/pbl
@pod2man update-bootloader >$(DESTDIR)/usr/share/man/man8/update-bootloader.8
@chmod 644 $(DESTDIR)/usr/share/man/man8/update-bootloader.8
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/perl-Bootloader-0.941/VERSION new/perl-Bootloader-1.0/VERSION
--- old/perl-Bootloader-0.941/VERSION 2023-01-12 18:30:54.000000000 +0100
+++ new/perl-Bootloader-1.0/VERSION 2023-04-24 19:38:14.000000000 +0200
@@ -1 +1 @@
-0.941
+1.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/perl-Bootloader-0.941/changelog new/perl-Bootloader-1.0/changelog
--- old/perl-Bootloader-0.941/changelog 2023-01-12 18:30:54.000000000 +0100
+++ new/perl-Bootloader-1.0/changelog 2023-04-24 19:38:14.000000000 +0200
@@ -1,3 +1,15 @@
+2023-04-24: 1.0
+ - merge gh#openSUSE/perl-bootloader#143
+ - adjust Makefile for usrmerge and legacy package split
+ - move obs spec file to git repo
+ - split off old perl code to perl-Bootloader-legacy package
+ - remove legacy part completely
+
+2023-04-24: 0.942
+ - merge gh#openSUSE/perl-bootloader#142
+ - use fw_platform_size to distinguish between 32 bit and 64 bit
+ UEFI platforms (bsc#1208003)
+
2023-01-12: 0.941
- merge gh#openSUSE/perl-bootloader#141
- systemd-boot: easier initial setup
@@ -13,6 +25,7 @@
2022-04-07: 0.938
- merge gh#openSUSE/perl-bootloader#138
- grub2/install: reset error code when passing through recover code
+ (bsc#1198197)
2022-01-13: 0.937
- merge gh#openSUSE/perl-bootloader#137
@@ -74,6 +87,7 @@
2019-06-06: 0.924
- merge gh#openSUSE/perl-bootloader#121
- Fix secureboot on aarch64 (boo#1136601)
+ - [RFC] Fix secureboot on aarch64 (boo#1136601)
2018-09-27: 0.923
- merge gh#openSUSE/perl-bootloader#120
@@ -150,6 +164,7 @@
- merge gh#openSUSE/perl-bootloader#93
- grub2-efi: Make 32bit arm be a wildcard match
- grub2-efi: Allow fallback to removable booting
+ - Arm efi
2016-02-08: 0.906
- merge gh#openSUSE/perl-bootloader#91
@@ -178,7 +193,7 @@
- Add initial implementation of uboot/config script
2015-11-25: 0.900
- - merge gh#openSUSE/perl-bootloader#82
+ - Test 10
2015-10-06: 0.844
- merge gh#openSUSE/perl-bootloader#79
@@ -213,6 +228,7 @@
- make grub_installdevice parsing more robust
- remove no longer needed quotes (bsc#940486)
- update git2log script to latest version
+ - Bsc 940486
2015-07-20: 0.839
- merge gh#openSUSE/perl-bootloader#73
@@ -242,6 +258,7 @@
2015-04-30: 0.833
- merge gh#openSUSE/perl-bootloader#67
- Escape/unescape special characters on write/read (bsc#831791)
+ - git log
2015-04-22: 0.832
- merge gh#openSUSE/perl-bootloader#66
@@ -255,6 +272,7 @@
- started pbl-yaml testsuite
- added test cases for various utf8/non-utf8/really broken config
files
+ - Bnc 899921
2015-03-26: 0.831
- merge gh#openSUSE/perl-bootloader#65
@@ -264,6 +282,7 @@
2015-02-11: 0.830
- merge gh#openSUSE/perl-bootloader#63
- Initialize GRUB_USE_LINUXEFI from target setting
+ - Initialize GRUB_USE_LINUXEFI from secure_boot setting
2015-01-27: 0.829
- merge gh#openSUSE/perl-bootloader#61
@@ -289,6 +308,7 @@
- add check to auto turn on GRUB_ENABLE_CRYPTODISK if /boot/grub2
is on an encrypted partition
- fix spelling
+ - Crypto
- merge gh#openSUSE/perl-bootloader#45
- join byid and kern maps instead of picking one (bnc#896665)
- ensure that device nap hash values (hd0, hd1...) are unique
@@ -297,6 +317,7 @@
- merge gh#openSUSE/perl-bootloader#46
- write only files we have data for (bsc#898429)
- release 0.823
+ - Bsc 898429
- merge gh#openSUSE/perl-bootloader#48
- fix GRUB_TERMINAL check (bsc#898609)
- added comment explaining things
@@ -312,6 +333,7 @@
- merge gh#openSUSE/perl-bootloader#41
- fix encoding when reading grub2.conf (bnc#890362)
- rlease
+ - Fix utf8
- remove dependency on e2fsprogs (bnc#890795)
- release 0.820
@@ -331,16 +353,17 @@
- adjust spec
- update version and changes
- basic description of logging function
+ - Pbl log
- merge gh#openSUSE/perl-bootloader#30
- enable btrfs snapshot booting on ppc
- merge gh#openSUSE/perl-bootloader#33
- fix regexp to not backtrack endlessly if parentheses don't match
(bnc#875369)
- - update version and changes
+ - Bnc 875369 b
- merge gh#openSUSE/perl-bootloader#34
- fix update
- - release
- have static list of config files also for GRUB2EFI.
+ - Fix update
- merge gh#openSUSE/perl-bootloader#37
- enable btrfs snapshot booting on all architectures
- merge gh#openSUSE/perl-bootloader#38
@@ -358,7 +381,6 @@
- up version
- merge gh#openSUSE/perl-bootloader#28
- enable SUSE_BTRFS_SNAPSHOT_BOOTING only on i386-pc
- - up version
- merge branch device_map
- also update device.map
- update version and changes
@@ -404,7 +426,6 @@
- extend syntax to handle variable length argument lists
- fix typo
- added --version option
- - fix typo
- introduce perl-Bootloader-YAML subpackage
- new version: 0.800
@@ -429,6 +450,7 @@
- fix grub2-set-default error during installation
- better way to know kerenl device of physical drive
- update-bootloader refresh cleanup and introduce reinit
+ - Misc bug fixing and cleanup for 13.1 factory.
- require coreutils for %post
- enable grub2 installation on PowerPC
- new version
@@ -452,6 +474,7 @@
- use explicit target arch for GRUB2 and remove grub2-efi calls
- merge gh#openSUSE/perl-bootloader#12
- handle add|remove in update-bootloader for grub2
+ - handle add and remove in update-bootloader for grub2
- some cleanup
- 0.706
@@ -494,20 +517,24 @@
- export section and write as global option
- manage GRUB_DISABLE_OS_PROBER settings
- use grub device name in /etc/default/grub_installdevice
+ - Assorted fixes of grub2 on bugzilla
- 0.701
2012-08-23: 0.700
- added install target
- rewrite pbl's logging functions
- merge branch master
+ - merge gh#openSUSE/perl-bootloader#9
- fix missing newline in the config
- 0.6.8
+ - Conflicts: version
- new version
2012-07-13: 0.6.7
- merge gh#openSUSE/perl-bootloader#8
- Fix new menuentry format introduced by 2.0
- Support failsafe kernel parameters
+ - Fix title in grub2 2.0 support failsafe mode
- 0.6.7
2012-07-06: 0.6.6
@@ -516,11 +543,13 @@
- Replace background with theme
- Support editing GRUB_DISTRIBUTOR
- Re-enable to create device.map from BootStorage
+ - Patches to fix misc & severe issue (bnc#769949)
- 0.6.6
2012-06-29: 0.6.5
- merge gh#openSUSE/perl-bootloader#5
- Fix grub.cfg missing error
+ - Fix bnc#796350 (critical)
- make dependency on Pod::Usage optional (bnc#760464)
- 0.6.5
@@ -528,6 +557,7 @@
- merge gh#openSUSE/perl-bootloader#2
- grub2: gfxmode and gfxbackground support
- grub2efi: console options support
+ - gfxterm and console support
- 0.6.4
2012-04-27: 0.6.3
@@ -576,6 +606,7 @@
2011-09-02: 0.5.19
- merge gh#openSUSE/perl-bootloader#1
+ - merge branch SLE11-SP2
- port opensuse 11.1 logging changes to SLE11
- RT kernel special support (bnc#450153)
- version bump 0.4.82
@@ -584,7 +615,6 @@
- version bump 0.4.83
- filter out initrd with empty value (bnc#465148)
- backport fix for #464098
- - version bump
- backport fix for multiline entries (bnc#466250)
- version bump 0.4.85
- fix multipath hangs (bnc#468792)
@@ -634,12 +664,9 @@
- add accidently removed line
- fix problems with long names on ppc (bnc#588612)
- release new version
- - release new version
- add fix for restricted section names also for ia64 (bnc#588609)
- - release
- exclude DASD dump sections from menu (bnc#582705), dump version
- fix hung during update os (bnc#586303)
- - version bump
- increase log priority for translating unix path to grub path
- avoid warning if path is not generated (bnc#590459)
- chagnes
@@ -654,7 +681,6 @@
- release 0.4.89.14
- extend partition detection by ext_range, so also mdraid which is
partition is detected (bnc#598057)
- - release
- fix adding failsafe options to menu (never add it as first
otherwise it is used as default boot) (bnc#600847)
- release package
@@ -667,7 +693,6 @@
- DM_NAME could contain also partition number in some case
(bnc#590637)
- fix malforming xen append (bnc#657911)
- - version bump
- backport fix for removing kernel with symlink in path
(bnc#680775)
- increased version, updated changelog
@@ -692,11 +717,18 @@
- add snwint fixes which was not in git
- adapt package target for git
- fix small issues in packaging
+ - Conflicts:
+ perl-Bootloader-testsuite/tests/test_interface/Makefile
+ perl-Bootloader-testsuite/tests/test_interface/core-test.pl
+ perl-Bootloader-testsuite/tests/test_interface/grub1-test.pl
+ perl-Bootloader.changes perl-Bootloader.spec.in src/Core.pm
+ src/Core/ELILO.pm src/Core/GRUB.pm src/Core/ZIPL.pm src/Tools.pm
+ update-bootloader version
- remove unneeded script ( SLE only )
- fix tests after merge
- release test package
- fix packaging
- - fix packaging
+ - Merge sp2 ( tested by opensuse community )
- use UnixDev2GrubDev() from sle11-sp2
2011-05-13: 0.5.17
@@ -906,7 +938,6 @@
test case to test suite.
- improve logging of detection DM RAID1
- fix test suite
- - version bump
- version bump (forget up version :)
2008-11-06: 0.4.77
@@ -930,7 +961,6 @@
- ignore keys image, xen and initrd in chainloader section
(bnc#441463)
- improve logging if more then once add same image
- - improve logging
- Version bump and allow skip during mounted boot detection.
2008-10-23: 0.4.76
@@ -1437,7 +1467,6 @@
2007-04-02: 0.4.14
- Corrected mechanism for adapting default value in Tools.pm
- fixed typo
- - Corrected mechanism for removal of sections in Tools.pm
- Corrected mechanism for removal of sections in Tools.pm - part 2
- Added function GrubDev2MountPoint() to GRUB.pm to be able to
retrieve mountpoints of grub devices
@@ -1657,8 +1686,6 @@
- simplify code
- map kernel_append params to xen_append params (#188614) when
having a serial console
- - map kernel_append params to xen_append params (#188614) when
- having a serial console
- bump version to 0.2.25
2006-05-22: 0.2.24
@@ -1677,11 +1704,6 @@
- omit bogus warning (#165158)
- fix xen section counting when adding (#161559)
- add a second submit path after we branched inhouse
- - fix xen section counting when adding (#161559)
- - omit bogus warning (#165158)
- - move check for bool type to save code area (#175228)
- - do syntax checking for global "default" parameter. Has to be an
- integer (#174829)
- bump version to 0.2.23
2006-05-10: 0.2.22
@@ -1693,7 +1715,6 @@
2006-05-09: 0.2.21
- follow symlinks for dev-by-id (#170588)
- cleanups
- - follow symlinks for dev-by-id (#170588)
- added agruen changes from autobuild to svn
- bump version
@@ -1713,7 +1734,6 @@
- changed update-bootloader semantic according to #164427
2006-04-03: 0.2.17
- - extended interface to fix #
- extended interface to fix #161755
- bump version to 0.2.17
@@ -1724,8 +1744,6 @@
2006-03-21: 0.2.15
- use print-product.ycp again, fallback to /etc/SuSE-release if
that doesn't work
- - use print-product.ycp again, fallback to /etc/SuSE-release if
- that doesn't work
- add a fallback value of SUSE Code 10 instead of error in function
GetProduct
- cut off spaces as well, thanks ray
@@ -1741,8 +1759,6 @@
- moved unification of section names in FixSectionName to Core.pm
- altered loader specific code to use that (needed by #158274)
- some more fixes while testing last commit
- - moved unification of section names in FixSectionName to Core.pm
- - altered loader specific code to use that (needed by #158274)
- rearranged update-bootloader so that bootloader entry translation
works again (#158274)
- bump version to 0.2.14
@@ -1753,7 +1769,6 @@
the image name.
- change log file name for _all_ archs to y2log_bootloader (#145106)
- Add some FIXMEs
- - change log file name for _all_ archs to y2log_bootloader (#145106)
- bump version to 0.2.13
2006-02-23: 0.2.12
@@ -1772,7 +1787,6 @@
directly, YaST is broken here
- fix for broken Product.ycp
- code cleanup
- - code cleanup
- workaround for broken Product.ycp (Bug #148625)
- implement new requirements/word split in FixSectionName
- bump version to 0.2.11
@@ -1803,7 +1817,6 @@
2006-02-06: 0.2.8
- extended author list
- added changes from pth for (fate#2154)
- - added changes from pth for (fate#2154)
- avoid irritating warnings for uninitialized(undef) variables
- added changes from mls(a)suse.de to svn: converted neededforbuild
to BuildRequires
@@ -1840,9 +1853,6 @@
- defaultboot section must not be empty (#144321)
- avoid colliding definition of default label in 'menu' and
'defaultboot'
- - defaultboot section must not be empty (#144321)
- - avoid colliding definition of default label in 'menu' and
- 'defaultboot'
- add nice paranthesis to fix blocking yast2 crash (#143746)
- bump version to 0.2.6
@@ -1871,8 +1881,6 @@
- consider BUILD_DIST settings
- fixed getting MD array info via mdadm (#137987)
- add needed label text
- - add needed label text
- - fixed getting MD array info via mdadm (#137987)
- bump version to 0.2.2
2005-11-18: 0.2.1
@@ -1890,3 +1898,7 @@
- reenable ppc bootloader config
- bump version to 0.2.1
+2005-09-28: 0.2
+ - Initial commit of perl-Bootloader package as found in abuild
+ tree. Should be fairly current.
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/perl-Bootloader-0.941/grub2-efi/install new/perl-Bootloader-1.0/grub2-efi/install
--- old/perl-Bootloader-0.941/grub2-efi/install 2023-01-12 18:30:54.000000000 +0100
+++ new/perl-Bootloader-1.0/grub2-efi/install 2023-04-24 19:38:14.000000000 +0200
@@ -14,9 +14,18 @@
exit 1
fi
+fw_platform_size=$(cat /sys/firmware/efi/fw_platform_size 2>/dev/null)
+
case "$target" in
i?86 ) target=i386 ;;
- x86_64 | amd64 ) target=x86_64 ;;
+ x86_64 | amd64 )
+ target=x86_64
+ if [ "$fw_platform_size" = 32 ] ; then
+ target=i386
+ # no 32 bit shim
+ SYS__BOOTLOADER__SECURE_BOOT=no
+ fi
+ ;;
aarch64 ) target=arm64 ;;
arm* ) target=arm ;;
esac
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/perl-Bootloader-0.941/obs/perl-Bootloader.spec new/perl-Bootloader-1.0/obs/perl-Bootloader.spec
--- old/perl-Bootloader-0.941/obs/perl-Bootloader.spec 1970-01-01 01:00:00.000000000 +0100
+++ new/perl-Bootloader-1.0/obs/perl-Bootloader.spec 2023-04-24 19:38:14.000000000 +0200
@@ -0,0 +1,74 @@
+#
+# spec file for package perl-Bootloader
+#
+# Copyright (c) 2023 SUSE LLC
+#
+# All modifications and additions to the file contributed by third parties
+# remain the property of their copyright owners, unless otherwise agreed
+# upon. The license for this file, and modifications and additions to the
+# file, is the same license as for the pristine package itself (unless the
+# license for the pristine package is not an Open Source License, in which
+# case the license is the MIT License). An "Open Source License" is a
+# license that conforms to the Open Source Definition (Version 1.9)
+# published by the Open Source Initiative.
+
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
+#
+
+
+%if 0%{?usrmerged}
+%define sbindir %{_sbindir}
+%else
+%define sbindir /sbin
+%endif
+
+%{!?_distconfdir:%global _distconfdir /etc}
+
+Name: perl-Bootloader
+Version: 1.0
+Release: 0
+Requires: coreutils
+Requires: perl-base = %{perl_version}
+Provides: perl-Bootloader-YAML = %{version}
+Obsoletes: perl-Bootloader-YAML < %{version}
+Summary: Tool for boot loader configuration
+License: GPL-2.0-or-later
+Group: System/Boot
+URL: https://github.com/openSUSE/perl-bootloader
+Source: %{name}-%{version}.tar.xz
+BuildRoot: %{_tmppath}/%{name}-%{version}-build
+BuildRequires: perl
+#!BuildIgnore: mdadm e2fsprogs limal-bootloader
+
+%description
+Shell script wrapper for configuring various boot loaders.
+
+%prep
+%setup -q
+
+%build
+
+%install
+make install DESTDIR=%{buildroot} SBINDIR=%{sbindir} ETCDIR=%{_distconfdir}
+touch %{buildroot}/var/log/pbl.log
+
+%post
+echo -n >>/var/log/pbl.log
+chmod 600 /var/log/pbl.log
+
+%files
+%defattr(-, root, root)
+%license COPYING
+%doc %{_mandir}/man8/*
+%doc boot.readme
+%{sbindir}/update-bootloader
+%{sbindir}/pbl
+/usr/lib/bootloader
+%if "%{_distconfdir}" == "/etc"
+%config(noreplace) %{_distconfdir}/logrotate.d/pbl
+%else
+%{_distconfdir}/logrotate.d/pbl
+%endif
+%ghost %attr(0600,root,root) /var/log/pbl.log
+
+%changelog
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package boost-defaults for openSUSE:Factory checked in at 2023-04-29 17:27:32
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/boost-defaults (Old)
and /work/SRC/openSUSE:Factory/.boost-defaults.new.1533 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "boost-defaults"
Sat Apr 29 17:27:32 2023 rev:14 rq:1081177 version:1.82.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/boost-defaults/boost-defaults.changes 2023-01-31 16:25:02.723716272 +0100
+++ /work/SRC/openSUSE:Factory/.boost-defaults.new.1533/boost-defaults.changes 2023-04-29 17:27:33.554396130 +0200
@@ -1,0 +2,5 @@
+Thu Apr 20 10:04:03 CEST 2023 - aschnell(a)suse.com
+
+- Update for Boost 1.82.0
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ boost-defaults.spec ++++++
--- /var/tmp/diff_new_pack.rKiy5m/_old 2023-04-29 17:27:34.070398290 +0200
+++ /var/tmp/diff_new_pack.rKiy5m/_new 2023-04-29 17:27:34.078398324 +0200
@@ -1,7 +1,7 @@
#
# spec file for package boost-defaults
#
-# Copyright (c) 2022 SUSE LLC
+# Copyright (c) 2023 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -16,9 +16,9 @@
#
-%define boost_version 1_81_0
+%define boost_version 1_82_0
Name: boost-defaults
-Version: 1.81.0
+Version: 1.82.0
Release: 0
Summary: Default Boost C++ Libraries
License: MIT
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package boost for openSUSE:Factory checked in at 2023-04-29 17:27:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/boost (Old)
and /work/SRC/openSUSE:Factory/.boost.new.1533 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "boost"
Sat Apr 29 17:27:26 2023 rev:161 rq:1081176 version:1.82.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/boost/boost.changes 2023-03-11 18:23:02.602568973 +0100
+++ /work/SRC/openSUSE:Factory/.boost.new.1533/boost.changes 2023-04-29 17:27:28.386374492 +0200
@@ -1,0 +2,9 @@
+Thu Apr 20 10:04:18 CEST 2023 - aschnell(a)suse.com
+
+- update to 1.82.0
+ * new libraries:
+ + MySQL - MySQL Header-only Library.
+ * for details on all changes see,
+ https://www.boost.org/users/history/version_1_82_0.html
+
+-------------------------------------------------------------------
Old:
----
boost_1_81_0.tar.bz2
New:
----
boost_1_82_0.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ boost.spec ++++++
--- /var/tmp/diff_new_pack.B7bWrV/_old 2023-04-29 17:27:32.462391558 +0200
+++ /var/tmp/diff_new_pack.B7bWrV/_new 2023-04-29 17:27:32.470391591 +0200
@@ -19,9 +19,9 @@
#
%global flavor @BUILD_FLAVOR@%{nil}
-%define ver 1.81.0
-%define _ver 1_81_0
-%define package_version 1_81_0
+%define ver 1.82.0
+%define _ver 1_82_0
+%define package_version 1_82_0
%define file_version %_ver
%define lib_appendix %_ver
%define docs_version 1.56.0
@@ -235,9 +235,9 @@
%endif
Name: %{base_name}
-Version: 1.81.0
+Version: 1.82.0
Release: 0
-%define library_version 1_81_0
+%define library_version 1_82_0
Summary: Boost C++ Libraries
License: BSL-1.0
Group: Development/Libraries/C and C++
++++++ baselibs.conf ++++++
--- /var/tmp/diff_new_pack.B7bWrV/_old 2023-04-29 17:27:32.874393283 +0200
+++ /var/tmp/diff_new_pack.B7bWrV/_new 2023-04-29 17:27:32.902393400 +0200
@@ -1,28 +1,28 @@
-libboost_atomic1_81_0
-libboost_container1_81_0
-libboost_context1_81_0
-libboost_coroutine1_81_0
-libboost_date_time1_81_0
-libboost_fiber1_81_0
-libboost_filesystem1_81_0
-libboost_graph1_81_0
-libboost_graph_parallel1_81_0
-libboost_iostreams1_81_0
-libboost_locale1_81_0
-libboost_math1_81_0
-libboost_mpi1_81_0
-libboost_nowide1_81_0
-libboost_test1_81_0
-libboost_program_options1_81_0
-libboost_python-py3-1_81_0
-libboost_random1_81_0
-libboost_serialization1_81_0
-libboost_stacktrace1_81_0
-libboost_system1_81_0
-libboost_thread1_81_0
-libboost_type_erasure1_81_0
-libboost_wave1_81_0
-libboost_url1_81_0
-libboost_regex1_81_0
-libboost_json1_81_0
+libboost_atomic1_82_0
+libboost_container1_82_0
+libboost_context1_82_0
+libboost_coroutine1_82_0
+libboost_date_time1_82_0
+libboost_fiber1_82_0
+libboost_filesystem1_82_0
+libboost_graph1_82_0
+libboost_graph_parallel1_82_0
+libboost_iostreams1_82_0
+libboost_locale1_82_0
+libboost_math1_82_0
+libboost_mpi1_82_0
+libboost_nowide1_82_0
+libboost_test1_82_0
+libboost_program_options1_82_0
+libboost_python-py3-1_82_0
+libboost_random1_82_0
+libboost_serialization1_82_0
+libboost_stacktrace1_82_0
+libboost_system1_82_0
+libboost_thread1_82_0
+libboost_type_erasure1_82_0
+libboost_wave1_82_0
+libboost_url1_82_0
+libboost_regex1_82_0
+libboost_json1_82_0
++++++ boost_1_81_0.tar.bz2 -> boost_1_82_0.tar.bz2 ++++++
/work/SRC/openSUSE:Factory/boost/boost_1_81_0.tar.bz2 /work/SRC/openSUSE:Factory/.boost.new.1533/boost_1_82_0.tar.bz2 differ: char 11, line 1
1
0