Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Regression in fmt 10+ with gcc: error: 'current_zone' is not a member of 'std::chrono' #4160

Closed
barracuda156 opened this issue Sep 13, 2024 · 11 comments

Comments

@barracuda156
Copy link

Example of the issue: complexlogic/rsgain#126

The same code builds fine against libfmt 9, but fails with 10 and 11. Identical compiler is being used, gcc 14.2.0.

Log:

make[2]: Leaving directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_rsgain/rsgain/work/build'
/usr/bin/make  -f src/CMakeFiles/rsgain.dir/build.make src/CMakeFiles/rsgain.dir/build
make[2]: Entering directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_rsgain/rsgain/work/build'
[ 16%] Building CXX object src/CMakeFiles/rsgain.dir/easymode.cpp.o
cd /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_rsgain/rsgain/work/build/src && /opt/local/bin/ccache /opt/local/bin/g++-mp-14 -DBUILD_DATE=\"2024-09-12\" -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_rsgain/rsgain/work/build -isystem /opt/local/include -isystem /opt/local/include/taglib -isystem /opt/local/include/libfmt11 -pipe -Os -DNDEBUG -I/opt/local/include -D_GLIBCXX_USE_CXX11_ABI=0 -std=gnu++20 -arch ppc -mmacosx-version-min=10.6 -MD -MT src/CMakeFiles/rsgain.dir/easymode.cpp.o -MF CMakeFiles/rsgain.dir/easymode.cpp.o.d -o CMakeFiles/rsgain.dir/easymode.cpp.o -c /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_rsgain/rsgain/work/rsgain-3.5.2/src/easymode.cpp
[ 33%] Building CXX object src/CMakeFiles/rsgain.dir/output.cpp.o
cd /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_rsgain/rsgain/work/build/src && /opt/local/bin/ccache /opt/local/bin/g++-mp-14 -DBUILD_DATE=\"2024-09-12\" -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_rsgain/rsgain/work/build -isystem /opt/local/include -isystem /opt/local/include/taglib -isystem /opt/local/include/libfmt11 -pipe -Os -DNDEBUG -I/opt/local/include -D_GLIBCXX_USE_CXX11_ABI=0 -std=gnu++20 -arch ppc -mmacosx-version-min=10.6 -MD -MT src/CMakeFiles/rsgain.dir/output.cpp.o -MF CMakeFiles/rsgain.dir/output.cpp.o.d -o CMakeFiles/rsgain.dir/output.cpp.o -c /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_rsgain/rsgain/work/rsgain-3.5.2/src/output.cpp
[ 50%] Building CXX object src/CMakeFiles/rsgain.dir/scan.cpp.o
cd /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_rsgain/rsgain/work/build/src && /opt/local/bin/ccache /opt/local/bin/g++-mp-14 -DBUILD_DATE=\"2024-09-12\" -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_rsgain/rsgain/work/build -isystem /opt/local/include -isystem /opt/local/include/taglib -isystem /opt/local/include/libfmt11 -pipe -Os -DNDEBUG -I/opt/local/include -D_GLIBCXX_USE_CXX11_ABI=0 -std=gnu++20 -arch ppc -mmacosx-version-min=10.6 -MD -MT src/CMakeFiles/rsgain.dir/scan.cpp.o -MF CMakeFiles/rsgain.dir/scan.cpp.o.d -o CMakeFiles/rsgain.dir/scan.cpp.o -c /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_rsgain/rsgain/work/rsgain-3.5.2/src/scan.cpp
[ 66%] Building CXX object src/CMakeFiles/rsgain.dir/rsgain.cpp.o
cd /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_rsgain/rsgain/work/build/src && /opt/local/bin/ccache /opt/local/bin/g++-mp-14 -DBUILD_DATE=\"2024-09-12\" -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_rsgain/rsgain/work/build -isystem /opt/local/include -isystem /opt/local/include/taglib -isystem /opt/local/include/libfmt11 -pipe -Os -DNDEBUG -I/opt/local/include -D_GLIBCXX_USE_CXX11_ABI=0 -std=gnu++20 -arch ppc -mmacosx-version-min=10.6 -MD -MT src/CMakeFiles/rsgain.dir/rsgain.cpp.o -MF CMakeFiles/rsgain.dir/rsgain.cpp.o.d -o CMakeFiles/rsgain.dir/rsgain.cpp.o -c /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_rsgain/rsgain/work/rsgain-3.5.2/src/rsgain.cpp
[ 83%] Building CXX object src/CMakeFiles/rsgain.dir/tag.cpp.o
cd /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_rsgain/rsgain/work/build/src && /opt/local/bin/ccache /opt/local/bin/g++-mp-14 -DBUILD_DATE=\"2024-09-12\" -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_rsgain/rsgain/work/build -isystem /opt/local/include -isystem /opt/local/include/taglib -isystem /opt/local/include/libfmt11 -pipe -Os -DNDEBUG -I/opt/local/include -D_GLIBCXX_USE_CXX11_ABI=0 -std=gnu++20 -arch ppc -mmacosx-version-min=10.6 -MD -MT src/CMakeFiles/rsgain.dir/tag.cpp.o -MF CMakeFiles/rsgain.dir/tag.cpp.o.d -o CMakeFiles/rsgain.dir/tag.cpp.o -c /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_rsgain/rsgain/work/rsgain-3.5.2/src/tag.cpp
In file included from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_rsgain/rsgain/work/rsgain-3.5.2/src/output.hpp:66,
                 from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_rsgain/rsgain/work/rsgain-3.5.2/src/output.cpp:51:
