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 pam for openSUSE:Factory checked in at 2024-08-09 16:15:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/pam (Old)
and /work/SRC/openSUSE:Factory/.pam.new.7232 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pam"
Fri Aug 9 16:15:05 2024 rev:140 rq:1192585 version:1.6.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/pam/pam.changes 2024-08-07 09:15:02.563848846 +0200
+++ /work/SRC/openSUSE:Factory/.pam.new.7232/pam.changes 2024-08-09 16:15:39.877437535 +0200
@@ -2 +2 @@
-Mon Jul 22 21:31:47 UTC 2024 - Stanislav Brabec <sbrabec(a)suse.com>
+Wed Aug 7 14:44:56 UTC 2024 - Stanislav Brabec <sbrabec(a)suse.com>
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ pam-bsc1194818-cursor-escape.patch ++++++
--- /var/tmp/diff_new_pack.K0IKG2/_old 2024-08-09 16:15:40.845477941 +0200
+++ /var/tmp/diff_new_pack.K0IKG2/_new 2024-08-09 16:15:40.849478108 +0200
@@ -1,6 +1,4 @@
-https://github.com/linux-pam/linux-pam/pull/816
-
-From d52c44fa6e70f3c1420feceafe48dcba10bee51e Mon Sep 17 00:00:00 2001
+From 8ae228fa76ff9ef1d8d6b2199582d9206f1830c6 Mon Sep 17 00:00:00 2001
From: Stanislav Brabec <sbrabec(a)suse.cz>
Date: Mon, 22 Jul 2024 23:18:16 +0200
Subject: [PATCH] libpam_misc: Use ECHOCTL in the terminal input
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package pdfarranger for openSUSE:Factory checked in at 2024-08-09 16:15:05
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/pdfarranger (Old)
and /work/SRC/openSUSE:Factory/.pdfarranger.new.7232 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pdfarranger"
Fri Aug 9 16:15:05 2024 rev:10 rq:1192646 version:1.11.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/pdfarranger/pdfarranger.changes 2023-12-25 19:06:21.731807391 +0100
+++ /work/SRC/openSUSE:Factory/.pdfarranger.new.7232/pdfarranger.changes 2024-08-09 16:15:37.109321995 +0200
@@ -1,0 +2,27 @@
+Thu Aug 8 15:56:39 UTC 2024 - Christophe Marin <christophe(a)krop.fr>
+
+- Update to 1.11.0
+ New / improved features:
+ * Preserve outlines and links when possible
+ * Implement a GUI for hiding of margins
+ * Implement a GUI for visually setting crop
+ * Improve GUI for pasting of overlay and underlay
+ * Improve zoom-fit toggle
+ * Implement copying of text and image from PDF
+ * Add a keyboard shortcut to open the popup menu
+ * Show content loss warning on start & and link to user manual
+ * Improve visual layout of headerbar title
+ * Fix reversed file import order on Windows
+ * Use cropped page size in "Page size" dialog
+ * Drop PikePDF < 6 support
+Fixes:
+ * Fix iconview in right-to-left locale
+ * Fix too high scroll speed with high-resolution mouses
+ * Fix a "raise KeyError(key) from None" in pikepdf
+ * Fix crop white border
+ * Fix handling of scaling and rotation at printing
+ * Fix missing icon when running under Wayland
+ * Fix failure when generating booklet with pikepdf v9
+ * Fix issue when resizing a page with pikepdf v9
+
+-------------------------------------------------------------------
Old:
----
pdfarranger-1.10.1.tar.gz
New:
----
pdfarranger-1.11.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ pdfarranger.spec ++++++
--- /var/tmp/diff_new_pack.r2owlb/_old 2024-08-09 16:15:38.933398131 +0200
+++ /var/tmp/diff_new_pack.r2owlb/_new 2024-08-09 16:15:38.933398131 +0200
@@ -1,7 +1,7 @@
#
# spec file for package pdfarranger
#
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
# Copyright (c) 2020 Karl Cheng <qantas94heavy(a)gmail.com>
#
# All modifications and additions to the file contributed by third parties
@@ -18,7 +18,7 @@
Name: pdfarranger
-Version: 1.10.1
+Version: 1.11.0
Release: 0
Summary: Merge, split, rotate, crop, and rearrange pages of PDF documents
License: GPL-3.0-only
@@ -34,7 +34,7 @@
Requires: python3-cairo
Requires: python3-dateutil >= 2.4.0
Requires: python3-gobject-Gdk
-Requires: python3-pikepdf >= 2.8.0
+Requires: python3-pikepdf >= 6
Requires: typelib-1_0-Gtk-3_0
Requires: typelib-1_0-Poppler-0_18
Recommends: python3-img2pdf >= 0.3.4
++++++ pdfarranger-1.10.1.tar.gz -> pdfarranger-1.11.0.tar.gz ++++++
++++ 49272 lines of diff (skipped)
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package chezmoi for openSUSE:Factory checked in at 2024-08-09 16:15:03
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/chezmoi (Old)
and /work/SRC/openSUSE:Factory/.chezmoi.new.7232 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "chezmoi"
Fri Aug 9 16:15:03 2024 rev:58 rq:1192637 version:2.52.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/chezmoi/chezmoi.changes 2024-07-17 15:15:49.651553881 +0200
+++ /work/SRC/openSUSE:Factory/.chezmoi.new.7232/chezmoi.changes 2024-08-09 16:15:35.461253205 +0200
@@ -1,0 +2,9 @@
+Thu Aug 8 08:36:43 UTC 2024 - Filippo Bonazzi <filippo.bonazzi(a)suse.com>
+
+- Update to version 2.52.0:
+ - Features
+ * feat: Add gitHubRelease and gitHubReleaseAssetURL template functions
+ - Fixes
+ * fix: Don't modify ciphertext in edit command if plaintext did not change
+
+-------------------------------------------------------------------
Old:
----
chezmoi-2.51.0.obscpio
New:
----
chezmoi-2.52.0.obscpio
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ chezmoi.spec ++++++
--- /var/tmp/diff_new_pack.dUDvqM/_old 2024-08-09 16:15:36.369291106 +0200
+++ /var/tmp/diff_new_pack.dUDvqM/_new 2024-08-09 16:15:36.369291106 +0200
@@ -17,7 +17,7 @@
Name: chezmoi
-Version: 2.51.0
+Version: 2.52.0
Release: 0
Summary: A multi-host manager for dotfiles
License: MIT
++++++ _service ++++++
--- /var/tmp/diff_new_pack.dUDvqM/_old 2024-08-09 16:15:36.405292609 +0200
+++ /var/tmp/diff_new_pack.dUDvqM/_new 2024-08-09 16:15:36.409292775 +0200
@@ -2,7 +2,7 @@
<service name="obs_scm" mode="manual">
<param name="scm">git</param>
<param name="url">https://github.com/twpayne/chezmoi.git</param>
- <param name="revision">v2.51.0</param>
+ <param name="revision">v2.52.0</param>
<param name="versionformat">@PARENT_TAG@</param>
<param name="versionrewrite-pattern">v(.*)</param>
</service>
++++++ chezmoi-2.51.0.obscpio -> chezmoi-2.52.0.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/.github/workflows/main.yml new/chezmoi-2.52.0/.github/workflows/main.yml
--- old/chezmoi-2.51.0/.github/workflows/main.yml 2024-07-15 21:36:30.000000000 +0200
+++ new/chezmoi-2.52.0/.github/workflows/main.yml 2024-08-07 22:11:15.000000000 +0200
@@ -16,7 +16,7 @@
CHOCOLATEY_VERSION: 2.2.2 # https://github.com/chocolatey/choco/releases
EDITORCONFIG_CHECKER_VERSION: 3.0.3 # https://github.com/editorconfig-checker/editorconfig-checker/releases
FIND_TYPOS_VERSION: 0.0.3 # https://github.com/twpayne/find-typos/tags
- GO_VERSION: 1.22.5 # https://go.dev/doc/devel/release
+ GO_VERSION: 1.22.6 # https://go.dev/doc/devel/release
GOFUMPT_VERSION: 0.6.0 # https://github.com/mvdan/gofumpt/releases
GOLANGCI_LINT_VERSION: 1.59.1 # https://github.com/golangci/golangci-lint/releases
GOLINES_VERSION: 0.12.2 # https://github.com/segmentio/golines/releases
@@ -60,10 +60,10 @@
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332
with:
fetch-depth: 1
- - uses: github/codeql-action/init@b611370bb5703a7efb587f9d136a52ea24c5c38c
+ - uses: github/codeql-action/init@afb54ba388a7dca6ecae48f608c4ff05ff4cc77a
with:
languages: go
- - uses: github/codeql-action/analyze@b611370bb5703a7efb587f9d136a52ea24c5c38c
+ - uses: github/codeql-action/analyze@afb54ba388a7dca6ecae48f608c4ff05ff4cc77a
misspell:
runs-on: ubuntu-22.04
permissions:
@@ -202,31 +202,31 @@
args: release --skip=sign --snapshot --timeout=1h
- name: upload-artifact-chezmoi-darwin-amd64
if: github.event_name == 'push' || needs.changes.outputs.code == 'true'
- uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b
+ uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029
with:
name: chezmoi-darwin-amd64
path: dist/chezmoi-nocgo_darwin_amd64_v1/chezmoi
- name: upload-artifact-chezmoi-darwin-arm64
if: github.event_name == 'push' || needs.changes.outputs.code == 'true'
- uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b
+ uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029
with:
name: chezmoi-darwin-arm64
path: dist/chezmoi-nocgo_darwin_arm64/chezmoi
- name: upload-artifact-chezmoi-linux-amd64
if: github.event_name == 'push' || needs.changes.outputs.code == 'true'
- uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b
+ uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029
with:
name: chezmoi-linux-amd64
path: dist/chezmoi-cgo-glibc_linux_amd64_v1/chezmoi
- name: upload-artifact-chezmoi-linux-musl-amd64
if: github.event_name == 'push' || needs.changes.outputs.code == 'true'
- uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b
+ uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029
with:
name: chezmoi-linux-amd64-musl
path: dist/chezmoi-cgo-musl_linux_amd64_v1/chezmoi
- name: upload-artifact-chezmoi-windows-amd64.exe
if: github.event_name == 'push' || needs.changes.outputs.code == 'true'
- uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b
+ uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029
with:
name: chezmoi-windows-amd64
path: dist/chezmoi-nocgo_windows_amd64_v1/chezmoi.exe
@@ -382,7 +382,7 @@
- uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32
with:
go-version: stable
- - uses: golangci/golangci-lint-action@a4f60bb28d35aeee14e6880718e0c85ff1882e64
+ - uses: golangci/golangci-lint-action@aaa42aa0628b4ae2578232a66b541047968fac86
with:
version: v${{ env.GOLANGCI_LINT_VERSION }}
args: --timeout=5m
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/assets/chezmoi.io/docs/reference/release-history.md.tmpl new/chezmoi-2.52.0/assets/chezmoi.io/docs/reference/release-history.md.tmpl
--- old/chezmoi-2.51.0/assets/chezmoi.io/docs/reference/release-history.md.tmpl 2024-07-15 21:36:30.000000000 +0200
+++ new/chezmoi-2.52.0/assets/chezmoi.io/docs/reference/release-history.md.tmpl 2024-08-07 22:11:15.000000000 +0200
@@ -20,7 +20,7 @@
| replaceAllRegex "\\(#(\\d+)[)]" "(https://github.com/twpayne/chezmoi/pull/$1)"
| replaceAllRegex "(https://github\\.com/twpayne/chezmoi/pull/(\\d+))" "[#$2]($1)"
| replaceAllRegex "(?m)^([0-9a-f]{7,})" "* $1"
- | replaceAllRegex "(?m)^\\* ([0-9a-f]{7,})" "* [`$1`](https://github.com/twpayne/chezmoi/commit/$1)"
+ | replaceAllRegex "(?m)^\\* (([0-9a-f]{7})[0-9a-f]*)" "* [`$2`](https://github.com/twpayne/chezmoi/commit/$1)"
| replaceAllRegex "\\r\\n" "\\n"
| trim
| default "Internal changes only"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/assets/chezmoi.io/docs/reference/templates/github-functions/gitHubRelease.md new/chezmoi-2.52.0/assets/chezmoi.io/docs/reference/templates/github-functions/gitHubRelease.md
--- old/chezmoi-2.51.0/assets/chezmoi.io/docs/reference/templates/github-functions/gitHubRelease.md 1970-01-01 01:00:00.000000000 +0100
+++ new/chezmoi-2.52.0/assets/chezmoi.io/docs/reference/templates/github-functions/gitHubRelease.md 2024-08-07 22:11:15.000000000 +0200
@@ -0,0 +1,17 @@
+# `gitHubRelease` *owner-repo* *version*
+
+`gitHubRelease` calls the GitHub API to retrieve the latest releases about
+the given *owner-repo*, It iterates through all the versions of the release,
+fetching the first entry equal to *version*.
+
+It then returns structured data as defined by the [GitHub Go API
+bindings](https://pkg.go.dev/github.com/google/go-github/v63/github#RepositoryRelease).
+
+Calls to `gitHubRelease` are cached so calling `gitHubRelease` with
+the same *owner-repo* *version* will only result in one call to the GitHub API.
+
+!!! example
+
+ ```
+ {{ (gitHubRelease "docker/compose" "v2.29.1").TagName }}
+ ```
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/assets/chezmoi.io/docs/reference/templates/github-functions/gitHubReleaseAssetURL.md new/chezmoi-2.52.0/assets/chezmoi.io/docs/reference/templates/github-functions/gitHubReleaseAssetURL.md
--- old/chezmoi-2.51.0/assets/chezmoi.io/docs/reference/templates/github-functions/gitHubReleaseAssetURL.md 1970-01-01 01:00:00.000000000 +0100
+++ new/chezmoi-2.52.0/assets/chezmoi.io/docs/reference/templates/github-functions/gitHubReleaseAssetURL.md 2024-08-07 22:11:15.000000000 +0200
@@ -0,0 +1,21 @@
+# `gitHubReleaseAssetURL` *owner-repo* *version* *pattern*
+
+`gitHubReleaseAssetURL` calls the GitHub API to retrieve the latest
+releases about the given *owner-repo*, returning structured data as defined by
+the [GitHub Go API
+bindings](https://pkg.go.dev/github.com/google/go-github/v63/github#RepositoryRelease).
+It iterates through all the versions of the release, returning the first entry equal to *version*.
+It then iterates through all the release's assets, returning the first one that
+matches *pattern*. *pattern* is a shell pattern as [described in
+`path.Match`](https://pkg.go.dev/path#Match).
+
+Calls to `gitHubReleaseAssetURL` are cached so calling
+`gitHubReleaseAssetURL` with the same *owner-repo* will only result in one
+call to the GitHub API.
+
+!!! example
+
+ ```
+ {{ gitHubReleaseAssetURL "FiloSottile/age" "age v1.2.0" (printf "age-*-%s-%s.tar.gz" .chezmoi.os .chezmoi.arch) }}
+ {{ gitHubReleaseAssetURL "twpayne/chezmoi" "v2.50.0" (printf "chezmoi-%s-%s" .chezmoi.os .chezmoi.arch) }}
+ ```
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/assets/chezmoi.io/docs/user-guide/machines/containers-and-vms.md new/chezmoi-2.52.0/assets/chezmoi.io/docs/user-guide/machines/containers-and-vms.md
--- old/chezmoi-2.51.0/assets/chezmoi.io/docs/user-guide/machines/containers-and-vms.md 2024-07-15 21:36:30.000000000 +0200
+++ new/chezmoi-2.52.0/assets/chezmoi.io/docs/user-guide/machines/containers-and-vms.md 2024-08-07 22:11:15.000000000 +0200
@@ -40,6 +40,12 @@
{{- end }}
```
+!!! warning
+
+ Setting the `sourceDir` configuration variable to `.chezmoi.sourceDir` is
+ required because Codespaces clones your dotfiles repo to a different one to
+ chezmoi's default.
+
This sets the `codespaces` template variable, so you don't have to repeat `(env
"CODESPACES")` in your templates. It also sets the `sourceDir` configuration to
the `--source` argument passed in `chezmoi init`.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/assets/chezmoi.io/mkdocs.yml new/chezmoi-2.52.0/assets/chezmoi.io/mkdocs.yml
--- old/chezmoi-2.51.0/assets/chezmoi.io/mkdocs.yml 2024-07-15 21:36:30.000000000 +0200
+++ new/chezmoi-2.52.0/assets/chezmoi.io/mkdocs.yml 2024-08-07 22:11:15.000000000 +0200
@@ -225,7 +225,9 @@
- reference/templates/github-functions/index.md
- gitHubKeys: reference/templates/github-functions/gitHubKeys.md
- gitHubLatestRelease: reference/templates/github-functions/gitHubLatestRelease.md
+ - gitHubRelease: reference/templates/github-functions/gitHubRelease.md
- gitHubLatestReleaseAssetURL: reference/templates/github-functions/gitHubLatestReleaseAssetURL.md
+ - gitHubReleaseAssetURL: reference/templates/github-functions/gitHubReleaseAssetURL.md
- gitHubLatestTag: reference/templates/github-functions/gitHubLatestTag.md
- gitHubReleases: reference/templates/github-functions/gitHubReleases.md
- gitHubTags: reference/templates/github-functions/gitHubTags.md
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/assets/chezmoi.io/requirements.txt new/chezmoi-2.52.0/assets/chezmoi.io/requirements.txt
--- old/chezmoi-2.51.0/assets/chezmoi.io/requirements.txt 2024-07-15 21:36:30.000000000 +0200
+++ new/chezmoi-2.52.0/assets/chezmoi.io/requirements.txt 2024-08-07 22:11:15.000000000 +0200
@@ -1,3 +1,3 @@
mkdocs==1.6.0
-mkdocs-material==9.5.27
+mkdocs-material==9.5.30
mkdocs-mermaid2-plugin==1.1.1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/assets/requirements.dev.txt new/chezmoi-2.52.0/assets/requirements.dev.txt
--- old/chezmoi-2.51.0/assets/requirements.dev.txt 2024-07-15 21:36:30.000000000 +0200
+++ new/chezmoi-2.52.0/assets/requirements.dev.txt 2024-08-07 22:11:15.000000000 +0200
@@ -1 +1 @@
-ruff==0.5.0
+ruff==0.5.5
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/go.mod new/chezmoi-2.52.0/go.mod
--- old/chezmoi-2.51.0/go.mod 2024-07-15 21:36:30.000000000 +0200
+++ new/chezmoi-2.52.0/go.mod 2024-08-07 22:11:15.000000000 +0200
@@ -6,7 +6,7 @@
require (
filippo.io/age v1.2.0
- github.com/1password/onepassword-sdk-go v0.1.0-beta.10
+ github.com/1password/onepassword-sdk-go v0.1.0-beta.12
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets v1.1.0
github.com/Masterminds/sprig/v3 v3.2.3
@@ -14,13 +14,13 @@
github.com/Shopify/ejson v1.5.2
github.com/alecthomas/assert/v2 v2.10.0
github.com/aws/aws-sdk-go-v2 v1.30.3
- github.com/aws/aws-sdk-go-v2/config v1.27.26
- github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.32.3
+ github.com/aws/aws-sdk-go-v2/config v1.27.27
+ github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.32.4
github.com/bmatcuk/doublestar/v4 v4.6.1
github.com/bradenhilton/mozillainstallhash v1.0.1
github.com/charmbracelet/bubbles v0.18.0
github.com/charmbracelet/bubbletea v0.26.6
- github.com/charmbracelet/glamour v0.7.0
+ github.com/charmbracelet/glamour v0.8.0
github.com/coreos/go-semver v0.3.1
github.com/fsnotify/fsnotify v1.7.0
github.com/go-git/go-git/v5 v5.12.0
@@ -32,7 +32,7 @@
github.com/mitchellh/copystructure v1.2.0
github.com/mitchellh/mapstructure v1.5.0
github.com/muesli/combinator v0.3.0
- github.com/muesli/termenv v0.15.2
+ github.com/muesli/termenv v0.15.3-0.20240618155329-98d742f6907a
github.com/pelletier/go-toml/v2 v2.2.2
github.com/rogpeppe/go-internal v1.12.0
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3
@@ -48,10 +48,10 @@
github.com/zricethezav/gitleaks/v8 v8.18.4
go.etcd.io/bbolt v1.3.10
golang.org/x/crypto v0.25.0
- golang.org/x/crypto/x509roots/fallback v0.0.0-20240709155400-d66d9c31b4ae
- golang.org/x/oauth2 v0.21.0
- golang.org/x/sync v0.7.0
- golang.org/x/sys v0.22.0
+ golang.org/x/crypto/x509roots/fallback v0.0.0-20240726163919-3375612bf41a
+ golang.org/x/oauth2 v0.22.0
+ golang.org/x/sync v0.8.0
+ golang.org/x/sys v0.23.0
golang.org/x/term v0.22.0
gopkg.in/ini.v1 v1.67.0
gopkg.in/yaml.v3 v3.0.1
@@ -61,8 +61,8 @@
require (
dario.cat/mergo v1.0.0 // indirect
- github.com/Azure/azure-sdk-for-go/sdk/azcore v1.12.0 // indirect
- github.com/Azure/azure-sdk-for-go/sdk/internal v1.9.1 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0 // indirect
+ github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 // indirect
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.0.1 // indirect
github.com/AzureAD/microsoft-authentication-library-for-go v1.2.2 // indirect
github.com/BobuSumisu/aho-corasick v1.0.3 // indirect
@@ -74,14 +74,14 @@
github.com/alecthomas/repr v0.4.0 // indirect
github.com/alessio/shellescape v1.4.2 // indirect
github.com/atotto/clipboard v0.1.4 // indirect
- github.com/aws/aws-sdk-go-v2/credentials v1.17.26 // indirect
+ github.com/aws/aws-sdk-go-v2/credentials v1.17.27 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11 // indirect
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15 // indirect
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.15 // indirect
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.0 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17 // indirect
- github.com/aws/aws-sdk-go-v2/service/sso v1.22.3 // indirect
+ github.com/aws/aws-sdk-go-v2/service/sso v1.22.4 // indirect
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4 // indirect
github.com/aws/aws-sdk-go-v2/service/sts v1.30.3 // indirect
github.com/aws/smithy-go v1.20.3 // indirect
@@ -91,18 +91,18 @@
github.com/charmbracelet/harmonica v0.2.0 // indirect
github.com/charmbracelet/lipgloss v0.12.1 // indirect
github.com/charmbracelet/x/ansi v0.1.4 // indirect
- github.com/charmbracelet/x/input v0.1.2 // indirect
+ github.com/charmbracelet/x/input v0.1.3 // indirect
github.com/charmbracelet/x/term v0.1.1 // indirect
github.com/charmbracelet/x/windows v0.1.2 // indirect
github.com/cloudflare/circl v1.3.9 // indirect
github.com/creack/pty/v2 v2.0.0-20231209135443-03db72c7b76c // indirect
- github.com/cyphar/filepath-securejoin v0.3.0 // indirect
+ github.com/cyphar/filepath-securejoin v0.3.1 // indirect
github.com/danieljoos/wincred v1.2.2 // indirect
- github.com/dlclark/regexp2 v1.11.2 // indirect
+ github.com/dlclark/regexp2 v1.11.4 // indirect
github.com/dustin/gojson v0.0.0-20160307161227-2e71ec9dd5ad // indirect
github.com/emirpasic/gods v1.18.1 // indirect
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect
- github.com/extism/go-sdk v1.3.0 // indirect
+ github.com/extism/go-sdk v1.3.1 // indirect
github.com/fatih/semgroup v1.2.0 // indirect
github.com/gitleaks/go-gitdiff v0.9.0 // indirect
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
@@ -130,13 +130,12 @@
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.20 // indirect
github.com/mattn/go-localereader v0.0.1 // indirect
- github.com/mattn/go-runewidth v0.0.15 // indirect
+ github.com/mattn/go-runewidth v0.0.16 // indirect
github.com/microcosm-cc/bluemonday v1.0.27 // indirect
github.com/mitchellh/reflectwalk v1.0.2 // indirect
github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect
github.com/muesli/cancelreader v0.2.2 // indirect
github.com/muesli/reflow v0.3.0 // indirect
- github.com/olekukonko/tablewriter v0.0.5 // indirect
github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
github.com/pjbgf/sha1cd v0.3.0 // indirect
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
@@ -145,7 +144,7 @@
github.com/sagikazarmark/locafero v0.6.0 // indirect
github.com/sagikazarmark/slog-shim v0.1.0 // indirect
github.com/shopspring/decimal v1.4.0 // indirect
- github.com/skeema/knownhosts v1.2.2 // indirect
+ github.com/skeema/knownhosts v1.3.0 // indirect
github.com/sourcegraph/conc v0.3.0 // indirect
github.com/spf13/afero v1.11.0 // indirect
github.com/spf13/cast v1.6.0 // indirect
@@ -157,7 +156,7 @@
github.com/yuin/goldmark v1.7.4 // indirect
github.com/yuin/goldmark-emoji v1.0.3 // indirect
go.uber.org/multierr v1.11.0 // indirect
- golang.org/x/exp v0.0.0-20240707233637-46b078467d37 // indirect
+ golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect
golang.org/x/net v0.27.0 // indirect
golang.org/x/text v0.16.0 // indirect
golang.org/x/tools v0.23.0 // indirect
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/go.sum new/chezmoi-2.52.0/go.sum
--- old/chezmoi-2.51.0/go.sum 2024-07-15 21:36:30.000000000 +0200
+++ new/chezmoi-2.52.0/go.sum 2024-08-07 22:11:15.000000000 +0200
@@ -20,14 +20,14 @@
filippo.io/age v1.2.0/go.mod h1:JL9ew2lTN+Pyft4RiNGguFfOpewKwSHm5ayKD/A4004=
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
-github.com/1password/onepassword-sdk-go v0.1.0-beta.10 h1:vYm15kP/HMWdJaScgWFUu0zxl5QeRgUAwg322VabV54=
-github.com/1password/onepassword-sdk-go v0.1.0-beta.10/go.mod h1:FnJzZHo0kfR7U4M3f9xRbKIAn+sR9pn1Ssu3zGDcMpM=
-github.com/Azure/azure-sdk-for-go/sdk/azcore v1.12.0 h1:1nGuui+4POelzDwI7RG56yfQJHCnKvwfMoU7VsEp+Zg=
-github.com/Azure/azure-sdk-for-go/sdk/azcore v1.12.0/go.mod h1:99EvauvlcJ1U06amZiksfYz/3aFGyIhWGHVyiZXtBAI=
+github.com/1password/onepassword-sdk-go v0.1.0-beta.12 h1:v9b2fow1cutaCWRsIU1sVxVSzzR90mfkDCwYJeaadWc=
+github.com/1password/onepassword-sdk-go v0.1.0-beta.12/go.mod h1:7wEQynLBXBC4svNx3X82QmCy0Adhm4e+UkM9t9mSSWA=
+github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0 h1:GJHeeA2N7xrG3q30L2UXDyuWRzDM900/65j70wcM4Ww=
+github.com/Azure/azure-sdk-for-go/sdk/azcore v1.13.0/go.mod h1:l38EPgmsp71HHLq9j7De57JcKOWPyhrsW1Awm1JS6K0=
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0 h1:tfLQ34V6F7tVSwoTf/4lH5sE0o6eCJuNDTmH09nDpbc=
github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.7.0/go.mod h1:9kIvujWAA58nmPmWB1m23fyWic1kYZMxD9CxaWn4Qpg=
-github.com/Azure/azure-sdk-for-go/sdk/internal v1.9.1 h1:Xy/qV1DyOhhqsU/z0PyFMJfYCxnzna+vBEUtFW0ksQo=
-github.com/Azure/azure-sdk-for-go/sdk/internal v1.9.1/go.mod h1:oib6iWdC+sILvNUoJbbBn3xv7TXow7mEp/WRcsYvmow=
+github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 h1:ywEEhmNahHBihViHepv3xPBn1663uRv2t2q/ESv9seY=
+github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0/go.mod h1:iZDifYGJTIgIIkYRNWPENUnqx6bJ2xnSDFI2tjwZNuY=
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets v1.1.0 h1:h4Zxgmi9oyZL2l8jeg1iRTqPloHktywWcu0nlJmo1tA=
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azsecrets v1.1.0/go.mod h1:LgLGXawqSreJz135Elog0ywTJDsm0Hz2k+N+6ZK35u8=
github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/internal v1.0.1 h1:9fXQS/0TtQmKXp8SureKouF+idbQvp7cPUxykiohnBs=
@@ -68,10 +68,10 @@
github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI=
github.com/aws/aws-sdk-go-v2 v1.30.3 h1:jUeBtG0Ih+ZIFH0F4UkmL9w3cSpaMv9tYYDbzILP8dY=
github.com/aws/aws-sdk-go-v2 v1.30.3/go.mod h1:nIQjQVp5sfpQcTc9mPSr1B0PaWK5ByX9MOoDadSN4lc=
-github.com/aws/aws-sdk-go-v2/config v1.27.26 h1:T1kAefbKuNum/AbShMsZEro6eRkeOT8YILfE9wyjAYQ=
-github.com/aws/aws-sdk-go-v2/config v1.27.26/go.mod h1:ivWHkAWFrw/nxty5Fku7soTIVdqZaZ7dw+tc5iGW3GA=
-github.com/aws/aws-sdk-go-v2/credentials v1.17.26 h1:tsm8g/nJxi8+/7XyJJcP2dLrnK/5rkFp6+i2nhmz5fk=
-github.com/aws/aws-sdk-go-v2/credentials v1.17.26/go.mod h1:3vAM49zkIa3q8WT6o9Ve5Z0vdByDMwmdScO0zvThTgI=
+github.com/aws/aws-sdk-go-v2/config v1.27.27 h1:HdqgGt1OAP0HkEDDShEl0oSYa9ZZBSOmKpdpsDMdO90=
+github.com/aws/aws-sdk-go-v2/config v1.27.27/go.mod h1:MVYamCg76dFNINkZFu4n4RjDixhVr51HLj4ErWzrVwg=
+github.com/aws/aws-sdk-go-v2/credentials v1.17.27 h1:2raNba6gr2IfA0eqqiP2XiQ0UVOpGPgDSi0I9iAP+UI=
+github.com/aws/aws-sdk-go-v2/credentials v1.17.27/go.mod h1:gniiwbGahQByxan6YjQUMcW4Aov6bLC3m+evgcoN4r4=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11 h1:KreluoV8FZDEtI6Co2xuNk/UqI9iwMrOx/87PBNIKqw=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.11/go.mod h1:SeSUYBLsMYFoRvHE0Tjvn7kbxaUhl75CJi1sbfhMxkU=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.15 h1:SoNJ4RlFEQEbtDcCEt+QG56MY4fm4W8rYirAmq+/DdU=
@@ -84,10 +84,10 @@
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.3/go.mod h1:GlAeCkHwugxdHaueRr4nhPuY+WW+gR8UjlcqzPr1SPI=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17 h1:HGErhhrxZlQ044RiM+WdoZxp0p+EGM62y3L6pwA4olE=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.17/go.mod h1:RkZEx4l0EHYDJpWppMJ3nD9wZJAa8/0lq9aVC+r2UII=
-github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.32.3 h1:ilavrucVBQHYnMjD2KmZQDCU1fuluQb0l9zRigGNVEc=
-github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.32.3/go.mod h1:TKKN7IQoM7uTnyuFm9bm9cw5P//ZYTl4m3htBWQ1G/c=
-github.com/aws/aws-sdk-go-v2/service/sso v1.22.3 h1:Fv1vD2L65Jnp5QRsdiM64JvUM4Xe+E0JyVsRQKv6IeA=
-github.com/aws/aws-sdk-go-v2/service/sso v1.22.3/go.mod h1:ooyCOXjvJEsUw7x+ZDHeISPMhtwI3ZCB7ggFMcFfWLU=
+github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.32.4 h1:NgRFYyFpiMD62y4VPXh4DosPFbZd4vdMVBWKk0VmWXc=
+github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.32.4/go.mod h1:TKKN7IQoM7uTnyuFm9bm9cw5P//ZYTl4m3htBWQ1G/c=
+github.com/aws/aws-sdk-go-v2/service/sso v1.22.4 h1:BXx0ZIxvrJdSgSvKTZ+yRBeSqqgPM89VPlulEcl37tM=
+github.com/aws/aws-sdk-go-v2/service/sso v1.22.4/go.mod h1:ooyCOXjvJEsUw7x+ZDHeISPMhtwI3ZCB7ggFMcFfWLU=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4 h1:yiwVzJW2ZxZTurVbYWA7QOrAaCYQR72t0wrSBfoesUE=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.26.4/go.mod h1:0oxfLkpz3rQ/CHlx5hB7H69YUpFiI1tql6Q6Ne+1bCw=
github.com/aws/aws-sdk-go-v2/service/sts v1.30.3 h1:ZsDKRLXGWHk8WdtyYMoGNO7bTudrvuKpDKgMVRlepGE=
@@ -112,16 +112,18 @@
github.com/charmbracelet/bubbles v0.18.0/go.mod h1:08qhZhtIwzgrtBjAcJnij1t1H0ZRjwHyGsy6AL11PSw=
github.com/charmbracelet/bubbletea v0.26.6 h1:zTCWSuST+3yZYZnVSvbXwKOPRSNZceVeqpzOLN2zq1s=
github.com/charmbracelet/bubbletea v0.26.6/go.mod h1:dz8CWPlfCCGLFbBlTY4N7bjLiyOGDJEnd2Muu7pOWhk=
-github.com/charmbracelet/glamour v0.7.0 h1:2BtKGZ4iVJCDfMF229EzbeR1QRKLWztO9dMtjmqZSng=
-github.com/charmbracelet/glamour v0.7.0/go.mod h1:jUMh5MeihljJPQbJ/wf4ldw2+yBP59+ctV36jASy7ps=
+github.com/charmbracelet/glamour v0.8.0 h1:tPrjL3aRcQbn++7t18wOpgLyl8wrOHUEDS7IZ68QtZs=
+github.com/charmbracelet/glamour v0.8.0/go.mod h1:ViRgmKkf3u5S7uakt2czJ272WSg2ZenlYEZXT2x7Bjw=
github.com/charmbracelet/harmonica v0.2.0 h1:8NxJWRWg/bzKqqEaaeFNipOu77YR5t8aSwG4pgaUBiQ=
github.com/charmbracelet/harmonica v0.2.0/go.mod h1:KSri/1RMQOZLbw7AHqgcBycp8pgJnQMYYT8QZRqZ1Ao=
github.com/charmbracelet/lipgloss v0.12.1 h1:/gmzszl+pedQpjCOH+wFkZr/N90Snz40J/NR7A0zQcs=
github.com/charmbracelet/lipgloss v0.12.1/go.mod h1:V2CiwIuhx9S1S1ZlADfOj9HmxeMAORuz5izHb0zGbB8=
github.com/charmbracelet/x/ansi v0.1.4 h1:IEU3D6+dWwPSgZ6HBH+v6oUuZ/nVawMiWj5831KfiLM=
github.com/charmbracelet/x/ansi v0.1.4/go.mod h1:dk73KoMTT5AX5BsX0KrqhsTqAnhZZoCBjs7dGWp4Ktw=
-github.com/charmbracelet/x/input v0.1.2 h1:QJAZr33eOhDowkkEQ24rsJy4Llxlm+fRDf/cQrmqJa0=
-github.com/charmbracelet/x/input v0.1.2/go.mod h1:LGBim0maUY4Pitjn/4fHnuXb4KirU3DODsyuHuXdOyA=
+github.com/charmbracelet/x/exp/golden v0.0.0-20240715153702-9ba8adf781c4 h1:6KzMkQeAF56rggw2NZu1L+TH7j9+DM1/2Kmh7KUxg1I=
+github.com/charmbracelet/x/exp/golden v0.0.0-20240715153702-9ba8adf781c4/go.mod h1:wDlXFlCrmJ8J+swcL/MnGUuYnqgQdW9rhSD61oNMb6U=
+github.com/charmbracelet/x/input v0.1.3 h1:oy4TMhyGQsYs/WWJwu1ELUMFnjiUAXwtDf048fHbCkg=
+github.com/charmbracelet/x/input v0.1.3/go.mod h1:1gaCOyw1KI9e2j00j/BBZ4ErzRZqa05w0Ghn83yIhKU=
github.com/charmbracelet/x/term v0.1.1 h1:3cosVAiPOig+EV4X9U+3LDgtwwAoEzJjNdwbXDjF6yI=
github.com/charmbracelet/x/term v0.1.1/go.mod h1:wB1fHt5ECsu3mXYusyzcngVWWlu1KKUmmLhfgr/Flxw=
github.com/charmbracelet/x/windows v0.1.2 h1:Iumiwq2G+BRmgoayww/qfcvof7W/3uLoelhxojXlRWg=
@@ -141,16 +143,16 @@
github.com/creack/pty v1.1.21/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
github.com/creack/pty/v2 v2.0.0-20231209135443-03db72c7b76c h1:5l8y/PgjeX1aUyZxXabtAf2ahCYQaqWzlFzQgU16o0U=
github.com/creack/pty/v2 v2.0.0-20231209135443-03db72c7b76c/go.mod h1:1gZ4PfMDNcYx8FxDdnF/6HYP327cTeB/ru6UdoWVQvw=
-github.com/cyphar/filepath-securejoin v0.3.0 h1:tXpmbiaeBrS/K2US8nhgwdKYnfAOnVfkcLPKFgFHeA0=
-github.com/cyphar/filepath-securejoin v0.3.0/go.mod h1:F7i41x/9cBF7lzCrVsYs9fuzwRZm4NQsGTBdpp6mETc=
+github.com/cyphar/filepath-securejoin v0.3.1 h1:1V7cHiaW+C+39wEfpH6XlLBQo3j/PciWFrgfCLS8XrE=
+github.com/cyphar/filepath-securejoin v0.3.1/go.mod h1:F7i41x/9cBF7lzCrVsYs9fuzwRZm4NQsGTBdpp6mETc=
github.com/danieljoos/wincred v1.2.2 h1:774zMFJrqaeYCK2W57BgAem/MLi6mtSE47MB6BOJ0i0=
github.com/danieljoos/wincred v1.2.2/go.mod h1:w7w4Utbrz8lqeMbDAK0lkNJUv5sAOkFi7nd/ogr0Uh8=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/dlclark/regexp2 v1.11.2 h1:/u628IuisSTwri5/UKloiIsH8+qF2Pu7xEQX+yIKg68=
-github.com/dlclark/regexp2 v1.11.2/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
+github.com/dlclark/regexp2 v1.11.4 h1:rPYF9/LECdNymJufQKmri9gV604RvvABwgOA8un7yAo=
+github.com/dlclark/regexp2 v1.11.4/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI=
github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ=
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
@@ -163,8 +165,8 @@
github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f h1:Y/CXytFA4m6baUTXGLOoWe4PQhGxaX0KpnayAqC48p4=
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f/go.mod h1:vw97MGsxSvLiUE2X8qFplwetxpGLQrlU1Q9AUEIzCaM=
-github.com/extism/go-sdk v1.3.0 h1:DBd4FzDBUAL3P01MNqUD2+x8G7qyYdJ7pV96NIrfWXA=
-github.com/extism/go-sdk v1.3.0/go.mod h1:tPMWfCSOThie3LSTSZKbrQjRm2oAXxUUjSE4HJWjYQM=
+github.com/extism/go-sdk v1.3.1 h1:eVpuv36b67Km/tAb7Cq6msHEW8kkdFgpZO/7fCwjuoE=
+github.com/extism/go-sdk v1.3.1/go.mod h1:tPMWfCSOThie3LSTSZKbrQjRm2oAXxUUjSE4HJWjYQM=
github.com/fatih/color v1.14.1 h1:qfhVLaG5s+nCROl1zJsZRxFeYrHLqWroPOQ8BWiNb4w=
github.com/fatih/color v1.14.1/go.mod h1:2oHN61fhTpgcxD3TSWCgKDiH1+x4OiDVVGH8WlgGZGg=
github.com/fatih/semgroup v1.2.0 h1:h/OLXwEM+3NNyAdZEpMiH1OzfplU09i2qXPVThGZvyg=
@@ -310,10 +312,9 @@
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4=
github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88=
-github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk=
-github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U=
-github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
+github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=
+github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
github.com/microcosm-cc/bluemonday v1.0.27 h1:MpEUotklkwCSLeH+Qdx1VJgNqLlpY2KXwXFM08ygZfk=
github.com/microcosm-cc/bluemonday v1.0.27/go.mod h1:jFi9vgW+H7c3V0lb6nR74Ib/DIB5OBs92Dimizgw2cA=
github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
@@ -342,16 +343,14 @@
github.com/muesli/combinator v0.3.0/go.mod h1:ttPegJX0DPQaGDtJKMInIP6Vfp5pN8RX7QntFCcpy18=
github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s=
github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8=
-github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo=
-github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8=
+github.com/muesli/termenv v0.15.3-0.20240618155329-98d742f6907a h1:2MaM6YC3mGu54x+RKAA6JiFFHlHDY1UbkxqppT7wYOg=
+github.com/muesli/termenv v0.15.3-0.20240618155329-98d742f6907a/go.mod h1:hxSnBBYLK21Vtq/PHd0S2FYCxBXzBua8ov5s1RobyRQ=
github.com/nats-io/nats.go v1.34.0 h1:fnxnPCNiwIG5w08rlMcEKTUw4AV/nKyGCOJE8TdhSPk=
github.com/nats-io/nats.go v1.34.0/go.mod h1:Ubdu4Nh9exXdSz0RVWRFBbRfrbSxOYd26oF0wkWclB8=
github.com/nats-io/nkeys v0.4.7 h1:RwNJbbIdYCoClSDNY7QVKZlyb/wfT6ugvFCiKy6vDvI=
github.com/nats-io/nkeys v0.4.7/go.mod h1:kqXRgRDPlGy7nGaEDMuYzmiJCIAAWDK0IMBtDmGD0nc=
github.com/nats-io/nuid v1.0.1 h1:5iA8DT8V7q8WK2EScv2padNa/rTESc1KdnPw4TC2paw=
github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c=
-github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
-github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI=
github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M=
github.com/pelletier/go-toml v1.9.3 h1:zeC5b1GviRUyKYd6OJPvBU/mcVDVoL1OhT17FCt5dSQ=
@@ -401,8 +400,8 @@
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
-github.com/skeema/knownhosts v1.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L3A=
-github.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo=
+github.com/skeema/knownhosts v1.3.0 h1:AM+y0rI04VksttfwjkSTNQorvGqmwATnvnAHpSgc0LY=
+github.com/skeema/knownhosts v1.3.0/go.mod h1:sPINvnADmT/qYH1kfv+ePMmOBTH6Tbl7b5LvTDjFK7M=
github.com/smarty/assertions v1.15.0 h1:cR//PqUBUiQRakZWqBiFFQ9wb8emQGDb0HeGdqGByCY=
github.com/smarty/assertions v1.15.0/go.mod h1:yABtdzeQs6l1brC900WlRNwj6ZR55d7B+E8C6HtKdec=
github.com/smartystreets/goconvey v1.8.1 h1:qGjIddxOk4grTu9JPOU31tVfq3cNdBlNa5sSznIX1xY=
@@ -508,10 +507,10 @@
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
golang.org/x/crypto v0.25.0 h1:ypSNr+bnYL2YhwoMt2zPxHFmbAN1KZs/njMG3hxUp30=
golang.org/x/crypto v0.25.0/go.mod h1:T+wALwcMOSE0kXgUAnPAHqTLW+XHgcELELW8VaDgm/M=
-golang.org/x/crypto/x509roots/fallback v0.0.0-20240709155400-d66d9c31b4ae h1:3Lr8+tydLa3EM5BMsp0/++1Pca9P3T3lnTTj6z5BqOc=
-golang.org/x/crypto/x509roots/fallback v0.0.0-20240709155400-d66d9c31b4ae/go.mod h1:kNa9WdvYnzFwC79zRpLRMJbdEFlhyM5RPFBBZp/wWH8=
-golang.org/x/exp v0.0.0-20240707233637-46b078467d37 h1:uLDX+AfeFCct3a2C7uIWBKMJIR3CJMhcgfrUAqjRK6w=
-golang.org/x/exp v0.0.0-20240707233637-46b078467d37/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY=
+golang.org/x/crypto/x509roots/fallback v0.0.0-20240726163919-3375612bf41a h1:+mrX96OoIUobm534myLOZMfVxVLWu/TpbYrUu6sn4tQ=
+golang.org/x/crypto/x509roots/fallback v0.0.0-20240726163919-3375612bf41a/go.mod h1:kNa9WdvYnzFwC79zRpLRMJbdEFlhyM5RPFBBZp/wWH8=
+golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8=
+golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
golang.org/x/mod v0.19.0 h1:fEdghXQSo20giMthA7cd28ZC+jts4amQ3YMXiP5oMQ8=
@@ -525,13 +524,13 @@
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
golang.org/x/net v0.27.0 h1:5K3Njcw06/l2y9vpGCSdcxWOYHOUk3dVNGDXN+FvAys=
golang.org/x/net v0.27.0/go.mod h1:dDi0PyhWNoiUOrAS8uXv/vnScO4wnHQO4mj9fn/RytE=
-golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs=
-golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
+golang.org/x/oauth2 v0.22.0 h1:BzDx2FehcG7jJwgWLELCdmLuxk2i+x9UDpSiss2u0ZA=
+golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=
-golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
+golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -551,8 +550,8 @@
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI=
-golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM=
+golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/telemetry v0.0.0-20240521205824-bda55230c457 h1:zf5N6UOrA487eEFacMePxjXAJctxKmyjKUsjA11Uzuk=
golang.org/x/telemetry v0.0.0-20240521205824-bda55230c457/go.mod h1:pRgIJT+bRLFKnoM1ldnzKoxTIn14Yxz928LQRYYgIN0=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/chezmoi/chezmoi.go new/chezmoi-2.52.0/internal/chezmoi/chezmoi.go
--- old/chezmoi-2.51.0/internal/chezmoi/chezmoi.go 2024-07-15 21:36:30.000000000 +0200
+++ new/chezmoi-2.52.0/internal/chezmoi/chezmoi.go 2024-08-07 22:11:15.000000000 +0200
@@ -321,6 +321,16 @@
return len(bytes.TrimSpace(data)) == 0
}
+// isPrivate returns if fileInfo is private.
+func isPrivate(fileInfo fs.FileInfo) bool {
+ return fileInfo.Mode().Perm()&0o77 == 0
+}
+
+// isReadOnly returns if fileInfo is read-only.
+func isReadOnly(fileInfo fs.FileInfo) bool {
+ return fileInfo.Mode().Perm()&0o222 == 0
+}
+
// md5Sum returns the MD5 sum of data.
func md5Sum(data []byte) []byte {
md5SumArr := md5.Sum(data) //nolint:gosec
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/chezmoi/chezmoi_unix.go new/chezmoi-2.52.0/internal/chezmoi/chezmoi_unix.go
--- old/chezmoi-2.51.0/internal/chezmoi/chezmoi_unix.go 2024-07-15 21:36:30.000000000 +0200
+++ new/chezmoi-2.52.0/internal/chezmoi/chezmoi_unix.go 2024-08-07 22:11:15.000000000 +0200
@@ -31,13 +31,3 @@
func UserHomeDir() (string, error) {
return os.UserHomeDir()
}
-
-// isPrivate returns if fileInfo is private.
-func isPrivate(fileInfo fs.FileInfo) bool {
- return fileInfo.Mode().Perm()&0o77 == 0
-}
-
-// isReadOnly returns if fileInfo is read-only.
-func isReadOnly(fileInfo fs.FileInfo) bool {
- return fileInfo.Mode().Perm()&0o222 == 0
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/chezmoi/chezmoi_windows.go new/chezmoi-2.52.0/internal/chezmoi/chezmoi_windows.go
--- old/chezmoi-2.51.0/internal/chezmoi/chezmoi_windows.go 2024-07-15 21:36:30.000000000 +0200
+++ new/chezmoi-2.52.0/internal/chezmoi/chezmoi_windows.go 2024-08-07 22:11:15.000000000 +0200
@@ -32,6 +32,9 @@
// in the PATHEXT environment variable as per
// https://www.nextofwindows.com/what-is-pathext-environment-variable-in-windo….
func IsExecutable(fileInfo fs.FileInfo) bool {
+ if fileInfo.Mode().Perm()&0o111 != 0 {
+ return true
+ }
if !fileInfo.Mode().IsRegular() {
return false
}
@@ -55,16 +58,6 @@
return os.UserHomeDir()
}
-// isPrivate returns false on Windows.
-func isPrivate(_ fs.FileInfo) bool {
- return false
-}
-
-// isReadOnly returns false on Windows.
-func isReadOnly(_ fs.FileInfo) bool {
- return false
-}
-
// isSlash returns if c is a slash character.
func isSlash(c byte) bool {
return c == '\\' || c == '/'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/cmd/cmd.go new/chezmoi-2.52.0/internal/cmd/cmd.go
--- old/chezmoi-2.51.0/internal/cmd/cmd.go 2024-07-15 21:36:30.000000000 +0200
+++ new/chezmoi-2.52.0/internal/cmd/cmd.go 2024-08-07 22:11:15.000000000 +0200
@@ -13,6 +13,7 @@
"strings"
"github.com/charmbracelet/glamour"
+ "github.com/charmbracelet/glamour/styles"
"github.com/spf13/cobra"
"go.etcd.io/bbolt"
@@ -52,7 +53,7 @@
panic(err)
}
- longHelpStyleConfig := glamour.ASCIIStyleConfig
+ longHelpStyleConfig := styles.ASCIIStyleConfig
longHelpStyleConfig.Code.StylePrimitive.BlockPrefix = ""
longHelpStyleConfig.Code.StylePrimitive.BlockSuffix = ""
longHelpStyleConfig.Emph.BlockPrefix = ""
@@ -66,7 +67,7 @@
panic(err)
}
- exampleStyleConfig := glamour.ASCIIStyleConfig
+ exampleStyleConfig := styles.ASCIIStyleConfig
exampleStyleConfig.Code.StylePrimitive.BlockPrefix = ""
exampleStyleConfig.Code.StylePrimitive.BlockSuffix = ""
exampleStyleConfig.Document.Margin = nil
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/cmd/config.go new/chezmoi-2.52.0/internal/cmd/config.go
--- old/chezmoi-2.51.0/internal/cmd/config.go 2024-07-15 21:36:30.000000000 +0200
+++ new/chezmoi-2.52.0/internal/cmd/config.go 2024-08-07 22:11:15.000000000 +0200
@@ -438,6 +438,8 @@
"gitHubLatestRelease": c.gitHubLatestReleaseTemplateFunc,
"gitHubLatestReleaseAssetURL": c.gitHubLatestReleaseAssetURLTemplateFunc,
"gitHubLatestTag": c.gitHubLatestTagTemplateFunc,
+ "gitHubRelease": c.gitHubReleaseTemplateFunc,
+ "gitHubReleaseAssetURL": c.gitHubReleaseAssetURLTemplateFunc,
"gitHubReleases": c.gitHubReleasesTemplateFunc,
"gitHubTags": c.gitHubTagsTemplateFunc,
"glob": c.globTemplateFunc,
@@ -475,8 +477,8 @@
"output": c.outputTemplateFunc,
"pass": c.passTemplateFunc,
"passFields": c.passFieldsTemplateFunc,
- "passhole": c.passholeTemplateFunc,
"passRaw": c.passRawTemplateFunc,
+ "passhole": c.passholeTemplateFunc,
"pruneEmptyDicts": c.pruneEmptyDictsTemplateFunc,
"quoteList": c.quoteListTemplateFunc,
"rbw": c.rbwTemplateFunc,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/cmd/editcmd.go new/chezmoi-2.52.0/internal/cmd/editcmd.go
--- old/chezmoi-2.51.0/internal/cmd/editcmd.go 2024-07-15 21:36:30.000000000 +0200
+++ new/chezmoi-2.52.0/internal/cmd/editcmd.go 2024-08-07 22:11:15.000000000 +0200
@@ -1,6 +1,7 @@
package cmd
import (
+ "bytes"
"log/slog"
"os"
"runtime"
@@ -87,6 +88,7 @@
type transparentlyDecryptedFile struct {
sourceAbsPath chezmoi.AbsPath
decryptedAbsPath chezmoi.AbsPath
+ preEditPlaintext []byte
}
var transparentlyDecryptedFiles []transparentlyDecryptedFile
TARGET_REL_PATH:
@@ -119,6 +121,7 @@
transparentlyDecryptedFile := transparentlyDecryptedFile{
sourceAbsPath: c.SourceDirAbsPath.Join(sourceRelPath.RelPath()),
decryptedAbsPath: decryptedAbsPath,
+ preEditPlaintext: contents,
}
transparentlyDecryptedFiles = append(transparentlyDecryptedFiles, transparentlyDecryptedFile)
editorArgs = append(editorArgs, decryptedAbsPath.String())
@@ -165,6 +168,13 @@
postEditFunc := func() error {
for _, transparentlyDecryptedFile := range transparentlyDecryptedFiles {
+ postEditPlaintext, err := c.baseSystem.ReadFile(transparentlyDecryptedFile.decryptedAbsPath)
+ if err != nil {
+ return err
+ }
+ if bytes.Equal(postEditPlaintext, transparentlyDecryptedFile.preEditPlaintext) {
+ return nil
+ }
contents, err := c.encryption.EncryptFile(transparentlyDecryptedFile.decryptedAbsPath)
if err != nil {
return err
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/cmd/githubtemplatefuncs.go new/chezmoi-2.52.0/internal/cmd/githubtemplatefuncs.go
--- old/chezmoi-2.51.0/internal/cmd/githubtemplatefuncs.go 2024-07-15 21:36:30.000000000 +0200
+++ new/chezmoi-2.52.0/internal/cmd/githubtemplatefuncs.go 2024-08-07 22:11:15.000000000 +0200
@@ -37,19 +37,21 @@
}
var (
- gitHubKeysStateBucket = []byte("gitHubLatestKeysState")
- gitHubLatestReleaseStateBucket = []byte("gitHubLatestReleaseState")
- gitHubReleasesStateBucket = []byte("gitHubReleasesState")
- gitHubTagsStateBucket = []byte("gitHubTagsState")
+ gitHubKeysStateBucket = []byte("gitHubLatestKeysState")
+ gitHubLatestReleaseStateBucket = []byte("gitHubLatestReleaseState")
+ gitHubReleasesStateBucket = []byte("gitHubReleasesState")
+ gitHubTagsStateBucket = []byte("gitHubTagsState")
+ gitHubVersionReleaseStateBucket = []byte("gitHubVersionReleaseState")
)
type gitHubData struct {
- client *github.Client
- clientErr error
- keysCache map[string][]*github.Key
- latestReleaseCache map[string]map[string]*github.RepositoryRelease
- releasesCache map[string]map[string][]*github.RepositoryRelease
- tagsCache map[string]map[string][]*github.RepositoryTag
+ client *github.Client
+ clientErr error
+ keysCache map[string][]*github.Key
+ versionReleaseCache map[string]map[string]map[string]*github.RepositoryRelease
+ latestReleaseCache map[string]map[string]*github.RepositoryRelease
+ releasesCache map[string]map[string][]*github.RepositoryRelease
+ tagsCache map[string]map[string][]*github.RepositoryTag
}
func (c *Config) gitHubKeysTemplateFunc(user string) []*github.Key {
@@ -108,11 +110,7 @@
return allKeys
}
-func (c *Config) gitHubLatestReleaseAssetURLTemplateFunc(ownerRepo, pattern string) string {
- release, err := c.gitHubLatestRelease(ownerRepo)
- if err != nil {
- panic(err)
- }
+func (c *Config) githubMatchingReleaseAssetURL(release *github.RepositoryRelease, pattern string) string {
for _, asset := range release.Assets {
if asset.Name == nil {
continue
@@ -127,6 +125,79 @@
return ""
}
+func (c *Config) gitHubLatestReleaseAssetURLTemplateFunc(ownerRepo, pattern string) string {
+ release, err := c.gitHubLatestRelease(ownerRepo)
+ if err != nil {
+ panic(err)
+ }
+ return c.githubMatchingReleaseAssetURL(release, pattern)
+}
+
+func (c *Config) gitHubReleaseAssetURLTemplateFunc(ownerRepo, version, pattern string) string {
+ release, err := c.gitHubRelease(ownerRepo, version)
+ if err != nil {
+ panic(err)
+ }
+ return c.githubMatchingReleaseAssetURL(release, pattern)
+}
+
+func (c *Config) gitHubRelease(ownerRepo, version string) (*github.RepositoryRelease, error) {
+ owner, repo, err := gitHubSplitOwnerRepo(ownerRepo)
+ if err != nil {
+ return nil, err
+ }
+
+ if c.gitHub.versionReleaseCache == nil {
+ c.gitHub.versionReleaseCache = make(map[string]map[string]map[string]*github.RepositoryRelease)
+ }
+ if c.gitHub.versionReleaseCache[owner] == nil {
+ c.gitHub.versionReleaseCache[owner] = make(map[string]map[string]*github.RepositoryRelease)
+ }
+ if c.gitHub.versionReleaseCache[owner][repo] == nil {
+ c.gitHub.versionReleaseCache[owner][repo] = make(map[string]*github.RepositoryRelease)
+ }
+
+ if release := c.gitHub.versionReleaseCache[owner][repo][version]; release != nil {
+ return release, nil
+ }
+
+ now := time.Now()
+ gitHubVersionReleaseKey := []byte(owner + "/" + repo + "/" + version)
+ if c.GitHub.RefreshPeriod != 0 {
+ var gitHubVersionReleaseStateValue gitHubLatestReleaseState
+ switch ok, err := chezmoi.PersistentStateGet(c.persistentState, gitHubVersionReleaseStateBucket, gitHubVersionReleaseKey, &gitHubVersionReleaseStateValue); {
+ case err != nil:
+ return nil, err
+ case ok && now.Before(gitHubVersionReleaseStateValue.RequestedAt.Add(c.GitHub.RefreshPeriod)):
+ return gitHubVersionReleaseStateValue.Release, nil
+ }
+ }
+
+ ctx, cancel := context.WithCancel(context.Background())
+ defer cancel()
+
+ gitHubClient, err := c.getGitHubClient(ctx)
+ if err != nil {
+ return nil, err
+ }
+
+ release, _, err := gitHubClient.Repositories.GetReleaseByTag(ctx, owner, repo, version)
+ if err != nil {
+ return nil, err
+ }
+
+ if err := chezmoi.PersistentStateSet(c.persistentState, gitHubVersionReleaseStateBucket, gitHubVersionReleaseKey, &gitHubLatestReleaseState{
+ RequestedAt: now,
+ Release: release,
+ }); err != nil {
+ return nil, err
+ }
+
+ c.gitHub.versionReleaseCache[owner][repo][version] = release
+
+ return release, nil
+}
+
func (c *Config) gitHubLatestRelease(ownerRepo string) (*github.RepositoryRelease, error) {
owner, repo, err := gitHubSplitOwnerRepo(ownerRepo)
if err != nil {
@@ -185,6 +256,14 @@
if err != nil {
panic(err)
}
+ return release
+}
+
+func (c *Config) gitHubReleaseTemplateFunc(ownerRepo, version string) *github.RepositoryRelease {
+ release, err := c.gitHubRelease(ownerRepo, version)
+ if err != nil {
+ panic(err)
+ }
return release
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/cmd/licensecmd.go new/chezmoi-2.52.0/internal/cmd/licensecmd.go
--- old/chezmoi-2.51.0/internal/cmd/licensecmd.go 2024-07-15 21:36:30.000000000 +0200
+++ new/chezmoi-2.52.0/internal/cmd/licensecmd.go 2024-08-07 22:11:15.000000000 +0200
@@ -4,6 +4,7 @@
"bytes"
"github.com/charmbracelet/glamour"
+ "github.com/charmbracelet/glamour/styles"
"github.com/spf13/cobra"
"github.com/twpayne/chezmoi/v2/assets/chezmoi.io/docs"
@@ -27,7 +28,7 @@
func (c *Config) runLicenseCmd(cmd *cobra.Command, args []string) error {
renderer, err := glamour.NewTermRenderer(
- glamour.WithStyles(glamour.ASCIIStyleConfig),
+ glamour.WithStyles(styles.ASCIIStyleConfig),
glamour.WithWordWrap(80),
)
if err != nil {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/cmd/readdcmd.go new/chezmoi-2.52.0/internal/cmd/readdcmd.go
--- old/chezmoi-2.51.0/internal/cmd/readdcmd.go 2024-07-15 21:36:30.000000000 +0200
+++ new/chezmoi-2.52.0/internal/cmd/readdcmd.go 2024-08-07 22:11:15.000000000 +0200
@@ -4,7 +4,9 @@
"bytes"
"fmt"
"io/fs"
+ "runtime"
"sort"
+ "time"
"github.com/spf13/cobra"
@@ -16,6 +18,23 @@
recursive bool
}
+// A fileInfo is a simple struct that implements the io/fs.FileInfo interface
+// for the purpose of overriding the mode on Windows.
+type fileInfo struct {
+ name string
+ size int64
+ mode fs.FileMode
+ modTime time.Time
+ isDir bool
+}
+
+func (fi *fileInfo) Name() string { return fi.name }
+func (fi *fileInfo) Size() int64 { return fi.size }
+func (fi *fileInfo) Mode() fs.FileMode { return fi.mode }
+func (fi *fileInfo) ModTime() time.Time { return fi.modTime }
+func (fi *fileInfo) IsDir() bool { return fi.isDir }
+func (fi *fileInfo) Sys() any { return nil } // Sys always returns nil to avoid any inconsistency.
+
func (c *Config) newReAddCmd() *cobra.Command {
reAddCmd := &cobra.Command{
Use: "re-add",
@@ -105,8 +124,15 @@
if err != nil {
return err
}
- if bytes.Equal(actualContents, targetContents) && actualStateFile.Perm() == targetStateFile.Perm(c.Umask) {
- continue
+ if bytes.Equal(actualContents, targetContents) {
+ // On Windows, ignore permission changes as they are not preserved
+ // by the filesystem. On other systems, if there are no permission
+ // changes, continue.
+ //
+ // See https://github.com/twpayne/chezmoi/issues/3891.
+ if runtime.GOOS == "windows" || actualStateFile.Perm() == targetStateFile.Perm(c.Umask) {
+ continue
+ }
}
if c.interactive {
@@ -140,6 +166,21 @@
}
}
+ // On Windows, as the file mode is not preserved by the filesystem, copy
+ // the existing mode from the target file. Hack this in by replacing the
+ // io/fs.FileInfo of the destination file with a new io/fs.FileInfo with
+ // the mode of the target file.
+ //
+ // See https://github.com/twpayne/chezmoi/issues/3891.
+ if runtime.GOOS == "windows" {
+ destAbsPathInfo = &fileInfo{
+ name: destAbsPathInfo.Name(),
+ size: destAbsPathInfo.Size(),
+ mode: targetStateFile.Perm(0), // Use the mode from the target.
+ modTime: destAbsPathInfo.ModTime(),
+ }
+ }
+
destAbsPathInfos := map[chezmoi.AbsPath]fs.FileInfo{
destAbsPath: destAbsPathInfo,
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/cmd/readdcmd_test.go new/chezmoi-2.52.0/internal/cmd/readdcmd_test.go
--- old/chezmoi-2.51.0/internal/cmd/readdcmd_test.go 1970-01-01 01:00:00.000000000 +0100
+++ new/chezmoi-2.52.0/internal/cmd/readdcmd_test.go 2024-08-07 22:11:15.000000000 +0200
@@ -0,0 +1,40 @@
+package cmd
+
+import (
+ "io/fs"
+ "runtime"
+ "testing"
+
+ "github.com/alecthomas/assert/v2"
+ "github.com/twpayne/go-vfs/v5"
+ "github.com/twpayne/go-vfs/v5/vfst"
+
+ "github.com/twpayne/chezmoi/v2/internal/chezmoitest"
+)
+
+var _ fs.FileInfo = &fileInfo{}
+
+func TestIssue3891(t *testing.T) {
+ if runtime.GOOS != "windows" {
+ t.Skip("Windows only")
+ }
+
+ chezmoitest.WithTestFS(t, map[string]any{
+ "/home/user": map[string]any{
+ "run.sh": "#!/bin/sh\n",
+ ".local/share/chezmoi": map[string]any{
+ "executable_run.sh": "#!/bin/sh",
+ },
+ },
+ }, func(fileSystem vfs.FS) {
+ assert.NoError(t, newTestConfig(t, fileSystem).execute([]string{"re-add"}))
+ vfst.RunTests(t, fileSystem, "",
+ vfst.TestPath("/home/user/.local/share/chezmoi/executable_run.sh",
+ vfst.TestContentsString("#!/bin/sh\n"),
+ ),
+ vfst.TestPath("/home/user/.local/share/chezmoi/run.sh",
+ vfst.TestDoesNotExist(),
+ ),
+ )
+ })
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/cmd/statecmd.go new/chezmoi-2.52.0/internal/cmd/statecmd.go
--- old/chezmoi-2.51.0/internal/cmd/statecmd.go 2024-07-15 21:36:30.000000000 +0200
+++ new/chezmoi-2.52.0/internal/cmd/statecmd.go 2024-08-07 22:11:15.000000000 +0200
@@ -171,14 +171,15 @@
func (c *Config) runStateDumpCmd(cmd *cobra.Command, args []string) error {
data, err := chezmoi.PersistentStateData(c.persistentState, map[string][]byte{
- "configState": chezmoi.ConfigStateBucket,
- "entryState": chezmoi.EntryStateBucket,
- "gitHubKeysState": gitHubKeysStateBucket,
- "gitHubLatestReleaseState": gitHubLatestReleaseStateBucket,
- "gitHubReleasesState": gitHubReleasesStateBucket,
- "gitHubTagsState": gitHubTagsStateBucket,
- "gitRepoExternalState": chezmoi.GitRepoExternalStateBucket,
- "scriptState": chezmoi.ScriptStateBucket,
+ "configState": chezmoi.ConfigStateBucket,
+ "entryState": chezmoi.EntryStateBucket,
+ "gitHubKeysState": gitHubKeysStateBucket,
+ "gitHubLatestReleaseState": gitHubLatestReleaseStateBucket,
+ "gitHubReleasesState": gitHubReleasesStateBucket,
+ "gitHubTagsState": gitHubTagsStateBucket,
+ "gitHubVersionReleaseState": gitHubVersionReleaseStateBucket,
+ "gitRepoExternalState": chezmoi.GitRepoExternalStateBucket,
+ "scriptState": chezmoi.ScriptStateBucket,
})
if err != nil {
return err
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/cmd/testdata/scripts/configstate.txtar new/chezmoi-2.52.0/internal/cmd/testdata/scripts/configstate.txtar
--- old/chezmoi-2.51.0/internal/cmd/testdata/scripts/configstate.txtar 2024-07-15 21:36:30.000000000 +0200
+++ new/chezmoi-2.52.0/internal/cmd/testdata/scripts/configstate.txtar 2024-08-07 22:11:15.000000000 +0200
@@ -71,6 +71,7 @@
gitHubLatestReleaseState: {}
gitHubReleasesState: {}
gitHubTagsState: {}
+gitHubVersionReleaseState: {}
gitRepoExternalState: {}
scriptState: {}
-- home/user/.local/share/chezmoi/.chezmoi.toml.tmpl --
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/cmd/testdata/scripts/externalguess.txtar new/chezmoi-2.52.0/internal/cmd/testdata/scripts/externalguess.txtar
--- old/chezmoi-2.51.0/internal/cmd/testdata/scripts/externalguess.txtar 2024-07-15 21:36:30.000000000 +0200
+++ new/chezmoi-2.52.0/internal/cmd/testdata/scripts/externalguess.txtar 2024-08-07 22:11:15.000000000 +0200
@@ -9,10 +9,10 @@
cmp $HOME/.dir/dir/file golden/dir/file
# test that chezmoi sniffs the format of tar.bz2 files
-exec tar -cjf www/archive.tar.bz2 archive/
-cp www/archive.tar.bz2 www/archive
-exec chezmoi apply --force --refresh-externals
-cmp $HOME/.dir/dir/file golden/dir/file
+[exec:bzip2] exec tar -cjf www/archive.tar.bz2 archive/
+[exec:bzip2] cp www/archive.tar.bz2 www/archive
+[exec:bzip2] exec chezmoi apply --force --refresh-externals
+[exec:bzip2] cmp $HOME/.dir/dir/file golden/dir/file
# test that chezmoi sniffs the format of tar.gz files
exec tar -czf www/archive.tar.gz archive/
@@ -20,20 +20,18 @@
exec chezmoi apply --force --refresh-externals
cmp $HOME/.dir/dir/file golden/dir/file
-[!exec:zip] stop 'zip not found in $PATH'
-
# test that chezmoi sniffs the format of zip files
-exec zip -r www/archive.zip archive
-cp www/archive.zip www/archive
-exec chezmoi apply --force --refresh-externals
-cmp $HOME/.dir/dir/file golden/dir/file
+[exec:zip] exec zip -r www/archive.zip archive
+[exec:zip] cp www/archive.zip www/archive
+[exec:zip] exec chezmoi apply --force --refresh-externals
+[exec:zip] cmp $HOME/.dir/dir/file golden/dir/file
chhome home2/user
# test that chezmoi allows the format to be overridden
-cp www/archive.zip www/archive2.tar.gz
-exec chezmoi apply --force
-cmp $HOME/.dir/dir/file golden/dir/file
+[exec:zip] cp www/archive.zip www/archive2.tar.gz
+[exec:zip] exec chezmoi apply --force
+[exec:zip] cmp $HOME/.dir/dir/file golden/dir/file
-- archive/dir/file --
# contents of dir/file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/cmd/testdata/scripts/githubtemplatefuncs.txtar new/chezmoi-2.52.0/internal/cmd/testdata/scripts/githubtemplatefuncs.txtar
--- old/chezmoi-2.51.0/internal/cmd/testdata/scripts/githubtemplatefuncs.txtar 2024-07-15 21:36:30.000000000 +0200
+++ new/chezmoi-2.52.0/internal/cmd/testdata/scripts/githubtemplatefuncs.txtar 2024-08-07 22:11:15.000000000 +0200
@@ -16,9 +16,14 @@
exec chezmoi execute-template '{{ (index (gitHubTags "twpayne/chezmoi") 0).Name }}'
stdout ^v2\.
+# test gitHubRelease template function
+exec chezmoi execute-template '{{ (gitHubRelease "twpayne/chezmoi" "v2.49.0").TagName }}'
+stdout ^v2\.49\.0
+
+# test gitHubReleaseAssetURL template function
+[!windows] exec chezmoi execute-template '{{ gitHubReleaseAssetURL "twpayne/chezmoi" "v2.50.0" (printf "chezmoi-%s-%s" .chezmoi.os .chezmoi.arch) }}'
+[!windows] stdout https://github.com/twpayne/chezmoi/releases/download/v2\.50\.0/chezmoi-
+
# test gitHubReleases template functions
exec chezmoi execute-template '{{ (index (gitHubReleases "twpayne/chezmoi") 0).TagName }}'
stdout ^v2\.
-
-# gitHubReleases
-# gitHubTags
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/cmd/testdata/scripts/issue3887.txtar new/chezmoi-2.52.0/internal/cmd/testdata/scripts/issue3887.txtar
--- old/chezmoi-2.51.0/internal/cmd/testdata/scripts/issue3887.txtar 1970-01-01 01:00:00.000000000 +0100
+++ new/chezmoi-2.52.0/internal/cmd/testdata/scripts/issue3887.txtar 2024-08-07 22:11:15.000000000 +0200
@@ -0,0 +1,21 @@
+[!exec:age] skip 'age not found in path'
+
+mkageconfig
+mkgitconfig
+
+# add an initial encrypted file
+exec chezmoi init
+exec chezmoi add --encrypt ${HOME}${/}.encrypted
+exec chezmoi git add .
+exec chezmoi git commit -- -m 'initial commit' .
+
+# test that chezmoi edit on an encrypted file with no changes does not change the ciphertext
+prependline ${CHEZMOICONFIGDIR}/chezmoi.toml 'edit.command = "true"'
+exec chezmoi edit ${HOME}${/}.encrypted
+exec chezmoi diff
+! stdout .
+exec chezmoi git diff
+! stdout .
+
+-- home/user/.encrypted --
+plaintext
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/cmd/testdata/scripts/issue3891.txtar new/chezmoi-2.52.0/internal/cmd/testdata/scripts/issue3891.txtar
--- old/chezmoi-2.51.0/internal/cmd/testdata/scripts/issue3891.txtar 1970-01-01 01:00:00.000000000 +0100
+++ new/chezmoi-2.52.0/internal/cmd/testdata/scripts/issue3891.txtar 2024-08-07 22:11:15.000000000 +0200
@@ -0,0 +1,10 @@
+[!windows] skip 'Windows only'
+
+# test that chezmoi re-add does not remove the executable_ attribute on Windows
+exec chezmoi apply
+exec chezmoi re-add --debug
+exists $CHEZMOISOURCEDIR/executable_run.sh
+! exists $CHEZMOISOURCEDIR/run.sh
+
+-- home/user/.local/share/chezmoi/executable_run.sh --
+#!/bin/sh
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/cmd/testdata/scripts/state_unix.txtar new/chezmoi-2.52.0/internal/cmd/testdata/scripts/state_unix.txtar
--- old/chezmoi-2.51.0/internal/cmd/testdata/scripts/state_unix.txtar 2024-07-15 21:36:30.000000000 +0200
+++ new/chezmoi-2.52.0/internal/cmd/testdata/scripts/state_unix.txtar 2024-08-07 22:11:15.000000000 +0200
@@ -44,6 +44,7 @@
gitHubLatestReleaseState: {}
gitHubReleasesState: {}
gitHubTagsState: {}
+gitHubVersionReleaseState: {}
gitRepoExternalState: {}
scriptState: {}
-- home/user/.local/share/chezmoi/run_once_script.sh --
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/cmd/testdata/scripts/state_windows.txtar new/chezmoi-2.52.0/internal/cmd/testdata/scripts/state_windows.txtar
--- old/chezmoi-2.51.0/internal/cmd/testdata/scripts/state_windows.txtar 2024-07-15 21:36:30.000000000 +0200
+++ new/chezmoi-2.52.0/internal/cmd/testdata/scripts/state_windows.txtar 2024-08-07 22:11:15.000000000 +0200
@@ -25,6 +25,7 @@
gitHubLatestReleaseState: {}
gitHubReleasesState: {}
gitHubTagsState: {}
+gitHubVersionReleaseState: {}
gitRepoExternalState: {}
scriptState: {}
-- home/user/.local/share/chezmoi/run_once_script.cmd --
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/chezmoi-2.51.0/internal/cmds/lint-whitespace/main.go new/chezmoi-2.52.0/internal/cmds/lint-whitespace/main.go
--- old/chezmoi-2.51.0/internal/cmds/lint-whitespace/main.go 2024-07-15 21:36:30.000000000 +0200
+++ new/chezmoi-2.52.0/internal/cmds/lint-whitespace/main.go 2024-08-07 22:11:15.000000000 +0200
@@ -18,10 +18,9 @@
regexp.MustCompile(`\A\.git\z`),
regexp.MustCompile(`\A\.idea\z`),
regexp.MustCompile(`\A\.vagrant\z`),
- regexp.MustCompile(`\A\.venv\z`),
+ regexp.MustCompile(`\b\.?venv\b`),
regexp.MustCompile(`\A\.vscode\z`),
regexp.MustCompile(`\ACOMMIT\z`),
- regexp.MustCompile(`\Aassets/chezmoi\.io/\.venv\z`),
regexp.MustCompile(`\Aassets/chezmoi\.io/site\z`),
regexp.MustCompile(`\Aassets/scripts/install\.ps1\z`),
regexp.MustCompile(`\Acompletions/chezmoi\.ps1\z`),
++++++ chezmoi.obsinfo ++++++
--- /var/tmp/diff_new_pack.dUDvqM/_old 2024-08-09 16:15:36.833310474 +0200
+++ /var/tmp/diff_new_pack.dUDvqM/_new 2024-08-09 16:15:36.837310641 +0200
@@ -1,5 +1,5 @@
name: chezmoi
-version: 2.51.0
-mtime: 1721072190
-commit: 2a7845f4ffe2fd427c140711c0d7d46424747363
+version: 2.52.0
+mtime: 1723061475
+commit: 64f40d93ea1f1456a6788798b9e9c4813156d86e
++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/chezmoi/vendor.tar.gz /work/SRC/openSUSE:Factory/.chezmoi.new.7232/vendor.tar.gz differ: char 5, line 1
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package ksh for openSUSE:Factory checked in at 2024-08-09 16:14:57
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ksh (Old)
and /work/SRC/openSUSE:Factory/.ksh.new.7232 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ksh"
Fri Aug 9 16:14:57 2024 rev:117 rq:1192627 version:93vu
Changes:
--------
--- /work/SRC/openSUSE:Factory/ksh/ksh.changes 2024-05-14 13:40:47.903918269 +0200
+++ /work/SRC/openSUSE:Factory/.ksh.new.7232/ksh.changes 2024-08-09 16:15:31.333080895 +0200
@@ -1,0 +2,8 @@
+Thu Aug 1 14:04:27 CEST 2024 - mls(a)suse.de
+
+- fix segfault in variable substitution [bsc#1129288]
+ new patch: ksh93-putval.dif
+- fix untrusted environment execution [bsc#1160796] [CVE-2019-14868]
+ new patch: ksh93-untrustedenv.dif
+
+-------------------------------------------------------------------
New:
----
ksh93-putval.dif
ksh93-untrustedenv.dif
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ ksh.spec ++++++
--- /var/tmp/diff_new_pack.18NJu9/_old 2024-08-09 16:15:34.241202280 +0200
+++ /var/tmp/diff_new_pack.18NJu9/_new 2024-08-09 16:15:34.241202280 +0200
@@ -153,6 +153,8 @@
Patch55: ksh93-spawnlock.dif
Patch56: ksh93-filedefined.dif
Patch57: ksh93-no-sysctl.dif
+Patch58: ksh93-putval.dif
+Patch59: ksh93-untrustedenv.dif
Patch62: ksh-locale.patch
Patch63: cpp.patch
@@ -265,6 +267,8 @@
%patch -P 55
%patch -P 56
%patch -P 57
+%patch -P 58
+%patch -P 59
%patch -P 63 -p 1
++++++ ksh93-putval.dif ++++++
--- ./src/cmd/ksh93/sh/name.c.orig 2019-04-04 14:28:17.044667686 +0000
+++ ./src/cmd/ksh93/sh/name.c 2019-04-04 14:28:32.472629455 +0000
@@ -1986,8 +1986,11 @@ void nv_putval(register Namval_t *np, co
up->cp = cp;
if(sp)
{
+ size_t splen = strlen(sp);
int c = cp[dot+append];
- memmove(cp+append,sp,dot);
+ memmove(cp+append,sp,dot>splen?splen:dot);
+ if (dot>splen)
+ memset(cp+append+splen,0,dot-splen);
cp[dot+append] = c;
if(nv_isattr(np, NV_RJUST) && nv_isattr(np, NV_ZFILL))
rightjust(cp,size,'0');
++++++ ksh93-untrustedenv.dif ++++++
--- src/cmd/ksh93/sh/arith.c.orig
+++ src/cmd/ksh93/sh/arith.c
@@ -513,21 +513,34 @@ Sfdouble_t sh_strnum(register const char *str, char** ptr, int mode)
char base=(shp->inarith?0:10), *last;
if(*str==0)
{
- if(ptr)
- *ptr = (char*)str;
- return(0);
- }
- errno = 0;
- d = strtonll(str,&last,&base,-1);
- if(*last || errno)
- {
- if(!last || *last!='.' || last[1]!='.')
- d = strval(shp,str,&last,arith,mode);
- if(!ptr && *last && mode>0)
- errormsg(SH_DICT,ERROR_exit(1),e_lexbadchar,*last,str);
+ d = 0.0;
+ last = (char*)str;
+ } else {
+ errno = 0;
+ d = strtonll(str,&last,&base,-1);
+ if (*last && !shp->inarith && sh_isstate(SH_INIT)) {
+ // This call is to handle "base#value" literals if we're importing untrusted env vars.
+ errno = 0;
+ d = strtonll(str, &last, NULL, -1);
+ }
+
+ if(*last || errno)
+ {
+ if (sh_isstate(SH_INIT)) {
+ // Initializing means importing untrusted env vars. Since the string does not appear
+ // to be a recognized numeric literal give up. We can't safely call strval() since
+ // that allows arbitrary expressions which would create a security vulnerability.
+ d = 0.0;
+ } else {
+ if(!last || *last!='.' || last[1]!='.')
+ d = strval(shp,str,&last,arith,mode);
+ if(!ptr && *last && mode>0)
+ errormsg(SH_DICT,ERROR_exit(1),e_lexbadchar,*last,str);
+ }
+ } else if (!d && *str=='-') {
+ d = -0.0;
+ }
}
- else if (!d && *str=='-')
- d = -0.0;
if(ptr)
*ptr = last;
return(d);
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-azure-template for openSUSE:Factory checked in at 2024-08-09 16:14:56
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-azure-template (Old)
and /work/SRC/openSUSE:Factory/.python-azure-template.new.7232 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-azure-template"
Fri Aug 9 16:14:56 2024 rev:32 rq:1192609 version:0.1.0b4033655
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-azure-template/python-azure-template.changes 2024-08-07 06:11:01.359866290 +0200
+++ /work/SRC/openSUSE:Factory/.python-azure-template.new.7232/python-azure-template.changes 2024-08-09 16:15:30.561048671 +0200
@@ -1,0 +2,8 @@
+Thu Aug 8 06:51:11 UTC 2024 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- New upstream release
+ + Version 0.1.0b4033655
+ + For detailed information about changes see the
+ CHANGELOG.md file provided with this package
+
+-------------------------------------------------------------------
Old:
----
azure-template-0.1.0b4008387.tar.gz
New:
----
azure-template-0.1.0b4033655.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-azure-template.spec ++++++
--- /var/tmp/diff_new_pack.RBQ0J9/_old 2024-08-09 16:15:31.133072547 +0200
+++ /var/tmp/diff_new_pack.RBQ0J9/_new 2024-08-09 16:15:31.133072547 +0200
@@ -18,7 +18,7 @@
%{?sle15_python_module_pythons}
Name: python-azure-template
-Version: 0.1.0b4008387
+Version: 0.1.0b4033655
Release: 0
Summary: Microsoft Azure Template Package Client Library for Python
License: MIT
++++++ azure-template-0.1.0b4008387.tar.gz -> azure-template-0.1.0b4033655.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-template-0.1.0b4008387/CHANGELOG.md new/azure-template-0.1.0b4033655/CHANGELOG.md
--- old/azure-template-0.1.0b4008387/CHANGELOG.md 2024-07-30 18:14:50.000000000 +0200
+++ new/azure-template-0.1.0b4033655/CHANGELOG.md 2024-08-08 01:39:01.000000000 +0200
@@ -1,6 +1,6 @@
# Release History
-## 0.1.0b4008387 (2024-07-30)
+## 0.1.0b4033655 (2024-08-07)
### Features Added
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-template-0.1.0b4008387/PKG-INFO new/azure-template-0.1.0b4033655/PKG-INFO
--- old/azure-template-0.1.0b4008387/PKG-INFO 2024-07-30 18:15:38.477831400 +0200
+++ new/azure-template-0.1.0b4033655/PKG-INFO 2024-08-08 01:39:46.671786500 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: azure-template
-Version: 0.1.0b4008387
+Version: 0.1.0b4033655
Summary: Microsoft Azure Template Package Client Library for Python
Home-page: https://github.com/Azure/azure-sdk-for-python
Author: Microsoft Corporation
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-template-0.1.0b4008387/azure/template/_version.py new/azure-template-0.1.0b4033655/azure/template/_version.py
--- old/azure-template-0.1.0b4008387/azure/template/_version.py 2024-07-30 18:14:50.000000000 +0200
+++ new/azure-template-0.1.0b4033655/azure/template/_version.py 2024-08-08 01:39:00.000000000 +0200
@@ -5,4 +5,4 @@
# --------------------------------------------------------------------------
# matches SEMVER
-VERSION = "0.1.0b4008387"
+VERSION = "0.1.0b4033655"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/azure-template-0.1.0b4008387/azure_template.egg-info/PKG-INFO new/azure-template-0.1.0b4033655/azure_template.egg-info/PKG-INFO
--- old/azure-template-0.1.0b4008387/azure_template.egg-info/PKG-INFO 2024-07-30 18:15:38.000000000 +0200
+++ new/azure-template-0.1.0b4033655/azure_template.egg-info/PKG-INFO 2024-08-08 01:39:46.000000000 +0200
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: azure-template
-Version: 0.1.0b4008387
+Version: 0.1.0b4033655
Summary: Microsoft Azure Template Package Client Library for Python
Home-page: https://github.com/Azure/azure-sdk-for-python
Author: Microsoft Corporation
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package bup for openSUSE:Factory checked in at 2024-08-09 16:14:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/bup (Old)
and /work/SRC/openSUSE:Factory/.bup.new.7232 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "bup"
Fri Aug 9 16:14:55 2024 rev:7 rq:1192587 version:0.33.3
Changes:
--------
--- /work/SRC/openSUSE:Factory/bup/bup.changes 2023-09-02 22:08:10.676389048 +0200
+++ /work/SRC/openSUSE:Factory/.bup.new.7232/bup.changes 2024-08-09 16:15:29.425001252 +0200
@@ -1,0 +2,9 @@
+Thu Aug 8 09:53:55 UTC 2024 - ecsos <ecsos(a)opensuse.org>
+
+- Update to 0.33.3
+ - See https://github.com/bup/bup/blob/main/note/0.33.3-from-0.33.2.md
+- Use BuildRequire perl(Time:HiRes) instead of
+ BuildRequire perl-Time-HiRes
+ to fix build error under Tumbleweed.
+
+-------------------------------------------------------------------
@@ -5 +14 @@
- - See https://github.com/bup/bup/blob/main/note/0.33-from-0.32.md
+ - See https://github.com/bup/bup/blob/main/note/0.33.2-from-0.33.1.md
Old:
----
bup-0.33.2.tar.gz
New:
----
bup-0.33.3.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ bup.spec ++++++
--- /var/tmp/diff_new_pack.7zqhwD/_old 2024-08-09 16:15:30.133030805 +0200
+++ /var/tmp/diff_new_pack.7zqhwD/_new 2024-08-09 16:15:30.133030805 +0200
@@ -1,7 +1,7 @@
#
# spec file for package bup
#
-# Copyright (c) 2023 SUSE LLC
+# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -23,7 +23,7 @@
%define pythons python311
%endif
Name: bup
-Version: 0.33.2
+Version: 0.33.3
Release: 0
Summary: Backup program based on git
License: LGPL-2.0-only
@@ -39,7 +39,7 @@
BuildRequires: %{python_module pylibacl}
BuildRequires: %{python_module pyxattr}
BuildRequires: %{python_module tornado}
-BuildRequires: perl-Time-HiRes
+BuildRequires: perl(Time::HiRes)
%if %{with_test}
BuildRequires: %{python_module pylint}
BuildRequires: %{python_module pytest-xdist}
++++++ bup-0.33.2.tar.gz -> bup-0.33.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bup-0.33.2/Documentation/bup-damage.md new/bup-0.33.3/Documentation/bup-damage.md
--- old/bup-0.33.2/Documentation/bup-damage.md 2023-07-01 22:08:43.000000000 +0200
+++ new/bup-0.33.3/Documentation/bup-damage.md 2023-12-28 18:28:02.000000000 +0100
@@ -24,6 +24,12 @@
of data recovery tools, to reassure yourself that the tools
actually work.
+Note that the details of the current behavior may change (particularly
+the details not documented here). For example the moment, the damage
+is strictly probabilistic, and so may or may not actually alter any
+given block. With a block size of 1, there should be a 1/256 chance
+that the block won't actually change. This behavior may change.
+
# OPTIONS
-n, \--num=*numblocks*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bup-0.33.2/Documentation/bup.md new/bup-0.33.3/Documentation/bup.md
--- old/bup-0.33.2/Documentation/bup.md 2023-07-01 22:08:43.000000000 +0200
+++ new/bup-0.33.3/Documentation/bup.md 2023-12-28 18:28:02.000000000 +0100
@@ -21,14 +21,13 @@
once a backup set is created, it can still be accessed
using git tools.
-The individual bup subcommands appear in their own man
-pages.
+Subcommands are described in separate man pages. For example
+`bup-init`(1) covers `bup init`.
# GLOBAL OPTIONS
\--version
-: print bup's version number. Equivalent to
- `bup-version`(1)
+: print bup's version number. Equivalent to `bup version`.
-d, \--bup-dir=*BUP_DIR*
: use the given BUP_DIR parameter as the bup repository
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bup-0.33.2/README.md new/bup-0.33.3/README.md
--- old/bup-0.33.2/README.md 2023-07-01 22:08:43.000000000 +0200
+++ new/bup-0.33.3/README.md 2023-12-28 18:28:02.000000000 +0100
@@ -86,9 +86,12 @@
Notable changes introduced by a release
=======================================
+ - <a href="note/0.33.3-from-0.33.2.md">Changes in 0.33.3 as compared to 0.33.2</a>
- <a href="note/0.33.2-from-0.33.1.md">Changes in 0.33.2 as compared to 0.33.1</a>
- <a href="note/0.33.1-from-0.33.md">Changes in 0.33.1 as compared to 0.33</a>
- <a href="note/0.33-from-0.32.md">Changes in 0.33 as compared to 0.32</a>
+ - <a href="note/0.32.2-from-0.32.1.md">Changes in 0.32.2 as compared to 0.32.1</a>
+ - <a href="note/0.32.1-from-0.32.md">Changes in 0.32.1 as compared to 0.32</a>
- <a href="note/0.32-from-0.31.md">Changes in 0.32 as compared to 0.31</a>
- <a href="note/0.31-from-0.30.1.md">Changes in 0.31 as compared to 0.30.1</a>
- <a href="note/0.30.1-from-0.30.md">Changes in 0.30.1 as compared to 0.30</a>
@@ -126,7 +129,7 @@
bup, please check out the latest stable release like this:
```sh
- git checkout 0.33.2
+ git checkout 0.33.3
```
You can see the latest stable release here:
@@ -176,7 +179,15 @@
```sh
make
```
-
+
+ At the moment the build treats compiler warnings as errors. If the
+ build fails as a result, try this:
+
+ ```sh
+ CFLAGS=-Wno-error ./configure
+ make
+ ```
+
- Run the tests:
```sh
@@ -197,11 +208,12 @@
make -j check
```
- The tests should pass. If they don't pass for you, stop here and
- send an email to bup-list(a)googlegroups.com. Though if there are
- symbolic links along the current working directory path, the tests
- may fail. Running something like this before "make test" should
- sidestep the problem:
+ The tests should pass (with some skipped tests that weren't
+ applicable in your environment). If they don't pass for you, stop
+ here and send an email to bup-list(a)googlegroups.com. Though if
+ there are symbolic links along the current working directory path,
+ the tests may fail. Running something like this before "make
+ test" should sidestep the problem:
```sh
cd "$(pwd -P)"
@@ -238,19 +250,12 @@
Binary packages of bup are known to be built for the following OSes:
- - Debian:
- http://packages.debian.org/search?searchon=names&keywords=bup
- - Ubuntu:
- http://packages.ubuntu.com/search?searchon=names&keywords=bup
- - pkgsrc (NetBSD, Dragonfly, and others)
- http://pkgsrc.se/sysutils/bup
- http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/sysutils/bup/
- - Arch Linux:
- https://www.archlinux.org/packages/?sort=&q=bup
- - Fedora:
- https://apps.fedoraproject.org/packages/bup
- - macOS (Homebrew):
- https://formulae.brew.sh/formula/bup
+ - [Debian](https://packages.debian.org/bup)
+ - [Ubuntu](https://packages.ubuntu.com/bup)
+ - [pkgsrc.se (NetBSD, Dragonfly, and others)](https://pkgsrc.se/sysutils/bup)
+ - [NetBSD](https://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/sysutils/bup/)
+ - [Arch Linux](https://www.archlinux.org/packages/?sort=&q=bup)
+ - [macOS (Homebrew)](https://formulae.brew.sh/formula/bup)
Using bup
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bup-0.33.2/dev/update-checkout-info new/bup-0.33.3/dev/update-checkout-info
--- old/bup-0.33.2/dev/update-checkout-info 2023-07-01 22:08:43.000000000 +0200
+++ new/bup-0.33.3/dev/update-checkout-info 2023-12-28 18:28:02.000000000 +0100
@@ -17,10 +17,8 @@
exit 1
fi
-git_top=$(git rev-parse --show-toplevel) || true
-if test "$git_top" != "$top"; then
- # Not a checkout, or perhaps we're building from an archive dir
- # unpacked somewhere in the source tree.
+if ! test -e .git; then
+ # Not building from a git tree
rm -f "$dest"
exit 0
fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bup-0.33.2/lib/bup/client.py new/bup-0.33.3/lib/bup/client.py
--- old/bup-0.33.2/lib/bup/client.py 2023-07-01 22:08:43.000000000 +0200
+++ new/bup-0.33.3/lib/bup/client.py 2023-12-28 18:28:02.000000000 +0100
@@ -7,7 +7,7 @@
import socket
from bup import git, ssh, vfs
-from bup.compat import environ, pending_raise, reraise
+from bup.compat import environ, pending_raise
from bup.helpers import (Conn, atomically_replaced_file, chunkyreader, debug1,
debug2, linereader, lines_until_sentinel,
mkdirp, nullcontext_if_not, progress, qprogress, DemuxConn)
@@ -100,7 +100,7 @@
self.pin = self.p.stdin
self.conn = Conn(self.pout, self.pin)
except OSError as e:
- reraise(ClientError('connect: %s' % e))
+ raise ClientError('connect: %s' % e) from e
elif self.protocol == b'bup':
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.sock.connect((self.host,
@@ -181,9 +181,7 @@
try:
return self.conn.check_ok()
except Exception as e:
- reraise(ClientError(e))
- # reraise doesn't return
- return None
+ raise ClientError(e) from e
def check_busy(self):
if self._busy:
@@ -563,12 +561,12 @@
self.remote_closed = True
id = self._end()
self.file = None
- super(PackWriter_Remote, self).close()
+ super().close()
return id
def __del__(self):
assert self.remote_closed
- super(PackWriter_Remote, self).__del__()
+ super().__del__()
def abort(self):
raise ClientError("don't know how to abort remote pack writing")
@@ -590,7 +588,7 @@
(self._bwcount, self._bwtime) = _raw_write_bwlimit(
self.file, outbuf, self._bwcount, self._bwtime)
except IOError as e:
- reraise(ClientError(e))
+ raise ClientError(e) from e
self.outbytes += len(data)
self.count += 1
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bup-0.33.2/lib/bup/cmd/damage.py new/bup-0.33.3/lib/bup/cmd/damage.py
--- old/bup-0.33.2/lib/bup/cmd/damage.py 2023-07-01 22:08:43.000000000 +0200
+++ new/bup-0.33.3/lib/bup/cmd/damage.py 2023-12-28 18:28:02.000000000 +0100
@@ -46,13 +46,13 @@
else:
maxsize = 1
chunks = opt.num or 10
- chunksize = size // chunks
+ chunksize = (size // chunks) or 1
for r in range(chunks):
sz = random.randrange(1, maxsize+1)
if sz > size:
sz = size
if opt.equal:
- ofs = r*chunksize
+ ofs = (r * chunksize) % size
else:
ofs = random.randrange(0, size - sz + 1)
log(' %6d bytes at %d\n' % (sz, ofs))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bup-0.33.2/lib/bup/cmd/web.py new/bup-0.33.3/lib/bup/cmd/web.py
--- old/bup-0.33.2/lib/bup/cmd/web.py 2023-07-01 22:08:43.000000000 +0200
+++ new/bup-0.33.3/lib/bup/cmd/web.py 2023-12-28 18:28:02.000000000 +0100
@@ -116,7 +116,7 @@
def decode_argument(self, value, name=None):
if name == 'path':
return value
- return super(BupRequestHandler, self).decode_argument(value, name)
+ return super().decode_argument(value, name)
def get(self, path):
return self._process_request(path)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bup-0.33.2/lib/bup/compat.py new/bup-0.33.3/lib/bup/compat.py
--- old/bup-0.33.2/lib/bup/compat.py 2023-07-01 22:08:43.000000000 +0200
+++ new/bup-0.33.3/lib/bup/compat.py 2023-12-28 18:28:02.000000000 +0100
@@ -10,22 +10,6 @@
"""Return hex string (not bytes as with hexlify) representation of b."""
return b.hex()
-def reraise(ex):
- raise ex.with_traceback(sys.exc_info()[2])
-
-# These three functions (add_ex_tb, add_ex_ctx, and pending_raise) are
-# vestigial, and code that uses them can probably be rewritten more
-# simply now that we require Python versions that automatically
-# populate the tracebacks and automatically chain pending exceptions.
-
-def add_ex_tb(ex):
- """Do nothing (already handled by Python 3 infrastructure)."""
- return ex
-
-def add_ex_ctx(ex, context_ex):
- """Do nothing (already handled by Python 3 infrastructure)."""
- return ex
-
class pending_raise:
"""If rethrow is true, rethrow ex (if any), unless the body throws.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bup-0.33.2/lib/bup/git.py new/bup-0.33.3/lib/bup/git.py
--- old/bup-0.33.2/lib/bup/git.py 2023-07-01 22:08:43.000000000 +0200
+++ new/bup-0.33.3/lib/bup/git.py 2023-12-28 18:28:02.000000000 +0100
@@ -16,8 +16,7 @@
from bup.compat import (buffer,
byte_int, bytes_from_byte, bytes_from_uint,
environ,
- pending_raise,
- reraise)
+ pending_raise)
from bup.io import path_msg
from bup.helpers import (Sha1, add_error, chunkyreader, debug1, debug2,
exo,
@@ -50,6 +49,7 @@
def _gitenv(repo_dir=None):
+ # This is not always used, i.e. sometimes we just use --git-dir
if not repo_dir:
repo_dir = repo()
return merge_dict(environ, {b'GIT_DIR': os.path.abspath(repo_dir)})
@@ -69,7 +69,7 @@
def git_config_get(option, repo_dir=None, opttype=None, cfg_file=None):
assert not (repo_dir and cfg_file), "repo_dir and cfg_file cannot both be used"
- cmd = [b'git', b'config', b'--null']
+ cmd = [b'git', b'--git-dir', repo_dir or repo(), b'config', b'--null']
if cfg_file:
cmd.extend([b'--file', cfg_file])
if opttype == 'int':
@@ -80,10 +80,7 @@
assert opttype is None
cmd.extend([b'--get', option])
env=None
- if repo_dir:
- env = _gitenv(repo_dir=repo_dir)
- p = subprocess.Popen(cmd, stdout=subprocess.PIPE, env=env,
- close_fds=True)
+ p = subprocess.Popen(cmd, stdout=subprocess.PIPE, close_fds=True)
# with --null, git writes out a trailing \0 after the value
r = p.stdout.read()[:-1]
rc = p.wait()
@@ -411,7 +408,7 @@
class PackIdxV1(PackIdx):
"""Object representation of a Git pack index (version 1) file."""
def __init__(self, filename, f):
- super(PackIdxV1, self).__init__()
+ super().__init__()
self.closed = False
self.name = filename
self.idxnames = [self.name]
@@ -465,7 +462,7 @@
class PackIdxV2(PackIdx):
"""Object representation of a Git pack index (version 2) file."""
def __init__(self, filename, f):
- super(PackIdxV2, self).__init__()
+ super().__init__()
self.closed = False
self.name = filename
self.idxnames = [self.name]
@@ -832,7 +829,7 @@
try:
f.write(oneblob)
except IOError as e:
- reraise(GitError(e))
+ raise GitError(e) from e
nw = len(oneblob)
crc = zlib.crc32(oneblob) & 0xffffffff
self._update_idx(sha, crc, nw)
@@ -941,10 +938,10 @@
os.rename(tmpdir + b'/pack', nameprefix + b'.pack')
os.rename(tmpdir + b'/idx', nameprefix + b'.idx')
os.fsync(pfd)
- if run_midx:
- auto_midx(os.path.join(self.repo_dir, b'objects/pack'))
if self.on_pack_finish:
self.on_pack_finish(nameprefix)
+ if run_midx:
+ auto_midx(os.path.join(self.repo_dir, b'objects/pack'))
return nameprefix
finally:
if tmpdir:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bup-0.33.2/lib/bup/helpers.py new/bup-0.33.3/lib/bup/helpers.py
--- old/bup-0.33.2/lib/bup/helpers.py 2023-07-01 22:08:43.000000000 +0200
+++ new/bup-0.33.3/lib/bup/helpers.py 2023-12-28 18:28:02.000000000 +0100
@@ -986,11 +986,11 @@
rows = len(l) // ncols
for s in range(0, len(l), rows):
cols.append(l[s:s+rows])
- out = nothing
+ out = []
fmt = b'%-*s' if binary else '%-*s'
for row in zip(*cols):
- out += prefix + nothing.join((fmt % (clen+2, s)) for s in row) + nl
- return out
+ out.append(prefix + nothing.join((fmt % (clen+2, s)) for s in row) + nl)
+ return nothing.join(out)
def parse_date_or_fatal(str, fatal):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bup-0.33.2/lib/bup/io.py new/bup-0.33.3/lib/bup/io.py
--- old/bup-0.33.2/lib/bup/io.py 2023-07-01 22:08:43.000000000 +0200
+++ new/bup-0.33.3/lib/bup/io.py 2023-12-28 18:28:02.000000000 +0100
@@ -37,17 +37,17 @@
def close(self):
self._bup_closed = True
- super(mmap, self).close()
+ super().close()
if hasattr(py_mmap.mmap, '__enter__'):
def __enter__(self):
- super(mmap, self).__enter__()
+ super().__enter__()
return self
def __exit__(self, type, value, traceback):
# Don't call self.close() when the parent has its own __exit__;
# defer to it.
self._bup_closed = True
- result = super(mmap, self).__exit__(type, value, traceback)
+ result = super().__exit__(type, value, traceback)
return result
else:
def __enter__(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bup-0.33.2/lib/bup/main.py new/bup-0.33.3/lib/bup/main.py
--- old/bup-0.33.2/lib/bup/main.py 2023-07-01 22:08:43.000000000 +0200
+++ new/bup-0.33.3/lib/bup/main.py 2023-12-28 18:28:02.000000000 +0100
@@ -18,13 +18,10 @@
from bup import compat, path, helpers
from bup.compat import (
- add_ex_ctx,
- add_ex_tb,
environ,
fsdecode,
wrap_main
)
-from bup.compat import add_ex_tb, add_ex_ctx, wrap_main
from bup.helpers import (
columnate,
handle_ctrl_c,
@@ -129,6 +126,7 @@
do_profile = False
bup_dir = None
args = args[1:]
+subcmd = None
while args:
arg = args[0]
if arg in (b'-?', b'--help'):
@@ -155,7 +153,7 @@
else:
break
-subcmd = args
+subcmd = subcmd or args
# Make BUP_DIR absolute, so we aren't affected by chdir (i.e. save -C, etc.).
if bup_dir:
@@ -189,7 +187,7 @@
usage('error: unknown command "%s"' % path_msg(subcmd_name))
already_fixed = int(environ.get(b'BUP_FORCE_TTY', 0))
-if subcmd_name in [b'mux', b'ftp', b'help']:
+if subcmd_name in (b'mux', b'ftp', b'help', b'fuse'):
fix_stdout = False
fix_stderr = False
else:
@@ -238,7 +236,6 @@
srcs = tuple(srcs)
dest_for = dict(zip(srcs, dests))
pending = {}
- pending_ex = None
try:
while srcs:
ready_fds, _, _ = select.select(srcs, [], [])
@@ -262,21 +259,19 @@
if split[0]:
pending.setdefault(fd, []).extend(split)
except BaseException as ex:
- pending_ex = add_ex_ctx(add_ex_tb(ex), pending_ex)
- try:
+ pending_ex = ex
# Try to finish each of the streams
- for fd, pending_items in pending.items():
- dest = dest_for[fd]
- width = tty_width()
- try:
- print_clean_line(dest, pending_items, width)
- except (EnvironmentError, EOFError) as ex:
- pending_ex = add_ex_ctx(add_ex_tb(ex), pending_ex)
- except BaseException as ex:
- pending_ex = add_ex_ctx(add_ex_tb(ex), pending_ex)
- if pending_ex:
- raise pending_ex
-
+ try:
+ for fd, pending_items in pending.items():
+ dest = dest_for[fd]
+ width = tty_width()
+ try:
+ print_clean_line(dest, pending_items, width)
+ except (EnvironmentError, EOFError) as ex:
+ ex.__cause__ = pending_ex
+ pending_ex = ex
+ finally:
+ raise pending_ex
def import_and_run_main(module, args):
if do_profile:
@@ -299,7 +294,6 @@
dests = []
real_out_fd = real_err_fd = stdout_pipe = stderr_pipe = None
filter_thread = filter_thread_started = None
- pending_ex = None
try:
if fix_stdout:
sys.stdout.flush()
@@ -321,42 +315,29 @@
filter_thread.start()
filter_thread_started = True
import_and_run_main(module, args)
- except Exception as ex:
- add_ex_tb(ex)
- pending_ex = ex
- raise
finally:
# Try to make sure that whatever else happens, we restore
# stdout and stderr here, if that's possible, so that we don't
- # risk just losing some output.
- try:
- real_out_fd is not None and os.dup2(real_out_fd, sys.stdout.fileno())
- except Exception as ex:
- add_ex_tb(ex)
- add_ex_ctx(ex, pending_ex)
- try:
- real_err_fd is not None and os.dup2(real_err_fd, sys.stderr.fileno())
- except Exception as ex:
- add_ex_tb(ex)
- add_ex_ctx(ex, pending_ex)
- # Kick filter loose
- try:
- stdout_pipe is not None and os.close(stdout_pipe[1])
- except Exception as ex:
- add_ex_tb(ex)
- add_ex_ctx(ex, pending_ex)
- try:
- stderr_pipe is not None and os.close(stderr_pipe[1])
- except Exception as ex:
- add_ex_tb(ex)
- add_ex_ctx(ex, pending_ex)
+ # risk just losing some output. Nest the finally blocks so we
+ # try each one no matter what happens, and accumulate alll
+ # exceptions in the pending exception __context__.
try:
+ try:
+ try:
+ try:
+ real_out_fd is not None and \
+ os.dup2(real_out_fd, sys.stdout.fileno())
+ finally:
+ real_err_fd is not None and \
+ os.dup2(real_err_fd, sys.stderr.fileno())
+ finally:
+ # Kick filter loose
+ stdout_pipe is not None and os.close(stdout_pipe[1])
+ finally:
+ stderr_pipe is not None and os.close(stderr_pipe[1])
+ finally:
close_catpipes()
- except Exception as ex:
- add_ex_tb(ex)
- add_ex_ctx(ex, pending_ex)
- if pending_ex:
- raise pending_ex
+
# There's no point in trying to join unless we finished the finally block.
if filter_thread_started:
filter_thread.join()
@@ -394,14 +375,10 @@
filter_output(srcs, dests)
return p.wait()
except BaseException as ex:
- add_ex_tb(ex)
- try:
- if p and p.poll() == None:
- os.kill(p.pid, signal.SIGTERM)
- p.wait()
- except BaseException as kill_ex:
- raise add_ex_ctx(add_ex_tb(kill_ex), ex)
- raise ex
+ if p and p.poll() == None:
+ os.kill(p.pid, signal.SIGTERM)
+ p.wait()
+ raise
def run_subcmd(module, args):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bup-0.33.2/lib/bup/metadata.py new/bup-0.33.3/lib/bup/metadata.py
--- old/bup-0.33.2/lib/bup/metadata.py 2023-07-01 22:08:43.000000000 +0200
+++ new/bup-0.33.3/lib/bup/metadata.py 2023-12-28 18:28:02.000000000 +0100
@@ -741,6 +741,7 @@
'path', 'size', 'symlink_target', 'hardlink_target',
'linux_attr', 'linux_xattr', 'posix1e_acl')
self.mode = self.uid = self.gid = self.user = self.group = None
+ self.rdev = None
self.atime = self.mtime = self.ctime = None
# optional members
self.path = None
@@ -757,6 +758,7 @@
if self.mtime != other.mtime: return False
if self.ctime != other.ctime: return False
if self.atime != other.atime: return False
+ if self.rdev != other.rdev: return False
if self.path != other.path: return False
if self.uid != other.uid: return False
if self.gid != other.gid: return False
@@ -777,6 +779,7 @@
self.mtime,
self.ctime,
self.atime,
+ self.rdev,
self.path,
self.uid,
self.gid,
@@ -802,6 +805,8 @@
result += ' user:' + repr(self.user)
if self.group is not None:
result += ' group:' + repr(self.group)
+ if self.rdev is not None:
+ result += ' rdev:' + repr(self.group)
if self.size is not None:
result += ' size:' + repr(self.size)
for name, val in (('atime', self.atime),
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bup-0.33.2/lib/bup/source_info.py new/bup-0.33.3/lib/bup/source_info.py
--- old/bup-0.33.2/lib/bup/source_info.py 2023-07-01 22:08:43.000000000 +0200
+++ new/bup-0.33.3/lib/bup/source_info.py 2023-12-28 18:28:02.000000000 +0100
@@ -1,3 +1,3 @@
-commit='b1c19fb0142ac4bdc60b07640734e0c2d256f423'
-date='2023-07-01 15:08:43 -0500'
+commit='85fdce08bdb752eb81f5954e1dffae185b5a43c6'
+date='2023-12-28 11:28:02 -0600'
modified=False
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bup-0.33.2/lib/bup/version.py new/bup-0.33.3/lib/bup/version.py
--- old/bup-0.33.2/lib/bup/version.py 2023-07-01 22:08:43.000000000 +0200
+++ new/bup-0.33.3/lib/bup/version.py 2023-12-28 18:28:02.000000000 +0100
@@ -22,7 +22,7 @@
# The ~ in a version is a Debian-style "always less than" marker:
# https://www.debian.org/doc/debian-policy/ch-controlfields.html#version
-base_version = b'0.33.2'
+base_version = b'0.33.3'
version = base_version
if version.endswith(b'~'):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bup-0.33.2/lib/bup/vfs.py new/bup-0.33.3/lib/bup/vfs.py
--- old/bup-0.33.2/lib/bup/vfs.py 2023-07-01 22:08:43.000000000 +0200
+++ new/bup-0.33.3/lib/bup/vfs.py 2023-12-28 18:28:02.000000000 +0100
@@ -677,7 +677,7 @@
# Assumes the tree is properly formed, i.e. there are no
# duplicates, and entries will be in git tree order.
- if isinstance(names, (frozenset, set)):
+ if not isinstance(names, (frozenset, set)):
names = frozenset(names)
remaining = len(names)
@@ -855,7 +855,7 @@
return
# Assumes no duplicate refs
- if isinstance(names, (frozenset, set)):
+ if not isinstance(names, (frozenset, set)):
names = frozenset(names)
remaining = len(names)
last_name = max(names)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bup-0.33.2/lib/cmd/bup.c new/bup-0.33.3/lib/cmd/bup.c
--- old/bup-0.33.2/lib/cmd/bup.c 2023-07-01 22:08:43.000000000 +0200
+++ new/bup-0.33.3/lib/cmd/bup.c 2023-12-28 18:28:02.000000000 +0100
@@ -201,8 +201,6 @@
# define PROC_SELF_EXE "/proc/self/exe"
#elif defined(__sun) || defined (sun)
# define PROC_SELF_EXE "/proc/self/path/a.out"
-#else
-# define PROC_SELF_EXE NULL
#endif
static char *find_in_path(const char * const name, const char * const path)
@@ -286,40 +284,40 @@
static char *exe_parent_dir(const char * const argv_0)
{
- if (PROC_SELF_EXE != NULL) {
- char sbuf[2048];
- char *path = sbuf;
- size_t path_n = sizeof(sbuf);
- ssize_t len;
- while (1) {
- len = readlink(PROC_SELF_EXE, path, path_n);
- if (len == -1 || (size_t) len != path_n)
- break;
- if (!INT_MULTIPLY_OK(path_n, 2, &path_n))
- die(2, "memory buffer for executable path would be too big\n");
- if (path != sbuf) free(path);
- path = malloc(path_n);
- if (!path)
- die(2, "unable to allocate memory for executable path\n");
- }
- if (len != -1) {
- path[len] = '\0';
- char *result = strdup(dirname(path));
- if (path != sbuf)
- free(path);
- return result;
- }
- switch (errno) {
- case ENOENT: case EACCES: case EINVAL: case ELOOP: case ENOTDIR:
- case ENAMETOOLONG:
- break;
- default:
- die(2, "cannot resolve %s: %s\n", path, strerror(errno));
+#ifdef PROC_SELF_EXE
+ char sbuf[2048];
+ char *path = sbuf;
+ size_t path_n = sizeof(sbuf);
+ ssize_t len;
+ while (1) {
+ len = readlink(PROC_SELF_EXE, path, path_n);
+ if (len == -1 || (size_t) len != path_n)
break;
- }
+ if (!INT_MULTIPLY_OK(path_n, 2, &path_n))
+ die(2, "memory buffer for executable path would be too big\n");
+ if (path != sbuf) free(path);
+ path = malloc(path_n);
+ if (!path)
+ die(2, "unable to allocate memory for executable path\n");
+ }
+ if (len != -1) {
+ path[len] = '\0';
+ char *result = strdup(dirname(path));
if (path != sbuf)
free(path);
+ return result;
}
+ switch (errno) {
+ case ENOENT: case EACCES: case EINVAL: case ELOOP: case ENOTDIR:
+ case ENAMETOOLONG:
+ break;
+ default:
+ die(2, "cannot resolve %s: %s\n", path, strerror(errno));
+ break;
+ }
+ if (path != sbuf)
+ free(path);
+#endif
return find_exe_parent(argv_0);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bup-0.33.2/note/0.32.1-from-0.32.md new/bup-0.33.3/note/0.32.1-from-0.32.md
--- old/bup-0.33.2/note/0.32.1-from-0.32.md 1970-01-01 01:00:00.000000000 +0100
+++ new/bup-0.33.3/note/0.32.1-from-0.32.md 2023-12-28 18:28:02.000000000 +0100
@@ -0,0 +1,38 @@
+
+Notable changes in 0.32.1 since 0.32
+====================================
+
+Bugs
+----
+
+* POSIX1e ACLs should be restored more correctly now.
+
+ Previously bup incorrectly restored default (`ACL_TYPE_DEFAULT`)
+ ACLs as access acls (`ACL_TYPE_ACCESS`). When both existed, it
+ restored the access ACL first and then the default ACL as an access
+ ACL. Now, bup should restore each with the proper type. This issue
+ only affects saves created on platforms where bup currently supports
+ ACLs, so presumably mostly just saves created on Linux since the
+ current ACL support depends on non-standard functions like
+ `acl_extended(3)`.
+
+ There is one remaining issue, which isn't fixed in this release, but
+ is fixed in 0.33.1 (because fixing it here could create saves that
+ are backward incompatible with 0.33).
+
+ The problem is that in this version and older versions, bup stores
+ ACLs in the `acl_to_any_text(3)` format with a newline delimiter,
+ when the standard (and `acl_from_text(3)` which restore depends on)
+ requires commas. This may cause restores that include ACLs (likely
+ only those from Linux right now) to fail on some platforms
+ (e.g. Cygwin).
+
+Build and install
+-----------------
+
+* pytest 7 is now supported.
+
+Thanks to (at least)
+====================
+
+Johannes Berg and Rob Browning
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bup-0.33.2/note/0.32.2-from-0.32.1.md new/bup-0.33.3/note/0.32.2-from-0.32.1.md
--- old/bup-0.33.2/note/0.32.2-from-0.32.1.md 1970-01-01 01:00:00.000000000 +0100
+++ new/bup-0.33.3/note/0.32.2-from-0.32.1.md 2023-12-28 18:28:02.000000000 +0100
@@ -0,0 +1,26 @@
+
+Notable changes in 0.32.2 since 0.32.1
+======================================
+
+Bugs
+----
+
+* `bup gc` should no longer remove stale packfiles before it creates
+ the new midx at the end of a run. This could cause midx to complain
+ about missing files, e.g.:
+
+ warning: index pack-....idx missing
+
+Build system
+------------
+
+* The automated FreeBSD tests have moved from 12.1 to 12.4 and to
+ Python 3.9, and have dropped testing of Python 2.
+
+* The automated macOS tests have moved from Catalina to Monterey and
+ from x86 to ARM.
+
+Thanks to (at least)
+====================
+
+Johannes Berg and Rob Browning
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bup-0.33.2/note/0.33.3-from-0.33.2.md new/bup-0.33.3/note/0.33.3-from-0.33.2.md
--- old/bup-0.33.2/note/0.33.3-from-0.33.2.md 1970-01-01 01:00:00.000000000 +0100
+++ new/bup-0.33.3/note/0.33.3-from-0.33.2.md 2023-12-28 18:28:02.000000000 +0100
@@ -0,0 +1,57 @@
+
+Notable changes in 0.33.3 since 0.33.2
+======================================
+
+General
+-------
+
+* The performance of `bup ls` when columnating a large number of
+ results should be *much* better.
+
+Bugs
+----
+
+* `bup fuse` should no longer linger after its mount point has been
+ unmounted: https://bugs.debian.org/cgi-bin/1050040
+
+* `bup --version` should work again.
+
+* `bup gc` should no longer remove stale packfiles before it creates
+ the new midx at the end of a run. This could cause midx to complain
+ about missing files, e.g.:
+
+ warning: index pack-....idx missing
+
+* `bup` will no longer (since 0.33) ignore `BUP_DIR` looking for a
+ `pack.packSizeLimit`.
+
+* A VFS optimization of the handling of requests for specific names
+ within a given tree has been restored.
+
+* Incorrect uses of some exception handling code designed for
+ compatibility with Python 2 have been replaced with the built-in
+ Python 3 equivalents.
+
+* Some client calls to `super(CLASS, self)` have been replaced by
+ `super()` to avoid errors during `__del__`.
+
+Build system
+------------
+
+* `test-help` should no longer hang when run interactively, and should
+ no longer be affected by the current locale. Previously it might
+ fail in a non-C locale.
+
+* The `bup damage` invocation in `test-fsck` has been made much more
+ aggressive in order to avoid transient failures caused both by
+ unpredictable `par2` behavior and the (currently) probabilstic
+ nature of the damage.
+
+* OpenBSD builds should no longer fail on `-Werror` related issues
+ involving `PROC_SELF_EXE`.
+
+Thanks to (at least)
+====================
+
+Alain Cochard, Austin Schuh, Johannes Berg, Julian Smith, Lucas
+Nussbaum, Nix, Rob Browning, Rob Leslie, and Robert Edmonds
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bup-0.33.2/test/ext/conftest.py new/bup-0.33.3/test/ext/conftest.py
--- old/bup-0.33.2/test/ext/conftest.py 2023-07-01 22:08:43.000000000 +0200
+++ new/bup-0.33.3/test/ext/conftest.py 2023-12-28 18:28:02.000000000 +0100
@@ -14,7 +14,7 @@
class BupSubprocFailure(Exception):
def __init__(self, msg, cmd, status, failures):
- super(BupSubprocFailure, self).__init__(msg)
+ super().__init__(msg)
self.cmd = cmd
self.status = status
self.failures = failures
@@ -22,7 +22,7 @@
class BupSubprocTestRunner(pytest.Item):
def __init__(self, name, parent):
- super(BupSubprocTestRunner, self).__init__(name, parent)
+ super().__init__(name, parent)
def runtest(self):
cmd = str(self.fspath)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bup-0.33.2/test/ext/test-fsck new/bup-0.33.3/test/ext/test-fsck
--- old/bup-0.33.2/test/ext/test-fsck 2023-07-01 22:08:43.000000000 +0200
+++ new/bup-0.33.3/test/ext/test-fsck 2023-12-28 18:28:02.000000000 +0100
@@ -45,7 +45,20 @@
WVFAIL bup fsck --quick -rvv -j99 # fails because repairs were needed
if bup fsck --par2-ok; then
WVPASS bup fsck -r # ok because of repairs from last time
- WVPASS bup damage "$BUP_DIR"/objects/pack/*.pack -n202 -s1 --equal -S0
+
+ # This must do "too much" damage. Currently par2 is invoked with
+ # -c200, which should allow up to 200 damaged "blocks", but since
+ # we don't specify the block size, it's dynamically computed.
+ # Even if we did specify a size, the actual size appears to be
+ # affected by the input file sizes, and the specific behavior
+ # doesn't appear to be documented/promised -- see par2
+ # comandline.cpp. Also worth noting that bup damage's output is
+ # currently probabilistic, so it might not actually damage any
+ # given byte. For now, just try to overdo it -- randomly change
+ # (or not 1/256th of the time) 600 evenly spaced bytes in each
+ # pack file.
+ WVPASS bup damage "$BUP_DIR"/objects/pack/*.pack -n600 -s1 --equal -S0
+
WVFAIL bup fsck
WVFAIL bup fsck -rvv # too many errors to be repairable
WVFAIL bup fsck -r # too many errors to be repairable
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bup-0.33.2/test/ext/test-help new/bup-0.33.3/test/ext/test-help
--- old/bup-0.33.2/test/ext/test-help 2023-07-01 22:08:43.000000000 +0200
+++ new/bup-0.33.3/test/ext/test-help 2023-12-28 18:28:02.000000000 +0100
@@ -30,9 +30,9 @@
(cd "$tmpdir/man" && ln -s "$top/Documentation" man1)
export MANPATH="$tmpdir/man"
-WVPASS bup help save
-WVPASS bup save --help
-WVPASSEQ 1 $(bup help save | head -1 | grep -cF 'bup-save(1)')
-WVPASSEQ 1 $(bup save --help | head -1 | grep -cF 'bup-save(1)')
+PAGER=cat WVPASS bup help save
+PAGER=cat WVPASS bup save --help
+WVPASSEQ 1 $(bup help save | grep -cE 'bup.save . create a new bup backup set')
+WVPASSEQ 1 $(bup save --help | grep -cE 'bup.save . create a new bup backup set')
WVPASS rm -rf "$tmpdir"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bup-0.33.2/test/int/test_git.py new/bup-0.33.3/test/int/test_git.py
--- old/bup-0.33.2/test/int/test_git.py 2023-07-01 22:08:43.000000000 +0200
+++ new/bup-0.33.3/test/int/test_git.py 2023-12-28 18:28:02.000000000 +0100
@@ -541,7 +541,7 @@
# check that we don't have it open anymore
WVPASSEQ(False, b'deleted' in fn)
-def test_config():
+def test_config(tmpdir):
cfg_file = os.path.join(os.path.dirname(__file__), 'sample.conf')
no_such_file = os.path.join(os.path.dirname(__file__), 'nosuch.conf')
git_config_get = partial(git.git_config_get, cfg_file=cfg_file)
@@ -568,3 +568,10 @@
WVPASSEQ(2, git_config_get(b'bup.istrue2', opttype='int'))
WVPASSEQ(0, git_config_get(b'bup.isfalse2', opttype='int'))
WVPASSEQ(0x777, git_config_get(b'bup.hex', opttype='int'))
+
+ # Make sure get_config respects the repo()
+ git_dir = tmpdir + b'/repo'
+ git.init_repo(git_dir)
+ git.check_repo_or_die(git_dir)
+ exc(b'git', b'--git-dir', git_dir, b'config', b'bup.foo', b'yep')
+ assert b'yep' == git.git_config_get(b'bup.foo')
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package arpwatch-ethercodes for openSUSE:Factory checked in at 2024-08-09 16:14:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/arpwatch-ethercodes (Old)
and /work/SRC/openSUSE:Factory/.arpwatch-ethercodes.new.7232 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "arpwatch-ethercodes"
Fri Aug 9 16:14:53 2024 rev:773 rq:1192571 version:20240808
Changes:
--------
--- /work/SRC/openSUSE:Factory/arpwatch-ethercodes/arpwatch-ethercodes.changes 2024-04-04 22:28:10.055527820 +0200
+++ /work/SRC/openSUSE:Factory/.arpwatch-ethercodes.new.7232/arpwatch-ethercodes.changes 2024-08-09 16:15:28.196949994 +0200
@@ -1,0 +2,5 @@
+Thu Aug 8 08:08:08 UTC 2024 - olaf(a)aepfle.de
+
+- Update to version 20240808
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ arpwatch-ethercodes.spec ++++++
--- /var/tmp/diff_new_pack.BAeOrN/_old 2024-08-09 16:15:29.024984556 +0200
+++ /var/tmp/diff_new_pack.BAeOrN/_new 2024-08-09 16:15:29.024984556 +0200
@@ -18,7 +18,7 @@
Name: arpwatch-ethercodes
-Version: 20240404
+Version: 20240808
Release: 0
Summary: Ethercodes Data for arpwatch
License: BSD-3-Clause
++++++ oui.csv ++++++
++++ 5054 lines (skipped)
++++ between /work/SRC/openSUSE:Factory/arpwatch-ethercodes/oui.csv
++++ and /work/SRC/openSUSE:Factory/.arpwatch-ethercodes.new.7232/oui.csv
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package aws-c-auth for openSUSE:Factory checked in at 2024-08-09 16:14:50
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/aws-c-auth (Old)
and /work/SRC/openSUSE:Factory/.aws-c-auth.new.7232 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "aws-c-auth"
Fri Aug 9 16:14:50 2024 rev:9 rq:1192594 version:0.7.25
Changes:
--------
--- /work/SRC/openSUSE:Factory/aws-c-auth/aws-c-auth.changes 2024-08-08 10:58:49.840686404 +0200
+++ /work/SRC/openSUSE:Factory/.aws-c-auth.new.7232/aws-c-auth.changes 2024-08-09 16:15:25.668844471 +0200
@@ -1,0 +2,6 @@
+Wed Aug 7 13:33:07 UTC 2024 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- Update to version 0.7.25
+ * Add ProcessProvider to ProfileProvider by @waahm7 in (#245)
+
+-------------------------------------------------------------------
Old:
----
v0.7.24.tar.gz
New:
----
v0.7.25.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ aws-c-auth.spec ++++++
--- /var/tmp/diff_new_pack.BPXowz/_old 2024-08-09 16:15:26.868894561 +0200
+++ /var/tmp/diff_new_pack.BPXowz/_new 2024-08-09 16:15:26.872894728 +0200
@@ -20,7 +20,7 @@
%define library_pkg 1_0_0
%define library_soversion 1
Name: aws-c-auth
-Version: 0.7.24
+Version: 0.7.25
Release: 0
Summary: AWS C99 library implementation of AWS client-side authentication
License: Apache-2.0
++++++ v0.7.24.tar.gz -> v0.7.25.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-auth-0.7.24/source/credentials_provider_default_chain.c new/aws-c-auth-0.7.25/source/credentials_provider_default_chain.c
--- old/aws-c-auth-0.7.24/source/credentials_provider_default_chain.c 2024-07-31 23:26:45.000000000 +0200
+++ new/aws-c-auth-0.7.25/source/credentials_provider_default_chain.c 2024-08-04 19:29:46.000000000 +0200
@@ -230,7 +230,6 @@
struct aws_tls_ctx *tls_ctx = NULL;
struct aws_credentials_provider *environment_provider = NULL;
struct aws_credentials_provider *profile_provider = NULL;
- struct aws_credentials_provider *process_provider = NULL;
struct aws_credentials_provider *sts_provider = NULL;
struct aws_credentials_provider *ecs_or_imds_provider = NULL;
struct aws_credentials_provider *chain_provider = NULL;
@@ -263,7 +262,7 @@
#endif /* BYO_CRYPTO */
}
- enum { providers_size = 5 };
+ enum { providers_size = 4 };
struct aws_credentials_provider *providers[providers_size];
AWS_ZERO_ARRAY(providers);
size_t index = 0;
@@ -309,18 +308,6 @@
aws_atomic_fetch_add(&impl->shutdowns_remaining, 1);
}
- struct aws_credentials_provider_process_options process_options;
- AWS_ZERO_STRUCT(process_options);
- process_options.shutdown_options = sub_provider_shutdown_options;
- process_options.config_profile_collection_cached = options->profile_collection_cached;
- process_options.profile_to_use = options->profile_name_override;
- process_provider = aws_credentials_provider_new_process(allocator, &process_options);
- if (process_provider != NULL) {
- providers[index++] = process_provider;
- /* 1 shutdown call from the process provider's shutdown */
- aws_atomic_fetch_add(&impl->shutdowns_remaining, 1);
- }
-
/* Providers that will always make a network call unless explicitly disabled... */
ecs_or_imds_provider = s_aws_credentials_provider_new_ecs_or_imds(
@@ -348,7 +335,6 @@
*/
aws_credentials_provider_release(environment_provider);
aws_credentials_provider_release(profile_provider);
- aws_credentials_provider_release(process_provider);
aws_credentials_provider_release(sts_provider);
aws_credentials_provider_release(ecs_or_imds_provider);
@@ -390,7 +376,6 @@
} else {
aws_credentials_provider_release(ecs_or_imds_provider);
aws_credentials_provider_release(profile_provider);
- aws_credentials_provider_release(process_provider);
aws_credentials_provider_release(sts_provider);
aws_credentials_provider_release(environment_provider);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-auth-0.7.24/source/credentials_provider_profile.c new/aws-c-auth-0.7.25/source/credentials_provider_profile.c
--- old/aws-c-auth-0.7.24/source/credentials_provider_profile.c 2024-07-31 23:26:45.000000000 +0200
+++ new/aws-c-auth-0.7.25/source/credentials_provider_profile.c 2024-08-04 19:29:46.000000000 +0200
@@ -28,6 +28,7 @@
AWS_STRING_FROM_LITERAL(s_source_profile_name, "source_profile");
AWS_STRING_FROM_LITERAL(s_access_key_id_profile_var, "aws_access_key_id");
AWS_STRING_FROM_LITERAL(s_secret_access_key_profile_var, "aws_secret_access_key");
+AWS_STATIC_STRING_FROM_LITERAL(s_credentials_process, "credential_process");
static struct aws_byte_cursor s_default_session_name_pfx =
AWS_BYTE_CUR_INIT_FROM_STRING_LITERAL("aws-common-runtime-profile-config");
@@ -221,6 +222,22 @@
return provider;
}
+static struct aws_credentials_provider *s_create_process_based_provider(
+ struct aws_allocator *allocator,
+ const struct aws_string *profile_name,
+ struct aws_profile_collection *profile_collection) {
+ AWS_LOGF_INFO(
+ AWS_LS_AUTH_CREDENTIALS_PROVIDER,
+ "static: profile %s attempting to create process-based credentials provider",
+ aws_string_c_str(profile_name));
+
+ struct aws_credentials_provider_process_options options = {
+ .profile_to_use = aws_byte_cursor_from_string(profile_name),
+ .config_profile_collection_cached = profile_collection,
+ };
+ return aws_credentials_provider_new_process(allocator, &options);
+}
+
static struct aws_credentials_provider *s_credentials_provider_new_profile_internal(
struct aws_allocator *allocator,
const struct aws_credentials_provider_profile_options *options,
@@ -492,6 +509,7 @@
aws_string_c_str(profile_name));
goto on_finished;
}
+ /* check if sts provider is applicable */
const struct aws_profile_property *role_arn_property = aws_profile_get_property(profile, s_role_arn_name);
bool profile_contains_access_key = aws_profile_get_property(profile, s_access_key_id_profile_var) != NULL;
bool profile_contains_secret_access_key =
@@ -513,9 +531,15 @@
}
aws_hash_table_put(source_profiles_table, (void *)aws_string_c_str(profile_name), NULL, 0);
+
+ /* check if process provider is applicable */
+ const struct aws_profile_property *process_property = aws_profile_get_property(profile, s_credentials_process);
+
if (role_arn_property && (first_profile_in_chain || !profile_contains_credentials)) {
provider = s_create_sts_based_provider(
allocator, role_arn_property, profile, options, merged_profiles, source_profiles_table);
+ } else if (process_property) {
+ provider = s_create_process_based_provider(allocator, profile_name, merged_profiles);
} else {
provider = s_create_profile_based_provider(
allocator, credentials_file_path, config_file_path, profile_name, options->profile_collection_cached);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-auth-0.7.24/tests/CMakeLists.txt new/aws-c-auth-0.7.25/tests/CMakeLists.txt
--- old/aws-c-auth-0.7.24/tests/CMakeLists.txt 2024-07-31 23:26:45.000000000 +0200
+++ new/aws-c-auth-0.7.25/tests/CMakeLists.txt 2024-08-04 19:29:46.000000000 +0200
@@ -113,6 +113,7 @@
add_test_case(credentials_provider_process_bad_command)
add_test_case(credentials_provider_process_incorrect_command_output)
add_test_case(credentials_provider_process_basic_success)
+add_test_case(credentials_provider_process_basic_success_from_profile_provider)
add_test_case(credentials_provider_process_basic_success_cached)
add_net_test_case(credentials_provider_cognito_new_destroy)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-auth-0.7.24/tests/credentials_provider_process_tests.c new/aws-c-auth-0.7.25/tests/credentials_provider_process_tests.c
--- old/aws-c-auth-0.7.24/tests/credentials_provider_process_tests.c 2024-07-31 23:26:45.000000000 +0200
+++ new/aws-c-auth-0.7.25/tests/credentials_provider_process_tests.c 2024-08-04 19:29:46.000000000 +0200
@@ -411,6 +411,54 @@
}
AWS_TEST_CASE(credentials_provider_process_basic_success, s_credentials_provider_process_basic_success);
+static int s_credentials_provider_process_basic_success_from_profile_provider(
+ struct aws_allocator *allocator,
+ void *ctx) {
+ (void)ctx;
+
+ s_aws_process_tester_init(allocator);
+
+ struct aws_byte_buf content_buf;
+ struct aws_byte_buf existing_content = aws_byte_buf_from_c_str(aws_string_c_str(s_process_config_file_contents));
+ aws_byte_buf_init_copy(&content_buf, allocator, &existing_content);
+ struct aws_byte_cursor cursor = aws_byte_cursor_from_string(s_test_command);
+ ASSERT_TRUE(aws_byte_buf_append_dynamic(&content_buf, &cursor) == AWS_OP_SUCCESS);
+ cursor = aws_byte_cursor_from_c_str("\n");
+ ASSERT_TRUE(aws_byte_buf_append_dynamic(&content_buf, &cursor) == AWS_OP_SUCCESS);
+
+ struct aws_string *config_file_contents = aws_string_new_from_array(allocator, content_buf.buffer, content_buf.len);
+ ASSERT_TRUE(config_file_contents != NULL);
+ aws_byte_buf_clean_up(&content_buf);
+
+ s_aws_process_test_init_config_profile(allocator, config_file_contents);
+ aws_string_destroy(config_file_contents);
+
+ struct aws_credentials_provider_profile_options options = {
+ .shutdown_options =
+ {
+ .shutdown_callback = s_on_shutdown_complete,
+ .shutdown_user_data = NULL,
+ },
+ .profile_name_override = aws_byte_cursor_from_string(s_credentials_process_profile),
+ };
+ struct aws_credentials_provider *provider = aws_credentials_provider_new_profile(allocator, &options);
+
+ aws_credentials_provider_get_credentials(provider, s_get_credentials_callback, NULL);
+
+ s_aws_wait_for_credentials_result();
+
+ ASSERT_TRUE(s_tester.has_received_credentials_callback == true);
+ ASSERT_SUCCESS(s_verify_credentials(s_tester.credentials));
+
+ aws_credentials_provider_release(provider);
+ s_aws_wait_for_provider_shutdown_callback();
+ s_aws_process_tester_cleanup();
+ return 0;
+}
+AWS_TEST_CASE(
+ credentials_provider_process_basic_success_from_profile_provider,
+ s_credentials_provider_process_basic_success_from_profile_provider);
+
static int s_credentials_provider_process_basic_success_cached(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 aws-c-sdkutils for openSUSE:Factory checked in at 2024-08-09 16:14:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/aws-c-sdkutils (Old)
and /work/SRC/openSUSE:Factory/.aws-c-sdkutils.new.7232 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "aws-c-sdkutils"
Fri Aug 9 16:14:49 2024 rev:5 rq:1192593 version:0.1.19
Changes:
--------
--- /work/SRC/openSUSE:Factory/aws-c-sdkutils/aws-c-sdkutils.changes 2024-06-06 12:32:20.247859423 +0200
+++ /work/SRC/openSUSE:Factory/.aws-c-sdkutils.new.7232/aws-c-sdkutils.changes 2024-08-09 16:15:21.544672329 +0200
@@ -1,0 +2,14 @@
+Wed Aug 7 13:37:56 UTC 2024 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- Update to version 0.1.19
+ * Lets make string array const input by @DmitriyMusatkin in (#44)
+- from version 0.1.18
+ * Switch to more efficient functions for json parsing
+ by @DmitriyMusatkin in (#43)
+- from version 0.1.17
+ * clang-format 18 by @graebm in (#40)
+ * Update MacOS to arm64 by @waahm7 in (#41)
+ * Add support for string array request parameter to
+ endpoint resolution by @DmitriyMusatkin in (#42)
+
+-------------------------------------------------------------------
Old:
----
v0.1.16.tar.gz
New:
----
v0.1.19.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ aws-c-sdkutils.spec ++++++
--- /var/tmp/diff_new_pack.HGIlRk/_old 2024-08-09 16:15:23.292745293 +0200
+++ /var/tmp/diff_new_pack.HGIlRk/_new 2024-08-09 16:15:23.296745460 +0200
@@ -20,7 +20,7 @@
%define library_pkg 1_0_0
%define library_soversion 1
Name: aws-c-sdkutils
-Version: 0.1.16
+Version: 0.1.19
Release: 0
Summary: AWS C SDK Utils
License: Apache-2.0
++++++ v0.1.16.tar.gz -> v0.1.19.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-sdkutils-0.1.16/.github/workflows/ci.yml new/aws-c-sdkutils-0.1.19/.github/workflows/ci.yml
--- old/aws-c-sdkutils-0.1.16/.github/workflows/ci.yml 2024-04-22 18:32:19.000000000 +0200
+++ new/aws-c-sdkutils-0.1.19/.github/workflows/ci.yml 2024-08-03 00:36:14.000000000 +0200
@@ -6,7 +6,7 @@
- 'main'
env:
- BUILDER_VERSION: v0.9.55
+ BUILDER_VERSION: v0.9.62
BUILDER_SOURCE: releases
BUILDER_HOST: https://d19elf31gohf1l.cloudfront.net
PACKAGE_NAME: aws-c-sdkutils
@@ -119,8 +119,17 @@
run: |
python .\aws-c-sdkutils\build\deps\aws-c-common\scripts\appverifier_ctest.py --build_directory .\aws-c-sdkutils\build\aws-c-sdkutils
- osx:
- runs-on: macos-12 # latest
+ macos:
+ runs-on: macos-14 # 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', 'builder')"
+ chmod a+x builder
+ ./builder build -p ${{ env.PACKAGE_NAME }}
+
+ macos-x64:
+ runs-on: macos-14-large # latest
steps:
- name: Build ${{ env.PACKAGE_NAME }} + consumers
run: |
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-sdkutils-0.1.16/.github/workflows/clang-format.yml new/aws-c-sdkutils-0.1.19/.github/workflows/clang-format.yml
--- old/aws-c-sdkutils-0.1.16/.github/workflows/clang-format.yml 2024-04-22 18:32:19.000000000 +0200
+++ new/aws-c-sdkutils-0.1.19/.github/workflows/clang-format.yml 2024-08-03 00:36:14.000000000 +0200
@@ -5,14 +5,12 @@
jobs:
clang-format:
- runs-on: ubuntu-20.04 # latest
+ runs-on: ubuntu-24.04 # latest
steps:
- name: Checkout Sources
- uses: actions/checkout@v1
+ uses: actions/checkout@v4
- name: clang-format lint
- uses: DoozyX/clang-format-lint-action(a)v0.3.1
- with:
- # List of extensions to check
- extensions: c,h
+ run: |
+ ./format-check.py
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-sdkutils-0.1.16/format-check.py new/aws-c-sdkutils-0.1.19/format-check.py
--- old/aws-c-sdkutils-0.1.16/format-check.py 1970-01-01 01:00:00.000000000 +0100
+++ new/aws-c-sdkutils-0.1.19/format-check.py 2024-08-03 00:36:14.000000000 +0200
@@ -0,0 +1,47 @@
+#!/usr/bin/env python3
+import argparse
+import os
+from pathlib import Path
+import re
+from subprocess import list2cmdline, run
+from tempfile import NamedTemporaryFile
+
+CLANG_FORMAT_VERSION = '18.1.6'
+
+INCLUDE_REGEX = re.compile(
+ r'^(include|source|tests|verification)/.*\.(c|h|inl)$')
+EXCLUDE_REGEX = re.compile(r'^$')
+
+arg_parser = argparse.ArgumentParser(description="Check with clang-format")
+arg_parser.add_argument('-i', '--inplace-edit', action='store_true',
+ help="Edit files inplace")
+args = arg_parser.parse_args()
+
+os.chdir(Path(__file__).parent)
+
+# create file containing list of all files to format
+filepaths_file = NamedTemporaryFile(delete=False)
+for dirpath, dirnames, filenames in os.walk('.'):
+ for filename in filenames:
+ # our regexes expect filepath to use forward slash
+ filepath = Path(dirpath, filename).as_posix()
+ if not INCLUDE_REGEX.match(filepath):
+ continue
+ if EXCLUDE_REGEX.match(filepath):
+ continue
+
+ filepaths_file.write(f"{filepath}\n".encode())
+filepaths_file.close()
+
+# use pipx to run clang-format from PyPI
+# this is a simple way to run the same clang-format version regardless of OS
+cmd = ['pipx', 'run', f'clang-format=={CLANG_FORMAT_VERSION}',
+ f'--files={filepaths_file.name}']
+if args.inplace_edit:
+ cmd += ['-i']
+else:
+ cmd += ['--Werror', '--dry-run']
+
+print(f"{Path.cwd()}$ {list2cmdline(cmd)}")
+if run(cmd).returncode:
+ exit(1)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-sdkutils-0.1.16/format-check.sh new/aws-c-sdkutils-0.1.19/format-check.sh
--- old/aws-c-sdkutils-0.1.16/format-check.sh 2024-04-22 18:32:19.000000000 +0200
+++ new/aws-c-sdkutils-0.1.19/format-check.sh 1970-01-01 01:00:00.000000000 +0100
@@ -1,24 +0,0 @@
-#!/usr/bin/env bash
-
-if [[ -z $CLANG_FORMAT ]] ; then
- CLANG_FORMAT=clang-format
-fi
-
-if NOT type $CLANG_FORMAT 2> /dev/null ; then
- echo "No appropriate clang-format found."
- exit 1
-fi
-
-FAIL=0
-SOURCE_FILES=`find source include tests -type f \( -name '*.h' -o -name '*.c' \)`
-for i in $SOURCE_FILES
-do
- $CLANG_FORMAT -output-replacements-xml $i | grep -c "<replacement " > /dev/null
- if [ $? -ne 1 ]
- then
- echo "$i failed clang-format check."
- FAIL=1
- fi
-done
-
-exit $FAIL
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-sdkutils-0.1.16/include/aws/sdkutils/endpoints_rule_engine.h new/aws-c-sdkutils-0.1.19/include/aws/sdkutils/endpoints_rule_engine.h
--- old/aws-c-sdkutils-0.1.16/include/aws/sdkutils/endpoints_rule_engine.h 2024-04-22 18:32:19.000000000 +0200
+++ new/aws-c-sdkutils-0.1.19/include/aws/sdkutils/endpoints_rule_engine.h 2024-08-03 00:36:14.000000000 +0200
@@ -19,7 +19,11 @@
struct aws_endpoints_request_context;
struct aws_hash_table;
-enum aws_endpoints_parameter_type { AWS_ENDPOINTS_PARAMETER_STRING, AWS_ENDPOINTS_PARAMETER_BOOLEAN };
+enum aws_endpoints_parameter_type {
+ AWS_ENDPOINTS_PARAMETER_STRING,
+ AWS_ENDPOINTS_PARAMETER_BOOLEAN,
+ AWS_ENDPOINTS_PARAMETER_STRING_ARRAY,
+};
enum aws_endpoints_resolved_endpoint_type { AWS_ENDPOINTS_RESOLVED_ENDPOINT, AWS_ENDPOINTS_RESOLVED_ERROR };
AWS_EXTERN_C_BEGIN
@@ -221,7 +225,6 @@
/*
* Add boolean value to request context.
- * Note: this function will make a copy of the memory backing the cursors.
* The function will override any previous value stored in the context with the
* same name.
*/
@@ -232,6 +235,19 @@
bool value);
/*
+ * Add string array value to request context.
+ * Note: this function will make a copy of the memory backing the cursors.
+ * The function will override any previous value stored in the context with the
+ * same name.
+ */
+AWS_SDKUTILS_API int aws_endpoints_request_context_add_string_array(
+ struct aws_allocator *allocator,
+ struct aws_endpoints_request_context *context,
+ struct aws_byte_cursor name,
+ const struct aws_byte_cursor *value_array,
+ size_t len);
+
+/*
* Resolve an endpoint given request context.
* Resolved endpoint is returned through out_resolved_endpoint.
* In cases of error out_resolved_endpoint is set to NULL and error is returned.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-sdkutils-0.1.16/include/aws/sdkutils/private/endpoints_types_impl.h new/aws-c-sdkutils-0.1.19/include/aws/sdkutils/private/endpoints_types_impl.h
--- old/aws-c-sdkutils-0.1.16/include/aws/sdkutils/private/endpoints_types_impl.h 2024-04-22 18:32:19.000000000 +0200
+++ new/aws-c-sdkutils-0.1.19/include/aws/sdkutils/private/endpoints_types_impl.h 2024-08-03 00:36:14.000000000 +0200
@@ -71,6 +71,35 @@
AWS_ENDPOINTS_FN_LAST,
};
+enum aws_endpoints_value_type {
+ /* Special value to represent that any value type is expected from resolving an expresion.
+ Not a valid value for a value type. */
+ AWS_ENDPOINTS_VALUE_ANY,
+
+ AWS_ENDPOINTS_VALUE_NONE,
+ AWS_ENDPOINTS_VALUE_STRING,
+ AWS_ENDPOINTS_VALUE_BOOLEAN,
+ AWS_ENDPOINTS_VALUE_OBJECT, /* Generic type returned by some functions. json string under the covers. */
+ AWS_ENDPOINTS_VALUE_NUMBER,
+ AWS_ENDPOINTS_VALUE_ARRAY,
+
+ AWS_ENDPOINTS_VALUE_SIZE
+};
+
+/* concrete type value */
+struct aws_endpoints_value {
+ enum aws_endpoints_value_type type;
+ union {
+ struct aws_owning_cursor owning_cursor_string;
+ bool boolean;
+ struct aws_owning_cursor owning_cursor_object;
+ double number;
+ struct aws_array_list array;
+ } v;
+ /* Value is a reference to another value, no need to clean it up. */
+ bool is_ref;
+};
+
struct aws_endpoints_parameter {
struct aws_allocator *allocator;
@@ -80,10 +109,7 @@
struct aws_byte_cursor built_in;
bool has_default_value;
- union {
- struct aws_byte_cursor string;
- bool boolean;
- } default_value;
+ struct aws_endpoints_value default_value;
bool is_required;
struct aws_byte_cursor documentation;
@@ -210,21 +236,6 @@
******************************
*/
-enum aws_endpoints_value_type {
- /* Special value to represent that any value type is expected from resolving an expresion.
- Note a valid value for a value type. */
- AWS_ENDPOINTS_VALUE_ANY,
-
- AWS_ENDPOINTS_VALUE_NONE,
- AWS_ENDPOINTS_VALUE_STRING,
- AWS_ENDPOINTS_VALUE_BOOLEAN,
- AWS_ENDPOINTS_VALUE_OBJECT, /* Generic type returned by some functions. json string under the covers. */
- AWS_ENDPOINTS_VALUE_NUMBER,
- AWS_ENDPOINTS_VALUE_ARRAY,
-
- AWS_ENDPOINTS_VALUE_SIZE
-};
-
struct aws_endpoints_request_context {
struct aws_allocator *allocator;
struct aws_ref_count ref_count;
@@ -232,18 +243,6 @@
struct aws_hash_table values;
};
-/* concrete type value */
-struct aws_endpoints_value {
- enum aws_endpoints_value_type type;
- union {
- struct aws_owning_cursor owning_cursor_string;
- bool boolean;
- struct aws_owning_cursor owning_cursor_object;
- double number;
- struct aws_array_list array;
- } v;
-};
-
/* wrapper around aws_endpoints_value to store it more easily in hash table*/
struct aws_endpoints_scope_value {
struct aws_allocator *allocator;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-sdkutils-0.1.16/source/endpoints_rule_engine.c new/aws-c-sdkutils-0.1.19/source/endpoints_rule_engine.c
--- old/aws-c-sdkutils-0.1.16/source/endpoints_rule_engine.c 2024-04-22 18:32:19.000000000 +0200
+++ new/aws-c-sdkutils-0.1.19/source/endpoints_rule_engine.c 2024-08-03 00:36:14.000000000 +0200
@@ -186,13 +186,10 @@
switch (value->type) {
case AWS_ENDPOINTS_PARAMETER_STRING:
- val->value.type = AWS_ENDPOINTS_VALUE_STRING;
- val->value.v.owning_cursor_string =
- aws_endpoints_non_owning_cursor_create(value->default_value.string);
- break;
case AWS_ENDPOINTS_PARAMETER_BOOLEAN:
- val->value.type = AWS_ENDPOINTS_VALUE_BOOLEAN;
- val->value.v.boolean = value->default_value.boolean;
+ case AWS_ENDPOINTS_PARAMETER_STRING_ARRAY:
+ val->value = value->default_value;
+ val->value.is_ref = true;
break;
default:
AWS_LOGF_ERROR(AWS_LS_SDKUTILS_ENDPOINTS_RESOLVE, "Unexpected parameter type.");
@@ -310,8 +307,21 @@
}
case AWS_ENDPOINTS_EXPR_ARRAY: {
out_value->type = AWS_ENDPOINTS_VALUE_ARRAY;
- /* TODO: deep copy */
- out_value->v.array = expr->e.array;
+ {
+ size_t len = aws_array_list_length(&expr->e.array);
+ aws_array_list_init_dynamic(&out_value->v.array, allocator, len, sizeof(struct aws_endpoints_value));
+ for (size_t i = 0; i < len; ++i) {
+ struct aws_endpoints_expr expr_elem;
+ aws_array_list_get_at(&expr->e.array, &expr_elem, i);
+ struct aws_endpoints_value val;
+ if (s_resolve_expr(allocator, &expr_elem, scope, &val)) {
+ AWS_LOGF_ERROR(AWS_LS_SDKUTILS_ENDPOINTS_RESOLVE, "Failed to resolve array element.");
+ aws_endpoints_value_clean_up(out_value);
+ goto on_error;
+ }
+ aws_array_list_set_at(&out_value->v.array, &val, i);
+ }
+ }
break;
}
case AWS_ENDPOINTS_EXPR_REFERENCE: {
@@ -325,14 +335,9 @@
out_value->type = AWS_ENDPOINTS_VALUE_NONE;
} else {
struct aws_endpoints_scope_value *aws_endpoints_scope_value = element->value;
+
*out_value = aws_endpoints_scope_value->value;
- if (aws_endpoints_scope_value->value.type == AWS_ENDPOINTS_VALUE_STRING) {
- /* Value will not own underlying mem and instead its owned
- by the scope, so set it to NULL. */
- out_value->v.owning_cursor_string.string = NULL;
- } else if (aws_endpoints_scope_value->value.type == AWS_ENDPOINTS_VALUE_OBJECT) {
- out_value->v.owning_cursor_object.string = NULL;
- }
+ out_value->is_ref = true;
}
break;
}
@@ -450,6 +455,8 @@
struct aws_endpoints_value *value,
struct aws_byte_cursor path_cur,
struct aws_endpoints_value *out_value) {
+ (void)allocator;
+ (void)scope;
AWS_PRECONDITION(value->type == AWS_ENDPOINTS_VALUE_ARRAY);
@@ -461,25 +468,20 @@
goto on_error;
}
- if (index < aws_array_list_length(&value->v.array)) {
+ if (index >= aws_array_list_length(&value->v.array)) {
out_value->type = AWS_ENDPOINTS_VALUE_NONE;
return AWS_OP_SUCCESS;
}
- struct aws_endpoints_expr *expr = NULL;
- if (aws_array_list_get_at_ptr(&value->v.array, (void **)&expr, (size_t)index)) {
+ struct aws_endpoints_value *val = NULL;
+ if (aws_array_list_get_at_ptr(&value->v.array, (void **)&val, (size_t)index)) {
AWS_LOGF_ERROR(AWS_LS_SDKUTILS_ENDPOINTS_RESOLVE, "Failed to index into resolved value");
goto on_error;
}
- struct aws_endpoints_value val;
- if (s_resolve_expr(allocator, expr, scope, &val)) {
- AWS_LOGF_ERROR(AWS_LS_SDKUTILS_ENDPOINTS_RESOLVE, "Failed to resolve val.");
- aws_endpoints_value_clean_up(&val);
- goto on_error;
- }
+ *out_value = *val;
+ out_value->is_ref = true;
- *out_value = val;
return AWS_OP_SUCCESS;
on_error:
@@ -597,7 +599,10 @@
goto on_error;
}
} else {
- AWS_LOGF_ERROR(AWS_LS_SDKUTILS_ENDPOINTS_RESOLVE, "Invalid value type for pathing through.");
+ AWS_LOGF_ERROR(
+ AWS_LS_SDKUTILS_ENDPOINTS_RESOLVE,
+ "Invalid value type for pathing through. type %d",
+ scope_value->value.type);
goto on_error;
}
@@ -737,6 +742,34 @@
return AWS_OP_SUCCESS;
}
+int aws_endpoints_request_context_add_string_array(
+ struct aws_allocator *allocator,
+ struct aws_endpoints_request_context *context,
+ struct aws_byte_cursor name,
+ const struct aws_byte_cursor *values,
+ size_t len) {
+
+ struct aws_endpoints_scope_value *val = aws_endpoints_scope_value_new(allocator, name);
+ val->value.type = AWS_ENDPOINTS_VALUE_ARRAY;
+ aws_array_list_init_dynamic(&val->value.v.array, allocator, len, sizeof(struct aws_endpoints_value));
+
+ for (size_t i = 0; i < len; ++i) {
+ struct aws_endpoints_value elem = {
+ .is_ref = false,
+ .type = AWS_ENDPOINTS_VALUE_STRING,
+ .v.owning_cursor_object = aws_endpoints_owning_cursor_from_cursor(allocator, values[i])};
+
+ aws_array_list_set_at(&val->value.v.array, &elem, i);
+ }
+
+ if (aws_hash_table_put(&context->values, &val->name.cur, val, NULL)) {
+ aws_endpoints_scope_value_destroy(val);
+ return aws_raise_error(AWS_ERROR_SDKUTILS_ENDPOINTS_RESOLVE_INIT_FAILED);
+ };
+
+ return AWS_OP_SUCCESS;
+}
+
/*
******************************
* Rule engine.
@@ -1126,7 +1159,6 @@
result = aws_raise_error(AWS_ERROR_SDKUTILS_ENDPOINTS_RULESET_EXHAUSTED);
on_done:
- AWS_LOGF_DEBUG(AWS_LS_SDKUTILS_ENDPOINTS_RESOLVE, "Resolved endpoint with status %d", result);
s_scope_clean_up(&scope);
return result;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-sdkutils-0.1.16/source/endpoints_ruleset.c new/aws-c-sdkutils-0.1.19/source/endpoints_ruleset.c
--- old/aws-c-sdkutils-0.1.16/source/endpoints_ruleset.c 2024-04-22 18:32:19.000000000 +0200
+++ new/aws-c-sdkutils-0.1.19/source/endpoints_ruleset.c 2024-08-03 00:36:14.000000000 +0200
@@ -14,6 +14,7 @@
/* parameter types */
static struct aws_byte_cursor s_string_type_cur = AWS_BYTE_CUR_INIT_FROM_STRING_LITERAL("string");
static struct aws_byte_cursor s_boolean_type_cur = AWS_BYTE_CUR_INIT_FROM_STRING_LITERAL("boolean");
+static struct aws_byte_cursor s_string_array_type_cur = AWS_BYTE_CUR_INIT_FROM_STRING_LITERAL("stringArray");
/* rule types */
static struct aws_byte_cursor s_endpoint_type_cur = AWS_BYTE_CUR_INIT_FROM_STRING_LITERAL("endpoint");
@@ -52,7 +53,7 @@
AWS_PRECONDITION(out_cursor);
if (parameter->type == AWS_ENDPOINTS_PARAMETER_STRING) {
- *out_cursor = parameter->default_value.string;
+ *out_cursor = parameter->default_value.v.owning_cursor_string.cur;
return AWS_OP_SUCCESS;
};
@@ -67,7 +68,7 @@
AWS_PRECONDITION(out_bool);
if (parameter->type == AWS_ENDPOINTS_PARAMETER_BOOLEAN) {
- *out_bool = ¶meter->default_value.boolean;
+ *out_bool = ¶meter->default_value.v.boolean;
return AWS_OP_SUCCESS;
};
@@ -225,7 +226,7 @@
AWS_ZERO_STRUCT(*out_reference);
- struct aws_json_value *ref_node = aws_json_value_get_from_object(node, aws_byte_cursor_from_c_str("ref"));
+ struct aws_json_value *ref_node = aws_json_value_get_from_object_c_str(node, "ref");
if (ref_node != NULL && aws_json_value_get_string(ref_node, out_reference)) {
AWS_LOGF_ERROR(AWS_LS_SDKUTILS_ENDPOINTS_PARSING, "Failed to parse ref.");
AWS_ZERO_STRUCT(*out_reference);
@@ -328,7 +329,7 @@
AWS_ZERO_STRUCT(*function);
- struct aws_json_value *fn_node = aws_json_value_get_from_object(node, aws_byte_cursor_from_c_str("fn"));
+ struct aws_json_value *fn_node = aws_json_value_get_from_object_c_str(node, "fn");
if (fn_node == NULL) {
AWS_LOGF_ERROR(AWS_LS_SDKUTILS_ENDPOINTS_PARSING, "Node is not a function.");
goto on_error;
@@ -357,7 +358,7 @@
goto on_error;
}
- struct aws_json_value *argv_node = aws_json_value_get_from_object(node, aws_byte_cursor_from_c_str("argv"));
+ struct aws_json_value *argv_node = aws_json_value_get_from_object_c_str(node, "argv");
if (argv_node == NULL || !aws_json_value_is_array(argv_node)) {
AWS_LOGF_ERROR(AWS_LS_SDKUTILS_ENDPOINTS_PARSING, "No argv or unexpected type.");
goto on_error;
@@ -394,7 +395,7 @@
/* required fields */
struct aws_byte_cursor type_cur;
- struct aws_json_value *type_node = aws_json_value_get_from_object(value, aws_byte_cursor_from_c_str("type"));
+ struct aws_json_value *type_node = aws_json_value_get_from_object_c_str(value, "type");
if (type_node == NULL || aws_json_value_get_string(type_node, &type_cur)) {
AWS_LOGF_ERROR(AWS_LS_SDKUTILS_ENDPOINTS_PARSING, "Failed to extract parameter type.");
goto on_error;
@@ -405,6 +406,8 @@
type = AWS_ENDPOINTS_PARAMETER_STRING;
} else if (aws_byte_cursor_eq_ignore_case(&type_cur, &s_boolean_type_cur)) {
type = AWS_ENDPOINTS_PARAMETER_BOOLEAN;
+ } else if (aws_byte_cursor_eq_ignore_case(&type_cur, &s_string_array_type_cur)) {
+ type = AWS_ENDPOINTS_PARAMETER_STRING_ARRAY;
} else {
AWS_LOGF_ERROR(AWS_LS_SDKUTILS_ENDPOINTS_PARSING, "Unexpected type for parameter.");
goto on_error;
@@ -412,8 +415,7 @@
parameter->type = type;
- struct aws_json_value *documentation_node =
- aws_json_value_get_from_object(value, aws_byte_cursor_from_c_str("documentation"));
+ struct aws_json_value *documentation_node = aws_json_value_get_from_object_c_str(value, "documentation");
/* TODO: spec calls for documentation to be required, but several test-cases
are missing docs on parameters */
@@ -425,7 +427,7 @@
}
/* optional fields */
- struct aws_json_value *built_in_node = aws_json_value_get_from_object(value, aws_byte_cursor_from_c_str("builtIn"));
+ struct aws_json_value *built_in_node = aws_json_value_get_from_object_c_str(value, "builtIn");
if (built_in_node != NULL) {
if (aws_json_value_get_string(built_in_node, ¶meter->built_in)) {
AWS_LOGF_ERROR(AWS_LS_SDKUTILS_ENDPOINTS_PARSING, "Unexpected type for built-in parameter field.");
@@ -433,8 +435,7 @@
}
}
- struct aws_json_value *required_node =
- aws_json_value_get_from_object(value, aws_byte_cursor_from_c_str("required"));
+ struct aws_json_value *required_node = aws_json_value_get_from_object_c_str(value, "required");
if (required_node != NULL) {
if (!aws_json_value_is_boolean(required_node)) {
AWS_LOGF_ERROR(AWS_LS_SDKUTILS_ENDPOINTS_PARSING, "Unexpected type for required parameter field.");
@@ -443,34 +444,59 @@
aws_json_value_get_boolean(required_node, ¶meter->is_required);
}
- struct aws_json_value *default_node = aws_json_value_get_from_object(value, aws_byte_cursor_from_c_str("default"));
+ struct aws_json_value *default_node = aws_json_value_get_from_object_c_str(value, "default");
parameter->has_default_value = default_node != NULL;
if (default_node != NULL) {
- if (type == AWS_ENDPOINTS_PARAMETER_STRING &&
- aws_json_value_get_string(default_node, ¶meter->default_value.string)) {
- AWS_LOGF_ERROR(AWS_LS_SDKUTILS_ENDPOINTS_PARSING, "Unexpected type for default parameter value.");
- goto on_error;
- } else if (
- type == AWS_ENDPOINTS_PARAMETER_BOOLEAN &&
- aws_json_value_get_boolean(default_node, ¶meter->default_value.boolean)) {
+ if (type == AWS_ENDPOINTS_PARAMETER_STRING && aws_json_value_is_string(default_node)) {
+ struct aws_byte_cursor cur;
+ aws_json_value_get_string(default_node, &cur);
+ parameter->default_value.type = AWS_ENDPOINTS_VALUE_STRING;
+ parameter->default_value.v.owning_cursor_string = aws_endpoints_non_owning_cursor_create(cur);
+ } else if (type == AWS_ENDPOINTS_PARAMETER_BOOLEAN && aws_json_value_is_boolean(default_node)) {
+ parameter->default_value.type = AWS_ENDPOINTS_VALUE_BOOLEAN;
+ aws_json_value_get_boolean(default_node, ¶meter->default_value.v.boolean);
+ } else if (type == AWS_ENDPOINTS_PARAMETER_STRING_ARRAY && aws_json_value_is_array(default_node)) {
+ parameter->default_value.type = AWS_ENDPOINTS_VALUE_ARRAY;
+ size_t len = aws_json_get_array_size(default_node);
+ aws_array_list_init_dynamic(
+ ¶meter->default_value.v.array, wrapper->allocator, len, sizeof(struct aws_endpoints_value));
+ for (size_t i = 0; i < len; ++i) {
+ struct aws_json_value *element = aws_json_get_array_element(default_node, i);
+ if (!aws_json_value_is_string(element)) {
+ AWS_LOGF_ERROR(
+ AWS_LS_SDKUTILS_ENDPOINTS_PARSING,
+ "Unexpected type for default parameter value. String array parameter must have string "
+ "elements");
+ goto on_error;
+ }
+
+ struct aws_byte_cursor cur;
+ aws_json_value_get_string(element, &cur);
+
+ struct aws_endpoints_value val = {
+ .is_ref = false,
+ .type = AWS_ENDPOINTS_VALUE_STRING,
+ .v.owning_cursor_string = aws_endpoints_non_owning_cursor_create(cur)};
+
+ aws_array_list_set_at(¶meter->default_value.v.array, &val, i);
+ }
+ } else {
AWS_LOGF_ERROR(AWS_LS_SDKUTILS_ENDPOINTS_PARSING, "Unexpected type for default parameter value.");
goto on_error;
}
}
- struct aws_json_value *deprecated_node =
- aws_json_value_get_from_object(value, aws_byte_cursor_from_c_str("deprecated"));
+ struct aws_json_value *deprecated_node = aws_json_value_get_from_object_c_str(value, "deprecated");
if (deprecated_node != NULL) {
struct aws_json_value *deprecated_message_node =
- aws_json_value_get_from_object(deprecated_node, aws_byte_cursor_from_c_str("message"));
+ aws_json_value_get_from_object_c_str(deprecated_node, "message");
if (deprecated_message_node != NULL &&
aws_json_value_get_string(deprecated_message_node, ¶meter->deprecated_message)) {
AWS_LOGF_ERROR(AWS_LS_SDKUTILS_ENDPOINTS_PARSING, "Unexpected value for deprecated message.");
goto on_error;
}
- struct aws_json_value *deprecated_since_node =
- aws_json_value_get_from_object(deprecated_node, aws_byte_cursor_from_c_str("since"));
+ struct aws_json_value *deprecated_since_node = aws_json_value_get_from_object_c_str(deprecated_node, "since");
if (deprecated_since_node != NULL &&
aws_json_value_get_string(deprecated_since_node, ¶meter->deprecated_since)) {
AWS_LOGF_ERROR(AWS_LS_SDKUTILS_ENDPOINTS_PARSING, "Unexpected value for deprecated since.");
@@ -510,8 +536,7 @@
goto on_error;
}
- struct aws_json_value *assign_node =
- aws_json_value_get_from_object(condition_node, aws_byte_cursor_from_c_str("assign"));
+ struct aws_json_value *assign_node = aws_json_value_get_from_object_c_str(condition_node, "assign");
if (assign_node != NULL && aws_json_value_get_string(assign_node, &condition.assign)) {
AWS_LOGF_ERROR(AWS_LS_SDKUTILS_ENDPOINTS_PARSING, "Unexpected value for assign.");
goto on_error;
@@ -589,7 +614,7 @@
AWS_PRECONDITION(data_rule);
data_rule->allocator = allocator;
- struct aws_json_value *url_node = aws_json_value_get_from_object(rule_node, aws_byte_cursor_from_c_str("url"));
+ struct aws_json_value *url_node = aws_json_value_get_from_object_c_str(rule_node, "url");
if (url_node == NULL || aws_json_value_is_string(url_node)) {
data_rule->url.type = AWS_ENDPOINTS_EXPR_STRING;
aws_json_value_get_string(url_node, &data_rule->url.e.string);
@@ -612,8 +637,7 @@
}
}
- struct aws_json_value *properties_node =
- aws_json_value_get_from_object(rule_node, aws_byte_cursor_from_c_str("properties"));
+ struct aws_json_value *properties_node = aws_json_value_get_from_object_c_str(rule_node, "properties");
if (properties_node != NULL) {
aws_byte_buf_init(&data_rule->properties, allocator, 0);
@@ -638,12 +662,11 @@
aws_hash_callback_string_destroy,
s_callback_headers_destroy);
- struct aws_json_value *headers_node =
- aws_json_value_get_from_object(rule_node, aws_byte_cursor_from_c_str("headers"));
+ struct aws_json_value *headers_node = aws_json_value_get_from_object_c_str(rule_node, "headers");
if (headers_node != NULL) {
if (s_init_members_from_json(allocator, headers_node, &data_rule->headers, s_on_headers_key)) {
- AWS_LOGF_ERROR(AWS_LS_SDKUTILS_ENDPOINTS_PARSING, "Failed to extract parameters.");
+ AWS_LOGF_ERROR(AWS_LS_SDKUTILS_ENDPOINTS_PARSING, "Failed to extract headers.");
goto on_error;
}
}
@@ -708,7 +731,7 @@
AWS_PRECONDITION(rule_node);
AWS_PRECONDITION(rule_data);
- struct aws_json_value *rules_node = aws_json_value_get_from_object(rule_node, aws_byte_cursor_from_c_str("rules"));
+ struct aws_json_value *rules_node = aws_json_value_get_from_object_c_str(rule_node, "rules");
if (rules_node == NULL || !aws_json_value_is_array(rules_node)) {
AWS_LOGF_ERROR(AWS_LS_SDKUTILS_ENDPOINTS_PARSING, "Rules node is missing or unexpected type.");
return aws_raise_error(AWS_ERROR_SDKUTILS_ENDPOINTS_PARSE_FAILED);
@@ -739,7 +762,7 @@
/* Required fields */
struct aws_byte_cursor type_cur;
- struct aws_json_value *type_node = aws_json_value_get_from_object(value, aws_byte_cursor_from_c_str("type"));
+ struct aws_json_value *type_node = aws_json_value_get_from_object_c_str(value, "type");
if (type_node == NULL || aws_json_value_get_string(type_node, &type_cur)) {
AWS_LOGF_ERROR(AWS_LS_SDKUTILS_ENDPOINTS_PARSING, "Failed to extract rule type.");
return aws_raise_error(AWS_ERROR_SDKUTILS_ENDPOINTS_PARSE_FAILED);
@@ -761,8 +784,7 @@
AWS_ZERO_STRUCT(rule);
rule.type = type;
- struct aws_json_value *conditions_node =
- aws_json_value_get_from_object(value, aws_byte_cursor_from_c_str("conditions"));
+ struct aws_json_value *conditions_node = aws_json_value_get_from_object_c_str(value, "conditions");
if (conditions_node == NULL || !aws_json_value_is_array(conditions_node)) {
AWS_LOGF_ERROR(AWS_LS_SDKUTILS_ENDPOINTS_PARSING, "Conditions node missing.");
goto on_error;
@@ -779,8 +801,7 @@
switch (type) {
case AWS_ENDPOINTS_RULE_ENDPOINT: {
- struct aws_json_value *endpoint_node =
- aws_json_value_get_from_object(value, aws_byte_cursor_from_c_str("endpoint"));
+ struct aws_json_value *endpoint_node = aws_json_value_get_from_object_c_str(value, "endpoint");
if (endpoint_node == NULL ||
s_parse_endpoints_rule_data_endpoint(wrapper->allocator, endpoint_node, &rule.rule_data.endpoint)) {
AWS_LOGF_ERROR(AWS_LS_SDKUTILS_ENDPOINTS_PARSING, "Failed to extract endpoint rule data.");
@@ -789,8 +810,7 @@
break;
}
case AWS_ENDPOINTS_RULE_ERROR: {
- struct aws_json_value *error_node =
- aws_json_value_get_from_object(value, aws_byte_cursor_from_c_str("error"));
+ struct aws_json_value *error_node = aws_json_value_get_from_object_c_str(value, "error");
if (error_node == NULL ||
s_parse_endpoints_rule_data_error(wrapper->allocator, error_node, &rule.rule_data.error)) {
AWS_LOGF_ERROR(AWS_LS_SDKUTILS_ENDPOINTS_PARSING, "Failed to extract error rule data.");
@@ -810,8 +830,7 @@
}
/* Optional fields */
- struct aws_json_value *documentation_node =
- aws_json_value_get_from_object(value, aws_byte_cursor_from_c_str("documentation"));
+ struct aws_json_value *documentation_node = aws_json_value_get_from_object_c_str(value, "documentation");
if (documentation_node != NULL) {
if (aws_json_value_get_string(documentation_node, &rule.documentation)) {
AWS_LOGF_ERROR(AWS_LS_SDKUTILS_ENDPOINTS_PARSING, "Failed to extract parameter documentation.");
@@ -845,7 +864,7 @@
ruleset->json_root = root;
- struct aws_json_value *version_node = aws_json_value_get_from_object(root, aws_byte_cursor_from_c_str("version"));
+ struct aws_json_value *version_node = aws_json_value_get_from_object_c_str(root, "version");
if (version_node == NULL || aws_json_value_get_string(version_node, &ruleset->version)) {
AWS_LOGF_ERROR(AWS_LS_SDKUTILS_ENDPOINTS_PARSING, "Failed to extract version.");
aws_raise_error(AWS_ERROR_SDKUTILS_ENDPOINTS_UNSUPPORTED_RULESET);
@@ -860,8 +879,7 @@
}
#endif
- struct aws_json_value *service_id_node =
- aws_json_value_get_from_object(root, aws_byte_cursor_from_c_str("serviceId"));
+ struct aws_json_value *service_id_node = aws_json_value_get_from_object_c_str(root, "serviceId");
if (service_id_node != NULL && aws_json_value_get_string(service_id_node, &ruleset->service_id)) {
AWS_LOGF_ERROR(AWS_LS_SDKUTILS_ENDPOINTS_PARSING, "Failed to extract serviceId.");
@@ -878,8 +896,7 @@
NULL,
s_callback_endpoints_parameter_destroy);
- struct aws_json_value *parameters_node =
- aws_json_value_get_from_object(root, aws_byte_cursor_from_c_str("parameters"));
+ struct aws_json_value *parameters_node = aws_json_value_get_from_object_c_str(root, "parameters");
if (parameters_node == NULL ||
s_init_members_from_json(allocator, parameters_node, &ruleset->parameters, s_on_parameter_key)) {
AWS_LOGF_ERROR(AWS_LS_SDKUTILS_ENDPOINTS_PARSING, "Failed to extract parameters.");
@@ -887,7 +904,7 @@
goto on_error;
}
- struct aws_json_value *rules_node = aws_json_value_get_from_object(root, aws_byte_cursor_from_c_str("rules"));
+ struct aws_json_value *rules_node = aws_json_value_get_from_object_c_str(root, "rules");
if (rules_node == NULL || !aws_json_value_is_array(rules_node)) {
AWS_LOGF_ERROR(AWS_LS_SDKUTILS_ENDPOINTS_PARSING, "Unexpected type for rules node.");
aws_raise_error(AWS_ERROR_SDKUTILS_ENDPOINTS_PARSE_FAILED);
@@ -914,12 +931,12 @@
struct aws_endpoints_ruleset *ruleset = data;
- aws_json_value_destroy(ruleset->json_root);
-
aws_hash_table_clean_up(&ruleset->parameters);
aws_array_list_deep_clean_up(&ruleset->rules, s_on_rule_array_element_clean_up);
+ aws_json_value_destroy(ruleset->json_root);
+
aws_mem_release(ruleset->allocator, ruleset);
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-sdkutils-0.1.16/source/endpoints_standard_lib.c new/aws-c-sdkutils-0.1.19/source/endpoints_standard_lib.c
--- old/aws-c-sdkutils-0.1.16/source/endpoints_standard_lib.c 2024-04-22 18:32:19.000000000 +0200
+++ new/aws-c-sdkutils-0.1.19/source/endpoints_standard_lib.c 2024-08-03 00:36:14.000000000 +0200
@@ -94,7 +94,8 @@
goto on_done;
}
} else {
- AWS_LOGF_ERROR(AWS_LS_SDKUTILS_ENDPOINTS_RESOLVE, "Invalid value type for pathing through.");
+ AWS_LOGF_ERROR(
+ AWS_LS_SDKUTILS_ENDPOINTS_RESOLVE, "Invalid value type for pathing through. type: %d", argv_value.type);
result = aws_raise_error(AWS_ERROR_SDKUTILS_ENDPOINTS_RESOLVE_FAILED);
goto on_done;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-sdkutils-0.1.16/source/endpoints_types_impl.c new/aws-c-sdkutils-0.1.19/source/endpoints_types_impl.c
--- old/aws-c-sdkutils-0.1.16/source/endpoints_types_impl.c 2024-04-22 18:32:19.000000000 +0200
+++ new/aws-c-sdkutils-0.1.19/source/endpoints_types_impl.c 2024-08-03 00:36:14.000000000 +0200
@@ -11,6 +11,8 @@
#include <aws/sdkutils/private/endpoints_types_impl.h>
#include <aws/sdkutils/private/endpoints_util.h>
+void s_endpoints_value_clean_up_cb(void *value);
+
uint64_t aws_endpoints_fn_name_hash[AWS_ENDPOINTS_FN_LAST];
void aws_endpoints_rule_engine_init(void) {
@@ -85,6 +87,10 @@
return;
}
+ if (parameter->has_default_value && parameter->type == AWS_ENDPOINTS_PARAMETER_STRING_ARRAY) {
+ aws_array_list_deep_clean_up(¶meter->default_value.v.array, s_endpoints_value_clean_up_cb);
+ }
+
aws_mem_release(parameter->allocator, parameter);
}
@@ -189,6 +195,7 @@
return;
}
aws_string_destroy(scope_value->name.string);
+
aws_endpoints_value_clean_up(&scope_value->value);
aws_mem_release(scope_value->allocator, scope_value);
}
@@ -198,6 +205,10 @@
void aws_endpoints_value_clean_up(struct aws_endpoints_value *aws_endpoints_value) {
AWS_PRECONDITION(aws_endpoints_value);
+ if (aws_endpoints_value->is_ref) {
+ goto on_done;
+ }
+
if (aws_endpoints_value->type == AWS_ENDPOINTS_VALUE_STRING) {
aws_string_destroy(aws_endpoints_value->v.owning_cursor_string.string);
}
@@ -207,13 +218,14 @@
}
if (aws_endpoints_value->type == AWS_ENDPOINTS_VALUE_ARRAY) {
- aws_array_list_deep_clean_up(&aws_endpoints_value->v.array, aws_endpoints_value_clean_up_cb);
+ aws_array_list_deep_clean_up(&aws_endpoints_value->v.array, s_endpoints_value_clean_up_cb);
}
+on_done:
AWS_ZERO_STRUCT(*aws_endpoints_value);
}
-void aws_endpoints_value_clean_up_cb(void *value) {
+void s_endpoints_value_clean_up_cb(void *value) {
struct aws_endpoints_value *aws_endpoints_value = value;
aws_endpoints_value_clean_up(aws_endpoints_value);
}
@@ -224,15 +236,35 @@
struct aws_endpoints_value *to) {
to->type = from->type;
+ to->is_ref = false;
if (to->type == AWS_ENDPOINTS_VALUE_STRING) {
- to->v.owning_cursor_string = aws_endpoints_owning_cursor_create(allocator, from->v.owning_cursor_string.string);
+ to->v.owning_cursor_string =
+ aws_endpoints_owning_cursor_from_cursor(allocator, from->v.owning_cursor_string.cur);
} else if (to->type == AWS_ENDPOINTS_VALUE_BOOLEAN) {
to->v.boolean = from->v.boolean;
+ } else if (to->type == AWS_ENDPOINTS_VALUE_ARRAY) {
+ size_t len = aws_array_list_length(&from->v.array);
+ aws_array_list_init_dynamic(&to->v.array, allocator, len, sizeof(struct aws_endpoints_value));
+ for (size_t i = 0; i < len; ++i) {
+ struct aws_endpoints_value val;
+ aws_array_list_get_at(&from->v.array, &val, i);
+
+ struct aws_endpoints_value to_val;
+ if (aws_endpoints_deep_copy_parameter_value(allocator, &val, &to_val)) {
+ AWS_LOGF_ERROR(AWS_LS_SDKUTILS_ENDPOINTS_RESOLVE, "Unexpected array element type.");
+ goto on_error;
+ }
+
+ aws_array_list_set_at(&to->v.array, &to_val, i);
+ }
} else {
AWS_LOGF_ERROR(AWS_LS_SDKUTILS_ENDPOINTS_RESOLVE, "Unexpected value type.");
return aws_raise_error(AWS_ERROR_INVALID_STATE);
}
-
return AWS_OP_SUCCESS;
+
+on_error:
+ aws_endpoints_value_clean_up(to);
+ return AWS_OP_ERR;
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-sdkutils-0.1.16/tests/CMakeLists.txt new/aws-c-sdkutils-0.1.19/tests/CMakeLists.txt
--- old/aws-c-sdkutils-0.1.16/tests/CMakeLists.txt 2024-04-22 18:32:19.000000000 +0200
+++ new/aws-c-sdkutils-0.1.19/tests/CMakeLists.txt 2024-08-03 00:36:14.000000000 +0200
@@ -87,6 +87,7 @@
add_test_case(test_endpoints_valid_hostlabel)
add_test_case(test_endpoints_condition_mem_clean_up)
add_test_case(test_endpoints_custom)
+add_test_case(test_endpoints_string_array)
add_test_case(endpoints_uri_normalize_path)
add_test_case(endpoints_byte_buf_init_from_resolved_templated_string)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-sdkutils-0.1.16/tests/endpoints_rule_engine_tests.c new/aws-c-sdkutils-0.1.19/tests/endpoints_rule_engine_tests.c
--- old/aws-c-sdkutils-0.1.16/tests/endpoints_rule_engine_tests.c 2024-04-22 18:32:19.000000000 +0200
+++ new/aws-c-sdkutils-0.1.19/tests/endpoints_rule_engine_tests.c 2024-08-03 00:36:14.000000000 +0200
@@ -114,6 +114,11 @@
struct aws_endpoints_request_context *context;
};
+enum {
+ /* something is really wrong if there is more than 4 elems during the test */
+ MAX_STRING_ARRAY_ELEMENTS = 4
+};
+
static int s_on_parameter_key(
const struct aws_byte_cursor *key,
const struct aws_json_value *value,
@@ -125,23 +130,27 @@
if (aws_json_value_is_string(value)) {
struct aws_byte_cursor cur;
- if (aws_json_value_get_string(value, &cur) ||
- aws_endpoints_request_context_add_string(wrapper->allocator, wrapper->context, *key, cur)) {
- goto on_error;
- }
+ ASSERT_SUCCESS(aws_json_value_get_string(value, &cur));
+ ASSERT_SUCCESS(aws_endpoints_request_context_add_string(wrapper->allocator, wrapper->context, *key, cur));
return AWS_OP_SUCCESS;
} else if (aws_json_value_is_boolean(value)) {
bool b;
- if (aws_json_value_get_boolean(value, &b) ||
- aws_endpoints_request_context_add_boolean(wrapper->allocator, wrapper->context, *key, b)) {
- goto on_error;
+ ASSERT_SUCCESS(aws_json_value_get_boolean(value, &b));
+ ASSERT_SUCCESS(aws_endpoints_request_context_add_boolean(wrapper->allocator, wrapper->context, *key, b));
+ return AWS_OP_SUCCESS;
+ } else if (aws_json_value_is_array(value)) {
+ struct aws_byte_cursor strings[MAX_STRING_ARRAY_ELEMENTS];
+ size_t len = aws_json_get_array_size(value);
+ ASSERT_TRUE(len <= MAX_STRING_ARRAY_ELEMENTS);
+ for (size_t i = 0; i < len; ++i) {
+ struct aws_json_value *str = aws_json_get_array_element(value, i);
+ ASSERT_SUCCESS(aws_json_value_get_string(str, &strings[i]));
}
+ ASSERT_SUCCESS(
+ aws_endpoints_request_context_add_string_array(wrapper->allocator, wrapper->context, *key, strings, len));
return AWS_OP_SUCCESS;
- } else {
- goto on_error;
}
-on_error:
return AWS_OP_ERR;
}
@@ -274,7 +283,6 @@
aws_json_value_get_from_object(endpoint, aws_byte_cursor_from_c_str("url"));
struct aws_byte_cursor expected_url;
aws_json_value_get_string(expected_url_node, &expected_url);
- AWS_LOGF_DEBUG(0, PRInSTR " " PRInSTR, AWS_BYTE_CURSOR_PRI(url), AWS_BYTE_CURSOR_PRI(expected_url));
ASSERT_TRUE(aws_byte_cursor_eq(&url, &expected_url));
struct aws_byte_cursor properties;
@@ -485,3 +493,12 @@
return AWS_OP_SUCCESS;
}
+
+AWS_TEST_CASE(test_endpoints_string_array, s_test_endpoints_string_array)
+static int s_test_endpoints_string_array(struct aws_allocator *allocator, void *ctx) {
+ (void)ctx;
+
+ ASSERT_SUCCESS(eval_expected(allocator, aws_byte_cursor_from_c_str("string_array.json")));
+
+ return AWS_OP_SUCCESS;
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-sdkutils-0.1.16/tests/resources/test-cases/partition-fn.json new/aws-c-sdkutils-0.1.19/tests/resources/test-cases/partition-fn.json
--- old/aws-c-sdkutils-0.1.16/tests/resources/test-cases/partition-fn.json 2024-04-22 18:32:19.000000000 +0200
+++ new/aws-c-sdkutils-0.1.19/tests/resources/test-cases/partition-fn.json 2024-08-03 00:36:14.000000000 +0200
@@ -122,4 +122,4 @@
}
}
]
- }
\ No newline at end of file
+ }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-sdkutils-0.1.16/tests/resources/test-cases/string_array.json new/aws-c-sdkutils-0.1.19/tests/resources/test-cases/string_array.json
--- old/aws-c-sdkutils-0.1.16/tests/resources/test-cases/string_array.json 1970-01-01 01:00:00.000000000 +0100
+++ new/aws-c-sdkutils-0.1.19/tests/resources/test-cases/string_array.json 2024-08-03 00:36:14.000000000 +0200
@@ -0,0 +1,45 @@
+{
+ "version": "1.0",
+ "testCases": [
+ {
+ "documentation": "Default array values used",
+ "params": {},
+ "expect": {
+ "endpoint": {
+ "url": "https://example.com/defaultValue1"
+ }
+ }
+ },
+ {
+ "documentation": "Empty array",
+ "params": {
+ "stringArrayParam": []
+ },
+ "expect": {
+ "error": "no array values set"
+ }
+ },
+ {
+ "documentation": "Static value",
+ "params": {
+ "stringArrayParam": ["staticValue1"]
+ },
+ "expect": {
+ "endpoint": {
+ "url": "https://example.com/staticValue1"
+ }
+ }
+ },
+ {
+ "documentation": "bound value from input",
+ "params": {
+ "stringArrayParam": ["key1", "key2", "key3", "key4"]
+ },
+ "expect": {
+ "endpoint": {
+ "url": "https://example.com/key1"
+ }
+ }
+ }
+ ]
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-sdkutils-0.1.16/tests/resources/valid-rules/string_array.json new/aws-c-sdkutils-0.1.19/tests/resources/valid-rules/string_array.json
--- old/aws-c-sdkutils-0.1.16/tests/resources/valid-rules/string_array.json 1970-01-01 01:00:00.000000000 +0100
+++ new/aws-c-sdkutils-0.1.19/tests/resources/valid-rules/string_array.json 2024-08-03 00:36:14.000000000 +0200
@@ -0,0 +1,38 @@
+{
+ "version": "1.0",
+ "parameters": {
+ "stringArrayParam": {
+ "type": "stringArray",
+ "required": true,
+ "default": ["defaultValue1", "defaultValue2"],
+ "documentation": "docs"
+ }
+ },
+ "rules": [
+ {
+ "documentation": "Template first array value into URI if set",
+ "conditions": [
+ {
+ "fn": "getAttr",
+ "argv": [
+ {
+ "ref": "stringArrayParam"
+ },
+ "[0]"
+ ],
+ "assign": "arrayValue"
+ }
+ ],
+ "endpoint": {
+ "url": "https://example.com/{arrayValue}"
+ },
+ "type": "endpoint"
+ },
+ {
+ "conditions": [],
+ "documentation": "error fallthrough",
+ "error": "no array values set",
+ "type": "error"
+ }
+ ]
+}
1
0
Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package aws-c-io for openSUSE:Factory checked in at 2024-08-09 16:14:48
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/aws-c-io (Old)
and /work/SRC/openSUSE:Factory/.aws-c-io.new.7232 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "aws-c-io"
Fri Aug 9 16:14:48 2024 rev:13 rq:1192577 version:0.14.18
Changes:
--------
--- /work/SRC/openSUSE:Factory/aws-c-io/aws-c-io.changes 2024-08-08 10:58:52.316788196 +0200
+++ /work/SRC/openSUSE:Factory/.aws-c-io.new.7232/aws-c-io.changes 2024-08-09 16:15:17.540505196 +0200
@@ -1,0 +2,10 @@
+Wed Aug 7 13:41:28 UTC 2024 - John Paul Adrian Glaubitz <adrian.glaubitz(a)suse.com>
+
+- Update to version 0.14.18
+ * Unique port between test_socket_with_bind_to_interface
+ and test_tcp_socket_communication by @waahm7 in (#667)
+- from version 0.14.17
+ * Make port more random for test_socket_with_bind_to_interface
+ test by @waahm7 in (#666)
+
+-------------------------------------------------------------------
Old:
----
v0.14.16.tar.gz
New:
----
v0.14.18.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ aws-c-io.spec ++++++
--- /var/tmp/diff_new_pack.T6mU6w/_old 2024-08-09 16:15:19.200574487 +0200
+++ /var/tmp/diff_new_pack.T6mU6w/_new 2024-08-09 16:15:19.216575155 +0200
@@ -20,7 +20,7 @@
%define library_version 1.0.0
%define library_soversion 0unstable
Name: aws-c-io
-Version: 0.14.16
+Version: 0.14.18
Release: 0
Summary: I/O and TLS package AWS SDK for C
License: Apache-2.0
++++++ v0.14.16.tar.gz -> v0.14.18.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/aws-c-io-0.14.16/tests/socket_test.c new/aws-c-io-0.14.18/tests/socket_test.c
--- old/aws-c-io-0.14.16/tests/socket_test.c 2024-07-31 23:14:58.000000000 +0200
+++ new/aws-c-io-0.14.18/tests/socket_test.c 2024-08-03 00:35:40.000000000 +0200
@@ -447,7 +447,7 @@
#else
strncpy(options.network_interface_name, "lo", AWS_NETWORK_INTERFACE_NAME_MAX);
#endif
- struct aws_socket_endpoint endpoint = {.address = "127.0.0.1", .port = 8127};
+ struct aws_socket_endpoint endpoint = {.address = "127.0.0.1", .port = 8128};
if (s_test_socket(allocator, &options, &endpoint)) {
#if !defined(AWS_OS_APPLE) && !defined(AWS_OS_LINUX)
if (aws_last_error() == AWS_ERROR_PLATFORM_NOT_SUPPORTED) {
@@ -460,7 +460,7 @@
options.domain = AWS_SOCKET_IPV4;
ASSERT_SUCCESS(s_test_socket(allocator, &options, &endpoint));
- struct aws_socket_endpoint endpoint_ipv6 = {.address = "::1", .port = 1024};
+ struct aws_socket_endpoint endpoint_ipv6 = {.address = "::1", .port = 8129};
options.type = AWS_SOCKET_STREAM;
options.domain = AWS_SOCKET_IPV6;
if (s_test_socket(allocator, &options, &endpoint_ipv6)) {
1
0