From f0e919684f0a9225b65bb6470dbaf6ce318613a8 Mon Sep 17 00:00:00 2001 From: DMG Date: Sun, 13 Oct 2024 12:37:23 -0700 Subject: [PATCH 01/31] Fix: Avoid using compiler.has_function('dladdr') It would be nice to use compiler.has_function('dladdr') to test if we need to add libdl, but unfortunately that approach seems to break certain Redhat builds, specifically the Redhat builds that use ubi-8. In such cases, it appears meson creates a test file that includes the comment: With some toolchains ... the compiler provides various builtins which are not really implemented... [If] the user provides a header, including the header didn't lead to the function being defined, and the function we are checking isn't a builtin itself, we assume the builtin is not functional and error out To avoid generating such an error, we take the simpler approach of trying to add libdl but making it optional (i.e. not required). Also - added branch MakeDlLibraryDependency4 to linux.yaml as a temporary experiment. --- .github/workflows/linux.yaml | 1 + meson.build | 25 +++++++++++++++++-------- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/.github/workflows/linux.yaml b/.github/workflows/linux.yaml index 9b826b29..91ea0b03 100644 --- a/.github/workflows/linux.yaml +++ b/.github/workflows/linux.yaml @@ -8,6 +8,7 @@ on: push: branches: - master + - MakeDlLibraryDependency4 pull_request: branches: - master diff --git a/meson.build b/meson.build index 3e4ed0a6..6942c1ff 100644 --- a/meson.build +++ b/meson.build @@ -154,14 +154,23 @@ endif # #1230. # Note: If 'dl' is not available, per Meson it suggests that the # functionality is provided by libc -has_dladdr_func = compiler.has_function('dladdr') -if not has_dladdr_func - libdl_dep += dependency('dl') - has_dladdr_func = compiler.has_function('dladdr', dependencies: libdl_dep) - if not has_dladdr_func - warning('Unable to find dladdr(), even when trying to link to libdl') - endif - libpistache_deps += libdl_dep + +# It would be nice to use compiler.has_function('dladdr') to test if +# we need to add libdl, but unfortunately that approach seems to break +# certain Redhat builds, specifically the Redhat builds that use +# ubi-8. In such cases, it appears meson creates a test file that +# includes the comment: +# With some toolchains ... the compiler provides various builtins +# which are not really implemented... [If] the user provides a +# header, including the header didn't lead to the function being +# defined, and the function we are checking isn't a builtin itself, +# we assume the builtin is not functional and error out +# To avoid generating such an error, we take the simpler approach of +# trying to add libdl but making it optional (i.e. not required). +if meson.version().version_compare('>=0.62.0') + deps_libpistache += dependency('dl', required: false) +else + deps_libpistache += compiler.find_library('dl', required: false) endif version_array = [] From 0cfc118d6f60addea397fb3d245b33d7beb057ae Mon Sep 17 00:00:00 2001 From: DMG Date: Sun, 13 Oct 2024 12:48:57 -0700 Subject: [PATCH 02/31] Fix: Remove MakeDlLibraryDependency4 from linux.yaml Removed MakeDlLibraryDependency4 from linux.yaml now that the experiment to NOT use compiler.has_function('dladdr') is finished. It turns out not using has_function('dladdr') makes the previously failing RedHat builds work. Updated version.txt. --- .github/workflows/linux.yaml | 1 - version.txt | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/linux.yaml b/.github/workflows/linux.yaml index 91ea0b03..9b826b29 100644 --- a/.github/workflows/linux.yaml +++ b/.github/workflows/linux.yaml @@ -8,7 +8,6 @@ on: push: branches: - master - - MakeDlLibraryDependency4 pull_request: branches: - master diff --git a/version.txt b/version.txt index b7f23394..557f78c0 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -0.4.7.20240930 +0.4.7.20241013 From 9db58585b60f82401399dfd63fff14419605b475 Mon Sep 17 00:00:00 2001 From: DMG Date: Sun, 13 Oct 2024 14:35:11 -0700 Subject: [PATCH 03/31] Fix: Use --overwrite when installing Meson for macOS Runner Otherwise, we get: Error: The `brew link` step did not complete successfully when brew is trying to upgrade Python3 for meson's use upon the command "brew install meson" in the github runner. --- .github/workflows/macos.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/macos.yaml b/.github/workflows/macos.yaml index 3d7f6e5b..7f71b14f 100644 --- a/.github/workflows/macos.yaml +++ b/.github/workflows/macos.yaml @@ -12,6 +12,7 @@ on: push: branches: - master + - macOSRunner2 pull_request: branches: - master @@ -46,7 +47,7 @@ jobs: if [ ${{ matrix.compiler }} = gcc ]; then compiler=g++; else compiler="clang lld ?exact-name(libclang-rt-dev)"; fi brew update - brew install meson + brew install meson --overwrite # Enables Python3 upgrade brew install lcov brew install --quiet --cask doxygen brew install googletest From bb60516bf2f49679c202586bb345d9e6d49f3428 Mon Sep 17 00:00:00 2001 From: DMG Date: Sun, 13 Oct 2024 14:46:43 -0700 Subject: [PATCH 04/31] Feat: Add macOS 15 to macOS Runner --- .github/workflows/macos.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/macos.yaml b/.github/workflows/macos.yaml index 7f71b14f..303b7401 100644 --- a/.github/workflows/macos.yaml +++ b/.github/workflows/macos.yaml @@ -32,7 +32,7 @@ jobs: strategy: fail-fast: false matrix: - os: [ 'macos-12', 'macos-13', 'macos-latest' ] + os: [ 'macos-12', 'macos-13', 'macos-14', 'macos-15' ] compiler: [ 'gcc', 'clang' ] sanitizer: [ 'address', 'undefined', 'none' ] tls: [ 'true', 'false' ] From a2a34e0ab322d72a0c0916d9015504ac17b138fe Mon Sep 17 00:00:00 2001 From: DMG Date: Sun, 13 Oct 2024 14:56:04 -0700 Subject: [PATCH 05/31] Fix: Check meson not already installed before installing with brew Otherwise github runner for macOS can generate an error attempting to upgrade Python. --- .github/workflows/macos.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/macos.yaml b/.github/workflows/macos.yaml index 303b7401..4bd1fc1b 100644 --- a/.github/workflows/macos.yaml +++ b/.github/workflows/macos.yaml @@ -47,7 +47,8 @@ jobs: if [ ${{ matrix.compiler }} = gcc ]; then compiler=g++; else compiler="clang lld ?exact-name(libclang-rt-dev)"; fi brew update - brew install meson --overwrite # Enables Python3 upgrade + if ! type "meson" > /dev/null; then brew install meson --overwrite; fi + brew install lcov brew install --quiet --cask doxygen brew install googletest From 65201bf3fe2f1274d78628b5c80d40233c62e28c Mon Sep 17 00:00:00 2001 From: DMG Date: Sun, 13 Oct 2024 15:17:07 -0700 Subject: [PATCH 06/31] Fix: Update version.txt --- version.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.txt b/version.txt index b7f23394..557f78c0 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -0.4.7.20240930 +0.4.7.20241013 From ee4738fe9684ef5a64b73546fe574b3071ea363e Mon Sep 17 00:00:00 2001 From: DMG Date: Sun, 13 Oct 2024 18:04:25 -0700 Subject: [PATCH 07/31] Experiment: Try not doing brew update In macOS runner for macOS-13, brew update may be causing it to attempt to install newer version of Python with meson (newer than the one installed in the github macOS image), but the new Python install fails, blocked by the version of Python3 that's already installed. --- .github/workflows/macos.yaml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/macos.yaml b/.github/workflows/macos.yaml index 4bd1fc1b..2ce3c042 100644 --- a/.github/workflows/macos.yaml +++ b/.github/workflows/macos.yaml @@ -32,7 +32,8 @@ jobs: strategy: fail-fast: false matrix: - os: [ 'macos-12', 'macos-13', 'macos-14', 'macos-15' ] +# os: [ 'macos-12', 'macos-13', 'macos-14', 'macos-15' ] + os: [ 'macos-13' ] # !!!!!!!! compiler: [ 'gcc', 'clang' ] sanitizer: [ 'address', 'undefined', 'none' ] tls: [ 'true', 'false' ] @@ -45,7 +46,8 @@ jobs: if: contains(matrix.os, 'macos') run: | if [ ${{ matrix.compiler }} = gcc ]; then compiler=g++; else compiler="clang lld ?exact-name(libclang-rt-dev)"; fi - brew update + + # brew update # !!!!!!!! if ! type "meson" > /dev/null; then brew install meson --overwrite; fi From ffb4e482cf636b06bd9fb1c4eb3589e45cf3bdae Mon Sep 17 00:00:00 2001 From: DMG Date: Sun, 13 Oct 2024 18:21:34 -0700 Subject: [PATCH 08/31] Fix: Avoid Doing "brew update" for macOS Runner We avoid doing "brew update" - the brew formulas that are preinstalled on the github runner image are likely consistent with the pre-installed software on the image. If we do "brew upate", and then install something new with brew (specifically meson), and the "something new" depends on pre-installed software on the image, and there are new versions of the pre-installed software revealed by doing "brew update", then when we install the "something new" brew may try and also install a new version of the pre-installed software on which the "something new" depends, but that attempt to install a new version of the pre-installed software can fail as a result of being blocked by the software that is already installed. Also, removed this branch from list of branches to run macos.yaml. --- .github/workflows/macos.yaml | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/.github/workflows/macos.yaml b/.github/workflows/macos.yaml index 2ce3c042..a122ff72 100644 --- a/.github/workflows/macos.yaml +++ b/.github/workflows/macos.yaml @@ -12,7 +12,6 @@ on: push: branches: - master - - macOSRunner2 pull_request: branches: - master @@ -32,8 +31,7 @@ jobs: strategy: fail-fast: false matrix: -# os: [ 'macos-12', 'macos-13', 'macos-14', 'macos-15' ] - os: [ 'macos-13' ] # !!!!!!!! + os: [ 'macos-12', 'macos-13', 'macos-14', 'macos-15' ] compiler: [ 'gcc', 'clang' ] sanitizer: [ 'address', 'undefined', 'none' ] tls: [ 'true', 'false' ] @@ -47,7 +45,19 @@ jobs: run: | if [ ${{ matrix.compiler }} = gcc ]; then compiler=g++; else compiler="clang lld ?exact-name(libclang-rt-dev)"; fi - # brew update # !!!!!!!! + # Avoid doing "brew update" - the brew formulas that are + # preinstalled on the github runner image are likely + # consistent with the pre-installed software on the image. If + # we do "brew upate", and then install something new with + # brew, and the "something new" depends on pre-installed + # software on the image, and there are new versions of the + # pre-installed software revealed by doing "brew update", then + # when we install the "something new" brew may try and also + # install a new version of the pre-installed software on which + # the "something new" depends, but that attempt to install a + # new version of the pre-installed software can fail as a + # result of being blocked by the software that is already + # installed. if ! type "meson" > /dev/null; then brew install meson --overwrite; fi From 412ebbb8a17fbb06218d82a18a53b48e0eb91451 Mon Sep 17 00:00:00 2001 From: DMG Date: Mon, 14 Oct 2024 16:58:02 -0700 Subject: [PATCH 09/31] Fix: Bump Version Number Avoid launchpad clash with the other PR from yesterday --- version.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.txt b/version.txt index 557f78c0..04e91372 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -0.4.7.20241013 +0.4.8.20241014 From d9b9c37a9f41cf6579df2b70a185ac56b6c10725 Mon Sep 17 00:00:00 2001 From: DMG Date: Wed, 16 Oct 2024 09:43:25 -0700 Subject: [PATCH 10/31] Experiment: Look for libstdc++ packages in debian:testing --- .github/workflows/linux.yaml | 22 ++++++++++++++++++---- version.txt | 2 +- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/.github/workflows/linux.yaml b/.github/workflows/linux.yaml index 9b826b29..38edf78f 100644 --- a/.github/workflows/linux.yaml +++ b/.github/workflows/linux.yaml @@ -8,6 +8,7 @@ on: push: branches: - master + - stdcppForDebTesting pull_request: branches: - master @@ -25,10 +26,15 @@ jobs: strategy: fail-fast: false matrix: - os: [ 'debian:stable', 'debian:testing', 'registry.access.redhat.com/ubi8/ubi-minimal', 'registry.access.redhat.com/ubi9/ubi-minimal' ] - compiler: [ 'gcc', 'clang' ] - sanitizer: [ 'address', 'undefined', 'none' ] # ThreadSanitizer reports errors - tls: [ 'true', 'false' ] + os: [ 'debian:testing' ] + compiler: [ 'clang' ] + sanitizer: [ 'none' ] # ThreadSanitizer reports errors + tls: [ 'true' ] +# !!!!!!!! +# os: [ 'debian:stable', 'debian:testing', 'registry.access.redhat.com/ubi8/ubi-minimal', 'registry.access.redhat.com/ubi9/ubi-minimal' ] +# compiler: [ 'gcc', 'clang' ] +# sanitizer: [ 'address', 'undefined', 'none' ] # ThreadSanitizer reports errors +# tls: [ 'true', 'false' ] exclude: - os: 'registry.access.redhat.com/ubi8/ubi-minimal' sanitizer: 'address' @@ -58,6 +64,14 @@ jobs: if [ ${{ matrix.compiler }} = gcc ]; then compiler=g++; else compiler="clang lld ?exact-name(libclang-rt-dev)"; fi apt -y update apt -y install $compiler meson pkg-config cmake rapidjson-dev libssl-dev netbase '?exact-name(libhowardhinnant-date-dev)' '?exact-name(libgmock-dev) (?version([1-9]\.[1-9][1-9]) | ?version([1-9]\.[2-9][0-9]))' '?exact-name(libcpp-httplib-dev)' libcurl4-openssl-dev git ca-certificates curl gpg gpgv gpg-agent lcov llvm-dev --no-install-recommends + if [ ${{ matrix.compiler }} = clang ] && [ ${{ matrix.os == 'debian:testing' }} ]; then dpkg-query -l "libstdc++*-dev*"; apt-cache search "libstdc++"; fi + # !!!!!!!! + # if [ ${{ matrix.compiler }} = clang ] && [ ${{ matrix.os == 'debian:testing' }} ]; then... + # To see if installed: + # dpkg-query -l "libstdc++*-dev*" | grep "ii" + # To see what's available: apt-cache search + + - name: Install dependencies (Red Hat) if: contains(matrix.os, 'redhat') diff --git a/version.txt b/version.txt index 04e91372..f44e3c08 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -0.4.8.20241014 +0.4.8.20241016 From f380d513ff58e0c2319cc15c07290f978763c78d Mon Sep 17 00:00:00 2001 From: DMG Date: Wed, 16 Oct 2024 09:58:33 -0700 Subject: [PATCH 11/31] Experiment: Look for libstdc++ packages in debian:testing --- .github/workflows/linux.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/linux.yaml b/.github/workflows/linux.yaml index 38edf78f..0e1dadc9 100644 --- a/.github/workflows/linux.yaml +++ b/.github/workflows/linux.yaml @@ -65,6 +65,9 @@ jobs: apt -y update apt -y install $compiler meson pkg-config cmake rapidjson-dev libssl-dev netbase '?exact-name(libhowardhinnant-date-dev)' '?exact-name(libgmock-dev) (?version([1-9]\.[1-9][1-9]) | ?version([1-9]\.[2-9][0-9]))' '?exact-name(libcpp-httplib-dev)' libcurl4-openssl-dev git ca-certificates curl gpg gpgv gpg-agent lcov llvm-dev --no-install-recommends if [ ${{ matrix.compiler }} = clang ] && [ ${{ matrix.os == 'debian:testing' }} ]; then dpkg-query -l "libstdc++*-dev*"; apt-cache search "libstdc++"; fi + apt -y install libstdc++-dev --no-install-recommends + # apt -y install libstdc++-13-dev --no-install-recommends + # !!!!!!!! # if [ ${{ matrix.compiler }} = clang ] && [ ${{ matrix.os == 'debian:testing' }} ]; then... # To see if installed: From a8f91a92ae5a30151c2e740afce741024552e22e Mon Sep 17 00:00:00 2001 From: DMG Date: Wed, 16 Oct 2024 10:01:26 -0700 Subject: [PATCH 12/31] Experiment: Look for libstdc++ packages in debian:testing --- .github/workflows/linux.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/linux.yaml b/.github/workflows/linux.yaml index 0e1dadc9..ed05abfc 100644 --- a/.github/workflows/linux.yaml +++ b/.github/workflows/linux.yaml @@ -65,8 +65,8 @@ jobs: apt -y update apt -y install $compiler meson pkg-config cmake rapidjson-dev libssl-dev netbase '?exact-name(libhowardhinnant-date-dev)' '?exact-name(libgmock-dev) (?version([1-9]\.[1-9][1-9]) | ?version([1-9]\.[2-9][0-9]))' '?exact-name(libcpp-httplib-dev)' libcurl4-openssl-dev git ca-certificates curl gpg gpgv gpg-agent lcov llvm-dev --no-install-recommends if [ ${{ matrix.compiler }} = clang ] && [ ${{ matrix.os == 'debian:testing' }} ]; then dpkg-query -l "libstdc++*-dev*"; apt-cache search "libstdc++"; fi - apt -y install libstdc++-dev --no-install-recommends - # apt -y install libstdc++-13-dev --no-install-recommends + # apt -y install libstdc++-dev --no-install-recommends + apt -y install libstdc++-13-dev --no-install-recommends # !!!!!!!! # if [ ${{ matrix.compiler }} = clang ] && [ ${{ matrix.os == 'debian:testing' }} ]; then... From e9f434bd23b750f9b092d3f63a802a5fc5f78652 Mon Sep 17 00:00:00 2001 From: DMG Date: Wed, 16 Oct 2024 10:09:50 -0700 Subject: [PATCH 13/31] Experiment: Look for libstdc++ packages in debian:testing --- .github/workflows/linux.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/linux.yaml b/.github/workflows/linux.yaml index ed05abfc..a1aaecb8 100644 --- a/.github/workflows/linux.yaml +++ b/.github/workflows/linux.yaml @@ -63,10 +63,11 @@ jobs: run: | if [ ${{ matrix.compiler }} = gcc ]; then compiler=g++; else compiler="clang lld ?exact-name(libclang-rt-dev)"; fi apt -y update + apt -y install apt-utils --no-install-recommends apt -y install $compiler meson pkg-config cmake rapidjson-dev libssl-dev netbase '?exact-name(libhowardhinnant-date-dev)' '?exact-name(libgmock-dev) (?version([1-9]\.[1-9][1-9]) | ?version([1-9]\.[2-9][0-9]))' '?exact-name(libcpp-httplib-dev)' libcurl4-openssl-dev git ca-certificates curl gpg gpgv gpg-agent lcov llvm-dev --no-install-recommends if [ ${{ matrix.compiler }} = clang ] && [ ${{ matrix.os == 'debian:testing' }} ]; then dpkg-query -l "libstdc++*-dev*"; apt-cache search "libstdc++"; fi # apt -y install libstdc++-dev --no-install-recommends - apt -y install libstdc++-13-dev --no-install-recommends + apt -y install libstdc++-12-dev --no-install-recommends # !!!!!!!! # if [ ${{ matrix.compiler }} = clang ] && [ ${{ matrix.os == 'debian:testing' }} ]; then... From fef30660879d2c02c335c8299d1779ff52650ee4 Mon Sep 17 00:00:00 2001 From: DMG Date: Wed, 16 Oct 2024 10:15:56 -0700 Subject: [PATCH 14/31] Experiment: Look for libstdc++ packages in debian:testing --- .github/workflows/linux.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/linux.yaml b/.github/workflows/linux.yaml index a1aaecb8..221aae09 100644 --- a/.github/workflows/linux.yaml +++ b/.github/workflows/linux.yaml @@ -68,6 +68,7 @@ jobs: if [ ${{ matrix.compiler }} = clang ] && [ ${{ matrix.os == 'debian:testing' }} ]; then dpkg-query -l "libstdc++*-dev*"; apt-cache search "libstdc++"; fi # apt -y install libstdc++-dev --no-install-recommends apt -y install libstdc++-12-dev --no-install-recommends + apt -y install libstdc++-14-dev --no-install-recommends # !!!!!!!! # if [ ${{ matrix.compiler }} = clang ] && [ ${{ matrix.os == 'debian:testing' }} ]; then... From 855d317e6623a8153ba6569943c675def5ed3fd6 Mon Sep 17 00:00:00 2001 From: DMG Date: Wed, 16 Oct 2024 10:49:58 -0700 Subject: [PATCH 15/31] Experiment: Look for libstdc++ packages in debian:testing --- .github/workflows/linux.yaml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/linux.yaml b/.github/workflows/linux.yaml index 221aae09..9498cb0f 100644 --- a/.github/workflows/linux.yaml +++ b/.github/workflows/linux.yaml @@ -66,9 +66,11 @@ jobs: apt -y install apt-utils --no-install-recommends apt -y install $compiler meson pkg-config cmake rapidjson-dev libssl-dev netbase '?exact-name(libhowardhinnant-date-dev)' '?exact-name(libgmock-dev) (?version([1-9]\.[1-9][1-9]) | ?version([1-9]\.[2-9][0-9]))' '?exact-name(libcpp-httplib-dev)' libcurl4-openssl-dev git ca-certificates curl gpg gpgv gpg-agent lcov llvm-dev --no-install-recommends if [ ${{ matrix.compiler }} = clang ] && [ ${{ matrix.os == 'debian:testing' }} ]; then dpkg-query -l "libstdc++*-dev*"; apt-cache search "libstdc++"; fi - # apt -y install libstdc++-dev --no-install-recommends - apt -y install libstdc++-12-dev --no-install-recommends - apt -y install libstdc++-14-dev --no-install-recommends + # apt -y install libstdc++-12-dev --no-install-recommends + # apt -y install libstdc++-14-dev --no-install-recommends + libstdcpp_latest=$(apt-cache search "libstdc++" | grep "libstdc++-..-dev " | sort -r | head -c 16) + echo "libstdcpp_latest is $libstdcpp_latest" + if [ ${libstdcpp_latest:0:9} = "libstdc++" ] && [ ${libstdcpp_latest:13:3} = "dev" ]; then apt -y install "$libstdcpp_latest" --no-install-recommends; fi # !!!!!!!! # if [ ${{ matrix.compiler }} = clang ] && [ ${{ matrix.os == 'debian:testing' }} ]; then... From 7078e30e96367020cd2e033dc5847227016d3748 Mon Sep 17 00:00:00 2001 From: DMG Date: Wed, 16 Oct 2024 10:55:12 -0700 Subject: [PATCH 16/31] Experiment: Look for libstdc++ packages in debian:testing --- .github/workflows/linux.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/linux.yaml b/.github/workflows/linux.yaml index 9498cb0f..af445a81 100644 --- a/.github/workflows/linux.yaml +++ b/.github/workflows/linux.yaml @@ -70,7 +70,7 @@ jobs: # apt -y install libstdc++-14-dev --no-install-recommends libstdcpp_latest=$(apt-cache search "libstdc++" | grep "libstdc++-..-dev " | sort -r | head -c 16) echo "libstdcpp_latest is $libstdcpp_latest" - if [ ${libstdcpp_latest:0:9} = "libstdc++" ] && [ ${libstdcpp_latest:13:3} = "dev" ]; then apt -y install "$libstdcpp_latest" --no-install-recommends; fi + if [ ${libstdcpp_latest:0:9} = "libstdc++" ] && [ ${libstdcpp_latest:13:3} = "dev" ]; then apt -y install $libstdcpp_latest --no-install-recommends; fi # !!!!!!!! # if [ ${{ matrix.compiler }} = clang ] && [ ${{ matrix.os == 'debian:testing' }} ]; then... From f94aca75be5483431272a41e353eda2b8bb49f24 Mon Sep 17 00:00:00 2001 From: DMG Date: Wed, 16 Oct 2024 11:06:37 -0700 Subject: [PATCH 17/31] Experiment: Look for libstdc++ packages in debian:testing --- .github/workflows/linux.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/linux.yaml b/.github/workflows/linux.yaml index af445a81..9311f898 100644 --- a/.github/workflows/linux.yaml +++ b/.github/workflows/linux.yaml @@ -70,7 +70,8 @@ jobs: # apt -y install libstdc++-14-dev --no-install-recommends libstdcpp_latest=$(apt-cache search "libstdc++" | grep "libstdc++-..-dev " | sort -r | head -c 16) echo "libstdcpp_latest is $libstdcpp_latest" - if [ ${libstdcpp_latest:0:9} = "libstdc++" ] && [ ${libstdcpp_latest:13:3} = "dev" ]; then apt -y install $libstdcpp_latest --no-install-recommends; fi + if [ ${libstdcpp_latest:0:9} = "libstdc++" ] && [ ${libstdcpp_latest:13:3} = "dev" ]; then echo "libstdcpp_latest $libstdcpp_latest matches"; fi + if [ ${libstdcpp_latest:0:9} = "libstdc++" ] && [ ${libstdcpp_latest:13:3} = "dev" ]; then apt -y install ${libstdcpp_latest} --no-install-recommends; fi # !!!!!!!! # if [ ${{ matrix.compiler }} = clang ] && [ ${{ matrix.os == 'debian:testing' }} ]; then... From 6fec3b1cb95f8611f33a076f4e49f3e4e48a6680 Mon Sep 17 00:00:00 2001 From: DMG Date: Wed, 16 Oct 2024 11:09:12 -0700 Subject: [PATCH 18/31] Experiment: Look for libstdc++ packages in debian:testing --- .github/workflows/linux.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/linux.yaml b/.github/workflows/linux.yaml index 9311f898..f648b4a9 100644 --- a/.github/workflows/linux.yaml +++ b/.github/workflows/linux.yaml @@ -70,8 +70,7 @@ jobs: # apt -y install libstdc++-14-dev --no-install-recommends libstdcpp_latest=$(apt-cache search "libstdc++" | grep "libstdc++-..-dev " | sort -r | head -c 16) echo "libstdcpp_latest is $libstdcpp_latest" - if [ ${libstdcpp_latest:0:9} = "libstdc++" ] && [ ${libstdcpp_latest:13:3} = "dev" ]; then echo "libstdcpp_latest $libstdcpp_latest matches"; fi - if [ ${libstdcpp_latest:0:9} = "libstdc++" ] && [ ${libstdcpp_latest:13:3} = "dev" ]; then apt -y install ${libstdcpp_latest} --no-install-recommends; fi +# if [ ${libstdcpp_latest:0:9} = "libstdc++" ] && [ ${libstdcpp_latest:13:3} = "dev" ]; then apt -y install ${libstdcpp_latest} --no-install-recommends; fi # !!!!!!!! # if [ ${{ matrix.compiler }} = clang ] && [ ${{ matrix.os == 'debian:testing' }} ]; then... From d19620cfceab2d94ed63dd3bf6cec223c68e1cfe Mon Sep 17 00:00:00 2001 From: DMG Date: Wed, 16 Oct 2024 11:14:21 -0700 Subject: [PATCH 19/31] Experiment: Look for libstdc++ packages in debian:testing --- .github/workflows/linux.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/linux.yaml b/.github/workflows/linux.yaml index f648b4a9..74ccca77 100644 --- a/.github/workflows/linux.yaml +++ b/.github/workflows/linux.yaml @@ -70,6 +70,7 @@ jobs: # apt -y install libstdc++-14-dev --no-install-recommends libstdcpp_latest=$(apt-cache search "libstdc++" | grep "libstdc++-..-dev " | sort -r | head -c 16) echo "libstdcpp_latest is $libstdcpp_latest" + if [ ${libstdcpp_latest:0:9} = "libstdc++" ] && [ ${libstdcpp_latest:13:3} = "dev" ]; then echo "libstdcpp_latest install jhere please"; fi # if [ ${libstdcpp_latest:0:9} = "libstdc++" ] && [ ${libstdcpp_latest:13:3} = "dev" ]; then apt -y install ${libstdcpp_latest} --no-install-recommends; fi # !!!!!!!! From c6637ebc2cb041a781783839669e1d89e093453c Mon Sep 17 00:00:00 2001 From: DMG Date: Wed, 16 Oct 2024 11:48:42 -0700 Subject: [PATCH 20/31] Experiment: Look for libstdc++ packages in debian:testing --- .github/workflows/linux.yaml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.github/workflows/linux.yaml b/.github/workflows/linux.yaml index 74ccca77..5b7b820c 100644 --- a/.github/workflows/linux.yaml +++ b/.github/workflows/linux.yaml @@ -70,9 +70,12 @@ jobs: # apt -y install libstdc++-14-dev --no-install-recommends libstdcpp_latest=$(apt-cache search "libstdc++" | grep "libstdc++-..-dev " | sort -r | head -c 16) echo "libstdcpp_latest is $libstdcpp_latest" - if [ ${libstdcpp_latest:0:9} = "libstdc++" ] && [ ${libstdcpp_latest:13:3} = "dev" ]; then echo "libstdcpp_latest install jhere please"; fi -# if [ ${libstdcpp_latest:0:9} = "libstdc++" ] && [ ${libstdcpp_latest:13:3} = "dev" ]; then apt -y install ${libstdcpp_latest} --no-install-recommends; fi - + libstdcpp_latest_fst9=$(echo "${libstdcpp_latest}" | head -c 9) + libstdcpp_latest_lst3=$(echo "${libstdcpp_latest}" | tail -c 4 | head -c 3) + if [ ${libstdcpp_latest_fst9} = "libstdc++" ] && [ ${libstdcpp_latest_lst3} = "dev" ]; then echo "libstdcpp_latest install here please"; fi + + if [ ${libstdcpp_latest_fst9} = "libstdc++" ] && [ ${libstdcpp_latest_lst3} = "dev" ]; then apt -y install ${libstdcpp_latest} --no-install-recommends; fi + # !!!!!!!! # if [ ${{ matrix.compiler }} = clang ] && [ ${{ matrix.os == 'debian:testing' }} ]; then... # To see if installed: From bf89a4fe449f3fb23acf92ba16705a9bc2ed54ef Mon Sep 17 00:00:00 2001 From: DMG Date: Wed, 16 Oct 2024 11:54:26 -0700 Subject: [PATCH 21/31] Experiment: Look for libstdc++ packages in debian:testing --- .github/workflows/linux.yaml | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/.github/workflows/linux.yaml b/.github/workflows/linux.yaml index 5b7b820c..94d2258b 100644 --- a/.github/workflows/linux.yaml +++ b/.github/workflows/linux.yaml @@ -65,17 +65,19 @@ jobs: apt -y update apt -y install apt-utils --no-install-recommends apt -y install $compiler meson pkg-config cmake rapidjson-dev libssl-dev netbase '?exact-name(libhowardhinnant-date-dev)' '?exact-name(libgmock-dev) (?version([1-9]\.[1-9][1-9]) | ?version([1-9]\.[2-9][0-9]))' '?exact-name(libcpp-httplib-dev)' libcurl4-openssl-dev git ca-certificates curl gpg gpgv gpg-agent lcov llvm-dev --no-install-recommends - if [ ${{ matrix.compiler }} = clang ] && [ ${{ matrix.os == 'debian:testing' }} ]; then dpkg-query -l "libstdc++*-dev*"; apt-cache search "libstdc++"; fi - # apt -y install libstdc++-12-dev --no-install-recommends - # apt -y install libstdc++-14-dev --no-install-recommends - libstdcpp_latest=$(apt-cache search "libstdc++" | grep "libstdc++-..-dev " | sort -r | head -c 16) - echo "libstdcpp_latest is $libstdcpp_latest" - libstdcpp_latest_fst9=$(echo "${libstdcpp_latest}" | head -c 9) - libstdcpp_latest_lst3=$(echo "${libstdcpp_latest}" | tail -c 4 | head -c 3) - if [ ${libstdcpp_latest_fst9} = "libstdc++" ] && [ ${libstdcpp_latest_lst3} = "dev" ]; then echo "libstdcpp_latest install here please"; fi +# if [ ${{ matrix.compiler }} = clang ] && [ ${{ matrix.os == 'debian:testing' }} ]; then dpkg-query -l "libstdc++*-dev*"; apt-cache search "libstdc++"; fi - if [ ${libstdcpp_latest_fst9} = "libstdc++" ] && [ ${libstdcpp_latest_lst3} = "dev" ]; then apt -y install ${libstdcpp_latest} --no-install-recommends; fi + if [ ${{ matrix.compiler }} = clang ] && [ ${{ matrix.os == 'debian:testing' }} ]; then libstdcpp_latest=$(apt-cache search "libstdc++" | grep "libstdc++-..-dev " | sort -r | head -c 16); libstdcpp_latest_fst9=$(echo "${libstdcpp_latest}" | head -c 9); libstdcpp_latest_lst3=$(echo "${libstdcpp_latest}" | tail -c 4 | head -c 3); if [ ${libstdcpp_latest_fst9} = "libstdc++" ] && [ ${libstdcpp_latest_lst3} = "dev" ]; then apt -y install ${libstdcpp_latest} --no-install-recommends; fi; fi + +# libstdcpp_latest=$(apt-cache search "libstdc++" | grep "libstdc++-..-dev " | sort -r | head -c 16) +# echo "libstdcpp_latest is $libstdcpp_latest" +# libstdcpp_latest_fst9=$(echo "${libstdcpp_latest}" | head -c 9) +# libstdcpp_latest_lst3=$(echo "${libstdcpp_latest}" | tail -c 4 | head -c 3) +# if [ ${libstdcpp_latest_fst9} = "libstdc++" ] && [ ${libstdcpp_latest_lst3} = "dev" ]; then echo "libstdcpp_latest install here please"; fi +# +# if [ ${libstdcpp_latest_fst9} = "libstdc++" ] && [ ${libstdcpp_latest_lst3} = "dev" ]; then apt -y install ${libstdcpp_latest} --no-install-recommends; fi +# # !!!!!!!! # if [ ${{ matrix.compiler }} = clang ] && [ ${{ matrix.os == 'debian:testing' }} ]; then... # To see if installed: From 0638c2781475063e38b28dc5e253cf5502e3a3bb Mon Sep 17 00:00:00 2001 From: DMG Date: Wed, 16 Oct 2024 20:07:25 -0700 Subject: [PATCH 22/31] Experiment: Look for libstdc++ packages in debian:testing --- .github/workflows/linux.yaml | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/linux.yaml b/.github/workflows/linux.yaml index 94d2258b..da5af9d1 100644 --- a/.github/workflows/linux.yaml +++ b/.github/workflows/linux.yaml @@ -67,7 +67,16 @@ jobs: apt -y install $compiler meson pkg-config cmake rapidjson-dev libssl-dev netbase '?exact-name(libhowardhinnant-date-dev)' '?exact-name(libgmock-dev) (?version([1-9]\.[1-9][1-9]) | ?version([1-9]\.[2-9][0-9]))' '?exact-name(libcpp-httplib-dev)' libcurl4-openssl-dev git ca-certificates curl gpg gpgv gpg-agent lcov llvm-dev --no-install-recommends # if [ ${{ matrix.compiler }} = clang ] && [ ${{ matrix.os == 'debian:testing' }} ]; then dpkg-query -l "libstdc++*-dev*"; apt-cache search "libstdc++"; fi - if [ ${{ matrix.compiler }} = clang ] && [ ${{ matrix.os == 'debian:testing' }} ]; then libstdcpp_latest=$(apt-cache search "libstdc++" | grep "libstdc++-..-dev " | sort -r | head -c 16); libstdcpp_latest_fst9=$(echo "${libstdcpp_latest}" | head -c 9); libstdcpp_latest_lst3=$(echo "${libstdcpp_latest}" | tail -c 4 | head -c 3); if [ ${libstdcpp_latest_fst9} = "libstdc++" ] && [ ${libstdcpp_latest_lst3} = "dev" ]; then apt -y install ${libstdcpp_latest} --no-install-recommends; fi; fi + + dummy1="dummy" + dummy2="dummy" + if [ ${dummy1} = "dummy" ] && [ ${dummy2} = "dummy" ]; then libstdcpp_latest=$(apt-cache search "libstdc++" | grep "libstdc++-..-dev " | sort -r | head -c 16); libstdcpp_latest_fst9=$(echo "${libstdcpp_latest}" | head -c 9); libstdcpp_latest_lst3=$(echo "${libstdcpp_latest}" | tail -c 4 | head -c 3); if [ ${libstdcpp_latest_fst9} = "libstdc++" ] && [ ${libstdcpp_latest_lst3} = "dev" ]; then echo "Install here please"; fi; fi + + +# if [ ${{ matrix.compiler }} = clang ] && [ ${{ matrix.os == 'debian:testing' }} ]; then libstdcpp_latest=$(apt-cache search "libstdc++" | grep "libstdc++-..-dev " | sort -r | head -c 16); libstdcpp_latest_fst9=$(echo "${libstdcpp_latest}" | head -c 9); libstdcpp_latest_lst3=$(echo "${libstdcpp_latest}" | tail -c 4 | head -c 3); if [ ${libstdcpp_latest_fst9} = "libstdc++" ] && [ ${libstdcpp_latest_lst3} = "dev" ]; then echo "Install here please"; fi; fi + + +# if [ ${{ matrix.compiler }} = clang ] && [ ${{ matrix.os == 'debian:testing' }} ]; then libstdcpp_latest=$(apt-cache search "libstdc++" | grep "libstdc++-..-dev " | sort -r | head -c 16); libstdcpp_latest_fst9=$(echo "${libstdcpp_latest}" | head -c 9); libstdcpp_latest_lst3=$(echo "${libstdcpp_latest}" | tail -c 4 | head -c 3); if [ ${libstdcpp_latest_fst9} = "libstdc++" ] && [ ${libstdcpp_latest_lst3} = "dev" ]; then apt -y install ${libstdcpp_latest} --no-install-recommends; fi; fi # libstdcpp_latest=$(apt-cache search "libstdc++" | grep "libstdc++-..-dev " | sort -r | head -c 16) From 9b6b969b2e74d4642212945c049a9983aaf2ad6d Mon Sep 17 00:00:00 2001 From: DMG Date: Wed, 16 Oct 2024 20:14:04 -0700 Subject: [PATCH 23/31] Experiment: Look for libstdc++ packages in debian:testing --- .github/workflows/linux.yaml | 44 ++++-------------------------------- 1 file changed, 5 insertions(+), 39 deletions(-) diff --git a/.github/workflows/linux.yaml b/.github/workflows/linux.yaml index da5af9d1..ef145977 100644 --- a/.github/workflows/linux.yaml +++ b/.github/workflows/linux.yaml @@ -8,7 +8,6 @@ on: push: branches: - master - - stdcppForDebTesting pull_request: branches: - master @@ -26,15 +25,10 @@ jobs: strategy: fail-fast: false matrix: - os: [ 'debian:testing' ] - compiler: [ 'clang' ] - sanitizer: [ 'none' ] # ThreadSanitizer reports errors - tls: [ 'true' ] -# !!!!!!!! -# os: [ 'debian:stable', 'debian:testing', 'registry.access.redhat.com/ubi8/ubi-minimal', 'registry.access.redhat.com/ubi9/ubi-minimal' ] -# compiler: [ 'gcc', 'clang' ] -# sanitizer: [ 'address', 'undefined', 'none' ] # ThreadSanitizer reports errors -# tls: [ 'true', 'false' ] + os: [ 'debian:stable', 'debian:testing', 'registry.access.redhat.com/ubi8/ubi-minimal', 'registry.access.redhat.com/ubi9/ubi-minimal' ] + compiler: [ 'gcc', 'clang' ] + sanitizer: [ 'address', 'undefined', 'none' ] # ThreadSanitizer reports errors + tls: [ 'true', 'false' ] exclude: - os: 'registry.access.redhat.com/ubi8/ubi-minimal' sanitizer: 'address' @@ -63,37 +57,9 @@ jobs: run: | if [ ${{ matrix.compiler }} = gcc ]; then compiler=g++; else compiler="clang lld ?exact-name(libclang-rt-dev)"; fi apt -y update - apt -y install apt-utils --no-install-recommends apt -y install $compiler meson pkg-config cmake rapidjson-dev libssl-dev netbase '?exact-name(libhowardhinnant-date-dev)' '?exact-name(libgmock-dev) (?version([1-9]\.[1-9][1-9]) | ?version([1-9]\.[2-9][0-9]))' '?exact-name(libcpp-httplib-dev)' libcurl4-openssl-dev git ca-certificates curl gpg gpgv gpg-agent lcov llvm-dev --no-install-recommends -# if [ ${{ matrix.compiler }} = clang ] && [ ${{ matrix.os == 'debian:testing' }} ]; then dpkg-query -l "libstdc++*-dev*"; apt-cache search "libstdc++"; fi - - dummy1="dummy" - dummy2="dummy" - if [ ${dummy1} = "dummy" ] && [ ${dummy2} = "dummy" ]; then libstdcpp_latest=$(apt-cache search "libstdc++" | grep "libstdc++-..-dev " | sort -r | head -c 16); libstdcpp_latest_fst9=$(echo "${libstdcpp_latest}" | head -c 9); libstdcpp_latest_lst3=$(echo "${libstdcpp_latest}" | tail -c 4 | head -c 3); if [ ${libstdcpp_latest_fst9} = "libstdc++" ] && [ ${libstdcpp_latest_lst3} = "dev" ]; then echo "Install here please"; fi; fi - - -# if [ ${{ matrix.compiler }} = clang ] && [ ${{ matrix.os == 'debian:testing' }} ]; then libstdcpp_latest=$(apt-cache search "libstdc++" | grep "libstdc++-..-dev " | sort -r | head -c 16); libstdcpp_latest_fst9=$(echo "${libstdcpp_latest}" | head -c 9); libstdcpp_latest_lst3=$(echo "${libstdcpp_latest}" | tail -c 4 | head -c 3); if [ ${libstdcpp_latest_fst9} = "libstdc++" ] && [ ${libstdcpp_latest_lst3} = "dev" ]; then echo "Install here please"; fi; fi - - -# if [ ${{ matrix.compiler }} = clang ] && [ ${{ matrix.os == 'debian:testing' }} ]; then libstdcpp_latest=$(apt-cache search "libstdc++" | grep "libstdc++-..-dev " | sort -r | head -c 16); libstdcpp_latest_fst9=$(echo "${libstdcpp_latest}" | head -c 9); libstdcpp_latest_lst3=$(echo "${libstdcpp_latest}" | tail -c 4 | head -c 3); if [ ${libstdcpp_latest_fst9} = "libstdc++" ] && [ ${libstdcpp_latest_lst3} = "dev" ]; then apt -y install ${libstdcpp_latest} --no-install-recommends; fi; fi - - -# libstdcpp_latest=$(apt-cache search "libstdc++" | grep "libstdc++-..-dev " | sort -r | head -c 16) -# echo "libstdcpp_latest is $libstdcpp_latest" -# libstdcpp_latest_fst9=$(echo "${libstdcpp_latest}" | head -c 9) -# libstdcpp_latest_lst3=$(echo "${libstdcpp_latest}" | tail -c 4 | head -c 3) -# if [ ${libstdcpp_latest_fst9} = "libstdc++" ] && [ ${libstdcpp_latest_lst3} = "dev" ]; then echo "libstdcpp_latest install here please"; fi -# -# if [ ${libstdcpp_latest_fst9} = "libstdc++" ] && [ ${libstdcpp_latest_lst3} = "dev" ]; then apt -y install ${libstdcpp_latest} --no-install-recommends; fi -# - # !!!!!!!! - # if [ ${{ matrix.compiler }} = clang ] && [ ${{ matrix.os == 'debian:testing' }} ]; then... - # To see if installed: - # dpkg-query -l "libstdc++*-dev*" | grep "ii" - # To see what's available: apt-cache search - - + if [ ${{ matrix.compiler }} = clang ] && [ ${{ matrix.os == 'debian:testing' }} ]; then libstdcpp_latest=$(apt-cache search "libstdc++" | grep "libstdc++-..-dev " | sort -r | head -c 16); libstdcpp_latest_fst9=$(echo "${libstdcpp_latest}" | head -c 9); libstdcpp_latest_lst3=$(echo "${libstdcpp_latest}" | tail -c 4 | head -c 3); if [ ${libstdcpp_latest_fst9} = "libstdc++" ] && [ ${libstdcpp_latest_lst3} = "dev" ]; then apt -y install ${libstdcpp_latest} --no-install-recommends; fi; fi - name: Install dependencies (Red Hat) if: contains(matrix.os, 'redhat') From c2ad4cd4356bc1ba968f17c7a09ccede8029c944 Mon Sep 17 00:00:00 2001 From: DMG Date: Wed, 16 Oct 2024 20:20:58 -0700 Subject: [PATCH 24/31] Experiment: Look for libstdc++ packages in debian:testing --- .github/workflows/linux.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/linux.yaml b/.github/workflows/linux.yaml index ef145977..84623674 100644 --- a/.github/workflows/linux.yaml +++ b/.github/workflows/linux.yaml @@ -8,6 +8,7 @@ on: push: branches: - master + - stdcppForDebTesting pull_request: branches: - master From 184020dde6472fb5b76b1e03e502f2e7f35b0fe9 Mon Sep 17 00:00:00 2001 From: DMG Date: Wed, 16 Oct 2024 20:24:54 -0700 Subject: [PATCH 25/31] Experiment: Look for libstdc++ packages in debian:testing --- .github/workflows/linux.yaml | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/.github/workflows/linux.yaml b/.github/workflows/linux.yaml index 84623674..e301b01a 100644 --- a/.github/workflows/linux.yaml +++ b/.github/workflows/linux.yaml @@ -25,11 +25,16 @@ jobs: linux: strategy: fail-fast: false + os: [ 'debian:testing' ] + compiler: [ 'clang' ] + sanitizer: [ 'none' ] # ThreadSanitizer reports errors + tls: [ 'true' ] +# !!!!!!!! +# os: [ 'debian:stable', 'debian:testing', 'registry.access.redhat.com/ubi8/ubi-minimal', 'registry.access.redhat.com/ubi9/ubi-minimal' ] +# compiler: [ 'gcc', 'clang' ] +# sanitizer: [ 'address', 'undefined', 'none' ] # ThreadSanitizer reports errors +# tls: [ 'true', 'false' ] matrix: - os: [ 'debian:stable', 'debian:testing', 'registry.access.redhat.com/ubi8/ubi-minimal', 'registry.access.redhat.com/ubi9/ubi-minimal' ] - compiler: [ 'gcc', 'clang' ] - sanitizer: [ 'address', 'undefined', 'none' ] # ThreadSanitizer reports errors - tls: [ 'true', 'false' ] exclude: - os: 'registry.access.redhat.com/ubi8/ubi-minimal' sanitizer: 'address' From 00d088e254f9ff1f32ce86e1e6db8712447fdff2 Mon Sep 17 00:00:00 2001 From: DMG Date: Wed, 16 Oct 2024 20:27:04 -0700 Subject: [PATCH 26/31] Experiment: Look for libstdc++ packages in debian:testing --- .github/workflows/linux.yaml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.github/workflows/linux.yaml b/.github/workflows/linux.yaml index e301b01a..d6126dec 100644 --- a/.github/workflows/linux.yaml +++ b/.github/workflows/linux.yaml @@ -25,16 +25,12 @@ jobs: linux: strategy: fail-fast: false + matrix: + # !!!!!!!! os: [ 'debian:testing' ] compiler: [ 'clang' ] sanitizer: [ 'none' ] # ThreadSanitizer reports errors tls: [ 'true' ] -# !!!!!!!! -# os: [ 'debian:stable', 'debian:testing', 'registry.access.redhat.com/ubi8/ubi-minimal', 'registry.access.redhat.com/ubi9/ubi-minimal' ] -# compiler: [ 'gcc', 'clang' ] -# sanitizer: [ 'address', 'undefined', 'none' ] # ThreadSanitizer reports errors -# tls: [ 'true', 'false' ] - matrix: exclude: - os: 'registry.access.redhat.com/ubi8/ubi-minimal' sanitizer: 'address' From cf3ba36dc17eb4fa3506bba5fc3f21892613da39 Mon Sep 17 00:00:00 2001 From: DMG Date: Wed, 16 Oct 2024 20:31:49 -0700 Subject: [PATCH 27/31] Experiment: Look for libstdc++ packages in debian:testing --- .github/workflows/linux.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/linux.yaml b/.github/workflows/linux.yaml index d6126dec..2328c8ef 100644 --- a/.github/workflows/linux.yaml +++ b/.github/workflows/linux.yaml @@ -58,10 +58,10 @@ jobs: if: contains(matrix.os, 'debian') run: | if [ ${{ matrix.compiler }} = gcc ]; then compiler=g++; else compiler="clang lld ?exact-name(libclang-rt-dev)"; fi - apt -y update + # apt -y update # !!!!!!!! apt -y install $compiler meson pkg-config cmake rapidjson-dev libssl-dev netbase '?exact-name(libhowardhinnant-date-dev)' '?exact-name(libgmock-dev) (?version([1-9]\.[1-9][1-9]) | ?version([1-9]\.[2-9][0-9]))' '?exact-name(libcpp-httplib-dev)' libcurl4-openssl-dev git ca-certificates curl gpg gpgv gpg-agent lcov llvm-dev --no-install-recommends - if [ ${{ matrix.compiler }} = clang ] && [ ${{ matrix.os == 'debian:testing' }} ]; then libstdcpp_latest=$(apt-cache search "libstdc++" | grep "libstdc++-..-dev " | sort -r | head -c 16); libstdcpp_latest_fst9=$(echo "${libstdcpp_latest}" | head -c 9); libstdcpp_latest_lst3=$(echo "${libstdcpp_latest}" | tail -c 4 | head -c 3); if [ ${libstdcpp_latest_fst9} = "libstdc++" ] && [ ${libstdcpp_latest_lst3} = "dev" ]; then apt -y install ${libstdcpp_latest} --no-install-recommends; fi; fi + # if [ ${{ matrix.compiler }} = clang ] && [ ${{ matrix.os == 'debian:testing' }} ]; then libstdcpp_latest=$(apt-cache search "libstdc++" | grep "libstdc++-..-dev " | sort -r | head -c 16); libstdcpp_latest_fst9=$(echo "${libstdcpp_latest}" | head -c 9); libstdcpp_latest_lst3=$(echo "${libstdcpp_latest}" | tail -c 4 | head -c 3); if [ ${libstdcpp_latest_fst9} = "libstdc++" ] && [ ${libstdcpp_latest_lst3} = "dev" ]; then apt -y install ${libstdcpp_latest} --no-install-recommends; fi; fi - name: Install dependencies (Red Hat) if: contains(matrix.os, 'redhat') From 94146e7173cbd1604acca32d0ee5f44a76e95ba9 Mon Sep 17 00:00:00 2001 From: DMG Date: Wed, 16 Oct 2024 20:45:15 -0700 Subject: [PATCH 28/31] Experiment: Look for libstdc++ packages in debian:testing --- .github/workflows/linux.yaml | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/.github/workflows/linux.yaml b/.github/workflows/linux.yaml index 2328c8ef..9d193956 100644 --- a/.github/workflows/linux.yaml +++ b/.github/workflows/linux.yaml @@ -26,11 +26,10 @@ jobs: strategy: fail-fast: false matrix: - # !!!!!!!! - os: [ 'debian:testing' ] - compiler: [ 'clang' ] - sanitizer: [ 'none' ] # ThreadSanitizer reports errors - tls: [ 'true' ] + os: [ 'debian:stable', 'debian:testing', 'registry.access.redhat.com/ubi8/ubi-minimal', 'registry.access.redhat.com/ubi9/ubi-minimal' ] + compiler: [ 'gcc', 'clang' ] + sanitizer: [ 'address', 'undefined', 'none' ] # ThreadSanitizer reports errors + tls: [ 'true', 'false' ] exclude: - os: 'registry.access.redhat.com/ubi8/ubi-minimal' sanitizer: 'address' @@ -58,10 +57,24 @@ jobs: if: contains(matrix.os, 'debian') run: | if [ ${{ matrix.compiler }} = gcc ]; then compiler=g++; else compiler="clang lld ?exact-name(libclang-rt-dev)"; fi - # apt -y update # !!!!!!!! + apt -y update apt -y install $compiler meson pkg-config cmake rapidjson-dev libssl-dev netbase '?exact-name(libhowardhinnant-date-dev)' '?exact-name(libgmock-dev) (?version([1-9]\.[1-9][1-9]) | ?version([1-9]\.[2-9][0-9]))' '?exact-name(libcpp-httplib-dev)' libcurl4-openssl-dev git ca-certificates curl gpg gpgv gpg-agent lcov llvm-dev --no-install-recommends - # if [ ${{ matrix.compiler }} = clang ] && [ ${{ matrix.os == 'debian:testing' }} ]; then libstdcpp_latest=$(apt-cache search "libstdc++" | grep "libstdc++-..-dev " | sort -r | head -c 16); libstdcpp_latest_fst9=$(echo "${libstdcpp_latest}" | head -c 9); libstdcpp_latest_lst3=$(echo "${libstdcpp_latest}" | tail -c 4 | head -c 3); if [ ${libstdcpp_latest_fst9} = "libstdc++" ] && [ ${libstdcpp_latest_lst3} = "dev" ]; then apt -y install ${libstdcpp_latest} --no-install-recommends; fi; fi + # Periodically, debian:testing fails with clang, saying that + # libstdc++ cannot be found. In debian:testing/clang, normally + # libstdc++-dev is installed as a dependency of meson. In the + # situation where the build breaks, the meson dependency is + # different to the latest available libstdc++; for instance, + # installing meson dependencies might install + # libstdc++-13-dev, whereas apt has access to + # libstdc++-14-dev. In other situations, the meson dependency + # libstdc++-..-dev may be the same as the latest + # libstdc++-..-dev to which apt has access. + # + # To prevent the build breaking, we need to install the latest + # libstdc++-..-dev to which apt has access - not the N-1 + # version which may be installed as a meson dependency. + if [ ${{ matrix.compiler }} = clang ] && [ ${{ matrix.os == 'debian:testing' }} ]; then libstdcpp_latest=$(apt-cache search "libstdc++" | grep "libstdc++-..-dev " | sort -r | head -c 16); libstdcpp_latest_fst9=$(echo "${libstdcpp_latest}" | head -c 9); libstdcpp_latest_lst3=$(echo "${libstdcpp_latest}" | tail -c 4 | head -c 3); if [ ${libstdcpp_latest_fst9} = "libstdc++" ] && [ ${libstdcpp_latest_lst3} = "dev" ]; then apt -y install ${libstdcpp_latest} --no-install-recommends; fi; fi - name: Install dependencies (Red Hat) if: contains(matrix.os, 'redhat') From 0d4e08b1bc1526cae55432cfda9b00830e66c979 Mon Sep 17 00:00:00 2001 From: DMG Date: Wed, 16 Oct 2024 09:43:25 -0700 Subject: [PATCH 29/31] Fix: Install latest libstdc++ in workflow for debian:testing/clang Intermittently, debian:testing fails with clang, saying that libstdc++ cannot be found. In debian:testing/clang, normally libstdc++-dev is installed as a dependency of meson. In the situation where the build breaks, the meson dependency is different to the latest available libstdc++; for instance, installing meson dependencies might install libstdc++-13-dev, whereas apt has access to libstdc++-14-dev. In other situations, the meson dependency libstdc++-..-dev may be the same as the latest libstdc++-..-dev to which apt has access. To prevent the build breaking, we need to install the latest libstdc++-..-dev to which apt has access - not the N-1 version which may be installed as a meson dependency. We do this now in linux.yaml. --- version.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.txt b/version.txt index f44e3c08..9d534fd6 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -0.4.8.20241016 +0.4.9.20241016 From 3a9926f762598f793df32c492ea96e66c0e2b537 Mon Sep 17 00:00:00 2001 From: DMG Date: Wed, 16 Oct 2024 21:08:04 -0700 Subject: [PATCH 30/31] Fix: Remove Current Branch from linux.yaml --- .github/workflows/linux.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/linux.yaml b/.github/workflows/linux.yaml index 9d193956..dba05966 100644 --- a/.github/workflows/linux.yaml +++ b/.github/workflows/linux.yaml @@ -8,7 +8,6 @@ on: push: branches: - master - - stdcppForDebTesting pull_request: branches: - master From 2f4df391e116df2b986180681cf0db1ed1a72cc1 Mon Sep 17 00:00:00 2001 From: Mikhail Khachayants Date: Tue, 15 Oct 2024 22:36:09 +0300 Subject: [PATCH 31/31] fix: missing destructor call in Pistache::Queue --- include/pistache/mailbox.h | 1 + tests/mailbox_test.cc | 48 ++++++++++++++++++++++++++++++++++---- version.txt | 2 +- 3 files changed, 45 insertions(+), 6 deletions(-) diff --git a/include/pistache/mailbox.h b/include/pistache/mailbox.h index ef891b5e..074e65f2 100644 --- a/include/pistache/mailbox.h +++ b/include/pistache/mailbox.h @@ -252,6 +252,7 @@ namespace Pistache // Since it's Single-Consumer, the store does not need to be atomic tail = next; new (&res->storage) T(std::move(next->data())); + next->data().~T(); return res; } return nullptr; diff --git a/tests/mailbox_test.cc b/tests/mailbox_test.cc index 48ed6933..6760114f 100644 --- a/tests/mailbox_test.cc +++ b/tests/mailbox_test.cc @@ -9,28 +9,47 @@ struct Data { - static int num_instances; + static inline int num_instances = 0; static constexpr int fingerprint = 0xdeadbeef; Data() : val(Data::fingerprint) + , payload(std::string(100, 'x')) { num_instances++; } + Data(Data&&) + : val(Data::fingerprint) + , payload(std::string(100, 'x')) + { + num_instances++; + } + + Data(const Data&) = delete; + ~Data() { EXPECT_EQ(val, Data::fingerprint); - EXPECT_GE(0, --num_instances); + EXPECT_GE(--num_instances, 0); } int val; + + // Dynamic allocation is required to detect a potential memory leak here + std::string payload; }; -int Data::num_instances = 0; -constexpr int Data::fingerprint; +class QueueTest : public testing::Test +{ +public: + void SetUp() override + { + Data::num_instances = 0; + } +}; -TEST(queue_test, destructor_test) +TEST_F(QueueTest, destructor_test) { Pistache::Queue queue; EXPECT_TRUE(queue.empty()); @@ -41,3 +60,22 @@ TEST(queue_test, destructor_test) } // Should call Data::~Data 5 times and not 6 (placeholder entry) } + +TEST_F(QueueTest, push_pop) +{ + auto queue = std::make_unique>(); + EXPECT_TRUE(queue->empty()); + + for (int i = 0; i < 5; i++) + { + queue->push(Data()); + } + + for (int i = 0; i < 5; i++) + { + EXPECT_NE(queue->popSafe(), nullptr); + } + + EXPECT_TRUE(queue->empty()); + EXPECT_EQ(Data::num_instances, 0); +} diff --git a/version.txt b/version.txt index 9d534fd6..31ae0f32 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -0.4.9.20241016 +0.4.10.20241017