/opt/local/include/libfmt11/fmt/chrono.h: In function 'tm fmt::v11::localtime(std::chrono::local_time<_Duration>)':
/opt/local/include/libfmt11/fmt/chrono.h:559:38: error: 'current_zone' is not a member of 'std::chrono'
  559 |       detail::to_time_t(std::chrono::current_zone()->to_sys(time)));
      |                                      ^~~~~~~~~~~~
make[2]: *** [src/CMakeFiles/rsgain.dir/output.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
In file included from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_rsgain/rsgain/work/rsgain-3.5.2/src/output.hpp:66,
                 from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_rsgain/rsgain/work/rsgain-3.5.2/src/tag.cpp:65:
/opt/local/include/libfmt11/fmt/chrono.h: In function 'tm fmt::v11::localtime(std::chrono::local_time<_Duration>)':
/opt/local/include/libfmt11/fmt/chrono.h:559:38: error: 'current_zone' is not a member of 'std::chrono'
  559 |       detail::to_time_t(std::chrono::current_zone()->to_sys(time)));
      |                                      ^~~~~~~~~~~~
make[2]: *** [src/CMakeFiles/rsgain.dir/tag.cpp.o] Error 1
In file included from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_rsgain/rsgain/work/rsgain-3.5.2/src/output.hpp:66,
                 from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_rsgain/rsgain/work/rsgain-3.5.2/src/scan.cpp:55:
/opt/local/include/libfmt11/fmt/chrono.h: In function 'tm fmt::v11::localtime(std::chrono::local_time<_Duration>)':
/opt/local/include/libfmt11/fmt/chrono.h:559:38: error: 'current_zone' is not a member of 'std::chrono'
  559 |       detail::to_time_t(std::chrono::current_zone()->to_sys(time)));
      |                                      ^~~~~~~~~~~~
make[2]: *** [src/CMakeFiles/rsgain.dir/scan.cpp.o] Error 1
In file included from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_rsgain/rsgain/work/rsgain-3.5.2/src/output.hpp:66,
                 from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_rsgain/rsgain/work/rsgain-3.5.2/src/rsgain.cpp:58:
/opt/local/include/libfmt11/fmt/chrono.h: In function 'tm fmt::v11::localtime(std::chrono::local_time<_Duration>)':
/opt/local/include/libfmt11/fmt/chrono.h:559:38: error: 'current_zone' is not a member of 'std::chrono'
  559 |       detail::to_time_t(std::chrono::current_zone()->to_sys(time)));
      |                                      ^~~~~~~~~~~~
make[2]: *** [src/CMakeFiles/rsgain.dir/rsgain.cpp.o] Error 1
In file included from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_rsgain/rsgain/work/rsgain-3.5.2/src/output.hpp:66,
                 from /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_rsgain/rsgain/work/rsgain-3.5.2/src/easymode.cpp:26:
/opt/local/include/libfmt11/fmt/chrono.h: In function 'tm fmt::v11::localtime(std::chrono::local_time<_Duration>)':
/opt/local/include/libfmt11/fmt/chrono.h:559:38: error: 'current_zone' is not a member of 'std::chrono'
  559 |       detail::to_time_t(std::chrono::current_zone()->to_sys(time)));
      |                                      ^~~~~~~~~~~~
