openSUSE Commits
Threads by month
- ----- 2024 -----
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
August 2024
- 2 participants
- 1399 discussions
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package aws-crt-cpp for openSUSE:Factory checked in at 2024-08-09 16:14:45
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/aws-crt-cpp (Old)
and /work/SRC/openSUSE:Factory/.aws-crt-cpp.new.7232 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "aws-crt-cpp"
Fri Aug 9 16:14:45 2024 rev:13 rq:1192576 version:0.27.5
Changes:
--------
--- /work/SRC/openSUSE:Factory/aws-crt-cpp/aws-crt-cpp.changes 2024-07-22 17:16:13.621020740 +0200
+++ /work/SRC/openSUSE:Factory/.aws-crt-cpp.new.7232/aws-crt-cpp.changes 2024-08-09 16:15:14.880394163 +0200
@@ -1,0 +2,6 @@
+Wed Aug 7 13:35:06 UTC 2024 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- Update to version 0.27.5
+ * Update MacOS to arm64 by @waahm7 in (#641)
+
+-------------------------------------------------------------------
Old:
----
v0.27.4.tar.gz
New:
----
v0.27.5.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ aws-crt-cpp.spec ++++++
--- /var/tmp/diff_new_pack.D9m7u7/_old 2024-08-09 16:15:15.520420878 +0200
+++ /var/tmp/diff_new_pack.D9m7u7/_new 2024-08-09 16:15:15.520420878 +0200
@@ -20,7 +20,7 @@
%define library_soversion 1
Name: aws-crt-cpp
-Version: 0.27.4
+Version: 0.27.5
Release: 0
Summary: AWS C++ wrapper for AWS SDK C libraries
License: Apache-2.0
++++++ v0.27.4.tar.gz -> v0.27.5.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-crt-cpp-0.27.4/.github/workflows/ci.yml new/aws-crt-cpp-0.27.5/.github/workflows/ci.yml
--- old/aws-crt-cpp-0.27.4/.github/workflows/ci.yml 2024-07-15 17:47:03.000000000 +0200
+++ new/aws-crt-cpp-0.27.5/.github/workflows/ci.yml 2024-08-04 18:57:26.000000000 +0200
@@ -220,8 +220,8 @@
python -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder.pyz')"
python builder.pyz build -p ${{ env.PACKAGE_NAME }} --cmake-extra=-DUSE_CPU_EXTENSIONS=OFF
- osx:
- runs-on: macos-13 # latest
+ macos:
+ runs-on: macos-14 # latest
steps:
- name: Build ${{ env.PACKAGE_NAME }} + consumers
run: |
@@ -229,24 +229,20 @@
chmod a+x builder
./builder build -p ${{ env.PACKAGE_NAME }} --spec=downstream
- # cross-compile for Apple silicon
- # it would be better to run tests natively on one of these machines,
- # but we don't have access to one in the cloud, so for now just cross-compile
- osx-arm64-cross-compile:
- runs-on: macos-13 # latest
+ macos-x64:
+ runs-on: macos-14-large # latest
steps:
- name: Build ${{ env.PACKAGE_NAME }} + consumers
run: |
python3 -c "from urllib.request import urlretrieve; urlretrieve('${{ env.BUILDER_HOST }}/${{ env.BUILDER_SOURCE }}/${{ env.BUILDER_VERSION }}/builder.pyz?run=${{ env.RUN }}', 'builder')"
chmod a+x builder
- ./builder build -p ${{ env.PACKAGE_NAME }} --cmake-extra=-DCMAKE_OSX_ARCHITECTURES=arm64 run_tests=false
- test `lipo aws-crt-cpp/build/install/lib/libaws-crt-cpp.a -archs` = "arm64"
+ ./builder build -p ${{ env.PACKAGE_NAME }} --spec=downstream
# cross-compile for iOS
# Skip signing the code on iOS.
# Otherwise it will not compile with error that Bundle identifier is missing.
ios-cross-compile:
- runs-on: macos-13 # latest
+ runs-on: macos-14 # latest
steps:
- name: Build ${{ env.PACKAGE_NAME }} + consumers
run: |
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-crt-cpp-0.27.4/VERSION new/aws-crt-cpp-0.27.5/VERSION
--- old/aws-crt-cpp-0.27.4/VERSION 2024-07-15 17:47:03.000000000 +0200
+++ new/aws-crt-cpp-0.27.5/VERSION 2024-08-04 18:57:26.000000000 +0200
@@ -1 +1 @@
-0.27.4
+0.27.5
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package aws-c-common for openSUSE:Factory checked in at 2024-08-09 16:14:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/aws-c-common (Old)
and /work/SRC/openSUSE:Factory/.aws-c-common.new.7232 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "aws-c-common"
Fri Aug 9 16:14:44 2024 rev:11 rq:1192575 version:0.9.25
Changes:
--------
--- /work/SRC/openSUSE:Factory/aws-c-common/aws-c-common.changes 2024-07-31 13:31:26.221084295 +0200
+++ /work/SRC/openSUSE:Factory/.aws-c-common.new.7232/aws-c-common.changes 2024-08-09 16:15:13.272327043 +0200
@@ -1,0 +2,12 @@
+Wed Aug 7 13:29:24 UTC 2024 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- Update to version 0.9.25
+ * Run proofs with CBMC 6.1.0 by @graebm in (#1140)
+ * Avoiding allocating a handle in the Windows RNG
+ by @teo-tsirpanis in (#1046)
+ * Add no copy api variants to json interface
+ by @DmitriyMusatkin in (#1138)
+ * Allocate error space for aws-crt-swift
+ by @xiazhvera in (#1129)
+
+-------------------------------------------------------------------
Old:
----
v0.9.24.tar.gz
New:
----
v0.9.25.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ aws-c-common.spec ++++++
--- /var/tmp/diff_new_pack.2igJmy/_old 2024-08-09 16:15:14.380373293 +0200
+++ /var/tmp/diff_new_pack.2igJmy/_new 2024-08-09 16:15:14.384373460 +0200
@@ -19,7 +19,7 @@
%define library_version 1.0.0
%define library_soversion 1
Name: aws-c-common
-Version: 0.9.24
+Version: 0.9.25
Release: 0
Summary: Core C99 package for AWS SDK for C
License: Apache-2.0
++++++ v0.9.24.tar.gz -> v0.9.25.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-common-0.9.24/.github/workflows/proof_ci_resources/config.yaml new/aws-c-common-0.9.25/.github/workflows/proof_ci_resources/config.yaml
--- old/aws-c-common-0.9.24/.github/workflows/proof_ci_resources/config.yaml 2024-07-24 19:17:15.000000000 +0200
+++ new/aws-c-common-0.9.25/.github/workflows/proof_ci_resources/config.yaml 2024-08-01 20:44:38.000000000 +0200
@@ -1,7 +1,7 @@
# Use exact versions (instead of "latest") so we're not broken by surprise upgrades.
cadical-tag: "rel-2.0.0" # tag of latest release: https://github.com/arminbiere/cadical/releases
-cbmc-version: "6.0.0" # semver of latest release: https://github.com/diffblue/cbmc/releases
-cbmc-viewer-version: "3.8" # semver of latest release: https://github.com/model-checking/cbmc-viewer/releases
+cbmc-version: "6.1.0" # semver of latest release: https://github.com/diffblue/cbmc/releases
+cbmc-viewer-version: "3.9" # semver of latest release: https://github.com/model-checking/cbmc-viewer/releases
kissat-tag: "rel-3.1.1" # tag of latest release: https://github.com/arminbiere/kissat/releases
litani-version: "1.29.0" # semver of latest release: https://github.com/awslabs/aws-build-accumulator/releases
proofs-dir: verification/cbmc/proofs
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-common-0.9.24/README.md new/aws-c-common-0.9.25/README.md
--- old/aws-c-common-0.9.24/README.md 2024-07-24 19:17:15.000000000 +0200
+++ new/aws-c-common-0.9.25/README.md 2024-08-01 20:44:38.000000000 +0200
@@ -122,7 +122,8 @@
| [0x3800, 0x3C00) | aws-c-s3 |
| [0x3C00, 0x4000) | aws-c-sdkutils |
| [0x4000, 0x4400) | aws-crt-kotlin |
-| [0x4400, 0x4800) | (reserved for future project) |
+| [0x4400, 0x4800) | aws-crt-swift |
+| [0x4800, 0x4C00) | (reserved for future project) |
Each library should begin its error and log subject values at the beginning of its range and follow in sequence (don't skip codes). Upon
adding an AWS maintained library, a new enum range must be approved and added to the above table.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-common-0.9.24/include/aws/common/json.h new/aws-c-common-0.9.25/include/aws/common/json.h
--- old/aws-c-common-0.9.24/include/aws/common/json.h 2024-07-24 19:17:15.000000000 +0200
+++ new/aws-c-common-0.9.25/include/aws/common/json.h 2024-08-01 20:44:38.000000000 +0200
@@ -23,7 +23,8 @@
*
* Note: You will need to free the memory for the aws_json_value using aws_json_destroy on the aws_json_value or
* on the object/array containing the aws_json_value.
- * @param string A byte pointer to the string you want to store in the aws_json_value
+ * Note: might be slower than c_str version due to internal copy
+ * @param string A byte cursor you want to store in the aws_json_value
* @param allocator The allocator to use when creating the value
* @return A new string aws_json_value
*/
@@ -31,6 +32,18 @@
struct aws_json_value *aws_json_value_new_string(struct aws_allocator *allocator, struct aws_byte_cursor string);
/**
+ * Creates a new string aws_json_value with the given string and returns a pointer to it.
+ *
+ * Note: You will need to free the memory for the aws_json_value using aws_json_destroy on the aws_json_value or
+ * on the object/array containing the aws_json_value.
+ * @param string c string pointer you want to store in the aws_json_value
+ * @param allocator The allocator to use when creating the value
+ * @return A new string aws_json_value
+ */
+AWS_COMMON_API
+struct aws_json_value *aws_json_value_new_string_from_c_str(struct aws_allocator *allocator, const char *string);
+
+/**
* Creates a new number aws_json_value with the given number and returns a pointer to it.
*
* Note: You will need to free the memory for the aws_json_value using aws_json_destroy on the aws_json_value or
@@ -129,6 +142,7 @@
*
* Note that the aws_json_value will be destroyed when the aws_json_value object is destroyed
* by calling "aws_json_destroy()"
+ * Note: might be slower than c_str version due to internal copy
* @param object The object aws_json_value you want to add a value to.
* @param key The key to add the aws_json_value at.
* @param value The aws_json_value you want to add.
@@ -143,7 +157,23 @@
struct aws_json_value *value);
/**
+ * Adds a aws_json_value to a object aws_json_value.
+ *
+ * Note that the aws_json_value will be destroyed when the aws_json_value object is destroyed
+ * by calling "aws_json_destroy()"
+ * @param object The object aws_json_value you want to add a value to.
+ * @param key The key to add the aws_json_value at.
+ * @param value The aws_json_value you want to add.
+ * @return AWS_OP_SUCCESS if adding was successful.
+ * Will return AWS_OP_ERROR if the object passed is invalid or if the passed key
+ * is already in use in the object.
+ */
+AWS_COMMON_API
+int aws_json_value_add_to_object_c_str(struct aws_json_value *object, const char *key, struct aws_json_value *value);
+
+/**
* Returns the aws_json_value at the given key.
+ * Note: might be slower than c_str version due to internal copy
* @param object The object aws_json_value you want to get the value from.
* @param key The key that the aws_json_value is at. Is case sensitive.
* @return The aws_json_value at the given key, otherwise NULL.
@@ -152,7 +182,19 @@
struct aws_json_value *aws_json_value_get_from_object(const struct aws_json_value *object, struct aws_byte_cursor key);
/**
+ * Returns the aws_json_value at the given key.
+ * Note: same as aws_json_value_get_from_object but with key as const char *.
+ * Prefer this method is you have a key thats already a valid char * as it is likely to be faster.
+ * @param object The object aws_json_value you want to get the value from.
+ * @param key The key that the aws_json_value is at. Is case sensitive.
+ * @return The aws_json_value at the given key, otherwise NULL.
+ */
+AWS_COMMON_API
+struct aws_json_value *aws_json_value_get_from_object_c_str(const struct aws_json_value *object, const char *key);
+
+/**
* Checks if there is a aws_json_value at the given key.
+ * Note: might be slower than c_str version due to internal copy
* @param object The value aws_json_value you want to check a key in.
* @param key The key that you want to check. Is case sensitive.
* @return True if a aws_json_value is found.
@@ -161,7 +203,19 @@
bool aws_json_value_has_key(const struct aws_json_value *object, struct aws_byte_cursor key);
/**
+ * Checks if there is a aws_json_value at the given key.
+ * Note: same as aws_json_value_has_key but with key as const char *.
+ * Prefer this method is you have a key thats already a valid char * as it is likely to be faster.
+ * @param object The value aws_json_value you want to check a key in.
+ * @param key The key that you want to check. Is case sensitive.
+ * @return True if a aws_json_value is found.
+ */
+AWS_COMMON_API
+bool aws_json_value_has_key_c_str(const struct aws_json_value *object, const char *key);
+
+/**
* Removes the aws_json_value at the given key.
+ * Note: might be slower than c_str version due to internal copy
* @param object The object aws_json_value you want to remove a aws_json_value in.
* @param key The key that the aws_json_value is at. Is case sensitive.
* @return AWS_OP_SUCCESS if the aws_json_value was removed.
@@ -172,6 +226,19 @@
int aws_json_value_remove_from_object(struct aws_json_value *object, struct aws_byte_cursor key);
/**
+ * Removes the aws_json_value at the given key.
+ * Note: same as aws_json_value_remove_from_object but with key as const char *.
+ * Prefer this method is you have a key thats already a valid char * as it is likely to be faster.
+ * @param object The object aws_json_value you want to remove a aws_json_value in.
+ * @param key The key that the aws_json_value is at. Is case sensitive.
+ * @return AWS_OP_SUCCESS if the aws_json_value was removed.
+ * Will return AWS_OP_ERR if the object passed is invalid or if the value
+ * at the key cannot be found.
+ */
+AWS_COMMON_API
+int aws_json_value_remove_from_object_c_str(struct aws_json_value *object, const char *key);
+
+/**
* @brief callback for iterating members of an object
* Iteration can be controlled as follows:
* - return AWS_OP_SUCCESS and out_should_continue is set to true (default value) -
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-common-0.9.24/source/json.c new/aws-c-common-0.9.25/source/json.c
--- old/aws-c-common-0.9.24/source/json.c 2024-07-24 19:17:15.000000000 +0200
+++ new/aws-c-common-0.9.25/source/json.c 2024-08-01 20:44:38.000000000 +0200
@@ -21,6 +21,12 @@
return ret_val;
}
+struct aws_json_value *aws_json_value_new_string_from_c_str(struct aws_allocator *allocator, const char *string) {
+ (void)allocator; /* No need for allocator. It is overriden through hooks. */
+ void *ret_val = cJSON_CreateString(string);
+ return ret_val;
+}
+
struct aws_json_value *aws_json_value_new_number(struct aws_allocator *allocator, double number) {
(void)allocator; // prevent warnings over unused parameter
return (void *)cJSON_CreateNumber(number);
@@ -78,92 +84,95 @@
struct aws_byte_cursor key,
struct aws_json_value *value) {
- int result = AWS_OP_ERR;
struct aws_string *tmp = aws_string_new_from_cursor(s_aws_json_module_allocator, &key);
+ int result = aws_json_value_add_to_object_c_str(object, aws_string_c_str(tmp), value);
+
+ aws_string_destroy_secure(tmp);
+ return result;
+}
+
+int aws_json_value_add_to_object_c_str(struct aws_json_value *object, const char *key, struct aws_json_value *value) {
struct cJSON *cjson = (struct cJSON *)object;
if (!cJSON_IsObject(cjson)) {
- aws_raise_error(AWS_ERROR_INVALID_ARGUMENT);
- goto done;
+ return aws_raise_error(AWS_ERROR_INVALID_ARGUMENT);
}
struct cJSON *cjson_value = (struct cJSON *)value;
if (cJSON_IsInvalid(cjson_value)) {
- result = aws_raise_error(AWS_ERROR_INVALID_ARGUMENT);
- goto done;
+ return aws_raise_error(AWS_ERROR_INVALID_ARGUMENT);
}
- if (cJSON_HasObjectItem(cjson, aws_string_c_str(tmp))) {
- goto done;
+ if (cJSON_HasObjectItem(cjson, key)) {
+ return AWS_OP_ERR;
}
- cJSON_AddItemToObject(cjson, aws_string_c_str(tmp), cjson_value);
- result = AWS_OP_SUCCESS;
-
-done:
- aws_string_destroy_secure(tmp);
- return result;
+ cJSON_AddItemToObject(cjson, key, cjson_value);
+ return AWS_OP_SUCCESS;
}
struct aws_json_value *aws_json_value_get_from_object(const struct aws_json_value *object, struct aws_byte_cursor key) {
- void *return_value = NULL;
struct aws_string *tmp = aws_string_new_from_cursor(s_aws_json_module_allocator, &key);
+ void *return_value = aws_json_value_get_from_object_c_str(object, aws_string_c_str(tmp));
+
+ aws_string_destroy_secure(tmp);
+ return return_value;
+}
+struct aws_json_value *aws_json_value_get_from_object_c_str(const struct aws_json_value *object, const char *key) {
const struct cJSON *cjson = (const struct cJSON *)object;
if (!cJSON_IsObject(cjson)) {
aws_raise_error(AWS_ERROR_INVALID_ARGUMENT);
- goto done;
+ return NULL;
}
- if (!cJSON_HasObjectItem(cjson, aws_string_c_str(tmp))) {
- goto done;
+ if (!cJSON_HasObjectItem(cjson, key)) {
+ return NULL;
}
- return_value = (void *)cJSON_GetObjectItem(cjson, aws_string_c_str(tmp));
-
-done:
- aws_string_destroy_secure(tmp);
- return return_value;
+ return (void *)cJSON_GetObjectItem(cjson, key);
}
bool aws_json_value_has_key(const struct aws_json_value *object, struct aws_byte_cursor key) {
struct aws_string *tmp = aws_string_new_from_cursor(s_aws_json_module_allocator, &key);
- bool result = false;
+ bool result = aws_json_value_has_key_c_str(object, aws_string_c_str(tmp));
+
+ aws_string_destroy_secure(tmp);
+ return result;
+}
+bool aws_json_value_has_key_c_str(const struct aws_json_value *object, const char *key) {
const struct cJSON *cjson = (const struct cJSON *)object;
if (!cJSON_IsObject(cjson)) {
- goto done;
+ return false;
}
- if (!cJSON_HasObjectItem(cjson, aws_string_c_str(tmp))) {
- goto done;
+ if (!cJSON_HasObjectItem(cjson, key)) {
+ return false;
}
- result = true;
-done:
- aws_string_destroy_secure(tmp);
- return result;
+ return true;
}
int aws_json_value_remove_from_object(struct aws_json_value *object, struct aws_byte_cursor key) {
- int result = AWS_OP_ERR;
struct aws_string *tmp = aws_string_new_from_cursor(s_aws_json_module_allocator, &key);
+ int result = aws_json_value_remove_from_object_c_str(object, aws_string_c_str(tmp));
+ aws_string_destroy_secure(tmp);
+ return result;
+}
+
+int aws_json_value_remove_from_object_c_str(struct aws_json_value *object, const char *key) {
struct cJSON *cjson = (struct cJSON *)object;
if (!cJSON_IsObject(cjson)) {
- aws_raise_error(AWS_ERROR_INVALID_ARGUMENT);
- goto done;
+ return aws_raise_error(AWS_ERROR_INVALID_ARGUMENT);
}
- if (!cJSON_HasObjectItem(cjson, aws_string_c_str(tmp))) {
- goto done;
+ if (!cJSON_HasObjectItem(cjson, key)) {
+ return AWS_OP_ERR;
}
- cJSON_DeleteItemFromObject(cjson, aws_string_c_str(tmp));
- result = AWS_OP_SUCCESS;
-
-done:
- aws_string_destroy_secure(tmp);
- return result;
+ cJSON_DeleteItemFromObject(cjson, key);
+ return AWS_OP_SUCCESS;
}
int aws_json_const_iterate_object(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-common-0.9.24/source/windows/device_random.c new/aws-c-common-0.9.25/source/windows/device_random.c
--- old/aws-c-common-0.9.24/source/windows/device_random.c 2024-07-24 19:17:15.000000000 +0200
+++ new/aws-c-common-0.9.25/source/windows/device_random.c 2024-08-01 20:44:38.000000000 +0200
@@ -5,26 +5,11 @@
#include <aws/common/device_random.h>
#include <aws/common/byte_buf.h>
-#include <aws/common/thread.h>
#include <windows.h>
#include <bcrypt.h>
-static BCRYPT_ALG_HANDLE s_alg_handle = NULL;
-static aws_thread_once s_rand_init = AWS_THREAD_ONCE_STATIC_INIT;
-
-static void s_init_rand(void *user_data) {
- (void)user_data;
- NTSTATUS status = 0;
-
- status = BCryptOpenAlgorithmProvider(&s_alg_handle, BCRYPT_RNG_ALGORITHM, NULL, 0);
-
- if (!BCRYPT_SUCCESS(status)) {
- abort();
- }
-}
-
int aws_device_random_buffer(struct aws_byte_buf *output) {
return aws_device_random_buffer_append(output, output->capacity - output->len);
}
@@ -32,8 +17,6 @@
int aws_device_random_buffer_append(struct aws_byte_buf *output, size_t n) {
AWS_PRECONDITION(aws_byte_buf_is_valid(output));
- aws_thread_call_once(&s_rand_init, s_init_rand, NULL);
-
size_t space_available = output->capacity - output->len;
if (space_available < n) {
AWS_POSTCONDITION(aws_byte_buf_is_valid(output));
@@ -47,7 +30,8 @@
while (n > 0) {
uint32_t capped_n = (uint32_t)aws_min_size(n, UINT32_MAX);
- NTSTATUS status = BCryptGenRandom(s_alg_handle, output->buffer + output->len, capped_n, 0 /*flags*/);
+ NTSTATUS status =
+ BCryptGenRandom(NULL, output->buffer + output->len, capped_n, BCRYPT_USE_SYSTEM_PREFERRED_RNG);
if (!BCRYPT_SUCCESS(status)) {
output->len = original_len;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-common-0.9.24/tests/json_test.c new/aws-c-common-0.9.25/tests/json_test.c
--- old/aws-c-common-0.9.24/tests/json_test.c 2024-07-24 19:17:15.000000000 +0200
+++ new/aws-c-common-0.9.25/tests/json_test.c 2024-08-01 20:44:38.000000000 +0200
@@ -114,6 +114,7 @@
// Testing valid array
struct aws_json_value *array_node = aws_json_value_get_from_object(root, aws_byte_cursor_from_c_str("array"));
+ ASSERT_PTR_EQUALS(array_node, aws_json_value_get_from_object_c_str(root, "array"));
ASSERT_NOT_NULL(array_node);
ASSERT_TRUE(aws_json_value_is_array(array_node));
ASSERT_TRUE(aws_json_get_array_size(array_node) == 3);
@@ -163,12 +164,14 @@
aws_string_destroy_secure(tmp_str);
// Testing valid number
- struct aws_json_value *number_node = aws_json_value_get_from_object(root, aws_byte_cursor_from_c_str("number"));
+ struct aws_json_value *number_node = aws_json_value_get_from_object_c_str(root, "number");
ASSERT_NOT_NULL(number_node);
ASSERT_TRUE(aws_json_value_is_number(number_node));
double double_test_two = 0;
aws_json_value_get_number(number_node, &double_test_two);
ASSERT_TRUE(double_test_two == (double)123);
+ ASSERT_TRUE(aws_json_value_has_key_c_str(root, "number"));
+ ASSERT_TRUE(aws_json_value_has_key(root, aws_byte_cursor_from_c_str("number")));
// Testing valid object
struct aws_json_value *object_node = aws_json_value_get_from_object(root, aws_byte_cursor_from_c_str("object"));
@@ -210,6 +213,12 @@
// Test getting invalid type of data
ASSERT_INT_EQUALS(aws_json_value_get_number(string_node, NULL), AWS_OP_ERR);
+ ASSERT_SUCCESS(aws_json_value_remove_from_object(root, aws_byte_cursor_from_c_str("number")));
+ ASSERT_FALSE(aws_json_value_has_key_c_str(root, "number"));
+
+ ASSERT_SUCCESS(aws_json_value_remove_from_object_c_str(root, "object"));
+ ASSERT_FALSE(aws_json_value_has_key_c_str(root, "object"));
+
aws_json_value_destroy(root);
// Make sure that destroying NULL does not have any bad effects.
@@ -233,12 +242,8 @@
aws_json_value_add_array_element(array, aws_json_value_new_number(allocator, 3));
aws_json_value_add_to_object(root, aws_byte_cursor_from_c_str("array"), array);
- aws_json_value_add_to_object(
- root, aws_byte_cursor_from_c_str("boolean"), aws_json_value_new_boolean(allocator, true));
- aws_json_value_add_to_object(
- root,
- aws_byte_cursor_from_c_str("color"),
- aws_json_value_new_string(allocator, aws_byte_cursor_from_c_str("gold")));
+ aws_json_value_add_to_object_c_str(root, "boolean", aws_json_value_new_boolean(allocator, true));
+ aws_json_value_add_to_object_c_str(root, "color", aws_json_value_new_string_from_c_str(allocator, "gold"));
aws_json_value_add_to_object(root, aws_byte_cursor_from_c_str("null"), aws_json_value_new_null(allocator));
aws_json_value_add_to_object(root, aws_byte_cursor_from_c_str("number"), aws_json_value_new_number(allocator, 123));
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package aws-c-http for openSUSE:Factory checked in at 2024-08-09 16:14:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/aws-c-http (Old)
and /work/SRC/openSUSE:Factory/.aws-c-http.new.7232 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "aws-c-http"
Fri Aug 9 16:14:43 2024 rev:6 rq:1192574 version:0.8.6
Changes:
--------
--- /work/SRC/openSUSE:Factory/aws-c-http/aws-c-http.changes 2024-08-01 22:06:48.498354445 +0200
+++ /work/SRC/openSUSE:Factory/.aws-c-http.new.7232/aws-c-http.changes 2024-08-09 16:15:12.292286136 +0200
@@ -1,0 +2,7 @@
+Wed Aug 7 13:24:54 UTC 2024 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- Update to version 0.8.6
+ * Connection Manager Acquisition Timeout by @waahm7 in (#479)
+ * Support MaxPendingConnectionAcquisitions by @waahm7 in (#481)
+
+-------------------------------------------------------------------
Old:
----
v0.8.5.tar.gz
New:
----
v0.8.6.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ aws-c-http.spec ++++++
--- /var/tmp/diff_new_pack.j8sbL3/_old 2024-08-09 16:15:12.896311348 +0200
+++ /var/tmp/diff_new_pack.j8sbL3/_new 2024-08-09 16:15:12.896311348 +0200
@@ -19,7 +19,7 @@
%define library_version 1.0.0
%define library_soversion 1_0_0
Name: aws-c-http
-Version: 0.8.5
+Version: 0.8.6
Release: 0
Summary: C99 implementation of the HTTP/1.1 and HTTP/2 specifications
License: Apache-2.0
++++++ v0.8.5.tar.gz -> v0.8.6.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-http-0.8.5/include/aws/http/connection_manager.h new/aws-c-http-0.8.6/include/aws/http/connection_manager.h
--- old/aws-c-http-0.8.5/include/aws/http/connection_manager.h 2024-07-29 22:12:51.000000000 +0200
+++ new/aws-c-http-0.8.6/include/aws/http/connection_manager.h 2024-08-06 00:51:26.000000000 +0200
@@ -126,6 +126,20 @@
uint64_t max_connection_idle_in_milliseconds;
/**
+ * If set to a non-zero value, aws_http_connection_manager_acquire_connection() calls
+ * will give up after waiting this long for a connection from the pool,
+ * failing with error AWS_ERROR_HTTP_CONNECTION_MANAGER_ACQUISITION_TIMEOUT.
+ */
+ uint64_t connection_acquisition_timeout_ms;
+
+ /*
+ * If set to a non-zero value, aws_http_connection_manager_acquire_connection() calls will fail with
+ * AWS_ERROR_HTTP_CONNECTION_MANAGER_MAX_PENDING_ACQUISITIONS_EXCEEDED if there are already pending acquisitions
+ * equal to `max_pending_connection_acquisitions`.
+ */
+ uint64_t max_pending_connection_acquisitions;
+
+ /**
* THIS IS AN EXPERIMENTAL AND UNSTABLE API
* (Optional)
* An array of network interface names. The manager will distribute the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-http-0.8.5/include/aws/http/http.h new/aws-c-http-0.8.6/include/aws/http/http.h
--- old/aws-c-http-0.8.5/include/aws/http/http.h 2024-07-29 22:12:51.000000000 +0200
+++ new/aws-c-http-0.8.6/include/aws/http/http.h 2024-08-06 00:51:26.000000000 +0200
@@ -60,6 +60,8 @@
AWS_ERROR_HTTP_MANUAL_WRITE_NOT_ENABLED,
AWS_ERROR_HTTP_MANUAL_WRITE_HAS_COMPLETED,
AWS_ERROR_HTTP_RESPONSE_FIRST_BYTE_TIMEOUT,
+ AWS_ERROR_HTTP_CONNECTION_MANAGER_ACQUISITION_TIMEOUT,
+ AWS_ERROR_HTTP_CONNECTION_MANAGER_MAX_PENDING_ACQUISITIONS_EXCEEDED,
AWS_ERROR_HTTP_END_RANGE = AWS_ERROR_ENUM_END_RANGE(AWS_C_HTTP_PACKAGE_ID)
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-http-0.8.5/source/connection_manager.c new/aws-c-http-0.8.6/source/connection_manager.c
--- old/aws-c-http-0.8.5/source/connection_manager.c 2024-07-29 22:12:51.000000000 +0200
+++ new/aws-c-http-0.8.6/source/connection_manager.c 2024-08-06 00:51:26.000000000 +0200
@@ -193,7 +193,10 @@
struct aws_linked_list idle_connections;
/*
- * The set of all incomplete connection acquisition requests
+ * The set of all incomplete connection acquisition requests.
+ * This must be a FIFO list. When connections are requested by the user, they are added to the back. When we need to
+ * complete the acquisition, we pop from the front. In this way, the list is always sorted from the oldest (in terms
+ * of timeout timestamp) to the newest and we can cull it similar to idle_connections.
*/
struct aws_linked_list pending_acquisitions;
@@ -286,6 +289,10 @@
*/
uint64_t max_connection_idle_in_milliseconds;
+ uint64_t connection_acquisition_timeout_ms;
+
+ uint64_t max_pending_connection_acquisitions;
+
/*
* Task to cull idle connections. This task is run periodically on the cull_event_loop if a non-zero
* culling time interval is specified.
@@ -392,6 +399,7 @@
struct aws_http_connection *connection;
int error_code;
struct aws_channel_task acquisition_task;
+ uint64_t timeout_timestamp;
};
static void s_connection_acquisition_task(
@@ -758,26 +766,17 @@
}
static void s_cull_task(struct aws_task *task, void *arg, enum aws_task_status status);
-static void s_schedule_connection_culling(struct aws_http_connection_manager *manager) {
- if (manager->max_connection_idle_in_milliseconds == 0) {
- return;
- }
-
- if (manager->cull_task == NULL) {
- manager->cull_task = aws_mem_calloc(manager->allocator, 1, sizeof(struct aws_task));
- aws_task_init(manager->cull_task, s_cull_task, manager, "cull_idle_connections");
- /* For the task to properly run and cancel, we need to keep manager alive */
- aws_ref_count_acquire(&manager->internal_ref_count);
- }
- if (manager->cull_event_loop == NULL) {
- manager->cull_event_loop = aws_event_loop_group_get_next_loop(manager->bootstrap->event_loop_group);
+/*
+ * Calculates the next timestamp the idle connections should be culled. Manager lock must be held somewhere in the call
+ * stack. Returns UINT64_MAX if max_connection_idle_in_milliseconds is not set.
+ */
+static uint64_t s_calculate_idle_connection_cull_task_time_synced(struct aws_http_connection_manager *manager) {
+ if (manager->max_connection_idle_in_milliseconds == 0) {
+ return UINT64_MAX;
}
- AWS_FATAL_ASSERT(manager->cull_event_loop != NULL);
-
uint64_t cull_task_time = 0;
- aws_mutex_lock(&manager->lock);
const struct aws_linked_list_node *end = aws_linked_list_end(&manager->idle_connections);
struct aws_linked_list_node *oldest_node = aws_linked_list_begin(&manager->idle_connections);
if (oldest_node != end) {
@@ -799,11 +798,68 @@
now + aws_timestamp_convert(
manager->max_connection_idle_in_milliseconds, AWS_TIMESTAMP_MILLIS, AWS_TIMESTAMP_NANOS, NULL);
}
- aws_mutex_unlock(&manager->lock);
- aws_event_loop_schedule_task_future(manager->cull_event_loop, manager->cull_task, cull_task_time);
+ return cull_task_time;
+}
+
+/*
+ * Calculates the next timestamp the pending acquisitions should be culled. Manager lock must be held somewhere in the
+ * call stack. Returns UINT64_MAX if connection_acquisition_timeout_ms is not set.
+ */
+static uint64_t s_calculate_pending_acquisition_cull_task_time_synced(struct aws_http_connection_manager *manager) {
+ if (manager->connection_acquisition_timeout_ms == 0) {
+ return UINT64_MAX;
+ }
+
+ uint64_t cull_task_time = 0;
+
+ const struct aws_linked_list_node *end = aws_linked_list_end(&manager->pending_acquisitions);
+ struct aws_linked_list_node *oldest_node = aws_linked_list_begin(&manager->pending_acquisitions);
+ if (oldest_node != end) {
+ /*
+ * front of the list has the closest cull time
+ */
+ struct aws_http_connection_acquisition *oldest_pending_acquire =
+ AWS_CONTAINER_OF(oldest_node, struct aws_http_connection_acquisition, node);
+ cull_task_time = oldest_pending_acquire->timeout_timestamp;
+ } else {
+ /*
+ * There are no acquisition in the list, so the absolute minimum anything could be culled is the full
+ * culling interval from now.
+ */
+ uint64_t now = 0;
+ manager->system_vtable->aws_high_res_clock_get_ticks(&now);
+ cull_task_time =
+ now + aws_timestamp_convert(
+ manager->connection_acquisition_timeout_ms, AWS_TIMESTAMP_MILLIS, AWS_TIMESTAMP_NANOS, NULL);
+ }
+ return cull_task_time;
+}
+
+static void s_schedule_culling(struct aws_http_connection_manager *manager) {
+ if (manager->max_connection_idle_in_milliseconds == 0 && manager->connection_acquisition_timeout_ms == 0) {
+ return;
+ }
+
+ if (manager->cull_task == NULL) {
+ manager->cull_task = aws_mem_calloc(manager->allocator, 1, sizeof(struct aws_task));
+ aws_task_init(manager->cull_task, s_cull_task, manager, "cull_idle_connections");
+ /* For the task to properly run and cancel, we need to keep manager alive */
+ aws_ref_count_acquire(&manager->internal_ref_count);
+ }
+
+ if (manager->cull_event_loop == NULL) {
+ manager->cull_event_loop = aws_event_loop_group_get_next_loop(manager->bootstrap->event_loop_group);
+ }
+ AWS_FATAL_ASSERT(manager->cull_event_loop != NULL);
+
+ aws_mutex_lock(&manager->lock);
+ uint64_t idle_cull_time = s_calculate_idle_connection_cull_task_time_synced(manager);
+ uint64_t acquisition_cull_time = s_calculate_pending_acquisition_cull_task_time_synced(manager);
+ aws_mutex_unlock(&manager->lock);
- return;
+ aws_event_loop_schedule_task_future(
+ manager->cull_event_loop, manager->cull_task, aws_min_u64(idle_cull_time, acquisition_cull_time));
}
struct aws_http_connection_manager *aws_http_connection_manager_new(
@@ -900,6 +956,9 @@
manager->shutdown_complete_user_data = options->shutdown_complete_user_data;
manager->enable_read_back_pressure = options->enable_read_back_pressure;
manager->max_connection_idle_in_milliseconds = options->max_connection_idle_in_milliseconds;
+ manager->connection_acquisition_timeout_ms = options->connection_acquisition_timeout_ms;
+ manager->max_pending_connection_acquisitions = options->max_pending_connection_acquisitions;
+
if (options->proxy_ev_settings) {
manager->proxy_ev_settings = *options->proxy_ev_settings;
}
@@ -938,7 +997,7 @@
}
/* NOTHING can fail after here */
- s_schedule_connection_culling(manager);
+ s_schedule_culling(manager);
AWS_LOGF_INFO(AWS_LS_HTTP_CONNECTION_MANAGER, "id=%p: Successfully created", (void *)manager);
@@ -1227,6 +1286,22 @@
request->user_data = user_data;
request->manager = manager;
+ if (manager->connection_acquisition_timeout_ms) {
+ uint64_t acquire_start_timestamp = 0;
+ if (manager->system_vtable->aws_high_res_clock_get_ticks(&acquire_start_timestamp) == AWS_OP_SUCCESS) {
+ request->timeout_timestamp =
+ acquire_start_timestamp +
+ aws_timestamp_convert(
+ manager->connection_acquisition_timeout_ms, AWS_TIMESTAMP_MILLIS, AWS_TIMESTAMP_NANOS, NULL);
+ } else {
+ AWS_LOGF_WARN(
+ AWS_LS_HTTP_CONNECTION_MANAGER,
+ "id=%p: Failed to get current timestamp using aws_high_res_clock_get_ticks function. Ignoring the "
+ "connection_acquisition_timeout_ms value. ",
+ (void *)manager);
+ }
+ }
+
struct aws_connection_management_transaction work;
s_aws_connection_management_transaction_init(&work, manager);
@@ -1235,8 +1310,14 @@
/* It's a use after free crime, we don't want to handle */
AWS_FATAL_ASSERT(manager->state == AWS_HCMST_READY);
- aws_linked_list_push_back(&manager->pending_acquisitions, &request->node);
- ++manager->pending_acquisition_count;
+ if (manager->max_pending_connection_acquisitions == 0 ||
+ manager->pending_acquisition_count < manager->max_pending_connection_acquisitions) {
+ aws_linked_list_push_back(&manager->pending_acquisitions, &request->node);
+ ++manager->pending_acquisition_count;
+ } else {
+ request->error_code = AWS_ERROR_HTTP_CONNECTION_MANAGER_MAX_PENDING_ACQUISITIONS_EXCEEDED;
+ aws_linked_list_push_back(&work.completions, &request->node);
+ }
s_aws_http_connection_manager_build_transaction(&work);
@@ -1545,10 +1626,11 @@
s_aws_http_connection_manager_execute_transaction(&work);
}
-static void s_cull_idle_connections(struct aws_http_connection_manager *manager) {
- AWS_LOGF_INFO(AWS_LS_HTTP_CONNECTION_MANAGER, "id=%p: culling idle connections", (void *)manager);
+static void s_cull_task_impl(struct aws_http_connection_manager *manager) {
+ AWS_LOGF_INFO(
+ AWS_LS_HTTP_CONNECTION_MANAGER, "id=%p: culling idle connections and pending acquisitions", (void *)manager);
- if (manager == NULL || manager->max_connection_idle_in_milliseconds == 0) {
+ if (manager == NULL) {
return;
}
@@ -1564,26 +1646,53 @@
/* Only if we're not shutting down */
if (manager->state == AWS_HCMST_READY) {
- const struct aws_linked_list_node *end = aws_linked_list_end(&manager->idle_connections);
- struct aws_linked_list_node *current_node = aws_linked_list_begin(&manager->idle_connections);
- while (current_node != end) {
- struct aws_linked_list_node *node = current_node;
- struct aws_idle_connection *current_idle_connection =
- AWS_CONTAINER_OF(node, struct aws_idle_connection, node);
- if (current_idle_connection->cull_timestamp > now) {
- break;
+ /* cull idle connections */
+ if (manager->max_connection_idle_in_milliseconds != 0) {
+ const struct aws_linked_list_node *idle_connections_end = aws_linked_list_end(&manager->idle_connections);
+ struct aws_linked_list_node *idle_connections_current = aws_linked_list_begin(&manager->idle_connections);
+ while (idle_connections_current != idle_connections_end) {
+ struct aws_linked_list_node *node = idle_connections_current;
+ struct aws_idle_connection *current_idle_connection =
+ AWS_CONTAINER_OF(node, struct aws_idle_connection, node);
+ if (current_idle_connection->cull_timestamp > now) {
+ break;
+ }
+
+ idle_connections_current = aws_linked_list_next(idle_connections_current);
+ aws_linked_list_remove(node);
+ aws_linked_list_push_back(&work.connections_to_release, node);
+ --manager->idle_connection_count;
+
+ AWS_LOGF_DEBUG(
+ AWS_LS_HTTP_CONNECTION_MANAGER,
+ "id=%p: culling idle connection (%p)",
+ (void *)manager,
+ (void *)current_idle_connection->connection);
}
+ }
- current_node = aws_linked_list_next(current_node);
- aws_linked_list_remove(node);
- aws_linked_list_push_back(&work.connections_to_release, node);
- --manager->idle_connection_count;
-
- AWS_LOGF_DEBUG(
- AWS_LS_HTTP_CONNECTION_MANAGER,
- "id=%p: culling idle connection (%p)",
- (void *)manager,
- (void *)current_idle_connection->connection);
+ /* cull pending acquisitions */
+ if (manager->connection_acquisition_timeout_ms != 0) {
+ const struct aws_linked_list_node *pending_acquisitions_end =
+ aws_linked_list_end(&manager->pending_acquisitions);
+ struct aws_linked_list_node *pending_acquisitions_current =
+ aws_linked_list_begin(&manager->pending_acquisitions);
+ while (pending_acquisitions_current != pending_acquisitions_end) {
+ struct aws_linked_list_node *node = pending_acquisitions_current;
+ struct aws_http_connection_acquisition *current_pending_acquire =
+ AWS_CONTAINER_OF(node, struct aws_http_connection_acquisition, node);
+ if (current_pending_acquire->timeout_timestamp > now) {
+ break;
+ }
+
+ pending_acquisitions_current = aws_linked_list_next(pending_acquisitions_current);
+ s_aws_http_connection_manager_move_front_acquisition(
+ manager, NULL, AWS_ERROR_HTTP_CONNECTION_MANAGER_ACQUISITION_TIMEOUT, &work.completions);
+ AWS_LOGF_DEBUG(
+ AWS_LS_HTTP_CONNECTION_MANAGER,
+ "id=%p: Failing pending acquisition due to timeout",
+ (void *)manager);
+ }
}
}
@@ -1601,10 +1710,9 @@
}
struct aws_http_connection_manager *manager = arg;
+ s_cull_task_impl(manager);
- s_cull_idle_connections(manager);
-
- s_schedule_connection_culling(manager);
+ s_schedule_culling(manager);
}
void aws_http_connection_manager_fetch_metrics(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-http-0.8.5/source/http.c new/aws-c-http-0.8.6/source/http.c
--- old/aws-c-http-0.8.5/source/http.c 2024-07-29 22:12:51.000000000 +0200
+++ new/aws-c-http-0.8.6/source/http.c 2024-08-06 00:51:26.000000000 +0200
@@ -151,6 +151,12 @@
AWS_DEFINE_ERROR_INFO_HTTP(
AWS_ERROR_HTTP_RESPONSE_FIRST_BYTE_TIMEOUT,
"The server does not begin responding within the configuration after a request is fully sent."),
+ AWS_DEFINE_ERROR_INFO_HTTP(
+ AWS_ERROR_HTTP_CONNECTION_MANAGER_ACQUISITION_TIMEOUT,
+ "Connection Manager failed to acquire a connection within the defined timeout."),
+ AWS_DEFINE_ERROR_INFO_HTTP(
+ AWS_ERROR_HTTP_CONNECTION_MANAGER_MAX_PENDING_ACQUISITIONS_EXCEEDED,
+ "Max pending acquisitions reached"),
};
/* clang-format on */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-http-0.8.5/tests/CMakeLists.txt new/aws-c-http-0.8.6/tests/CMakeLists.txt
--- old/aws-c-http-0.8.5/tests/CMakeLists.txt 2024-07-29 22:12:51.000000000 +0200
+++ new/aws-c-http-0.8.6/tests/CMakeLists.txt 2024-08-06 00:51:26.000000000 +0200
@@ -519,6 +519,7 @@
# unit tests where connections are mocked
add_net_test_case(test_connection_manager_setup_shutdown)
add_net_test_case(test_connection_manager_acquire_release_mix_synchronous)
+add_net_test_case(test_connection_manager_acquisition_timeout)
add_net_test_case(test_connection_manager_connect_callback_failure)
add_net_test_case(test_connection_manager_connect_immediate_failure)
add_net_test_case(test_connection_manager_proxy_setup_shutdown)
@@ -539,6 +540,7 @@
add_net_test_case(test_connection_manager_acquire_release)
add_net_test_case(test_connection_manager_close_and_release)
add_net_test_case(test_connection_manager_acquire_release_mix)
+add_net_test_case(test_connection_manager_max_pending_acquisitions)
# Integration test that requires proxy envrionment in us-east-1 region.
# TODO: test the server name validation properly
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-http-0.8.5/tests/test_connection_manager.c new/aws-c-http-0.8.6/tests/test_connection_manager.c
--- old/aws-c-http-0.8.5/tests/test_connection_manager.c 2024-07-29 22:12:51.000000000 +0200
+++ new/aws-c-http-0.8.6/tests/test_connection_manager.c 2024-08-06 00:51:26.000000000 +0200
@@ -53,6 +53,9 @@
struct aws_tls_connection_options *env_configured_tls;
size_t max_connections;
uint64_t max_connection_idle_in_ms;
+ uint64_t connection_acquisition_timeout_ms;
+ uint64_t max_pending_connection_acquisitions;
+
uint64_t starting_mock_time;
bool http2;
struct aws_http2_setting *initial_settings_array;
@@ -82,6 +85,8 @@
struct aws_condition_variable signal;
struct aws_array_list connections;
+ /* aws_array_list<uint32> of error codes */
+ struct aws_array_list connection_errors_list;
size_t connection_errors;
size_t connection_releases;
@@ -154,6 +159,9 @@
ASSERT_SUCCESS(
aws_array_list_init_dynamic(&tester->connections, tester->allocator, 10, sizeof(struct aws_http_connection *)));
+ ASSERT_SUCCESS(
+ aws_array_list_init_dynamic(&tester->connection_errors_list, tester->allocator, 10, sizeof(uint32_t)));
+
aws_mutex_init(&tester->mock_time_lock);
s_tester_set_mock_time(options->starting_mock_time);
@@ -220,6 +228,8 @@
.shutdown_complete_user_data = tester,
.shutdown_complete_callback = s_cm_tester_on_cm_shutdown_complete,
.max_connection_idle_in_milliseconds = options->max_connection_idle_in_ms,
+ .connection_acquisition_timeout_ms = options->connection_acquisition_timeout_ms,
+ .max_pending_connection_acquisitions = options->max_pending_connection_acquisitions,
.http2_prior_knowledge = !options->use_tls && options->http2,
.initial_settings_array = options->initial_settings_array,
.num_initial_settings = options->num_initial_settings,
@@ -343,6 +353,7 @@
AWS_FATAL_ASSERT(aws_mutex_lock(&tester->lock) == AWS_OP_SUCCESS);
if (connection == NULL) {
+ aws_array_list_push_back(&tester->connection_errors_list, &error_code);
++tester->connection_errors;
} else {
aws_array_list_push_back(&tester->connections, &connection);
@@ -408,6 +419,7 @@
ASSERT_SUCCESS(s_release_connections(aws_array_list_length(&tester->connections), false));
aws_array_list_clean_up(&tester->connections);
+ aws_array_list_clean_up(&tester->connection_errors_list);
for (size_t i = 0; i < aws_array_list_length(&tester->mock_connections); ++i) {
struct mock_connection *mock = NULL;
@@ -733,6 +745,36 @@
}
AWS_TEST_CASE(test_connection_manager_acquire_release_mix, s_test_connection_manager_acquire_release_mix);
+static int s_test_connection_manager_max_pending_acquisitions(struct aws_allocator *allocator, void *ctx) {
+ (void)ctx;
+
+ size_t num_connections = 2;
+ size_t num_pending_connections = 3;
+ struct cm_tester_options options = {
+ .allocator = allocator,
+ .max_connections = num_connections,
+ .max_pending_connection_acquisitions = num_connections,
+ };
+
+ ASSERT_SUCCESS(s_cm_tester_init(&options));
+
+ s_acquire_connections(num_connections + num_pending_connections);
+
+ ASSERT_SUCCESS(s_wait_on_connection_reply_count(num_connections + num_pending_connections));
+ ASSERT_UINT_EQUALS(num_pending_connections, s_tester.connection_errors);
+ for (size_t i = 0; i < num_pending_connections; i++) {
+ uint32_t error_code;
+ aws_array_list_get_at(&s_tester.connection_errors_list, &error_code, i);
+ ASSERT_UINT_EQUALS(AWS_ERROR_HTTP_CONNECTION_MANAGER_MAX_PENDING_ACQUISITIONS_EXCEEDED, error_code);
+ }
+ ASSERT_SUCCESS(s_release_connections(num_connections, false));
+
+ ASSERT_SUCCESS(s_cm_tester_clean_up());
+
+ return AWS_OP_SUCCESS;
+}
+AWS_TEST_CASE(test_connection_manager_max_pending_acquisitions, s_test_connection_manager_max_pending_acquisitions);
+
static int s_aws_http_connection_manager_create_connection_sync_mock(
const struct aws_http_client_connection_options *options) {
struct cm_tester *tester = &s_tester;
@@ -890,8 +932,6 @@
ASSERT_SUCCESS(s_release_connections(1, false));
}
- ASSERT_SUCCESS(s_wait_on_connection_reply_count(15));
-
for (size_t i = 15; i < 20; ++i) {
ASSERT_SUCCESS(s_release_connections(1, false));
@@ -908,6 +948,46 @@
test_connection_manager_acquire_release_mix_synchronous,
s_test_connection_manager_acquire_release_mix_synchronous);
+static int s_test_connection_manager_acquisition_timeout(struct aws_allocator *allocator, void *ctx) {
+ (void)ctx;
+
+ size_t num_connections = 2;
+ size_t num_pending_connections = 3;
+ struct cm_tester_options options = {
+ .allocator = allocator,
+ .max_connections = num_connections,
+ .mock_table = &s_synchronous_mocks,
+ .connection_acquisition_timeout_ms = 1000,
+ .starting_mock_time = 0,
+ };
+
+ ASSERT_SUCCESS(s_cm_tester_init(&options));
+
+ s_add_mock_connections(num_connections, AWS_NCRT_SUCCESS, true);
+ s_acquire_connections(num_connections + num_pending_connections);
+
+ /* advance fake time enough to cause the acquire connections to timeout, also sleep for real to give the cull task
+ * a chance to run in the real event loop
+ */
+ uint64_t one_sec_in_nanos = aws_timestamp_convert(1, AWS_TIMESTAMP_SECS, AWS_TIMESTAMP_NANOS, NULL);
+ s_tester_set_mock_time(2 * one_sec_in_nanos);
+ aws_thread_current_sleep(2 * one_sec_in_nanos);
+
+ ASSERT_SUCCESS(s_wait_on_connection_reply_count(num_connections + num_pending_connections));
+ ASSERT_UINT_EQUALS(num_pending_connections, s_tester.connection_errors);
+ for (size_t i = 0; i < num_pending_connections; i++) {
+ uint32_t error_code;
+ aws_array_list_get_at(&s_tester.connection_errors_list, &error_code, i);
+ ASSERT_UINT_EQUALS(AWS_ERROR_HTTP_CONNECTION_MANAGER_ACQUISITION_TIMEOUT, error_code);
+ }
+ ASSERT_SUCCESS(s_release_connections(num_connections, false));
+
+ ASSERT_SUCCESS(s_cm_tester_clean_up());
+
+ return AWS_OP_SUCCESS;
+}
+AWS_TEST_CASE(test_connection_manager_acquisition_timeout, s_test_connection_manager_acquisition_timeout);
+
static int s_test_connection_manager_connect_callback_failure(struct aws_allocator *allocator, void *ctx) {
(void)ctx;
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package MirrorCache for openSUSE:Factory checked in at 2024-08-09 16:14:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/MirrorCache (Old)
and /work/SRC/openSUSE:Factory/.MirrorCache.new.7232 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "MirrorCache"
Fri Aug 9 16:14:42 2024 rev:44 rq:1192563 version:1.080
Changes:
--------
--- /work/SRC/openSUSE:Factory/MirrorCache/MirrorCache.changes 2024-08-01 22:06:25.245394943 +0200
+++ /work/SRC/openSUSE:Factory/.MirrorCache.new.7232/MirrorCache.changes 2024-08-09 16:15:09.916186958 +0200
@@ -1,0 +2,8 @@
+Thu Aug 01 08:59:31 UTC 2024 - Andrii Nikitin <andrii.nikitin(a)suse.com>
+
+- Update to version 1.080:
+ * Add /rest/project_last_modified route (#506)
+ * Display project size in human friendly format (#503)
+ * Add flag mysql_enable_utf8mb4 when connectin to MariaDB (#505)
+
+-------------------------------------------------------------------
Old:
----
MirrorCache-1.079.obscpio
New:
----
MirrorCache-1.080.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ MirrorCache.spec ++++++
--- /var/tmp/diff_new_pack.vq6sMZ/_old 2024-08-09 16:15:11.708261759 +0200
+++ /var/tmp/diff_new_pack.vq6sMZ/_new 2024-08-09 16:15:11.708261759 +0200
@@ -22,7 +22,7 @@
%define main_requires %{assetpack_requires} perl(Carp) perl(DBD::Pg) >= 3.7.4 perl(DBI) >= 1.632 perl(DBIx::Class) >= 0.082801 perl(DBIx::Class::DynamicDefault) perl(DateTime) perl(Encode) perl(Time::Piece) perl(Time::Seconds) perl(Time::ParseDate) perl(DateTime::Format::Pg) perl(Exporter) perl(File::Basename) perl(LWP::UserAgent) perl(Mojo::Base) perl(Mojo::ByteStream) perl(Mojo::IOLoop) perl(Mojo::JSON) perl(Mojo::Pg) perl(Mojo::URL) perl(Mojo::Util) perl(Mojolicious::Commands) perl(Mojolicious::Plugin) perl(Mojolicious::Plugin::RenderFile) perl(Mojolicious::Static) perl(Net::OpenID::Consumer) perl(POSIX) perl(Sort::Versions) perl(URI::Escape) perl(XML::Writer) perl(base) perl(constant) perl(diagnostics) perl(strict) perl(warnings) shadow rubygem(sass) perl(Net::DNS) perl(LWP::Protocol::https) perl(Digest::SHA) perl(Config::IniFiles)
%define build_requires %{assetpack_requires} rubygem(sass) tidy sysuser-shadow sysuser-tools
Name: MirrorCache
-Version: 1.079
+Version: 1.080
Release: 0
Summary: WebApp to redirect and manage mirrors
License: GPL-2.0-or-later
++++++ MirrorCache-1.079.obscpio -> MirrorCache-1.080.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/MirrorCache-1.079/assets/javascripts/admintable.js new/MirrorCache-1.080/assets/javascripts/admintable.js
--- old/MirrorCache-1.079/assets/javascripts/admintable.js 2024-07-24 16:14:18.000000000 +0200
+++ new/MirrorCache-1.080/assets/javascripts/admintable.js 2024-08-01 10:38:57.000000000 +0200
@@ -265,6 +265,24 @@
return data ? data : '';
}
+function renderAdminSize(data, type, row, meta) {
+ if(type === 'display' && data) {
+ if (Math.abs(data) < 1024) {
+ return data;
+ }
+ const units = ['kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
+ let u = -1;
+
+ do {
+ data /= 1024;
+ ++u;
+ } while (Math.round(Math.abs(data) * 10) >= 1024 && u < units.length - 1);
+
+ return data.toFixed(1) + ' ' + units[u];
+ }
+ return data ? data : '';
+}
+
function renderAdminTableSettingsList(data, type, row, meta) {
var plainText = type !== 'display';
var edit = isEditingAdminTableRow(meta);
@@ -442,7 +460,7 @@
}
emptyRow[columnName] = "";
} else if (th.hasClass('col_ro')) {
- columnDef.render = renderAdminReadonly;
+ columnDef.render = (columnName == 'size'? renderAdminSize : renderAdminReadonly);
emptyRow.settings = {};
} else if (th.hasClass('col_unixtime')) {
columnDef.render = renderAdminUnixtime;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/MirrorCache-1.079/lib/MirrorCache/Schema/Result/Server.pm new/MirrorCache-1.080/lib/MirrorCache/Schema/Result/Server.pm
--- old/MirrorCache-1.079/lib/MirrorCache/Schema/Result/Server.pm 2024-07-24 16:14:18.000000000 +0200
+++ new/MirrorCache-1.080/lib/MirrorCache/Schema/Result/Server.pm 2024-08-01 10:38:57.000000000 +0200
@@ -64,7 +64,7 @@
"MirrorCache::Schema::Result::ServerCapabilityDeclaration",
sub {
my $args = shift;
- return {
+ return {
"$args->{foreign_alias}.server_id" => { -ident => "$args->{self_alias}.id" },
"$args->{foreign_alias}.extra" => { '=', 'region' },
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/MirrorCache-1.079/lib/MirrorCache/Schema.pm new/MirrorCache-1.080/lib/MirrorCache/Schema.pm
--- old/MirrorCache-1.079/lib/MirrorCache/Schema.pm 2024-07-24 16:14:18.000000000 +0200
+++ new/MirrorCache-1.080/lib/MirrorCache/Schema.pm 2024-08-01 10:38:57.000000000 +0200
@@ -32,13 +32,15 @@
$PROVIDER = $provider;
unless ($SINGLETON) {
+ my @attr;
if (pg()) {
require Mojo::Pg;
} else {
require 'Mojo/' . $PROVIDER . '.pm';
+ @attr = (mysql_enable_utf8 => 1);
}
- $SINGLETON = __PACKAGE__->connect($dsn, $user, $pass);
+ $SINGLETON = __PACKAGE__->connect($dsn, $user, $pass, { @attr });
if ($our_regions) {
my @regions = split ',', $our_regions;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/MirrorCache-1.079/lib/MirrorCache/Task/ReportProjectSize.pm new/MirrorCache-1.080/lib/MirrorCache/Task/ReportProjectSize.pm
--- old/MirrorCache-1.079/lib/MirrorCache/Task/ReportProjectSize.pm 2024-07-24 16:14:18.000000000 +0200
+++ new/MirrorCache-1.080/lib/MirrorCache/Task/ReportProjectSize.pm 2024-08-01 10:38:57.000000000 +0200
@@ -30,9 +30,6 @@
return $job->finish('Previous report job is still active for ' . $path)
unless my $guard = $minion->guard('report_project_size_' . $path, 30*60);
- my $realpath = $app->mc->root->rootpath($path);
- return $job->fail('Path not found: ' . $path) unless $realpath;
-
my ($size, $file_cnt, $lm) = $app->schema->resultset('Folder')->calculate_disk_usage($path);
$job->note("total size" => $size, "file count" => $file_cnt, "last modified" => $lm);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/MirrorCache-1.079/lib/MirrorCache/WebAPI/Controller/Rest/Project.pm new/MirrorCache-1.080/lib/MirrorCache/WebAPI/Controller/Rest/Project.pm
--- old/MirrorCache-1.079/lib/MirrorCache/WebAPI/Controller/Rest/Project.pm 2024-07-24 16:14:18.000000000 +0200
+++ new/MirrorCache-1.080/lib/MirrorCache/WebAPI/Controller/Rest/Project.pm 2024-08-01 10:38:57.000000000 +0200
@@ -34,4 +34,13 @@
$self->render(json => $list);
}
+sub last_modified {
+ my ($self) = @_;
+
+ my $name = $self->param("project");
+ my $prj = $self->schema->resultset('Project')->find({ name => $name });
+
+ $self->render(text => $prj->lm, status => 200);
+}
+
1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/MirrorCache-1.079/lib/MirrorCache/WebAPI/Plugin/Backstage.pm new/MirrorCache-1.080/lib/MirrorCache/WebAPI/Plugin/Backstage.pm
--- old/MirrorCache-1.079/lib/MirrorCache/WebAPI/Plugin/Backstage.pm 2024-07-24 16:14:18.000000000 +0200
+++ new/MirrorCache-1.080/lib/MirrorCache/WebAPI/Plugin/Backstage.pm 2024-08-01 10:38:57.000000000 +0200
@@ -34,7 +34,7 @@
}
my @permanent_jobs =
- qw(folder_sync_schedule_from_misses folder_sync_schedule mirror_scan_schedule_from_misses mirror_scan_schedule_from_path_errors mirror_scan_schedule project_sync_schedule cleanup stat_agg_schedule mirror_check_from_stat report);
+ qw(folder_sync_schedule_from_misses folder_sync_schedule mirror_scan_schedule_from_misses mirror_scan_schedule_from_path_errors mirror_scan_schedule project_sync_schedule cleanup stat_agg_schedule mirror_check_from_stat report report_project_size_schedule);
sub register_tasks {
my $self = shift;
@@ -46,10 +46,6 @@
if ($app->mcconfig->mirror_provider) {
push @permanent_jobs, 'mirror_provider_sync';
}
- eval {
- my $projects = $app->mcproject->list;
- push @permanent_jobs, 'report_project_size_schedule' if @$projects;
- };
$app->plugin($_)
for (
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/MirrorCache-1.079/lib/MirrorCache/WebAPI.pm new/MirrorCache-1.080/lib/MirrorCache/WebAPI.pm
--- old/MirrorCache-1.079/lib/MirrorCache/WebAPI.pm 2024-07-24 16:14:18.000000000 +0200
+++ new/MirrorCache-1.080/lib/MirrorCache/WebAPI.pm 2024-08-01 10:38:57.000000000 +0200
@@ -182,6 +182,7 @@
# $rest_r->get('/project/:name')->to('project#show');
$rest_r->get('/project/:id')->to('table#list', table => 'Project');
$rest_r->get('/project/propagation/:project_id')->to('project_propagation#list');
+ $rest_r->get('/project_last_modified')->to('project#last_modified');
$rest_r->get('/rollout_server/:version')->to('rollout_server#list');
my $rest_operator_auth;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/MirrorCache-1.079/t/environ/13-mirror-management.sh new/MirrorCache-1.080/t/environ/13-mirror-management.sh
--- old/MirrorCache-1.079/t/environ/13-mirror-management.sh 2024-07-24 16:14:18.000000000 +0200
+++ new/MirrorCache-1.080/t/environ/13-mirror-management.sh 2024-08-01 10:38:57.000000000 +0200
@@ -21,19 +21,20 @@
# Update mirror urldir and sponsor
$mc/curl '/rest/server/2' \
-H 'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' \
- --data-raw 'id=2&urldir=/somedir&sponsor=SUSE&hostname=127.0.0.1:1314&country=eu&enabled=0'
+ --data-raw 'id=2&urldir=/somedir&sponsor=Kormányzati&hostname=127.0.0.1:1314&country=eu&enabled=0'
-$mc/sql_test SUSE == 'select sponsor from server where id = 2'
+$mc/sql_test Kormányzati == 'select sponsor from server where id = 2'
+$mc/curl /rest/server | grep Kormányzati
# Look for server_update event with both ids: who executed action and what was affected
-$mc/curl '/admin/auditlog/ajax?search\[value\]=event:server_update' | grep 'server_update' | grep '"user_id":-2' | grep '\\\"id\\\":\\\"2\\\"'
+$mc/curl '/admin/auditlog/ajax?search\[value\]=event:server_update' | grep 'server_update' | grep '"user_id":-2' | grep '\\"id\\":\\"2\\"'
# Delete mirror
$mc/curl '/rest/server/2' -X DELETE >/dev/null
$mc/curl '/rest/server/2' -X DELETE | grep 'error'
# Look for server_delete event with both ids: who executed action and what was affected
-$mc/curl '/admin/auditlog/ajax?search\[value\]=event:server_delete' | grep 'server_delete' | grep '"user_id":-2' | grep '\\\"id\\\":2'
+$mc/curl '/admin/auditlog/ajax?search\[value\]=event:server_delete' | grep 'server_delete' | grep '"user_id":-2' | grep '\\"id\\":2'
$mc/curl -X POST /logout
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/MirrorCache-1.079/t/environ/14-project-report.sh new/MirrorCache-1.080/t/environ/14-project-report.sh
--- old/MirrorCache-1.079/t/environ/14-project-report.sh 2024-07-24 16:14:18.000000000 +0200
+++ new/MirrorCache-1.080/t/environ/14-project-report.sh 2024-08-01 10:38:57.000000000 +0200
@@ -83,6 +83,10 @@
$mc/sql_test 2 == "select file_cnt from project where path = '/project2/folder1'"
$mc/sql_test 13 == "select size from project where path = '/project2/folder2'"
+lm=$($mc/curl /rest/project_last_modified?project=proj1)
+
+test "$lm" == "$(date +%s -r $mc/dt/project1/folder2/file1.1.dat)"
+
$mc/curl /report/mirrors | tidy --drop-empty-elements no | \
grep -A4 -F '<div class="repo">' | \
grep -A2 -F '"http://127.0.0.1:1304/project2/folder2">' | \
++++++ MirrorCache.obsinfo ++++++
--- /var/tmp/diff_new_pack.vq6sMZ/_old 2024-08-09 16:15:12.152280292 +0200
+++ /var/tmp/diff_new_pack.vq6sMZ/_new 2024-08-09 16:15:12.156280459 +0200
@@ -1,5 +1,5 @@
name: MirrorCache
-version: 1.079
-mtime: 1721830458
-commit: 1fd848f467a79f3c2697593716894e3ee3ea7238
+version: 1.080
+mtime: 1722501537
+commit: 584c1402d72e0d9782d6f7ccf5ef4a27f25ca82b
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package hyprland for openSUSE:Factory checked in at 2024-08-09 16:14:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/hyprland (Old)
and /work/SRC/openSUSE:Factory/.hyprland.new.7232 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "hyprland"
Fri Aug 9 16:14:37 2024 rev:26 rq:1192550 version:0.42.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/hyprland/hyprland.changes 2024-06-27 16:03:22.894785999 +0200
+++ /work/SRC/openSUSE:Factory/.hyprland.new.7232/hyprland.changes 2024-08-09 16:15:04.715969902 +0200
@@ -1,0 +2,203 @@
+Thu Aug 8 07:43:20 UTC 2024 - Florian "sp1rit" <sp1rit(a)disroot.org>
+
+- Update to version 0.42.0:
+ + At last, a very large update 0.42.0 has finally dropped!
+ + Notable changes:
+ - Wlroots has been dropped, and is no longer a dependency.
+ - Explicit sync support has been added and will be automatically
+ turned on/off depending on your setup. For some select nvidia
+ users, this might cause glitches. In such cases, disable it
+ with render:explicit_sync = false
+ - Old protocol implementations redone in our newer, more
+ memory-safe impl style.
+ - In-house XCursor implementation for legacy themes
+ - Tons and tons of fixes and performance improvements!
+ + Breaking changes:
+ - misc:no_direct_scanout -> render:direct_scanout
+ - fakefullscreen has been dropped in favor of the new
+ fullscreenstate dispatcher
+ + New features:
+ - config: add option to exit window while retaining fullscreen
+ (#516) (#6880)
+ - core: Add missing header for libc++ after e989a0b (#7158)
+ - core: add a destructor to CHyprOpenglImpl and avoid
+ wl_container_of undefined behaviour (#7101)
+ - crashreporter: add date and flags to crash report (#7028)
+ - debug: add Nvidia driver info (#6715)
+ - hyprpm: add short error code explanations
+ - internal: Add functions to hyprctl header (#6745)
+ - keybinds: add bindp and noshortcutsinhibit (#7017)
+ - keybinds: add safeguard to mousebinds (#7034)
+ - pluginapi: Add force reload of config at the end of plugin
+ initialization (#7099)
+ - pointer: change min cursor padding to 0 (#6027)
+ - socket2: Add windowtitlev2 event which includes the window
+ address (#6856)
+ - touch: add touch swipe invert config (#6940)
+ + Fixes:
+ - border: fixup infinite recursion
+ - compositor: fix general:extend_border_grab_area (#7214)
+ - compositor: fix log typos (#7111)
+ - configmgr: fix warning
+ - core/surface/buffer: Buffer lock/release fixes (#7110)
+ - core/surface: fixup a few pointer handling edge cases
+ - core: Fix crash on opening chromium (#6932)
+ - core: fix a few ubsan issues reported at exit of hyprland
+ (#6699)
+ - decorations: fix infinite recursion on no_gaps when only (#7169)
+ - drm-syncobj: fixup fd leak with timelines
+ - hyprctl: increase hyprctl timeout to 5s to fix #6801 (#7152)
+ - ime-relay: fix crash on nullptr surface focus
+ - input: Fix hyprctl switchxkblayout not actually changing layout
+ (#7070)
+ - input: fix capabilities enum types passed
+ - input: fix invalid usage of dev in setTouchDeviceConfigs
+ - input: fix keyboard leds with multiple keyboards (#7079)
+ - input: fix leds on kb creation (#7206)
+ - internal: fix fullscreen typos (#7134)
+ - keybinds: fix NoSymbol keybinds (#7199)
+ - keybinds: fix movewindow float to 0 (#6777)
+ - layersurface: fixup focus issues in onUnmap
+ - layout: fix dynamic rules not updating after setting fullscreen
+ (#7129)
+ - meson: fix wlroots-hyprland dep checks (for libliftoff patch to
+ work) (#6736)
+ - output: minor tearing fixes
+ - pointer: fix buffer crash (#7131)
+ - presentation-feedback: fix invalid values sent after aq merge
+ - renderer: Explicit sync fixes (#7151)
+ - renderer: fix a few xray regressions (#6855)
+ - renderer: fixup crashes on inaccessible files for bg
+ - renderer: fixup nvidia driver version checks
+ - renderer: partially revert previous xray fix (#6868)
+ - session: fix activate events being always treated as on (#6696)
+ - sessionLock: fix the check for locking a locked session (#6843)
+ - shortcutsInhibit: fix crash
+ - style: fix clang-format
+ - surface: fix zero_scaling xwayland damage
+ - surface: fixup logical damage size calculations
+ - toplevelexport: fix flipped r/b channels when sharing windows
+ (#6861)
+ - touch: fix touch swipe invert config (#7014)
+ - virtual-pointer: fixup virtual pointer warp events
+ - wayland/compositor: fixup buffer damage tracking for
+ wl_shm buffers
+ - wayland/compositor: fixup double buffer releases
+ - wayland/surface: fixup self-owning surface roles
+ - xdg-shell: fix xdg-positioner y-flip (#7094)
+ - xdg-shell: fixup unassigned wl surfaces to xdg surfaces
+ - xwayland: fix high cpu idle usage
+ - xwayland: fix setting title prop (#6809)
+ - xwayland: fixup WM_SIZE_HINTS handling according to ICCCM
+ - xwm: Fix xwayland black window bug after losing focus (#6966)
+ + Other:
+ - Meson: replace props.json with VERSION
+ - Meson: install config and wallpapers to DATADIR/hypr
+ - Completions: use only awk (#6763)
+ - Core: Move to aquamarine (#6608)
+ - compositor: ignore setting surface scanout if DS is disabled
+ - compositor: implement wayland socket handover (#6930)
+ - compositor: minor cleanups for fading out layers
+ - compositor: simplify getWindowFromSurface
+ - config: avoid using initial ws tracking for exec-once
+ - config: don't crash when getenv HOME returns null
+ - config: use hyprutils helper (#6891)
+ - core/surface: drop map/unmap events in member funcs
+ - core: Improve handling of window properties (#6776)
+ - core: Properly shutdown wl display (#7018)
+ - core: avoid locking 2 wayland sockets (#6971)
+ - core: emit unmap event after unmap in surface destroy
+ - core: move to steady_clock where applicable
+ - cursor: Better xcursor implementation (#7178)
+ - cursormgr: avoid scanning ill formed inherit (#7211)
+ - cursormgr: implement inheriting themes for xcursor (#7197)
+ - debug: dont manually unlock the lock_guard (#7210)
+ - debug: get rid of useless 1s in logs (#6969)
+ - egl: attempt a 3.2 egl context first
+ - egl: avoid setting debug mode and handle legacyrenderer
+ - egl: require gles 3.0 only
+ - egl: support getting the device via platform_device
+ - ext-foreign-toplevel: Send done after title and class (#6857)
+ - hyprctl completions: Use only awk rather than grep + awk
+ - hyprctl: link to much less libraries (#7212)
+ - hyprerror: minor stylistic changes
+ - hyprpm: execute all git commands regardless of fails
+ - hyprpm: init submodules after resets
+ - input: Emulate discrete scrolling from v120 events (#6881)
+ - input: don't simulate mouse movement on focus change in
+ follow_mouse = 2/3 if no_warps is false (#7015)
+ - input: refocus last window on keyboard unfocusable surfaces
+ - input: unify removing currentlyDraggedWindow (#7071)
+ - inputmgr: ensure we dont divide by zero (#6713)
+ - internal: refactor fullscreen states (#7104)
+ - internal: some minor fd/socket cleanups and make logging thread
+ safe (#7123)
+ - keybinds: allow toggling fullscreenstate (#7128)
+ - keybinds: handle monitor change in moveWindowIntoGroup (#7030)
+ - keybinds: handle null monitor in pinActive (#7122)
+ - keybinds: improve fullscreenstate toggling (#7174)
+ - keybinds: never switch to another monitor with per_monitor
+ (#6665)
+ - keybinds: remove toggleopaque (#7024)
+ - keyboard: properly update keymap state and fd on keymap changes
+ - keyboard: update xkb state after key event
+ - layer-shell: avoid crashes on unmap (#7092)
+ - layer-shell: properly map and unmap surface and propagate unmap
+ events
+ - layer-shell: validate exclusiveEdge and don't set it as top by
+ default (#7006)
+ - layershell: don't throw misaligned error on exclusive edge 0
+ - layersurface: null check for surface validity before unmap()
+ - layout: update workspace rules on layout change (#6878)
+ - meson: install wayland.hpp header
+ - opengl: destroy cairo image surface after use
+ - output: submit damage to kms
+ - pointer-constraint: set lifetime correctly
+ - pointer/hw: extend cursor swapchain to 3
+ - pointer: round position when rendering software cursors
+ - pointer: update geometry after unplug events
+ - pointer: use preMonitorCommit for resetting render state
+ - protocols: Move globalshortcuts impl (#7102)
+ - protocols: move screencopy and toplevel export to
+ hyprwayland-scanner (#7065)
+ - protocols: move text-input-v1 to hyprwayland-scanner (#7096)
+ - renderer/layer-shell: use explicitly set exclusiveEdge (#6984)
+ - renderer: Make shader time always count from zero (#6903)
+ - renderer: don't skip back background on preBlurQueued
+ - renderer: don't use the surface counter in popup iterations
+ - renderer: drastically optimize bg texture creation
+ - renderer: drop redundant spammy trace log
+ - renderer: guard layer in renderLayer
+ - renderer: untransform textures matching display transform
+ - renderer: use session lock alpha for rendering lacking locks
+ - seat: don't send keyboard data without a keyboard cap (#6697)
+ - session-lock: send locked after the lock screen is properly
+ rendered (#6850)
+ - sessionLock: don't sendLocked when session lock has already
+ been destoyed (#7150)
+ - sessionLock: focus lock on creation based on mouse position
+ (#6658)
+ - surface: avoid crashes on fading out layers
+ - surface: emit unmap before unmapping and releasing the buffers
+ - tablet: Send .frame() on .proximity_out() (#6761)
+ - touch: set lastInputTouch on every event
+ - virtualptr: allow binding to output
+ - virtualptr: map to entire screen if no output is provided
+ - wayland/compositor: drop pending buffer ref if synchronous
+ - wayland/compositor: release buffers on unmap
+ - wayland/output: avoid sending events to dead outputs
+ - window/ls: reset core signals after destroy
+ - window: drop ack requirement for applying pending reported size
+ - window: override noMaximize if new window takes over fullscreen
+ (#6812) (#6870)
+ - wl_seat: avoid sending events to objects without caps
+ - workspaces: don't try to reopen special workspaces (#6802)
+ - xcursor: rework bootleg xcursor (#7140)
+ - xdg-shell: completely rewrite xdg-positioner (#7067)
+ - xdg-shell: make xdg-positioner flip target greatest available
+ space (#7209)
+ - xwayland: avoid unfocusing on OR child focuses
+ - xwayland: break cyclic loop of parents (#6722)
+ - xwm: drop invalid case for clearing X focus
+
+-------------------------------------------------------------------
Old:
----
hyprland-0.41.2.tar.xz
New:
----
hyprland-0.42.0.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ hyprland.spec ++++++
--- /var/tmp/diff_new_pack.LyWmiI/_old 2024-08-09 16:15:06.396040028 +0200
+++ /var/tmp/diff_new_pack.LyWmiI/_new 2024-08-09 16:15:06.400040195 +0200
@@ -19,8 +19,10 @@
%bcond_without devel
+%define shortname hypr
+
Name: hyprland
-Version: 0.41.2
+Version: 0.42.0
Release: 0
Summary: Dynamic tiling Wayland compositor
License: BSD-3-Clause
@@ -32,23 +34,20 @@
BuildRequires: gcc-c++ >= 11
BuildRequires: git
BuildRequires: glslang-devel
-BuildRequires: jq
BuildRequires: meson
BuildRequires: pkgconfig
+BuildRequires: pkgconfig(aquamarine)
BuildRequires: pkgconfig(cairo)
BuildRequires: pkgconfig(egl)
BuildRequires: pkgconfig(gbm) >= 17.1.0
BuildRequires: pkgconfig(gl)
BuildRequires: pkgconfig(glesv2)
-BuildRequires: pkgconfig(hwdata)
BuildRequires: pkgconfig(hyprcursor) >= 0.1.9
BuildRequires: pkgconfig(hyprlang) >= 0.3.2
-BuildRequires: pkgconfig(hyprutils) >= 0.1.4
+BuildRequires: pkgconfig(hyprutils) >= 0.2.1
BuildRequires: pkgconfig(hyprwayland-scanner) >= 0.3.8
-BuildRequires: pkgconfig(libdisplay-info)
BuildRequires: pkgconfig(libdrm) >= 2.4.118
BuildRequires: pkgconfig(libinput) >= 1.14.0
-BuildRequires: pkgconfig(libseat) >= 0.2.0
BuildRequires: pkgconfig(libudev)
BuildRequires: pkgconfig(pango)
BuildRequires: pkgconfig(pangocairo)
@@ -63,6 +62,7 @@
BuildRequires: pkgconfig(xcb)
BuildRequires: pkgconfig(xcb-icccm)
BuildRequires: pkgconfig(xcb-renderutil)
+BuildRequires: pkgconfig(xcursor)
BuildRequires: pkgconfig(xkbcommon)
BuildRequires: pkgconfig(xwayland)
%if 0%{?suse_version}
@@ -108,6 +108,7 @@
Summary: Bash Completion for %{name}
Group: System/Shells
Requires: %{name}
+Requires: awk
Requires: bash-completion
Supplements: (%{name} and bash-completion)
BuildArch: noarch
@@ -119,6 +120,7 @@
Summary: Fish Completion for %{name}
Group: System/Shells
Requires: %{name}
+Requires: awk
Requires: fish
Supplements: (%{name} and fish)
BuildArch: noarch
@@ -130,6 +132,7 @@
Summary: ZSH Completion for %{name}
Group: System/Shells
Requires: %{name}
+Requires: awk
Requires: zsh
Supplements: (%{name} and zsh)
BuildArch: noarch
@@ -161,10 +164,6 @@
%install
%meson_install --tags runtime,man%{?with_devel:,devel}
-%if %{with devel}
-rm %{buildroot}/%{_libdir}/libwlroots.a %{buildroot}/%{_datadir}/pkgconfig/wlroots.pc
-rm -rf %{buildroot}/%{_includedir}/wlr/
-%endif
%files
%license LICENSE
@@ -172,8 +171,8 @@
%{_bindir}/Hyprland
%{_bindir}/hyprctl
%{_bindir}/hyprpm
-%dir %{_datadir}/%{name}
-%{_datadir}/%{name}/hyprland.conf
+%dir %{_datadir}/%{shortname}
+%{_datadir}/%{shortname}/hyprland.conf
%dir %{_datadir}/wayland-sessions/
%{_datadir}/wayland-sessions/%{name}.desktop
%dir %{_datadir}/xdg-desktop-portal
@@ -182,7 +181,7 @@
%{_mandir}/man1/hyprctl.*
%files wallpapers
-%{_datadir}/%{name}/wall*
+%{_datadir}/%{shortname}/wall*
%if %{with devel}
%files devel
++++++ hyprland-0.41.2.tar.xz -> hyprland-0.42.0.tar.xz ++++++
/work/SRC/openSUSE:Factory/hyprland/hyprland-0.41.2.tar.xz /work/SRC/openSUSE:Factory/.hyprland.new.7232/hyprland-0.42.0.tar.xz differ: char 15, line 1
++++++ opensuse-hyprpm-use-hyprland-devel-subpkg.patch ++++++
--- /var/tmp/diff_new_pack.LyWmiI/_old 2024-08-09 16:15:06.476043367 +0200
+++ /var/tmp/diff_new_pack.LyWmiI/_new 2024-08-09 16:15:06.484043701 +0200
@@ -1,4 +1,4 @@
-From 7c6a4e5b37a2e42a3f79fda15bb6116856928c93 Mon Sep 17 00:00:00 2001
+From c34dc954cc6388e9bc9ea608152ae4fc3f201bb1 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Florian=20sp1rit=E2=80=8B?= <sp1rit(a)disroot.org>
Date: Fri, 14 Jun 2024 23:43:46 +0200
Subject: [PATCH] openSUSE: Use hyprland-devel instead of downloading from
@@ -17,8 +17,8 @@
Signed-off-by: Florian "sp1rit" <sp1rit(a)disroot.org>
---
hyprpm/src/core/DataState.cpp | 2 +-
- hyprpm/src/core/PluginManager.cpp | 137 +++++-------------------------
- 2 files changed, 22 insertions(+), 117 deletions(-)
+ hyprpm/src/core/PluginManager.cpp | 140 +++++-------------------------
+ 2 files changed, 21 insertions(+), 121 deletions(-)
diff --git a/hyprpm/src/core/DataState.cpp b/hyprpm/src/core/DataState.cpp
index 61ad336..99dbadd 100644
@@ -34,7 +34,7 @@
void DataState::ensureStateStoreExists() {
diff --git a/hyprpm/src/core/PluginManager.cpp b/hyprpm/src/core/PluginManager.cpp
-index 848b9ca..253c024 100644
+index 6988547..036c705 100644
--- a/hyprpm/src/core/PluginManager.cpp
+++ b/hyprpm/src/core/PluginManager.cpp
@@ -14,6 +14,7 @@
@@ -45,14 +45,14 @@
#include <pwd.h>
#include <unistd.h>
-@@ -397,136 +398,27 @@ bool CPluginManager::updateHeaders(bool force) {
+@@ -406,134 +407,20 @@ bool CPluginManager::updateHeaders(bool force) {
const auto HLVER = getHyprlandVersion();
if (!hasDeps()) {
- std::cerr << "\n" << Colors::RED << "✖" << Colors::RESET << " Could not update. Dependencies not satisfied. Hyprpm requires: cmake, meson, cpio\n";
+ std::cerr << "\n" << Colors::RED << "✖" << Colors::RESET << " Could not update. Dependencies not satisfied. Hyprpm requires: hyprland-devel, cmake, meson, cpio\n";
return false;
-- }
+ }
-
- if (!std::filesystem::exists("/tmp/hyprpm")) {
- std::filesystem::create_directory("/tmp/hyprpm");
@@ -63,8 +63,8 @@
- std::cout << "\n" << std::string{Colors::GREEN} + "✔" + Colors::RESET + " Headers up to date.\n";
- return true;
- }
-+ }
-
+-
++
CProgressBar progress;
- progress.m_iMaxSteps = 5;
+ progress.m_iMaxSteps = 1;
@@ -110,12 +110,22 @@
- progress.m_szCurrentMessage = "Checking out sources";
- progress.print();
-
-- ret = execAndGet("cd " + WORKINGDIR + " && git checkout " + HLVER.branch + " 2>&1");
+- if (m_bVerbose)
+- progress.printMessageAbove(std::string{Colors::BLUE} + "[v] " + Colors::RESET + "will run: " + "cd " + WORKINGDIR + " && git checkout " + HLVER.hash + " 2>&1");
+-
+- ret = execAndGet("cd " + WORKINGDIR + " && git checkout " + HLVER.hash + " 2>&1");
+-
+- if (ret.contains("fatal: unable to read tree")) {
+- std::cerr << "\n"
+- << Colors::RED << "✖" << Colors::RESET
+- << " Could not checkout the running Hyprland commit. If you are on -git, try updating.\nYou can also try re-running hyprpm update with --no-shallow.\n";
+- return false;
+- }
-
- if (m_bVerbose)
- progress.printMessageAbove(std::string{Colors::BLUE} + "[v] " + Colors::RESET + "git returned (co): " + ret);
-
-- ret = execAndGet("cd " + WORKINGDIR + " && git rm subprojects/tracy && git submodule update --init 2>&1 && git reset --hard --recurse-submodules " + HLVER.hash);
+- ret = execAndGet("cd " + WORKINGDIR + " ; git rm subprojects/tracy ; git submodule update --init 2>&1 ; git reset --hard --recurse-submodules " + HLVER.hash);
-
- if (m_bVerbose)
- progress.printMessageAbove(std::string{Colors::BLUE} + "[v] " + Colors::RESET + "git returned (rs): " + ret);
@@ -123,8 +133,7 @@
- progress.printMessageAbove(std::string{Colors::GREEN} + "✔" + Colors::RESET + " checked out to running ver");
- progress.m_iSteps = 3;
- progress.m_szCurrentMessage = "Building Hyprland";
-+ progress.m_szCurrentMessage = "Checking headers";
- progress.print();
+- progress.print();
-
- progress.printMessageAbove(std::string{Colors::YELLOW} + "!" + Colors::RESET + " configuring Hyprland");
-
@@ -149,16 +158,12 @@
- return false;
- }
-
-- // le hack. Wlroots has to generate its build/include
-- ret = execAndGet("cd " + WORKINGDIR + "/subprojects/wlroots-hyprland && meson setup -Drenderers=gles2 -Dexamples=false build");
-- if (m_bVerbose)
-- progress.printMessageAbove(std::string{Colors::BLUE} + "[v] " + Colors::RESET + "meson returned: " + ret);
--
- progress.printMessageAbove(std::string{Colors::GREEN} + "✔" + Colors::RESET + " configured Hyprland");
- progress.m_iSteps = 4;
- progress.m_szCurrentMessage = "Installing sources";
-- progress.print();
--
++ progress.m_szCurrentMessage = "Checking headers";
+ progress.print();
+
- std::string cmd =
- std::format("sed -i -e \"s#PREFIX = /usr/local#PREFIX = {}#\" {}/Makefile && cd {} && make installheaders", DataState::getHeadersPath(), WORKINGDIR, WORKINGDIR);
- if (m_bVerbose)
@@ -172,7 +177,6 @@
- // remove build files
- std::filesystem::remove_all(WORKINGDIR);
-
-+
auto HEADERSVALID = headersValid();
if (HEADERSVALID == HEADERS_OK) {
progress.printMessageAbove(std::string{Colors::GREEN} + "✔" + Colors::RESET + " installed headers");
@@ -181,15 +185,16 @@
progress.m_szCurrentMessage = "Done!";
progress.print();
- std::cout << "\n";
+@@ -541,7 +428,7 @@ bool CPluginManager::updateHeaders(bool force) {
} else {
- progress.printMessageAbove(std::string{Colors::RED} + "✖" + Colors::RESET + " failed to install headers with error code " + std::to_string((int)HEADERSVALID));
+ progress.printMessageAbove(std::string{Colors::RED} + "✖" + Colors::RESET + " failed to install headers with error code " + std::to_string((int)HEADERSVALID) + " (" +
+ headerErrorShort(HEADERSVALID) + ")");
- progress.m_iSteps = 5;
+ progress.m_iSteps = 1;
progress.m_szCurrentMessage = "Failed";
progress.print();
-@@ -877,6 +769,19 @@ std::string CPluginManager::headerError(const eHeadersErrors err) {
+@@ -904,6 +791,19 @@ std::string CPluginManager::headerErrorShort(const eHeadersErrors err) {
}
bool CPluginManager::hasDeps() {
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package hyprutils for openSUSE:Factory checked in at 2024-08-09 16:14:27
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/hyprutils (Old)
and /work/SRC/openSUSE:Factory/.hyprutils.new.7232 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "hyprutils"
Fri Aug 9 16:14:27 2024 rev:3 rq:1192542 version:0.2.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/hyprutils/hyprutils.changes 2024-06-27 16:03:20.122684154 +0200
+++ /work/SRC/openSUSE:Factory/.hyprutils.new.7232/hyprutils.changes 2024-08-09 16:14:56.115610925 +0200
@@ -1,0 +2,21 @@
+Thu Aug 8 07:39:55 UTC 2024 - Florian "sp1rit" <sp1rit(a)disroot.org>
+
+- Update to version 0.2.1:
+ + A small, ABI-compatible update to add Edges.
+ + Other:
+ - Add Edges type and Box::extent() for its bottom right corner
+
+- Changes from version 0.2.0:
+ + A major release which also breaks ABI compat, as such bumping the
+ sover.
+ + Fixes:
+ - math: avoid assert fail in std::clamp in closestPoint
+ - math/region: add expand
+ - memory: do not release pointers after emitting a signal
+ - adjust right and bottom box edges when getting closest point
+ + Other:
+ - avoid undefined behaviour from downcasting ptr implentation
+ - string: respect removeEmpty when VarList input is empty
+ - path: add findConfig and dir utils
+
+-------------------------------------------------------------------
Old:
----
hyprutils-0.1.5.tar.xz
New:
----
hyprutils-0.2.1.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ hyprutils.spec ++++++
--- /var/tmp/diff_new_pack.v1tQsR/_old 2024-08-09 16:14:57.411665022 +0200
+++ /var/tmp/diff_new_pack.v1tQsR/_new 2024-08-09 16:14:57.411665022 +0200
@@ -17,10 +17,10 @@
#
-%define sover 0
+%define sover 1
Name: hyprutils
-Version: 0.1.5
+Version: 0.2.1
Release: 0
Summary: Utilities used across the Hypr* ecosystem
License: BSD-3-Clause
++++++ hyprutils-0.1.5.tar.xz -> hyprutils-0.2.1.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hyprutils-0.1.5/CMakeLists.txt new/hyprutils-0.2.1/CMakeLists.txt
--- old/hyprutils-0.1.5/CMakeLists.txt 2024-06-25 13:48:22.000000000 +0200
+++ new/hyprutils-0.2.1/CMakeLists.txt 2024-07-27 18:47:29.000000000 +0200
@@ -1,12 +1,13 @@
cmake_minimum_required(VERSION 3.19)
-set(HYPRUTILS_VERSION "0.1.5")
+file(READ "${CMAKE_SOURCE_DIR}/VERSION" VER_RAW)
+string(STRIP ${VER_RAW} HYPRUTILS_VERSION)
add_compile_definitions(HYPRUTILS_VERSION="${HYPRUTILS_VERSION}")
-project(hyprutils
- VERSION ${HYPRUTILS_VERSION}
- DESCRIPTION "Small C++ library for utilities used across the Hypr* ecosystem"
-)
+project(
+ hyprutils
+ VERSION ${HYPRUTILS_VERSION}
+ DESCRIPTION "Small C++ library for utilities used across the Hypr* ecosystem")
include(CTest)
include(GNUInstallDirs)
@@ -20,11 +21,11 @@
set(CMAKE_CXX_STANDARD 23)
if(CMAKE_BUILD_TYPE MATCHES Debug OR CMAKE_BUILD_TYPE MATCHES DEBUG)
- message(STATUS "Configuring hyprutils in Debug")
- add_compile_definitions(HYPRLAND_DEBUG)
+ message(STATUS "Configuring hyprutils in Debug")
+ add_compile_definitions(HYPRLAND_DEBUG)
else()
- add_compile_options(-O3)
- message(STATUS "Configuring hyprutils in Release")
+ add_compile_options(-O3)
+ message(STATUS "Configuring hyprutils in Release")
endif()
file(GLOB_RECURSE SRCFILES CONFIGURE_DEPENDS "src/*.cpp" "include/*.hpp")
@@ -34,14 +35,12 @@
pkg_check_modules(deps REQUIRED IMPORTED_TARGET pixman-1)
add_library(hyprutils SHARED ${SRCFILES})
-target_include_directories( hyprutils
- PUBLIC "./include"
- PRIVATE "./src"
-)
-set_target_properties(hyprutils PROPERTIES
- VERSION ${hyprutils_VERSION}
- SOVERSION 0
-)
+target_include_directories(
+ hyprutils
+ PUBLIC "./include"
+ PRIVATE "./src")
+set_target_properties(hyprutils PROPERTIES VERSION ${hyprutils_VERSION}
+ SOVERSION 1)
target_link_libraries(hyprutils PkgConfig::deps)
# tests
@@ -49,25 +48,38 @@
add_executable(hyprutils_memory "tests/memory.cpp")
target_link_libraries(hyprutils_memory PRIVATE hyprutils PkgConfig::deps)
-add_test(NAME "Memory" WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/tests COMMAND hyprutils_memory "memory")
+add_test(
+ NAME "Memory"
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/tests
+ COMMAND hyprutils_memory "memory")
add_dependencies(tests hyprutils_memory)
add_executable(hyprutils_string "tests/string.cpp")
target_link_libraries(hyprutils_string PRIVATE hyprutils PkgConfig::deps)
-add_test(NAME "String" WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/tests COMMAND hyprutils_string "string")
+add_test(
+ NAME "String"
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/tests
+ COMMAND hyprutils_string "string")
add_dependencies(tests hyprutils_string)
add_executable(hyprutils_signal "tests/signal.cpp")
target_link_libraries(hyprutils_signal PRIVATE hyprutils PkgConfig::deps)
-add_test(NAME "Signal" WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/tests COMMAND hyprutils_signal "signal")
+add_test(
+ NAME "Signal"
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/tests
+ COMMAND hyprutils_signal "signal")
add_dependencies(tests hyprutils_signal)
add_executable(hyprutils_math "tests/math.cpp")
target_link_libraries(hyprutils_math PRIVATE hyprutils PkgConfig::deps)
-add_test(NAME "Math" WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/tests COMMAND hyprutils_math "math")
+add_test(
+ NAME "Math"
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/tests
+ COMMAND hyprutils_math "math")
add_dependencies(tests hyprutils_math)
# Installation
install(TARGETS hyprutils)
install(DIRECTORY "include/hyprutils" DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
-install(FILES ${CMAKE_BINARY_DIR}/hyprutils.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
+install(FILES ${CMAKE_BINARY_DIR}/hyprutils.pc
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hyprutils-0.1.5/VERSION new/hyprutils-0.2.1/VERSION
--- old/hyprutils-0.1.5/VERSION 1970-01-01 01:00:00.000000000 +0100
+++ new/hyprutils-0.2.1/VERSION 2024-07-27 18:47:29.000000000 +0200
@@ -0,0 +1 @@
+0.2.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hyprutils-0.1.5/flake.lock new/hyprutils-0.2.1/flake.lock
--- old/hyprutils-0.1.5/flake.lock 2024-06-25 13:48:22.000000000 +0200
+++ new/hyprutils-0.2.1/flake.lock 2024-07-27 18:47:29.000000000 +0200
@@ -2,11 +2,11 @@
"nodes": {
"nixpkgs": {
"locked": {
- "lastModified": 1717602782,
- "narHash": "sha256-pL9jeus5QpX5R+9rsp3hhZ+uplVHscNJh8n8VpqscM0=",
+ "lastModified": 1721138476,
+ "narHash": "sha256-+W5eZOhhemLQxelojLxETfbFbc19NWawsXBlapYpqIA=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "e8057b67ebf307f01bdcc8fba94d94f75039d1f6",
+ "rev": "ad0b5eed1b6031efaed382844806550c3dcb4206",
"type": "github"
},
"original": {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hyprutils-0.1.5/flake.nix new/hyprutils-0.2.1/flake.nix
--- old/hyprutils-0.1.5/flake.nix 2024-06-25 13:48:22.000000000 +0200
+++ new/hyprutils-0.2.1/flake.nix 2024-07-27 18:47:29.000000000 +0200
@@ -23,13 +23,15 @@
(builtins.substring 4 2 longDate)
(builtins.substring 6 2 longDate)
]);
+
+ version = lib.removeSuffix "\n" (builtins.readFile ./VERSION);
in {
overlays = {
default = self.overlays.hyprutils;
hyprutils = final: prev: {
hyprutils = final.callPackage ./nix/default.nix {
stdenv = final.gcc13Stdenv;
- version = "0.pre" + "+date=" + (mkDate (self.lastModifiedDate or "19700101")) + "_" + (self.shortRev or "dirty");
+ version = version + "+date=" + (mkDate (self.lastModifiedDate or "19700101")) + "_" + (self.shortRev or "dirty");
};
hyprutils-with-tests = final.hyprutils.override {doCheck = true;};
};
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hyprutils-0.1.5/include/hyprutils/math/Box.hpp new/hyprutils-0.2.1/include/hyprutils/math/Box.hpp
--- old/hyprutils-0.1.5/include/hyprutils/math/Box.hpp 2024-06-25 13:48:22.000000000 +0200
+++ new/hyprutils-0.2.1/include/hyprutils/math/Box.hpp 2024-07-27 18:47:29.000000000 +0200
@@ -136,6 +136,12 @@
Vector2D size() const;
/**
+ * @brief Retrieves the size of the box offset by its position.
+ * @return Vector2D representing the bottom right extent of the box.
+ */
+ Vector2D extent() const;
+
+ /**
* @brief Finds the closest point within the box to a given vector.
* @param vec Vector from which to find the closest point.
* @return Vector2D representing the closest point within the box.
@@ -179,4 +185,4 @@
private:
CBox roundInternal();
};
-}
\ No newline at end of file
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hyprutils-0.1.5/include/hyprutils/math/Edges.hpp new/hyprutils-0.2.1/include/hyprutils/math/Edges.hpp
--- old/hyprutils-0.1.5/include/hyprutils/math/Edges.hpp 1970-01-01 01:00:00.000000000 +0100
+++ new/hyprutils-0.2.1/include/hyprutils/math/Edges.hpp 2024-07-27 18:47:29.000000000 +0200
@@ -0,0 +1,110 @@
+#pragma once
+#include <cstdint>
+
+namespace Hyprutils::Math {
+
+ /**
+ * @brief Flag set of box edges
+ */
+ class CEdges {
+ public:
+ enum eEdges : uint8_t {
+ NONE = 0,
+ TOP = 1,
+ LEFT = 2,
+ BOTTOM = 4,
+ RIGHT = 8,
+ };
+
+ CEdges() = default;
+ CEdges(eEdges edges) : m_edges(edges) {}
+ CEdges(uint8_t edges) : m_edges(static_cast<eEdges>(edges)) {}
+
+ bool operator==(const CEdges& other) {
+ return m_edges == other.m_edges;
+ }
+
+ CEdges operator|(const CEdges& other) {
+ return m_edges | other.m_edges;
+ }
+
+ CEdges operator&(const CEdges& other) {
+ return m_edges & other.m_edges;
+ }
+
+ CEdges operator^(const CEdges& other) {
+ return m_edges ^ other.m_edges;
+ }
+
+ void operator|=(const CEdges& other) {
+ m_edges = (*this | other).m_edges;
+ }
+
+ void operator&=(const CEdges& other) {
+ m_edges = (*this & other).m_edges;
+ }
+
+ void operator^=(const CEdges& other) {
+ m_edges = (*this ^ other).m_edges;
+ }
+
+ /**
+ * @return if the edge set contains the top edge.
+ */
+ bool top() {
+ return m_edges & TOP;
+ }
+
+ /**
+ * @return if the edge set contains the left edge.
+ */
+ bool left() {
+ return m_edges & LEFT;
+ }
+
+ /**
+ * @return if the edge set contains the bottom edge.
+ */
+ bool bottom() {
+ return m_edges & BOTTOM;
+ }
+
+ /**
+ * @return if the edge set contains the right edge.
+ */
+ bool right() {
+ return m_edges & RIGHT;
+ }
+
+ /**
+ * @param top The state the top edge should be set to.
+ */
+ void setTop(bool top) {
+ m_edges = static_cast<eEdges>((m_edges & ~TOP) | (TOP * top));
+ }
+
+ /**
+ * @param left The state the left edge should be set to.
+ */
+ void setLeft(bool left) {
+ m_edges = static_cast<eEdges>((m_edges & ~LEFT) | (LEFT * left));
+ }
+
+ /**
+ * @param bottom The state the bottom edge should be set to.
+ */
+ void setBottom(bool bottom) {
+ m_edges = static_cast<eEdges>((m_edges & ~BOTTOM) | (BOTTOM * bottom));
+ }
+
+ /**
+ * @param right The state the right edge should be set to.
+ */
+ void setRight(bool right) {
+ m_edges = static_cast<eEdges>((m_edges & ~RIGHT) | (RIGHT * right));
+ }
+
+ eEdges m_edges = NONE;
+ };
+
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hyprutils-0.1.5/include/hyprutils/math/Region.hpp new/hyprutils-0.2.1/include/hyprutils/math/Region.hpp
--- old/hyprutils-0.1.5/include/hyprutils/math/Region.hpp 2024-06-25 13:48:22.000000000 +0200
+++ new/hyprutils-0.2.1/include/hyprutils/math/Region.hpp 2024-07-27 18:47:29.000000000 +0200
@@ -49,6 +49,7 @@
CRegion& invert(const CBox& box);
CRegion& scale(float scale);
CRegion& scale(const Vector2D& scale);
+ CRegion& expand(double units);
CRegion& rationalize();
CBox getExtents();
bool containsPoint(const Vector2D& vec) const;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hyprutils-0.1.5/include/hyprutils/memory/SharedPtr.hpp new/hyprutils-0.2.1/include/hyprutils/memory/SharedPtr.hpp
--- old/hyprutils-0.1.5/include/hyprutils/memory/SharedPtr.hpp 2024-06-25 13:48:22.000000000 +0200
+++ new/hyprutils-0.2.1/include/hyprutils/memory/SharedPtr.hpp 2024-07-27 18:47:29.000000000 +0200
@@ -20,7 +20,7 @@
namespace CSharedPointer_ {
class impl_base {
public:
- virtual ~impl_base(){};
+ virtual ~impl_base() {};
virtual void inc() noexcept = 0;
virtual void dec() noexcept = 0;
@@ -31,6 +31,7 @@
virtual void destroy() noexcept = 0;
virtual bool destroying() noexcept = 0;
virtual bool dataNonNull() noexcept = 0;
+ virtual void* getData() noexcept = 0;
};
template <typename T>
@@ -107,6 +108,10 @@
}
virtual bool dataNonNull() noexcept {
+ return _data != nullptr;
+ }
+
+ virtual void* getData() noexcept {
return _data;
}
@@ -213,11 +218,11 @@
}
bool operator()(const CSharedPointer& lhs, const CSharedPointer& rhs) const {
- return (uintptr_t)lhs.impl_ < (uintptr_t)rhs.impl_;
+ return reinterpret_cast<uintptr_t>(lhs.impl_) < reinterpret_cast<uintptr_t>(rhs.impl_);
}
bool operator<(const CSharedPointer& rhs) const {
- return (uintptr_t)impl_ < (uintptr_t)rhs.impl_;
+ return reinterpret_cast<uintptr_t>(impl_) < reinterpret_cast<uintptr_t>(rhs.impl_);
}
T* operator->() const {
@@ -234,7 +239,7 @@
}
T* get() const {
- return (T*)(impl_ ? static_cast<CSharedPointer_::impl<T>*>(impl_)->_data : nullptr);
+ return impl_ ? static_cast<T*>(impl_->getData()) : nullptr;
}
unsigned int strongRef() const {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hyprutils-0.1.5/include/hyprutils/memory/WeakPtr.hpp new/hyprutils-0.2.1/include/hyprutils/memory/WeakPtr.hpp
--- old/hyprutils-0.1.5/include/hyprutils/memory/WeakPtr.hpp 2024-06-25 13:48:22.000000000 +0200
+++ new/hyprutils-0.2.1/include/hyprutils/memory/WeakPtr.hpp 2024-07-27 18:47:29.000000000 +0200
@@ -80,7 +80,7 @@
/* create a weak ptr from a shared ptr with assignment */
template <typename U>
validHierarchy<const CWeakPointer<U>&> operator=(const CSharedPointer<U>& rhs) {
- if ((uintptr_t)impl_ == (uintptr_t)rhs.impl_)
+ if (reinterpret_cast<uintptr_t>(impl_) == reinterpret_cast<uintptr_t>(rhs.impl_))
return *this;
decrementWeak();
@@ -139,15 +139,15 @@
}
bool operator()(const CWeakPointer& lhs, const CWeakPointer& rhs) const {
- return (uintptr_t)lhs.impl_ < (uintptr_t)rhs.impl_;
+ return reinterpret_cast<uintptr_t>(lhs.impl_) < reinterpret_cast<uintptr_t>(rhs.impl_);
}
bool operator<(const CWeakPointer& rhs) const {
- return (uintptr_t)impl_ < (uintptr_t)rhs.impl_;
+ return reinterpret_cast<uintptr_t>(impl_) < reinterpret_cast<uintptr_t>(rhs.impl_);
}
T* get() const {
- return (T*)(impl_ ? static_cast<CSharedPointer_::impl<T>*>(impl_)->_data : nullptr);
+ return impl_ ? static_cast<T*>(impl_->getData()) : nullptr;
}
T* operator->() const {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hyprutils-0.1.5/include/hyprutils/path/Path.hpp new/hyprutils-0.2.1/include/hyprutils/path/Path.hpp
--- old/hyprutils-0.1.5/include/hyprutils/path/Path.hpp 1970-01-01 01:00:00.000000000 +0100
+++ new/hyprutils-0.2.1/include/hyprutils/path/Path.hpp 2024-07-27 18:47:29.000000000 +0200
@@ -0,0 +1,42 @@
+#pragma once
+#include "../string/VarList.hpp"
+#include <string>
+#include <optional>
+#include <utility>
+
+namespace Hyprutils {
+ namespace Path {
+ /** Check whether a config in the form basePath/hypr/programName.conf exists.
+ @param basePath the path where the config will be searched
+ @param programName name of the program (and config file) to search for
+ */
+ bool checkConfigExists(const std::string basePath, const std::string programName);
+
+ /** Constructs a full config path given the basePath and programName.
+ @param basePath the path where the config hypr/programName.conf is located
+ @param programName name of the program (and config file)
+ */
+ std::string fullConfigPath(const std::string basePath, const std::string programName);
+
+ /** Retrieves the absolute path of the $HOME env variable.
+ */
+ std::optional<std::string> getHome();
+
+ /** Retrieves a CVarList of paths from the $XDG_CONFIG_DIRS env variable.
+ */
+ std::optional<String::CVarList> getXdgConfigDirs();
+
+ /** Retrieves the absolute path of the $XDG_CONFIG_HOME env variable.
+ */
+ std::optional<std::string> getXdgConfigHome();
+
+ /** Searches for a config according to the XDG Base Directory specification.
+ Returns a pair of the full path to a config and the base path.
+ Returns std::nullopt in case of a non-existent value.
+ @param programName name of the program (and config file)
+ */
+
+ using T = std::optional<std::string>;
+ std::pair<T, T> findConfig(const std::string programName);
+ }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hyprutils-0.1.5/include/hyprutils/string/VarList.hpp new/hyprutils-0.2.1/include/hyprutils/string/VarList.hpp
--- old/hyprutils-0.1.5/include/hyprutils/string/VarList.hpp 2024-06-25 13:48:22.000000000 +0200
+++ new/hyprutils-0.2.1/include/hyprutils/string/VarList.hpp 2024-07-27 18:47:29.000000000 +0200
@@ -12,7 +12,7 @@
@param delim if delimiter is 's', use std::isspace
@param removeEmpty remove empty args from argv
*/
- CVarList(const std::string& in, const size_t maxSize = 0, const char delim = ',', const bool removeEmpty = false);
+ CVarList(const std::string& in, const size_t lastArgNo = 0, const char delim = ',', const bool removeEmpty = false);
~CVarList() = default;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hyprutils-0.1.5/src/math/Box.cpp new/hyprutils-0.2.1/src/math/Box.cpp
--- old/hyprutils-0.1.5/src/math/Box.cpp 2024-06-25 13:48:22.000000000 +0200
+++ new/hyprutils-0.2.1/src/math/Box.cpp 2024-07-27 18:47:29.000000000 +0200
@@ -199,23 +199,35 @@
return {w, h};
}
+Vector2D Hyprutils::Math::CBox::extent() const {
+ return pos() + size();
+}
+
Vector2D Hyprutils::Math::CBox::closestPoint(const Vector2D& vec) const {
if (containsPoint(vec))
return vec;
- Vector2D nv = vec;
- nv.x = std::clamp(nv.x, x, x + w);
- nv.y = std::clamp(nv.y, y, y + h);
+ Vector2D nv = vec;
+ Vector2D maxPoint = {x + w - EPSILON, y + h - EPSILON};
+
+ if (x < maxPoint.x)
+ nv.x = std::clamp(nv.x, x, maxPoint.x);
+ else
+ nv.x = x;
+ if (y < maxPoint.y)
+ nv.y = std::clamp(nv.y, y, maxPoint.y);
+ else
+ nv.y = y;
if (std::fabs(nv.x - x) < EPSILON)
nv.x = x;
- else if (std::fabs(nv.x - (x + w)) < EPSILON)
- nv.x = x + w;
+ else if (std::fabs(nv.x - (maxPoint.x)) < EPSILON)
+ nv.x = maxPoint.x;
if (std::fabs(nv.y - y) < EPSILON)
nv.y = y;
- else if (std::fabs(nv.y - (y + h)) < EPSILON)
- nv.y = y + h;
+ else if (std::fabs(nv.y - (maxPoint.y)) < EPSILON)
+ nv.y = maxPoint.y;
return nv;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hyprutils-0.1.5/src/math/Region.cpp new/hyprutils-0.2.1/src/math/Region.cpp
--- old/hyprutils-0.1.5/src/math/Region.cpp 2024-06-25 13:48:22.000000000 +0200
+++ new/hyprutils-0.2.1/src/math/Region.cpp 2024-07-27 18:47:29.000000000 +0200
@@ -112,6 +112,19 @@
return *this;
}
+CRegion& Hyprutils::Math::CRegion::expand(double units) {
+ auto rects = getRects();
+
+ clear();
+
+ for (auto& r : rects) {
+ CBox b{(double)r.x1 - units, (double)r.y1 - units, (double)r.x2 - r.x1 + units * 2, (double)r.y2 - r.y1 + units * 2};
+ add(b);
+ }
+
+ return *this;
+}
+
CRegion& Hyprutils::Math::CRegion::rationalize() {
intersect(CBox{-MAX_REGION_SIDE, -MAX_REGION_SIDE, MAX_REGION_SIDE * 2, MAX_REGION_SIDE * 2});
return *this;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hyprutils-0.1.5/src/path/Path.cpp new/hyprutils-0.2.1/src/path/Path.cpp
--- old/hyprutils-0.1.5/src/path/Path.cpp 1970-01-01 01:00:00.000000000 +0100
+++ new/hyprutils-0.2.1/src/path/Path.cpp 2024-07-27 18:47:29.000000000 +0200
@@ -0,0 +1,81 @@
+#include <hyprutils/path/Path.hpp>
+#include <hyprutils/string/VarList.hpp>
+#include <filesystem>
+
+using namespace Hyprutils;
+
+namespace Hyprutils::Path {
+ std::string fullConfigPath(std::string basePath, std::string programName) {
+ return basePath + "/hypr/" + programName + ".conf";
+ }
+
+ bool checkConfigExists(std::string basePath, std::string programName) {
+ return std::filesystem::exists(fullConfigPath(basePath, programName));
+ }
+
+ std::optional<std::string> getHome() {
+ static const auto homeDir = getenv("HOME");
+
+ if (!homeDir || !std::filesystem::path(homeDir).is_absolute())
+ return std::nullopt;
+
+ return std::string(homeDir).append("/.config");
+ }
+
+ std::optional<String::CVarList> getXdgConfigDirs() {
+ static const auto xdgConfigDirs = getenv("XDG_CONFIG_DIRS");
+
+ if (!xdgConfigDirs)
+ return std::nullopt;
+
+ static const auto xdgConfigDirsList = String::CVarList(xdgConfigDirs, 0, ':');
+
+ return xdgConfigDirsList;
+ }
+
+ std::optional<std::string> getXdgConfigHome() {
+ static const auto xdgConfigHome = getenv("XDG_CONFIG_HOME");
+
+ if (!xdgConfigHome || !std::filesystem::path(xdgConfigHome).is_absolute())
+ return std::nullopt;
+
+ return xdgConfigHome;
+ }
+
+ using T = std::optional<std::string>;
+ std::pair<T, T> findConfig(std::string programName) {
+ bool xdgConfigHomeExists = false;
+ static const auto xdgConfigHome = getXdgConfigHome();
+ if (xdgConfigHome.has_value()) {
+ xdgConfigHomeExists = true;
+ if (checkConfigExists(xdgConfigHome.value(), programName))
+ return std::make_pair(fullConfigPath(xdgConfigHome.value(), programName), xdgConfigHome);
+ }
+
+ bool homeExists = false;
+ static const auto home = getHome();
+ if (home.has_value()) {
+ homeExists = true;
+ if (checkConfigExists(home.value(), programName))
+ return std::make_pair(fullConfigPath(home.value(), programName), home);
+ }
+
+ static const auto xdgConfigDirs = getXdgConfigDirs();
+ if (xdgConfigDirs.has_value()) {
+ for (auto dir : xdgConfigDirs.value()) {
+ if (checkConfigExists(dir, programName))
+ return std::make_pair(fullConfigPath(dir, programName), std::nullopt);
+ }
+ }
+
+ if (checkConfigExists("/etc/xdg", programName))
+ return std::make_pair(fullConfigPath("/etc/xdg", programName), std::nullopt);
+
+ if (xdgConfigHomeExists)
+ return std::make_pair(std::nullopt, xdgConfigHome);
+ else if (homeExists)
+ return std::make_pair(std::nullopt, home);
+
+ return std::make_pair(std::nullopt, std::nullopt);
+ }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hyprutils-0.1.5/src/signal/Signal.cpp new/hyprutils-0.2.1/src/signal/Signal.cpp
--- old/hyprutils-0.1.5/src/signal/Signal.cpp 2024-06-25 13:48:22.000000000 +0200
+++ new/hyprutils-0.2.1/src/signal/Signal.cpp 2024-07-27 18:47:29.000000000 +0200
@@ -9,14 +9,10 @@
#define WP CWeakPointer
void Hyprutils::Signal::CSignal::emit(std::any data) {
- bool dirty = false;
-
std::vector<SP<CSignalListener>> listeners;
for (auto& l : m_vListeners) {
- if (l.expired()) {
- dirty = true;
+ if (l.expired())
continue;
- }
listeners.emplace_back(l.lock());
}
@@ -29,10 +25,9 @@
for (auto& l : listeners) {
// if there is only one lock, it means the event is only held by the listeners
// vector and was removed during our iteration
- if (l.strongRef() == 1) {
- dirty = true;
+ if (l.strongRef() == 1)
continue;
- }
+
l->emit(data);
}
@@ -43,13 +38,17 @@
// release SPs
listeners.clear();
- if (dirty)
- std::erase_if(m_vListeners, [](const auto& other) { return other.expired(); });
+ // we cannot release any expired refs here as one of the listeners could've removed this object and
+ // as such we'd be doing a UAF
}
CHyprSignalListener Hyprutils::Signal::CSignal::registerListener(std::function<void(std::any)> handler) {
CHyprSignalListener listener = makeShared<CSignalListener>(handler);
m_vListeners.emplace_back(listener);
+
+ // housekeeping: remove any stale listeners
+ std::erase_if(m_vListeners, [](const auto& other) { return other.expired(); });
+
return listener;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hyprutils-0.1.5/src/string/VarList.cpp new/hyprutils-0.2.1/src/string/VarList.cpp
--- old/hyprutils-0.1.5/src/string/VarList.cpp 2024-06-25 13:48:22.000000000 +0200
+++ new/hyprutils-0.2.1/src/string/VarList.cpp 2024-07-27 18:47:29.000000000 +0200
@@ -6,7 +6,7 @@
using namespace Hyprutils::String;
Hyprutils::String::CVarList::CVarList(const std::string& in, const size_t lastArgNo, const char delim, const bool removeEmpty) {
- if (in.empty())
+ if (!removeEmpty && in.empty())
m_vArgs.emplace_back("");
std::string args{in};
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package MozillaThunderbird for openSUSE:Factory checked in at 2024-08-09 16:14:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/MozillaThunderbird (Old)
and /work/SRC/openSUSE:Factory/.MozillaThunderbird.new.7232 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "MozillaThunderbird"
Fri Aug 9 16:14:05 2024 rev:340 rq:1192519 version:115.14.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/MozillaThunderbird/MozillaThunderbird.changes 2024-07-15 19:49:21.491859962 +0200
+++ /work/SRC/openSUSE:Factory/.MozillaThunderbird.new.7232/MozillaThunderbird.changes 2024-08-09 16:14:38.194862915 +0200
@@ -1,0 +2,24 @@
+Fri Aug 2 07:08:03 UTC 2024 - Wolfgang Rosenauer <wr(a)rosenauer.org>
+
+- Mozilla Thunderbird 115.14.0
+ * When using an external installation of GnuPG, Thunderbird
+ occassionally sent/received corrupted messages (bmo#1898832)
+ * Users of external GnuPG were unable to decrypt incorrectly
+ encoded messages (bmo#1906903)
+ MFSA 2024-38 (bsc#1228648)
+ * CVE-2024-7519 (bmo#1902307)
+ Out of bounds memory access in graphics shared memory handling
+ * CVE-2024-7521 (bmo#1904644)
+ Incomplete WebAssembly exception handing
+ * CVE-2024-7522 (bmo#1906727)
+ Out of bounds read in editor component
+ * CVE-2024-7525 (bmo#1909298)
+ Missing permission check when creating a StreamFilter
+ * CVE-2024-7526 (bmo#1910306)
+ Uninitialized memory used by WebGL
+ * CVE-2024-7527 (bmo#1871303)
+ Use-after-free in JavaScript garbage collection
+ * CVE-2024-7529 (bmo#1903187)
+ Document content could partially obscure security prompts
+
+-------------------------------------------------------------------
Old:
----
l10n-115.13.0.tar.xz
thunderbird-115.13.0.source.tar.xz
thunderbird-115.13.0.source.tar.xz.asc
New:
----
l10n-115.14.0.tar.xz
thunderbird-115.14.0.source.tar.xz
thunderbird-115.14.0.source.tar.xz.asc
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ MozillaThunderbird.spec ++++++
--- /var/tmp/diff_new_pack.7v39vj/_old 2024-08-09 16:14:55.555587549 +0200
+++ /var/tmp/diff_new_pack.7v39vj/_new 2024-08-09 16:14:55.559587717 +0200
@@ -29,8 +29,8 @@
# major 69
# mainver %%major.99
%define major 115
-%define mainver %major.13.0
-%define orig_version 115.13.0
+%define mainver %major.14.0
+%define orig_version 115.14.0
%define orig_suffix %nil
%define update_channel release
%define source_prefix thunderbird-%{orig_version}
++++++ l10n-115.13.0.tar.xz -> l10n-115.14.0.tar.xz ++++++
/work/SRC/openSUSE:Factory/MozillaThunderbird/l10n-115.13.0.tar.xz /work/SRC/openSUSE:Factory/.MozillaThunderbird.new.7232/l10n-115.14.0.tar.xz differ: char 15, line 1
++++++ tar_stamps ++++++
--- /var/tmp/diff_new_pack.7v39vj/_old 2024-08-09 16:14:55.807598069 +0200
+++ /var/tmp/diff_new_pack.7v39vj/_new 2024-08-09 16:14:55.811598235 +0200
@@ -1,11 +1,11 @@
PRODUCT="thunderbird"
CHANNEL="esr115"
-VERSION="115.13.0"
+VERSION="115.14.0"
VERSION_SUFFIX=""
-PREV_VERSION="115.12.2"
+PREV_VERSION="115.13.0"
PREV_VERSION_SUFFIX=""
#SKIP_LOCALES="" # Uncomment to skip l10n and compare-locales-generation
RELEASE_REPO="https://hg.mozilla.org/releases/comm-esr115"
-RELEASE_TAG="3b9cd9eb5bde998775c0020e296f9137c7cd6033"
-RELEASE_TIMESTAMP="20240709183211"
+RELEASE_TAG="99f915f469c83ab9f535e41cce590e44f6ccfa46"
+RELEASE_TIMESTAMP="20240801155430"
++++++ thunderbird-115.13.0.source.tar.xz -> thunderbird-115.14.0.source.tar.xz ++++++
/work/SRC/openSUSE:Factory/MozillaThunderbird/thunderbird-115.13.0.source.tar.xz /work/SRC/openSUSE:Factory/.MozillaThunderbird.new.7232/thunderbird-115.14.0.source.tar.xz differ: char 15, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package glibc for openSUSE:Factory checked in at 2024-08-09 16:13:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/glibc (Old)
and /work/SRC/openSUSE:Factory/.glibc.new.7232 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "glibc"
Fri Aug 9 16:13:50 2024 rev:294 rq:1190421 version:2.40
Changes:
--------
--- /work/SRC/openSUSE:Factory/glibc/glibc.changes 2024-06-03 17:42:49.197611330 +0200
+++ /work/SRC/openSUSE:Factory/.glibc.new.7232/glibc.changes 2024-08-09 16:13:56.517123291 +0200
@@ -1,0 +2,36 @@
+Mon Jul 29 07:50:31 UTC 2024 - Andreas Schwab <schwab(a)suse.de>
+
+- Update to glibc 2.40
+ * The <stdbit.h> header type-generic macros have been changed when using
+ GCC 14.1 or later to use __builtin_stdc_bit_ceil etc. built-in functions
+ * The GNU C Library now supports a feature test macro _ISOC23_SOURCE to
+ enable features from the ISO C23 standard
+ * The ISO C23 function families introduced in TS
+ 18661-4:2015 are now supported in <math.h>
+ * A new tunable, glibc.rtld.enable_secure, can be used to run a program
+ as if it were a setuid process
+ * On Linux, the epoll header was updated to include epoll ioctl definitions
+ and the related structure added in Linux kernel 6.9
+ * The fortify functionality has been significantly enhanced for building
+ programs with clang against the GNU C Library
+ * Many functions have been added to the vector library for aarch64
+ * On x86, memset can now use non-temporal stores to improve the performance
+ of large writes
+ * Architectures which use a 32-bit seconds-since-epoch field in struct
+ lastlog, struct utmp, struct utmpx (such as i386, powerpc64le, rv32,
+ rv64, x86-64) switched from a signed to an unsigned type for that
+ field
+ * __rseq_size now denotes the size of the active rseq area (20 bytes
+ initially), not the size of struct rseq (32 bytes initially).
+- arm-dl-start-user.patch, duplocale-global-locale.patch,
+ elf-parse-tunables.patch,
+ glibc-CVE-2024-33599-nscd-Stack-based-buffer-overflow-in-n.patch,
+ glibc-CVE-2024-33600-nscd-Avoid-null-pointer-crashes-after.patch,
+ glibc-CVE-2024-33600-nscd-Do-not-send-missing-not-found-re.patch,
+ glibc-CVE-2024-33601-CVE-2024-33602-nscd-netgroup-Use-two.patch,
+ iconv-iso-2022-cn-ext.patch, nscd-netgroup-cache-timeout.patch,
+ s390-clone-error-clobber-r7.patch, sigisemptyset.patch,
+ stdbit-builtins.patch, utmp-time-bits.patch: Removed
+- glibc-2.3.90-langpackdir.diff: Rediff
+
+-------------------------------------------------------------------
@@ -5,3 +41,3 @@
- glibc-<targettype>: the package was merged in the baselibs.conf
- case, so the capability is there. Steam for one has a requires
- on the symbol (boo#1225809).
+ glibc-gconv-modules-extra-<targettype>: the package was merged in the
+ baselibs.conf case, so the capability is there. Steam for one has a
+ requires on the symbol (boo#1225809).
Old:
----
arm-dl-start-user.patch
duplocale-global-locale.patch
elf-parse-tunables.patch
glibc-2.39.tar.xz
glibc-2.39.tar.xz.sig
glibc-CVE-2024-33599-nscd-Stack-based-buffer-overflow-in-n.patch
glibc-CVE-2024-33600-nscd-Avoid-null-pointer-crashes-after.patch
glibc-CVE-2024-33600-nscd-Do-not-send-missing-not-found-re.patch
glibc-CVE-2024-33601-CVE-2024-33602-nscd-netgroup-Use-two.patch
iconv-iso-2022-cn-ext.patch
nscd-netgroup-cache-timeout.patch
s390-clone-error-clobber-r7.patch
sigisemptyset.patch
stdbit-builtins.patch
utmp-time-bits.patch
New:
----
glibc-2.40.tar.xz
glibc-2.40.tar.xz.sig
BETA DEBUG BEGIN:
Old: initially), not the size of struct rseq (32 bytes initially).
- arm-dl-start-user.patch, duplocale-global-locale.patch,
elf-parse-tunables.patch,
Old: initially), not the size of struct rseq (32 bytes initially).
- arm-dl-start-user.patch, duplocale-global-locale.patch,
elf-parse-tunables.patch,
Old:- arm-dl-start-user.patch, duplocale-global-locale.patch,
elf-parse-tunables.patch,
glibc-CVE-2024-33599-nscd-Stack-based-buffer-overflow-in-n.patch,
Old: elf-parse-tunables.patch,
glibc-CVE-2024-33599-nscd-Stack-based-buffer-overflow-in-n.patch,
glibc-CVE-2024-33600-nscd-Avoid-null-pointer-crashes-after.patch,
Old: glibc-CVE-2024-33599-nscd-Stack-based-buffer-overflow-in-n.patch,
glibc-CVE-2024-33600-nscd-Avoid-null-pointer-crashes-after.patch,
glibc-CVE-2024-33600-nscd-Do-not-send-missing-not-found-re.patch,
Old: glibc-CVE-2024-33600-nscd-Avoid-null-pointer-crashes-after.patch,
glibc-CVE-2024-33600-nscd-Do-not-send-missing-not-found-re.patch,
glibc-CVE-2024-33601-CVE-2024-33602-nscd-netgroup-Use-two.patch,
Old: glibc-CVE-2024-33600-nscd-Do-not-send-missing-not-found-re.patch,
glibc-CVE-2024-33601-CVE-2024-33602-nscd-netgroup-Use-two.patch,
iconv-iso-2022-cn-ext.patch, nscd-netgroup-cache-timeout.patch,
Old: glibc-CVE-2024-33601-CVE-2024-33602-nscd-netgroup-Use-two.patch,
iconv-iso-2022-cn-ext.patch, nscd-netgroup-cache-timeout.patch,
s390-clone-error-clobber-r7.patch, sigisemptyset.patch,
Old: glibc-CVE-2024-33601-CVE-2024-33602-nscd-netgroup-Use-two.patch,
iconv-iso-2022-cn-ext.patch, nscd-netgroup-cache-timeout.patch,
s390-clone-error-clobber-r7.patch, sigisemptyset.patch,
Old: iconv-iso-2022-cn-ext.patch, nscd-netgroup-cache-timeout.patch,
s390-clone-error-clobber-r7.patch, sigisemptyset.patch,
stdbit-builtins.patch, utmp-time-bits.patch: Removed
Old: iconv-iso-2022-cn-ext.patch, nscd-netgroup-cache-timeout.patch,
s390-clone-error-clobber-r7.patch, sigisemptyset.patch,
stdbit-builtins.patch, utmp-time-bits.patch: Removed
Old: s390-clone-error-clobber-r7.patch, sigisemptyset.patch,
stdbit-builtins.patch, utmp-time-bits.patch: Removed
- glibc-2.3.90-langpackdir.diff: Rediff
Old: s390-clone-error-clobber-r7.patch, sigisemptyset.patch,
stdbit-builtins.patch, utmp-time-bits.patch: Removed
- glibc-2.3.90-langpackdir.diff: Rediff
BETA DEBUG END:
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ glibc.spec ++++++
--- /var/tmp/diff_new_pack.NSuC45/_old 2024-08-09 16:13:58.465204603 +0200
+++ /var/tmp/diff_new_pack.NSuC45/_new 2024-08-09 16:13:58.465204603 +0200
@@ -152,7 +152,7 @@
Summary: Standard Shared Libraries (from the GNU C Library)
License: GPL-2.0-or-later AND LGPL-2.1-or-later AND LGPL-2.1-or-later WITH GCC-exception-2.0
Group: System/Libraries
-Version: 2.39
+Version: 2.40
Release: 0
%if %{without snapshot}
%define git_id ef321e23c2
@@ -303,32 +303,6 @@
###
# Patches from upstream
###
-# PATCH-FIX-UPSTREAM arm: Remove wrong ldr from _dl_start_user (BZ #31339)
-Patch1000: arm-dl-start-user.patch
-# PATCH-FIX-UPSTREAM S390: Do not clobber r7 in clone (BZ #31402)
-Patch1001: s390-clone-error-clobber-r7.patch
-# PATCH-FIX-UPSTREAM duplocale: protect use of global locale (BZ #23970)
-Patch1002: duplocale-global-locale.patch
-# PATCH-FIX-UPSTREAM linux/sigsetops: fix type confusion (BZ #31468)
-Patch1003: sigisemptyset.patch
-# PATCH-FIX-UPSTREAM Use gcc __builtin_stdc_* builtins in stdbit.h if possible
-Patch1004: stdbit-builtins.patch
-# PATCH-FIX-UPSTREAM iconv: ISO-2022-CN-EXT: fix out-of-bound writes when writing escape sequence (CVE-2024-2961)
-Patch1005: iconv-iso-2022-cn-ext.patch
-# PATCH-FIX-UPSTREAM login: structs utmp, utmpx, lastlog _TIME_BITS independence (BZ #30701)
-Patch1006: utmp-time-bits.patch
-# PATCH-FIX-UPSTREAM elf: Only process multiple tunable once (BZ #31686)
-Patch1007: elf-parse-tunables.patch
-# PATCH-FIX-UPSTREAM nscd: Stack-based buffer overflow in netgroup cache (CVE-2024-33599, BZ #31677)
-Patch1008: glibc-CVE-2024-33599-nscd-Stack-based-buffer-overflow-in-n.patch
-# PATCH-FIX-UPSTREAM nscd: Do not send missing not found response in addgetnetgrentX (CVE-2024-33600, BZ #31678)
-Patch1009: glibc-CVE-2024-33600-nscd-Do-not-send-missing-not-found-re.patch
-# PATCH-FIX-UPSTREAM nscd: Avoid null pointer crashes after notfound response (CVE-2024-33600, BZ #31678)
-Patch1010: glibc-CVE-2024-33600-nscd-Avoid-null-pointer-crashes-after.patch
-# PATCH-FIX-UPSTREAM nscd netgroup: Use two buffers in addgetnetgrentX (CVE-2024-33601, CVE-2024-33602, BZ #31680)
-Patch1011: glibc-CVE-2024-33601-CVE-2024-33602-nscd-netgroup-Use-two.patch
-# PATCH-FIX-UPSTREAM nscd: Use time_t for return type of addgetnetgrentX (CVE-2024-33602)
-Patch1012: nscd-netgroup-cache-timeout.patch
%endif
###
++++++ glibc-2.3.90-langpackdir.diff ++++++
--- /var/tmp/diff_new_pack.NSuC45/_old 2024-08-09 16:13:58.577209278 +0200
+++ /var/tmp/diff_new_pack.NSuC45/_new 2024-08-09 16:13:58.585209613 +0200
@@ -1,24 +1,3 @@
-Index: glibc-2.38/debug/strcpy_chk.c
-===================================================================
---- glibc-2.38.orig/debug/strcpy_chk.c
-+++ glibc-2.38/debug/strcpy_chk.c
-@@ -31,3 +31,4 @@ __strcpy_chk (char *dest, const char *sr
-
- return memcpy (dest, src, len + 1);
- }
-+libc_hidden_builtin_def (__strcpy_chk)
-Index: glibc-2.38/include/string.h
-===================================================================
---- glibc-2.38.orig/include/string.h
-+++ glibc-2.38/include/string.h
-@@ -213,6 +213,7 @@ libc_hidden_builtin_proto (__memcpy_chk)
- libc_hidden_builtin_proto (__memmove_chk)
- libc_hidden_builtin_proto (__mempcpy_chk)
- libc_hidden_builtin_proto (__memset_chk)
-+libc_hidden_builtin_proto (__strcpy_chk)
- libc_hidden_builtin_proto (__stpcpy_chk)
- libc_hidden_builtin_proto (__strncpy_chk)
-
Index: glibc-2.38/intl/loadmsgcat.c
===================================================================
--- glibc-2.38.orig/intl/loadmsgcat.c
++++++ glibc-2.39.tar.xz -> glibc-2.40.tar.xz ++++++
/work/SRC/openSUSE:Factory/glibc/glibc-2.39.tar.xz /work/SRC/openSUSE:Factory/.glibc.new.7232/glibc-2.40.tar.xz differ: char 27, line 1
++++++ glibc.keyring ++++++
--- /var/tmp/diff_new_pack.NSuC45/_old 2024-08-09 16:13:58.665212952 +0200
+++ /var/tmp/diff_new_pack.NSuC45/_new 2024-08-09 16:13:58.669213119 +0200
@@ -188,138 +188,6 @@
DxXIOrZyOO3jtbtsTYR/VrsdK9sAn0lrUm/jZKWyvK6V1CCA3TwXyvLQ
=dSXY
-----END PGP PUBLIC KEY BLOCK-----
-GPG keys of Siddhesh Poyarekar <siddhesh>
------BEGIN PGP PUBLIC KEY BLOCK-----
-
-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
-TKN3JdfTyacfNU4=
-=IcJn
------END PGP PUBLIC KEY BLOCK-----
GPG keys of Carlos O'Donell <codonell>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1
@@ -645,6 +513,138 @@
=fZUN
-----END PGP PUBLIC KEY BLOCK-----
+GPG keys of Siddhesh Poyarekar <siddhesh>
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+
+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
+TKN3JdfTyacfNU4=
+=IcJn
+-----END PGP PUBLIC KEY BLOCK-----
GPG keys of Eric Blake <ericb>
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.10 (GNU/Linux)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package obs-service-tar_scm for openSUSE:Factory checked in at 2024-08-09 16:13:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/obs-service-tar_scm (Old)
and /work/SRC/openSUSE:Factory/.obs-service-tar_scm.new.7232 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "obs-service-tar_scm"
Fri Aug 9 16:13:43 2024 rev:82 rq:1192607 version:0.10.46
Changes:
--------
--- /work/SRC/openSUSE:Factory/obs-service-tar_scm/obs-service-tar_scm.changes 2024-07-01 11:19:28.857116471 +0200
+++ /work/SRC/openSUSE:Factory/.obs-service-tar_scm.new.7232/obs-service-tar_scm.changes 2024-08-09 16:13:47.172733258 +0200
@@ -1,0 +2,53 @@
+Thu Aug 01 12:57:19 UTC 2024 - adrian(a)suse.de
+
+- Update to version 0.10.46:
+ * [dist] fix BuildRequires for older distros like SLE12
+
+-------------------------------------------------------------------
+Thu Aug 01 09:48:25 UTC 2024 - adrian(a)suse.de
+
+- Update to version 0.10.45:
+ * [dist] fix shebang substitution in spec for py2
+
+-------------------------------------------------------------------
+Wed Jul 31 09:20:54 UTC 2024 - adrian(a)suse.de
+
+- Update to version 0.10.44:
+ * import submit request change
+ * Support updating submodules to main branch
+ * do not skip "--reference" if package-meta ...
+ * cpio: Do not follow symlinks in 'touch'
+ * Support URL hostname in keyring
+ * gbp: use --git-export
+ * Update debian/changelog for 0.10.43
+ * disable compile python in debian package
+ * update dist/debian.dsc to match debian packaging
+ * Update debian debhelper dependency
+ * Fix description-synopsis-starts-with-article
+ * Fix priority-extra-is-replaced-by-priority-optional
+ * Debian compat from 8 to 10
+ * Debian X-Python version no longer needed
+ * Fix Lintian error about missing python3 dep
+ * enable the GBP service
+ * Fixed filtering of include/exclude when topdir has escape characters.
+ * Fix setting svn credentials in the command line
+
+-------------------------------------------------------------------
+Wed Jul 31 09:06:24 UTC 2024 - Adrian Schröter <adrian(a)suse.de>
+
+- update to version 0.10.44:
+ * Support updating submodules to main branch
+ * Debian packaging for gbp service
+ * do not skip "--reference" if package-meta is enabled and git's partial clone is used.
+ * Fixed filtering of include/exclude when topdir has escape characters.
+ * Fix setting svn credentials in the command line
+ * cpio: Do not follow symlinks in 'touch'
+ * Support URL hostname in keyring
+ * debian package updates
+
+-------------------------------------------------------------------
+Thu Jul 25 19:52:48 UTC 2024 - Bjørn Lie <bjorn.lie(a)gmail.com>
+
+- "Downgrade" bzr, mercurial and subversion Recommends to Suggests.
+
+-------------------------------------------------------------------
Old:
----
obs-service-tar_scm-0.10.43.tar.gz
New:
----
obs-service-tar_scm-0.10.46.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ obs-service-tar_scm.spec ++++++
--- /var/tmp/diff_new_pack.M1VrYh/_old 2024-08-09 16:13:48.888804886 +0200
+++ /var/tmp/diff_new_pack.M1VrYh/_new 2024-08-09 16:13:48.892805053 +0200
@@ -106,12 +106,12 @@
%define scm_dependencies \
Requires: git-core \
%if 0%{?suse_version} >= 1315 \
-Recommends: bzr \
-Recommends: mercurial \
-Recommends: subversion \
Recommends: obs-service-download_files \
Recommends: %{use_python}-keyring \
Recommends: %{use_python}-keyrings.alt \
+Suggests: bzr \
+Suggests: mercurial \
+Suggests: subversion \
%endif \
%{nil}
@@ -119,8 +119,8 @@
%define pkg_name obs-service-tar_scm
Name: %{pkg_name}%{nsuffix}
-%define version_unconverted 0.10.43
-Version: 0.10.43
+%define version_unconverted 0.10.46
+Version: 0.10.46
Release: 0
Summary: An OBS source service: create tar ball from svn/git/hg
License: GPL-2.0-or-later
@@ -161,6 +161,9 @@
BuildRequires: %{use_python}%{_pkg_base}
# Fix missing Requires in python3-pbr in Leap42.3
BuildRequires: %{use_python}-setuptools
+%if 0%{?suse_version}
+BuildRequires: python-rpm-macros
+%endif
%else
BuildRequires: python >= 2.6
%endif
@@ -261,10 +264,11 @@
%install
%if %{without obs_scm_testsuite}
make install DESTDIR="%{buildroot}" PREFIX="%{_prefix}" SYSCFG="%{_sysconfdir}" PYTHON="%{python_path}" WITH_GBP="%{enable_gbp}"
+%if %{with python3}
# Doing %%python3_fix_shebang_path old fashioned way for the backward compatibility
sed -i "1s@#\\!.*python\S*@#\\!$(realpath %__python3)@" \
%{buildroot}%{_prefix}/lib/obs/service/tar_scm
-
+%endif
%else
# moved conditional to the top as it helps to have it all in one place and only rely on the bcond_with here.
++++++ PKGBUILD ++++++
--- /var/tmp/diff_new_pack.M1VrYh/_old 2024-08-09 16:13:48.928806556 +0200
+++ /var/tmp/diff_new_pack.M1VrYh/_new 2024-08-09 16:13:48.928806556 +0200
@@ -1,5 +1,5 @@
pkgname=obs-service-tar_scm
-pkgver=0.10.43
+pkgver=0.10.46
pkgrel=0
pkgdesc="Source Service for the OpenSUSE Build Service (OBS)"
arch=('any')
++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.M1VrYh/_old 2024-08-09 16:13:48.992809227 +0200
+++ /var/tmp/diff_new_pack.M1VrYh/_new 2024-08-09 16:13:48.996809394 +0200
@@ -12,7 +12,7 @@
</service>
<service name="tar_scm">
<param name="url">https://github.com/openSUSE/obs-service-tar_scm.git</param>
- <param name="changesrevision">9df35c1e38f8dc4a7a90cb3fef84bd9b9f5755c4</param>
+ <param name="changesrevision">b8058dced0c2422a5905348647edc65baef0efa5</param>
</service>
</servicedata>
(No newline at EOF)
++++++ debian.dsc ++++++
--- /var/tmp/diff_new_pack.M1VrYh/_old 2024-08-09 16:13:49.020810396 +0200
+++ /var/tmp/diff_new_pack.M1VrYh/_new 2024-08-09 16:13:49.024810563 +0200
@@ -1,18 +1,18 @@
Format: 1.0
Source: obs-service-tar-scm
-Version: 0.10.43
-Provides: obs-service-obs_scm, obs-service-tar
+Version: 0.10.46
+Provides: obs-service-obs_scm, obs-service-tar, obs-service-gbp
Binary: obs-service-tar_scm
Maintainer: Adrian Schroeter <adrian(a)suse.de>
Architecture: all
-Standards-Version: 3.7.2
+Standards-Version: 3.9.3
Build-Depends: debhelper (>= 8.0.0), python3, python3-dateutil, dh-python, python3-yaml
Package: obs-service-tar-scm
Architecture: all
Provides: obs-service-obs-scm, obs-service-tar
-Depends: ${misc:Depends}, ${python3:Depends}, bzr, git, subversion, cpio, python3-dateutil, python3-yaml
-Recommends: mercurial
+Depends: ${misc:Depends}, ${python3:Depends}, python3, bzr, git, subversion, cpio, python3-dateutil, python3-yaml
+Recommends: mercurial, git-buildpackage, git-lfs
Description: An OBS source service: fetches SCM tarballs
This is a source service for openSUSE Build Service.
It supports downloading from svn, git, hg and bzr repositories.
++++++ obs-service-tar_scm-0.10.43.tar.gz -> obs-service-tar_scm-0.10.46.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/obs-service-tar_scm-0.10.43/GNUmakefile new/obs-service-tar_scm-0.10.46/GNUmakefile
--- old/obs-service-tar_scm-0.10.43/GNUmakefile 2024-02-21 11:46:22.000000000 +0100
+++ new/obs-service-tar_scm-0.10.46/GNUmakefile 2024-08-01 14:39:20.000000000 +0200
@@ -172,9 +172,11 @@
@echo "Creating $@ which uses $(PYTHON) ..."
sed 's,^\#!/usr/bin/.*,#!$(PYTHON),' $< > $@
+COMPILED_PYTHON = true
+
.PHONY: install
-install: dirs tar_scm service compile
+install: dirs tar_scm service $(if $(findstring $(COMPILED_PYTHON),true),compile)
install -m 0755 tar_scm $(DESTDIR)$(mylibdir)/tar_scm
install -m 0644 tar_scm.rc $(DESTDIR)$(mycfgdir)/tar_scm
# Recreate links, otherwise reinstalling would fail
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/obs-service-tar_scm-0.10.43/TarSCM/archive.py new/obs-service-tar_scm-0.10.46/TarSCM/archive.py
--- old/obs-service-tar_scm-0.10.43/TarSCM/archive.py 2024-02-21 11:46:22.000000000 +0100
+++ new/obs-service-tar_scm-0.10.46/TarSCM/archive.py 2024-08-01 14:39:20.000000000 +0200
@@ -85,7 +85,7 @@
# transform glob patterns to regular expressions
includes = ''
excludes = r'$.'
- topdir_re = '(' + topdir + '/)('
+ topdir_re = '(' + re.escape(topdir) + '/)('
if args.include:
incl_arr = [fnmatch.translate(x + '*') for x in args.include]
match_list = r'|'.join(incl_arr)
@@ -118,7 +118,7 @@
tstamp = self.helpers.get_timestamp(scm_object, args, topdir)
for name in sorted(cpiolist):
try:
- os.utime(name, (tstamp, tstamp))
+ os.utime(name, (tstamp, tstamp), follow_symlinks=False)
except OSError:
pass
# bytes() break in python2 with a TypeError as it expects only 1
@@ -256,18 +256,14 @@
cwd = os.getcwd()
os.chdir(workdir)
- if not args.revision:
- revision = 'origin/master'
- else:
- revision = 'origin/' + args.revision
-
command = ['gbp', 'buildpackage', '--git-notify=off',
'--git-force-create', '--git-cleaner="true"']
# we are not on a proper local branch due to using git-reset but we
# anyway use the --git-export option
command.extend(['--git-ignore-branch',
- "--git-export=%s" % revision])
+ "--git-export-dir=%s" % workdir,
+ '--git-export=WC'])
# gbp can load submodules without having to run the git command, and
# will ignore submodules even if loaded manually unless this option is
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/obs-service-tar_scm-0.10.43/TarSCM/cli.py new/obs-service-tar_scm-0.10.46/TarSCM/cli.py
--- old/obs-service-tar_scm-0.10.43/TarSCM/cli.py 2024-02-21 11:46:22.000000000 +0100
+++ new/obs-service-tar_scm-0.10.46/TarSCM/cli.py 2024-08-01 14:39:20.000000000 +0200
@@ -127,12 +127,13 @@
parser.add_argument('--subdir', default='',
help='Package just a subdirectory of the sources')
parser.add_argument('--submodules',
- choices=['enable', 'master', 'disable'],
+ choices=['enable', 'master', 'main', 'disable'],
default='enable',
help='Whether or not to include git submodules '
'from SCM commit log since a given parent '
'revision (see changesrevision). Use '
- '\'master\' to fetch the latest master.')
+ '\'master\' or \'main\' to fetch the latest'
+ 'development revision.')
parser.add_argument('--lfs',
choices=['enable', 'disable'],
default='disable',
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/obs-service-tar_scm-0.10.43/TarSCM/scm/base.py new/obs-service-tar_scm-0.10.46/TarSCM/scm/base.py
--- old/obs-service-tar_scm-0.10.43/TarSCM/scm/base.py 2024-02-21 11:46:22.000000000 +0100
+++ new/obs-service-tar_scm-0.10.46/TarSCM/scm/base.py 2024-08-01 14:39:20.000000000 +0200
@@ -68,8 +68,13 @@
try:
self.password = _kr.get_password(self.url, args.user)
if not self.password:
- raise Exception('No user {u} in keyring for service {s}'
- .format(u=args.user, s=self.url))
+ # try just the hostname
+ url_netloc = urlparse(self.url)[1]
+ self.password = _kr.get_password(url_netloc, args.user)
+ if not self.password:
+ raise Exception(
+ 'No user {u} in keyring for service {s}'
+ .format(u=args.user, s=self.url))
except AssertionError:
raise Exception('Wrong keyring passphrase')
self.user = args.user
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/obs-service-tar_scm-0.10.43/TarSCM/scm/git.py new/obs-service-tar_scm-0.10.46/TarSCM/scm/git.py
--- old/obs-service-tar_scm-0.10.43/TarSCM/scm/git.py 2024-02-21 11:46:22.000000000 +0100
+++ new/obs-service-tar_scm-0.10.46/TarSCM/scm/git.py 2024-08-01 14:39:20.000000000 +0200
@@ -201,7 +201,8 @@
'--recursive'],
cwd=self.clone_dir
)
- elif 'submodules' in argsd and argsd['submodules'] == 'master':
+ elif 'submodules' in argsd and \
+ argsd['submodules'] in ['main', 'master']:
self.helpers.safe_run(
self._get_scm_cmd() + ['submodule', 'update', '--init',
'--recursive', '--remote'],
@@ -421,7 +422,7 @@
use_reference = True
try:
- if self.args.package_meta:
+ if (self.args.package_meta and not self.partial_clone):
logging.info("Not using '--reference'")
use_reference = False
except KeyError:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/obs-service-tar_scm-0.10.43/TarSCM/scm/svn.py new/obs-service-tar_scm-0.10.46/TarSCM/scm/svn.py
--- old/obs-service-tar_scm-0.10.43/TarSCM/scm/svn.py 2024-02-21 11:46:22.000000000 +0100
+++ new/obs-service-tar_scm-0.10.46/TarSCM/scm/svn.py 2024-08-01 14:39:20.000000000 +0200
@@ -76,9 +76,9 @@
cfg.close()
scmcmd += ['--config-dir', self.svntmpdir]
- if self.user and self.password:
- scmcmd += ['--username', self.user]
- scmcmd += ['--password', self.password]
+ if self.user and self.password:
+ scmcmd += ['--username', self.user]
+ scmcmd += ['--password', self.password]
return scmcmd
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/obs-service-tar_scm-0.10.43/appimage.service new/obs-service-tar_scm-0.10.46/appimage.service
--- old/obs-service-tar_scm-0.10.43/appimage.service 2024-02-21 11:46:22.000000000 +0100
+++ new/obs-service-tar_scm-0.10.46/appimage.service 2024-08-01 14:39:20.000000000 +0200
@@ -2,9 +2,10 @@
<summary>handle sources specified in appimage.yml</summary>
<description>This service needs to be executed to download sources according to appimage.yml file</description>
<parameter name="submodules">
- <description>Specify whether to include git submodules. Default is 'enable'.</description>
+ <description>Specify whether to include git submodules. Default is 'enable'. main or master is override the specified commit with master or main branch.</description>
<allowedvalue>enable</allowedvalue>
<allowedvalue>master</allowedvalue>
+ <allowedvalue>main</allowedvalue>
<allowedvalue>disable</allowedvalue>
</parameter>
<parameter name="lfs">
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/obs-service-tar_scm-0.10.43/debian/changelog new/obs-service-tar_scm-0.10.46/debian/changelog
--- old/obs-service-tar_scm-0.10.43/debian/changelog 2024-02-21 11:46:22.000000000 +0100
+++ new/obs-service-tar_scm-0.10.46/debian/changelog 2024-08-01 14:39:20.000000000 +0200
@@ -1,3 +1,22 @@
+obs-service-tar-scm (0.10.43) unstable; urgency=medium
+
+ [ Adrian Schröter ]
+ * Allow to use "tar" service also standalone.
+ * fix tar without obsinfo also in git managed packages
+
+ [ Nicholas Brown ]
+ * enable the GBP service
+ * Fix Lintian error about missing python3 dep
+ * Debian X-Python version no longer needed
+ * Debian compat from 8 to 10
+ * Fix priority-extra-is-replaced-by-priority-optional
+ * Fix description-synopsis-starts-with-article
+ * Update debian debhelper dependency
+ * update dist/debian.dsc to match debian packaging
+ * disable compile python in debian package
+
+ -- Nick Brown <nickbroon(a)graphiant.com> Thu, 29 Feb 2024 15:51:56 +0000
+
obs-service-tar-scm (0.10.41) unstable; urgency=medium
* update to upstream version 0.10.41
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/obs-service-tar_scm-0.10.43/debian/compat new/obs-service-tar_scm-0.10.46/debian/compat
--- old/obs-service-tar_scm-0.10.43/debian/compat 2024-02-21 11:46:22.000000000 +0100
+++ new/obs-service-tar_scm-0.10.46/debian/compat 2024-08-01 14:39:20.000000000 +0200
@@ -1 +1 @@
-8
+10
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/obs-service-tar_scm-0.10.43/debian/control new/obs-service-tar_scm-0.10.46/debian/control
--- old/obs-service-tar_scm-0.10.43/debian/control 2024-02-21 11:46:22.000000000 +0100
+++ new/obs-service-tar_scm-0.10.46/debian/control 2024-08-01 14:39:20.000000000 +0200
@@ -1,17 +1,16 @@
Source: obs-service-tar-scm
Section: devel
-Priority: extra
+Priority: optional
Maintainer: Daniel Gollub <dgollub(a)brocade.com>
-Build-Depends: debhelper (>= 7.0.0), python3, python3-dateutil, dh-python
+Build-Depends: debhelper (>= 8.0.0), python3, python3-dateutil, dh-python
Standards-Version: 3.9.3
Homepage: https://github.com/openSUSE/obs-service-tar_scm
-X-Python-Version: >= 2.6
Package: obs-service-tar-scm
Architecture: all
-Provides: obs-service-obs-scm, obs-service-tar
-Depends: ${misc:Depends}, ${python3:Depends}, bzr, git, subversion, cpio, python3-dateutil, python3-yaml, locales-all
+Provides: obs-service-obs-scm, obs-service-tar, obs-service-gbp
+Depends: ${misc:Depends}, ${python3:Depends}, python3, bzr, git, subversion, cpio, python3-dateutil, python3-yaml, locales-all
Recommends: mercurial, git-buildpackage, git-lfs
-Description: An OBS source service: fetches SCM tarballs
+Description: OBS source service: fetches SCM tarballs
This is a source service for openSUSE Build Service.
It supports downloading from svn, git, hg and bzr repositories.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/obs-service-tar_scm-0.10.43/debian/rules new/obs-service-tar_scm-0.10.46/debian/rules
--- old/obs-service-tar_scm-0.10.43/debian/rules 2024-02-21 11:46:22.000000000 +0100
+++ new/obs-service-tar_scm-0.10.46/debian/rules 2024-08-01 14:39:20.000000000 +0200
@@ -7,9 +7,11 @@
%:
dh $@ --with python3
-override_dh_auto_build: ;
+# Skip the Makefile and just rely on the python debhelper
+override_dh_auto_build:
-override_dh_auto_test: ;
+# Skip tests as slow and don't detect python on debian
+override_dh_auto_test:
override_dh_auto_install:
- $(MAKE) DESTDIR=`pwd`/$(DESTDIR) PREFIX=/usr install
+ dh_auto_install -- COMPILED_PYTHON=false WITH_GBP=1 install
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/obs-service-tar_scm-0.10.43/dist/debian.dsc new/obs-service-tar_scm-0.10.46/dist/debian.dsc
--- old/obs-service-tar_scm-0.10.43/dist/debian.dsc 2024-02-21 11:46:22.000000000 +0100
+++ new/obs-service-tar_scm-0.10.46/dist/debian.dsc 2024-08-01 14:39:20.000000000 +0200
@@ -1,18 +1,18 @@
Format: 1.0
Source: obs-service-tar-scm
-Version: 0.10.36
-Provides: obs-service-obs_scm, obs-service-tar
+Version: 0.10.43
+Provides: obs-service-obs_scm, obs-service-tar, obs-service-gbp
Binary: obs-service-tar_scm
Maintainer: Adrian Schroeter <adrian(a)suse.de>
Architecture: all
-Standards-Version: 3.7.2
+Standards-Version: 3.9.3
Build-Depends: debhelper (>= 8.0.0), python3, python3-dateutil, dh-python, python3-yaml
Package: obs-service-tar-scm
Architecture: all
Provides: obs-service-obs-scm, obs-service-tar
-Depends: ${misc:Depends}, ${python3:Depends}, bzr, git, subversion, cpio, python3-dateutil, python3-yaml
-Recommends: mercurial
+Depends: ${misc:Depends}, ${python3:Depends}, python3, bzr, git, subversion, cpio, python3-dateutil, python3-yaml
+Recommends: mercurial, git-buildpackage, git-lfs
Description: An OBS source service: fetches SCM tarballs
This is a source service for openSUSE Build Service.
It supports downloading from svn, git, hg and bzr repositories.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/obs-service-tar_scm-0.10.43/dist/obs-service-tar_scm.spec new/obs-service-tar_scm-0.10.46/dist/obs-service-tar_scm.spec
--- old/obs-service-tar_scm-0.10.43/dist/obs-service-tar_scm.spec 2024-02-21 11:46:22.000000000 +0100
+++ new/obs-service-tar_scm-0.10.46/dist/obs-service-tar_scm.spec 2024-08-01 14:39:20.000000000 +0200
@@ -161,6 +161,9 @@
BuildRequires: %{use_python}%{_pkg_base}
# Fix missing Requires in python3-pbr in Leap42.3
BuildRequires: %{use_python}-setuptools
+%if 0%{?suse_version}
+BuildRequires: python-rpm-macros \
+%endif
%else
BuildRequires: python >= 2.6
%endif
@@ -261,7 +264,11 @@
%install
%if %{without obs_scm_testsuite}
make install DESTDIR="%{buildroot}" PREFIX="%{_prefix}" SYSCFG="%{_sysconfdir}" PYTHON="%{python_path}" WITH_GBP="%{enable_gbp}"
-
+%if %{with python3}
+# Doing %%python3_fix_shebang_path old fashioned way for the backward compatibility
+sed -i "1s@#\\!.*python\S*@#\\!$(realpath %__python3)@" \
+ %{buildroot}%{_prefix}/lib/obs/service/tar_scm
+%endif
%else
# moved conditional to the top as it helps to have it all in one place and only rely on the bcond_with here.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/obs-service-tar_scm-0.10.43/snapcraft.service new/obs-service-tar_scm-0.10.46/snapcraft.service
--- old/obs-service-tar_scm-0.10.43/snapcraft.service 2024-02-21 11:46:22.000000000 +0100
+++ new/obs-service-tar_scm-0.10.46/snapcraft.service 2024-08-01 14:39:20.000000000 +0200
@@ -2,9 +2,10 @@
<summary>handle sources specified in snapcraft.yaml</summary>
<description>This service needs to be executed to download sources according to snapcraft.yaml file. It also patches the snapcraft tile to use local sources during build.</description>
<parameter name="submodules">
- <description>Specify whether to include git submodules. Default is 'enable'.</description>
+ <description>Specify whether to include git submodules. Default is 'enable'. main or master is override the specified commit with master or main branch.</description>
<allowedvalue>enable</allowedvalue>
<allowedvalue>master</allowedvalue>
+ <allowedvalue>main</allowedvalue>
<allowedvalue>disable</allowedvalue>
</parameter>
<parameter name="lfs">
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/obs-service-tar_scm-0.10.43/tar_scm.service.in new/obs-service-tar_scm-0.10.46/tar_scm.service.in
--- old/obs-service-tar_scm-0.10.43/tar_scm.service.in 2024-02-21 11:46:22.000000000 +0100
+++ new/obs-service-tar_scm-0.10.46/tar_scm.service.in 2024-08-01 14:39:20.000000000 +0200
@@ -172,9 +172,10 @@
<description>Obsolete parameter which will be ignored.</description>
</parameter>
<parameter name="submodules">
- <description>Specify whether to include git submodules. Default is 'enable'.</description>
+ <description>Specify whether to include git submodules. Default is 'enable'. main or master is override the specified commit with master or main branch.</description>
<allowedvalue>enable</allowedvalue>
<allowedvalue>master</allowedvalue>
+ <allowedvalue>main</allowedvalue>
<allowedvalue>disable</allowedvalue>
</parameter>
===OBS_ONLY
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package 000update-repos for openSUSE:Factory checked in at 2024-08-08 21:04:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/000update-repos (Old)
and /work/SRC/openSUSE:Factory/.000update-repos.new.7232 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "000update-repos"
Thu Aug 8 21:04:17 2024 rev:2556 rq: version:unknown
Changes:
--------
New Changes file:
NO CHANGES FILE!!!
New:
----
factory:non-oss_4099.2.packages.zst
factory_20240807.packages.zst
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
1
0