make[2]: *** [src/CMakeFiles/rsgain.dir/easymode.cpp.o] Error 1
make[2]: Leaving directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_rsgain/rsgain/work/build'
make[1]: *** [src/CMakeFiles/rsgain.dir/all] Error 2
make[1]: Leaving directory `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_audio_rsgain/rsgain/work/build'
make: *** [all] Error 2
@vitaut
Copy link
Contributor

vitaut commented Sep 13, 2024

@vitaut
Copy link
Contributor

vitaut commented Sep 13, 2024

This looks like a bug in libstdc++: the feature test macro is defined to 201907 but they don't implement current_zone. We could implement a workaround but please report to libstdc++ maintainers.

@vitaut
Copy link
Contributor

vitaut commented Sep 14, 2024

Worked around in 538d877.

@vitaut vitaut closed this as completed Sep 14, 2024
@barracuda156
Copy link
Author

@vitaut Thank you!

I can open an issue on GCC bugzilla, let’s see what upstream says.

@barracuda156
Copy link
Author

I have opened a ticket: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116777

@jwakely
Copy link
Contributor

jwakely commented Sep 19, 2024

This looks like a bug in libstdc++: the feature test macro is defined to 201907 but they don't implement current_zone. We could implement a workaround but please report to libstdc++ maintainers.

This is because OP is using -D_GLIBCXX_USE_CXX11_ABI=0 and time zones have never been supported for that configuration. The feature test macro should have depended on the use of the cxx11 ABI, which was fixed by gcc-mirror/gcc@f906b10 for trunk and gcc-mirror/gcc@c386665 for gcc-14

@jwakely
Copy link
Contributor

jwakely commented Sep 19, 2024

@barracuda156
Copy link
Author

And that's because macports selects the old ABI for old macOS versions: https://github.com/macports/macports-base/blob/a0c99ad1bf6363b556517a9b0ad91def3a812064/src/port1.0/portconfigure.tcl#L107

Yes, you are right. If it did not, ports which use C++11 or higher cannot be linked to dependencies which are built against Apple libstdc++.

@barracuda156
Copy link
Author

@iains Iain, do we have some solution to this? libfmt added a local workaround, but the same problem will inevitably resurface elsewhere.

@jwakely
Copy link
Contributor

jwakely commented Sep 19, 2024

Don't expect to use C++20 features on an OS from 2011 🤷

@barracuda156
Copy link
Author

@jwakely With a very few exceptions even C++23 works fine on the OS from 2011 :)

mtremer pushed a commit to ipfire/ipfire-2.x that referenced this issue Feb 22, 2025
- Update from version 11.0.2 to 11.1.3
- Update of rootfile
- Changelog
    11.1.3
	- Fixed compilation on GCC 9.4 (fmtlib/fmt#4313).
	- Worked around an internal compiler error when using C++20 modules with GCC
	  14.2 and earlier (fmtlib/fmt#4295).
	- Worked around a bug in GCC 6 (fmtlib/fmt#4318).
	- Fixed an issue caused by instantiating `formatter<const T>`
	  (fmtlib/fmt#4303,
	  fmtlib/fmt#4325). Thanks @timsong-cpp.
	- Fixed formatting into `std::ostreambuf_iterator` when using format string
	  compilation (fmtlib/fmt#4309,
	  fmtlib/fmt#4312). Thanks @phprus.
	- Restored a constraint on the map formatter so that it correctly reports as
	  unformattable when the element is (fmtlib/fmt#4326).
	  Thanks @timsong-cpp.
	- Reduced the size of format specs (fmtlib/fmt#4298).
	- Readded `args()` to `fmt::format_context`
	  (fmtlib/fmt#4307,
	  fmtlib/fmt#4310). Thanks @Erroneous1.
	- Fixed a bogus MSVC warning (fmtlib/fmt#4314,
	  fmtlib/fmt#4322). Thanks @ZehMatt.
	- Fixed a pedantic mode error in the CMake config
	  (fmtlib/fmt#4327). Thanks @rlalik.
    11.1.2
	- Fixed ABI compatibility with earlier 11.x versions
	  (fmtlib/fmt#4292).
	- Added `wchar_t` support to the `std::bitset` formatter
	  (fmtlib/fmt#4285,
	  fmtlib/fmt#4286,
	  fmtlib/fmt#4289,
	  fmtlib/fmt#4290). Thanks @phprus.
	- Prefixed CMake components with `fmt-` to simplify usage of {fmt} via
	  `add_subdirectory` (fmtlib/fmt#4283).
	- Updated docs for meson (fmtlib/fmt#4291).
	  Thanks @trim21.
	- Fixed a compilation error in chrono on nvcc
	  (fmtlib/fmt#4297,
	  fmtlib/fmt#4301). Thanks @breyerml.
	- Fixed various warnings
	  (fmtlib/fmt#4288,
	  fmtlib/fmt#4299). Thanks @GamesTrap and @edo9300.
    11.1.1
	- Fixed ABI compatibility with earlier 11.x versions
	  (fmtlib/fmt#4278).
	- Defined CMake components (`core` and `doc`) to allow docs to be installed
	  separately (fmtlib/fmt#4276).
	  Thanks @carlsmedstad.
    11.1.0
	- Improved C++20 module support
	  (fmtlib/fmt#4081,
	  fmtlib/fmt#4083,
	  fmtlib/fmt#4084,
	  fmtlib/fmt#4152,
	  fmtlib/fmt#4153,
	  fmtlib/fmt#4169,
	  fmtlib/fmt#4190,
	  fmtlib/fmt#4234,
	  fmtlib/fmt#4239).
	  Thanks @kamrann and @Arghnews.
	- Reduced debug (unoptimized) binary code size and the number of template
	  instantiations when passing formatting arguments. For example, unoptimized
	  binary code size for `fmt::print("{}", 42)` was reduced by ~40% on GCC and
	  ~60% on clang (x86-64).
	  GCC:
	  - Before: 161 instructions of which 105 are in reusable functions
	    ([godbolt](https://www.godbolt.org/z/s9bGoo4ze)).
	  - After: 116 instructions of which 60 are in reusable functions
	    ([godbolt](https://www.godbolt.org/z/r7GGGxMs6)).
	  Clang:
	  - Before: 310 instructions of which 251 are in reusable functions
	    ([godbolt](https://www.godbolt.org/z/Ts88b7M9o)).
	  - After: 194 instructions of which 135 are in reusable functions
	    ([godbolt](https://www.godbolt.org/z/vcrjP8ceW)).
	- Added an experimental `fmt::writer` API that can be used for writing to
	  different destinations such as files or strings
	  (fmtlib/fmt#2354).
	  For example ([godbolt](https://www.godbolt.org/z/rWoKfbP7e)):
		  ```c++
		  #include <fmt/os.h>
		  void write_text(fmt::writer w) {
		    w.print("The answer is {}.", 42);
		  }
		  int main() {
		    // Write to FILE.
		    write_text(stdout);
		    // Write to fmt::ostream.
		    auto f = fmt::output_file("myfile");
		    write_text(f);
		    // Write to std::string.
		    auto sb = fmt::string_buffer();
		    write_text(sb);
		    std::string s = sb.str();
		  }
		  ```
	- Added width and alignment support to the formatter of `std::error_code`.
	- Made `std::expected<void, E>` formattable
	  (fmtlib/fmt#4145,
	  fmtlib/fmt#4148).
	  For example ([godbolt](https://www.godbolt.org/z/hrj5c6G86)):
		  ```c++
		  fmt::print("{}", std::expected<void, int>());
		  ```
		  prints
		  ```
		  expected()
		  ```
	  Thanks @phprus.
	- Made `fmt::is_formattable<void>` SFINAE-friendly
	  (fmtlib/fmt#4147).
	- Added support for `_BitInt` formatting when using clang
	  (fmtlib/fmt#4007,
	  fmtlib/fmt#4072,
	  fmtlib/fmt#4140,
	  fmtlib/fmt#4173,
	  fmtlib/fmt#4176).
	  For example ([godbolt](https://www.godbolt.org/z/KWjbWec5z)):
		  ```c++
		  using int42 = _BitInt(42);
		  fmt::print("{}", int42(100));
		  ```
	  Thanks @Arghnews.
	- Added the `n` specifier for tuples and pairs
	  (fmtlib/fmt#4107). Thanks @someonewithpc.
	- Added support for tuple-like types to `fmt::join`
	  (fmtlib/fmt#4226,
	  fmtlib/fmt#4230). Thanks @phprus.
	- Made more types formattable at compile time
	  (fmtlib/fmt#4127). Thanks @AnthonyVH.
	- Implemented a more efficient compile-time `fmt::formatted_size`
	  (fmtlib/fmt#4102,
	  fmtlib/fmt#4103). Thanks @phprus.
	- Fixed compile-time formatting of some string types
	  (fmtlib/fmt#4065). Thanks @torshepherd.
	- Made compiled version of `fmt::format_to` work with
	  `std::back_insert_iterator<std::vector<char>>`
	  (fmtlib/fmt#4206,
	  fmtlib/fmt#4211). Thanks @phprus.
	- Added a formatter for `std::reference_wrapper`
	  (fmtlib/fmt#4163,
	  fmtlib/fmt#4164). Thanks @yfeldblum and @phprus.
	- Added experimental padding support (glibc `strftime` extension) to `%m`, `%j`
	  and `%Y` (fmtlib/fmt#4161). Thanks @KKhanhH.
	- Made microseconds formatted as `us` instead of `µs` if the Unicode support is
	  disabled (fmtlib/fmt#4088).
	- Fixed an unreleased regression in transcoding of surrogate pairs
	  (fmtlib/fmt#4094,
	  fmtlib/fmt#4095). Thanks @phprus.
	- Made `fmt::appender` satisfy `std::output_iterator` concept
	  (fmtlib/fmt#4092,
	  fmtlib/fmt#4093). Thanks @phprus.
	- Made `std::iterator_traits<fmt::appender>` standard-conforming
	  (fmtlib/fmt#4185). Thanks @CaseyCarter.
	- Made it easier to reuse `fmt::formatter<std::string_view>` for types with
	  an implicit conversion to `std::string_view`
	  (fmtlib/fmt#4036,
	  fmtlib/fmt#4055). Thanks @Arghnews.
	- Made it possible to disable `<filesystem>` use via `FMT_CPP_LIB_FILESYSTEM`
	  for compatibility with some video game console SDKs, e.g. Nintendo Switch SDK
	  (fmtlib/fmt#4257,
	  fmtlib/fmt#4258,
	  fmtlib/fmt#4259). Thanks @W4RH4WK and @phprus.
	- Fixed compatibility with platforms that use 80-bit `long double`
	  (fmtlib/fmt#4245,
	  fmtlib/fmt#4246). Thanks @jsirpoma.
	- Added support for UTF-32 code units greater than `0xFFFF` in fill
	  (fmtlib/fmt#4201).
	- Fixed handling of legacy encodings on Windows with GCC
	  (fmtlib/fmt#4162).
	- Made `fmt::to_string` take `fmt::basic_memory_buffer` by const reference
	  (fmtlib/fmt#4261,
	  fmtlib/fmt#4262). Thanks @sascha-devel.
	- Added `fmt::dynamic_format_arg_store::size`
	  (fmtlib/fmt#4270). Thanks @hannes-harnisch.
	- Removed the ability to control locale usage via an undocumented
	  `FMT_STATIC_THOUSANDS_SEPARATOR` in favor of `FMT_USE_LOCALE`.
	- Renamed `FMT_EXCEPTIONS` to `FMT_USE_EXCEPTIONS` for consistency with other
	  similar macros.
	- Improved include directory ordering to reduce the chance of including
	  incorrect headers when using multiple versions of {fmt}
	  (fmtlib/fmt#4116). Thanks @cdzhan.
	- Made it possible to compile a subset of {fmt} without the C++ runtime.
	- Improved documentation and README
	  (fmtlib/fmt#4066,
	  fmtlib/fmt#4117,
	  fmtlib/fmt#4203,
	  fmtlib/fmt#4235). Thanks @zyctree and @nikola-sh.
	- Improved the documentation generator (fmtlib/fmt#4110,
	  fmtlib/fmt#4115). Thanks @rturrado.
	- Improved CI (fmtlib/fmt#4155,
	  fmtlib/fmt#4151). Thanks @phprus.
	- Fixed various warnings and compilation issues
	  (fmtlib/fmt#2708,
	  fmtlib/fmt#4091,
	  fmtlib/fmt#4109,
	  fmtlib/fmt#4113,
	  fmtlib/fmt#4125,
	  fmtlib/fmt#4129,
	  fmtlib/fmt#4130,
	  fmtlib/fmt#4131,
	  fmtlib/fmt#4132,
	  fmtlib/fmt#4133,
	  fmtlib/fmt#4144,
	  fmtlib/fmt#4150,
	  fmtlib/fmt#4158,
	  fmtlib/fmt#4159,
	  fmtlib/fmt#4160,
	  fmtlib/fmt#4170,
	  fmtlib/fmt#4177,
	  fmtlib/fmt#4187,
	  fmtlib/fmt#4188,
	  fmtlib/fmt#4194,
	  fmtlib/fmt#4200,
	  fmtlib/fmt#4205,
	  fmtlib/fmt#4207,
	  fmtlib/fmt#4208,
	  fmtlib/fmt#4210,
	  fmtlib/fmt#4220,
	  fmtlib/fmt#4231,
	  fmtlib/fmt#4232,
	  fmtlib/fmt#4233,
	  fmtlib/fmt#4236,
	  fmtlib/fmt#4267,
	  fmtlib/fmt#4271).
	  Thanks @torsten48, @Arghnews, @tinfoilboy, @aminya, @Ottani, @zeroomega,
	  @c4v4, @kongy, @vinayyadav3016, @sergio-nsk, @phprus and @YexuanXiao.

Signed-off-by: Adolf Belka <[email protected]>
Signed-off-by: Michael Tremer <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants