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

Build also x86_64-linux-musl with -Werror #86

Merged
merged 1 commit into from
Apr 9, 2022

Conversation

giordano
Copy link
Member

@giordano giordano commented Apr 5, 2022

With JuliaLang/julia#44850 merged, also x86_64-linux-musl should now build cleanly with -Werror.

@staticfloat my understanding is that JuliaCI/rootfs-images#183 should have fixed the issue you were observing when building patchelf, but do we need to do anything here to propagate that change? For example update the RootFS tag and hash?

@giordano giordano requested a review from staticfloat April 5, 2022 15:58
DilumAluthge
DilumAluthge previously approved these changes Apr 5, 2022
@DilumAluthge
Copy link
Member

but do we need to do anything here to propagate that change? For example update the RootFS tag and hash?

The easiest thing to do is to first change the tag in the .arches files to be v5.8 (for https://github.com/JuliaCI/rootfs-images/releases/tag/v5.8).

Then the Buildkite log will print the hash mismatch, and you can update the hash accordingly.

Alternatively, you can go to https://github.com/JuliaCI/rootfs-images/actions/runs/2092199532 and look at the log, and get the hash from the log.

@staticfloat
Copy link
Member

The hash updates are included as a part of #44: https://github.com/JuliaCI/julia-buildkite/pull/44/files#diff-e4139dfe524b43a379140aa453169caa4c2be93997481a3fe6d5a3fb058ed26bR8

That is currently on auto-merge, so let's wait until that's merged, then we can do this one as well.

For the record, I'm not totally happy with setting CXXFLAGS like this, as it means we drop default flags such as -O2 and -g. I think we may want to manually include those flags as well, but I'm not sure the best way to do that. In the days of yore, we used to have CXXFLAGS_add which would be added onto the "default" flags to avoid this problem, but this is all just so frustratingly inflexible.

@giordano
Copy link
Member Author

giordano commented Apr 5, 2022

as it means we drop default flags such as -O2 and -g

Would (ab)using CPPFLAGS help?

@giordano
Copy link
Member Author

giordano commented Apr 5, 2022

But also, what are you referring to exactly? As far as I can tell, Julia's build system doesn't set CFLAGS nor CXXFLAGS at all, they only come from the user. Is it just for patchelf?

@staticfloat
Copy link
Member

Sadly, yes, I do mean that it's in the patchelf build system. Observe:

$ git clean -fdx; make CXXFLAGS="-Werror" -C deps compile-patchelf
...
g++ -m64 -DPACKAGE_NAME=\"patchelf\" -DPACKAGE_TARNAME=\"patchelf\" -DPACKAGE_VERSION=\"0.13.20210805.a949ff2\" -DPACKAGE_STRING=\"patchelf\ 0.13.20210805.a949ff2\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"patchelf\" -DVERSION=\"0.13.20210805.a949ff2\" -I. -I/home/sabae/src/julia/deps/srccache/patchelf-0.13/src    -Wall -std=c++11 -D_FILE_OFFSET_BITS=64  -Werror -MT patchelf.o -MD -MP -MF .deps/patchelf.Tpo -c -o patchelf.o /home/sabae/src/julia/deps/srccache/patchelf-0.13/src/patchelf.cc
mv -f .deps/patchelf.Tpo .deps/patchelf.Po
g++ -m64 -Wall -std=c++11 -D_FILE_OFFSET_BITS=64  -Werror   -o patchelf patchelf.o
...

As opposed to:

$ git clean -fdx; make -C deps compile-patchelf
...
g++ -m64 -DPACKAGE_NAME=\"patchelf\" -DPACKAGE_TARNAME=\"patchelf\" -DPACKAGE_VERSION=\"0.13.20210805.a949ff2\" -DPACKAGE_STRING=\"patchelf\ 0.13.20210805.a949ff2\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"patchelf\" -DVERSION=\"0.13.20210805.a949ff2\" -I. -I/home/sabae/src/julia/deps/srccache/patchelf-0.13/src    -Wall -std=c++11 -D_FILE_OFFSET_BITS=64  -g -O2 -MT patchelf.o -MD -MP -MF .deps/patchelf.Tpo -c -o patchelf.o /home/sabae/src/julia/deps/srccache/patchelf-0.13/src/patchelf.cc
g++ -m64 -Wall -std=c++11 -D_FILE_OFFSET_BITS=64  -g -O2   -o patchelf patchelf.o
...

This is because autotools by default puts -O2 -g if no flags are set. I think it would be safe to just pass -O2 -g by default for all dependencies, but of course I'm a little scared to do that. :P

@giordano
Copy link
Member Author

giordano commented Apr 5, 2022

I'm a little confused though. As far as I know, variables passed to make aren't exported by default and it doesn't look to me like we explicitly propagate CXXFLAGS in deps. So how come is patchelf getting the global CXXFLAGS in the first place?

Edit: found it: https://www.gnu.org/software/make/manual/html_node/Environment.html#Environment

By default, only variables that came from the environment or the command line are passed to recursive invocations.

Variables set on the command line are propagated automatically.

@staticfloat
Copy link
Member

Also, if you don't want to pass -Werror to our deps, we have a separate variable JCXXFLAGS that applies only to Julia code. We should probably add a JCXXFLAGS_add similar to what we have in projects like OpenLibm.

@giordano
Copy link
Member Author

giordano commented Apr 5, 2022

Adding

MAKEOVERRIDES =

to deps/Makefile should prevent propagation of command line arguments: https://www.gnu.org/software/make/manual/html_node/Options_002fRecursion.html#Options_002fRecursion

@staticfloat
Copy link
Member

I don't think we want to do that, because there are some times where we legitimately want to pass CXXFLAGS to dependencies.

@giordano
Copy link
Member Author

giordano commented Apr 5, 2022

there are some times where we legitimately want to pass CXXFLAGS to dependencies

That blurs things quite a lot 😛

@staticfloat
Copy link
Member

Imagine some distribution packager that wants to ensure that a from-source build uses -fstack-protector-strong or something like that.....

@giordano
Copy link
Member Author

giordano commented Apr 5, 2022

To be clear, you'd like something like

diff --git a/src/Makefile b/src/Makefile
index a6a88d5fb6..663b2d5bcf 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -214,13 +214,13 @@ $(BUILDDIR)/jl_internal_funcs.inc: $(SRCDIR)/jl_exported_funcs.inc
 
 # source file rules
 $(BUILDDIR)/%.o: $(SRCDIR)/%.c $(HEADERS) | $(BUILDDIR)
-	@$(call PRINT_CC, $(CC) $(JCPPFLAGS) $(JCFLAGS) $(SHIPFLAGS) $(DISABLE_ASSERTIONS) -c $< -o $@)
+	@$(call PRINT_CC, $(CC) $(JCPPFLAGS) $(JCFLAGS) $(JCFLAGS_add) $(SHIPFLAGS) $(DISABLE_ASSERTIONS) -c $< -o $@)
 $(BUILDDIR)/%.dbg.obj: $(SRCDIR)/%.c $(HEADERS) | $(BUILDDIR)
-	@$(call PRINT_CC, $(CC) $(JCPPFLAGS) $(JCFLAGS) $(DEBUGFLAGS) -c $< -o $@)
+	@$(call PRINT_CC, $(CC) $(JCPPFLAGS) $(JCFLAGS) $(JCFLAGS_add) $(DEBUGFLAGS) -c $< -o $@)
 $(BUILDDIR)/%.o: $(SRCDIR)/%.cpp $(SRCDIR)/llvm-version.h $(HEADERS) $(LLVM_CONFIG_ABSOLUTE) | $(BUILDDIR)
-	@$(call PRINT_CC, $(CXX) $(LLVM_CXXFLAGS) $(JCPPFLAGS) $(JCXXFLAGS) $(SHIPFLAGS) $(CXX_DISABLE_ASSERTION) -c $< -o $@)
+	@$(call PRINT_CC, $(CXX) $(LLVM_CXXFLAGS) $(JCPPFLAGS) $(JCXXFLAGS) $(JCXXFLAGS_add) $(SHIPFLAGS) $(CXX_DISABLE_ASSERTION) -c $< -o $@)
 $(BUILDDIR)/%.dbg.obj: $(SRCDIR)/%.cpp $(SRCDIR)/llvm-version.h $(HEADERS) $(LLVM_CONFIG_ABSOLUTE) | $(BUILDDIR)
-	@$(call PRINT_CC, $(CXX) $(LLVM_CXXFLAGS) $(JCPPFLAGS) $(JCXXFLAGS) $(DEBUGFLAGS) -c $< -o $@)
+	@$(call PRINT_CC, $(CXX) $(LLVM_CXXFLAGS) $(JCPPFLAGS) $(JCXXFLAGS) $(JCXXFLAGS_add) $(DEBUGFLAGS) -c $< -o $@)
 $(BUILDDIR)/%.o : $(SRCDIR)/%.d
 	@$(call PRINT_DTRACE, $(DTRACE) -G -s $< -o $@)
 $(BUILDDIR)/%.dbg.obj : $(SRCDIR)/%.d
@@ -247,7 +247,7 @@ else
 JULIA_SPLITDEBUG := 0
 endif
 $(build_shlibdir)/libccalltest.$(SHLIB_EXT): $(SRCDIR)/ccalltest.c
-	@$(call PRINT_CC, $(CC) $(JCFLAGS) $(JCPPFLAGS) $(FLAGS) -O3 $< $(fPIC) -shared -o $@.tmp $(LDFLAGS))
+	@$(call PRINT_CC, $(CC) $(JCFLAGS) $(JCFLAGS_add) $(JCPPFLAGS) $(FLAGS) -O3 $< $(fPIC) -shared -o $@.tmp $(LDFLAGS))
 	$(INSTALL_NAME_CMD)libccalltest.$(SHLIB_EXT) $@.tmp
 ifeq ($(JULIA_SPLITDEBUG),1)
 	@# Create split debug info file for libccalltest stacktraces test
@@ -352,13 +352,13 @@ $(BUILDDIR)/julia_version.h: $(JULIAHOME)/VERSION
 CXXLD = $(CXX) -shared
 
 $(build_shlibdir)/libjulia-internal.$(JL_MAJOR_MINOR_SHLIB_EXT): $(SRCDIR)/julia.expmap $(OBJS) $(BUILDDIR)/flisp/libflisp.a $(BUILDDIR)/support/libsupport.a $(LIBUV)
-	@$(call PRINT_LINK, $(CXXLD) $(call IMPLIB_FLAGS,$@) $(JCXXFLAGS) $(CXXLDFLAGS) $(SHIPFLAGS) $(OBJS) $(RPATH_LIB) -o $@ \
+	@$(call PRINT_LINK, $(CXXLD) $(call IMPLIB_FLAGS,$@) $(JCXXFLAGS) $(JCXXFLAGS_add) $(CXXLDFLAGS) $(SHIPFLAGS) $(OBJS) $(RPATH_LIB) -o $@ \
 		$(JLDFLAGS) $(JLIBLDFLAGS) $(RT_RELEASE_LIBS) $(call SONAME_FLAGS,libjulia-internal.$(JL_MAJOR_SHLIB_EXT)))
 	@$(INSTALL_NAME_CMD)libjulia-internal.$(SHLIB_EXT) $@
 	$(DSYMUTIL) $@
 
 $(build_shlibdir)/libjulia-internal-debug.$(JL_MAJOR_MINOR_SHLIB_EXT): $(SRCDIR)/julia.expmap $(DOBJS) $(BUILDDIR)/flisp/libflisp-debug.a $(BUILDDIR)/support/libsupport-debug.a $(LIBUV)
-	@$(call PRINT_LINK, $(CXXLD) $(call IMPLIB_FLAGS,$@) $(JCXXFLAGS) $(CXXLDFLAGS) $(DEBUGFLAGS) $(DOBJS) $(RPATH_LIB) -o $@ \
+	@$(call PRINT_LINK, $(CXXLD) $(call IMPLIB_FLAGS,$@) $(JCXXFLAGS) $(JCXXFLAGS_add) $(CXXLDFLAGS) $(DEBUGFLAGS) $(DOBJS) $(RPATH_LIB) -o $@ \
 		$(JLDFLAGS) $(JLIBLDFLAGS) $(RT_DEBUG_LIBS) $(call SONAME_FLAGS,libjulia-internal-debug.$(JL_MAJOR_SHLIB_EXT)))
 	@$(INSTALL_NAME_CMD)libjulia-internal-debug.$(SHLIB_EXT) $@
 	$(DSYMUTIL) $@
@@ -378,13 +378,13 @@ libjulia-internal-debug: $(build_shlibdir)/libjulia-internal-debug.$(JL_MAJOR_MI
 libjulia-internal-debug libjulia-internal-release: $(PUBLIC_HEADER_TARGETS)
 
 $(build_shlibdir)/libjulia-codegen.$(JL_MAJOR_MINOR_SHLIB_EXT): $(SRCDIR)/julia.expmap $(CODEGEN_OBJS) $(BUILDDIR)/support/libsupport.a $(build_shlibdir)/libjulia-internal.$(JL_MAJOR_MINOR_SHLIB_EXT)
-	@$(call PRINT_LINK, $(CXXLD) $(call IMPLIB_FLAGS,$@) $(JCXXFLAGS) $(CXXLDFLAGS) $(SHIPFLAGS) $(CODEGEN_OBJS) $(RPATH_LIB) -o $@ \
+	@$(call PRINT_LINK, $(CXXLD) $(call IMPLIB_FLAGS,$@) $(JCXXFLAGS) $(JCXXFLAGS_add) $(CXXLDFLAGS) $(SHIPFLAGS) $(CODEGEN_OBJS) $(RPATH_LIB) -o $@ \
 		$(JLDFLAGS) $(JLIBLDFLAGS) $(CG_RELEASE_LIBS) $(call SONAME_FLAGS,libjulia-codegen.$(JL_MAJOR_SHLIB_EXT)))
 	@$(INSTALL_NAME_CMD)libjulia-codegen.$(SHLIB_EXT) $@
 	$(DSYMUTIL) $@
 
 $(build_shlibdir)/libjulia-codegen-debug.$(JL_MAJOR_MINOR_SHLIB_EXT): $(SRCDIR)/julia.expmap $(CODEGEN_DOBJS) $(BUILDDIR)/support/libsupport-debug.a $(build_shlibdir)/libjulia-internal-debug.$(JL_MAJOR_MINOR_SHLIB_EXT)
-	@$(call PRINT_LINK, $(CXXLD) $(call IMPLIB_FLAGS,$@) $(JCXXFLAGS) $(CXXLDFLAGS) $(DEBUGFLAGS) $(CODEGEN_DOBJS) $(RPATH_LIB) -o $@ \
+	@$(call PRINT_LINK, $(CXXLD) $(call IMPLIB_FLAGS,$@) $(JCXXFLAGS) $(JCXXFLAGS_add) $(CXXLDFLAGS) $(DEBUGFLAGS) $(CODEGEN_DOBJS) $(RPATH_LIB) -o $@ \
 		$(JLDFLAGS) $(JLIBLDFLAGS) $(CG_DEBUG_LIBS) $(call SONAME_FLAGS,libjulia-codegen-debug.$(JL_MAJOR_SHLIB_EXT)))
 	@$(INSTALL_NAME_CMD)libjulia-codegen-debug.$(SHLIB_EXT) $@
 	$(DSYMUTIL) $@
@@ -443,11 +443,11 @@ clangsa: $(build_shlibdir)/libImplicitAtomicsPlugin.$(SHLIB_EXT)
 clang-sagc-%: $(SRCDIR)/%.c $(build_shlibdir)/libGCCheckerPlugin.$(SHLIB_EXT) .FORCE | analyzegc-deps-check
 	@$(call PRINT_ANALYZE, $(build_depsbindir)/clang -D__clang_gcanalyzer__ --analyze -Xanalyzer -analyzer-werror -Xanalyzer -analyzer-output=text --analyzer-no-default-checks \
 		-Xclang -load -Xclang $(build_shlibdir)/libGCCheckerPlugin.$(SHLIB_EXT) -Xclang -analyzer-checker=core$(COMMA)julia.GCChecker \
-		$(CLANGSA_FLAGS) $(JCPPFLAGS) $(JCFLAGS) $(DEBUGFLAGS) -fcolor-diagnostics -x c $<)
+		$(CLANGSA_FLAGS) $(JCPPFLAGS) $(JCFLAGS) $(JCFLAGS_add) $(DEBUGFLAGS) -fcolor-diagnostics -x c $<)
 clang-sagc-%: $(SRCDIR)/%.cpp $(build_shlibdir)/libGCCheckerPlugin.$(SHLIB_EXT) .FORCE | analyzegc-deps-check
 	@$(call PRINT_ANALYZE, $(build_depsbindir)/clang -D__clang_gcanalyzer__ --analyze -Xanalyzer -analyzer-werror -Xanalyzer -analyzer-output=text --analyzer-no-default-checks \
 		-Xclang -load -Xclang $(build_shlibdir)/libGCCheckerPlugin.$(SHLIB_EXT) -Xclang -analyzer-checker=core$(COMMA)julia.GCChecker \
-		$(CLANGSA_FLAGS) $(CLANGSA_CXXFLAGS) $(LLVM_CXXFLAGS) $(JCPPFLAGS) $(JCXXFLAGS) $(DEBUGFLAGS) -fcolor-diagnostics -x c++ $<)
+		$(CLANGSA_FLAGS) $(CLANGSA_CXXFLAGS) $(LLVM_CXXFLAGS) $(JCPPFLAGS) $(JCXXFLAGS) $(JCXXFLAGS_add) $(DEBUGFLAGS) -fcolor-diagnostics -x c++ $<)
 
  # optarg is a required_argument for these
 SA_EXCEPTIONS-jloptions.c                   := -Xanalyzer -analyzer-disable-checker=core.NonNullParamChecker,unix.cstring.NullArg
@@ -462,23 +462,23 @@ clang-sa-%: $(SRCDIR)/%.c $(build_shlibdir)/libImplicitAtomicsPlugin.$(SHLIB_EXT
 		-Xanalyzer -analyzer-disable-checker=deadcode.DeadStores \
 		 --analyzer-no-default-checks  \
 		$(SA_EXCEPTIONS-$(notdir $<)) \
-		$(CLANGSA_FLAGS) $(JCPPFLAGS) $(JCFLAGS) $(DEBUGFLAGS) -fcolor-diagnostics -Werror -x c $<)
+		$(CLANGSA_FLAGS) $(JCPPFLAGS) $(JCFLAGS) $(JCFLAGS_add) $(DEBUGFLAGS) -fcolor-diagnostics -Werror -x c $<)
 clang-sa-%: $(SRCDIR)/%.cpp $(build_shlibdir)/libImplicitAtomicsPlugin.$(SHLIB_EXT) .FORCE | analyzegc-deps-check
 	@$(call PRINT_ANALYZE, $(build_depsbindir)/clang --analyze -Xanalyzer -analyzer-werror -Xanalyzer -analyzer-output=text \
 		$(if $(findstring $(notdir $<),$(SKIP_IMPLICIT_ATOMICS)),,-Xclang -load -Xclang $(build_shlibdir)/libImplicitAtomicsPlugin.$(SHLIB_EXT) -Xclang -analyzer-checker=julia.ImplicitAtomics) \
 		-Xanalyzer -analyzer-disable-checker=deadcode.DeadStores \
 		 --analyzer-no-default-checks  \
 		$(SA_EXCEPTIONS-$(notdir $<)) \
-		$(CLANGSA_FLAGS) $(CLANGSA_CXXFLAGS) $(LLVM_CXXFLAGS) $(JCPPFLAGS) $(JCXXFLAGS) $(DEBUGFLAGS) -fcolor-diagnostics -Werror -x c++ $<)
+		$(CLANGSA_FLAGS) $(CLANGSA_CXXFLAGS) $(LLVM_CXXFLAGS) $(JCPPFLAGS) $(JCXXFLAGS) $(JCXXFLAGS_add) $(DEBUGFLAGS) -fcolor-diagnostics -Werror -x c++ $<)
 
 clang-tidy-%: $(SRCDIR)/%.c $(build_shlibdir)/libImplicitAtomics2Plugin.$(SHLIB_EXT) .FORCE | analyzegc-deps-check
 	@$(call PRINT_ANALYZE, $(build_depsbindir)/clang-tidy $< -header-filter='.*' --quiet \
 		-load $(build_shlibdir)/libImplicitAtomics2Plugin.$(SHLIB_EXT) --checks='-clang-analyzer-*$(COMMA)-clang-diagnostic-*$(COMMA)concurrency-implicit-atomics' --warnings-as-errors='*' \
-		-- $(CLANGSA_FLAGS) $(JCPPFLAGS) $(JCFLAGS) $(DEBUGFLAGS) -fcolor-diagnostics -fno-caret-diagnostics -x c)
+		-- $(CLANGSA_FLAGS) $(JCPPFLAGS) $(JCFLAGS) $(JCFLAGS_add) $(DEBUGFLAGS) -fcolor-diagnostics -fno-caret-diagnostics -x c)
 clang-tidy-%: $(SRCDIR)/%.cpp $(build_shlibdir)/libImplicitAtomics2Plugin.$(SHLIB_EXT) .FORCE | analyzegc-deps-check
 	@$(call PRINT_ANALYZE, $(build_depsbindir)/clang-tidy $< -header-filter='.*' --quiet \
 		-load $(build_shlibdir)/libImplicitAtomics2Plugin.$(SHLIB_EXT) --checks='-clang-analyzer-*$(COMMA)-clang-diagnostic-*$(COMMA)concurrency-implicit-atomics' --warnings-as-errors='*' \
-		-- $(CLANGSA_FLAGS) $(CLANGSA_CXXFLAGS) $(LLVM_CXXFLAGS) $(JCPPFLAGS) $(JCXXFLAGS) $(DEBUGFLAGS) -fcolor-diagnostics --system-header-prefix=llvm -Wno-deprecated-declarations -fno-caret-diagnostics -x c++)
+		-- $(CLANGSA_FLAGS) $(CLANGSA_CXXFLAGS) $(LLVM_CXXFLAGS) $(JCPPFLAGS) $(JCXXFLAGS) $(JCXXFLAGS_add) $(DEBUGFLAGS) -fcolor-diagnostics --system-header-prefix=llvm -Wno-deprecated-declarations -fno-caret-diagnostics -x c++)
 
 
 # Add C files as a target of `analyzesrc` and `analyzegc` and `tidysrc`

and here we set only JCFLAGS_add and JCXXFLAGS_add? They are separate from JCFLAGS and JCXXFLAGS, and are specific to Julia's source code (not the dependencies).

@staticfloat
Copy link
Member

Yes, that's exactly what I'm proposing.

@giordano
Copy link
Member Author

giordano commented Apr 7, 2022

Ok, this is now using JL_C*FLAGS everywhere.

With JuliaLang/julia#44807 I can also compile cleanly with -Werror on aarch64 macOS....if it wasn't for an unused variable introduced by JuliaLang/julia#44595 which is likely an oversight (and fixing mistakes like this is precisely the reason why I'm pushing for using -Werror 🙂)

@DilumAluthge DilumAluthge requested review from staticfloat and removed request for staticfloat April 8, 2022 03:25
@DilumAluthge
Copy link
Member

DilumAluthge commented Apr 8, 2022

@staticfloat Is this ready to merge?

@staticfloat
Copy link
Member

As soon as the warnings that kill the build are fixed, this is good to merge.

@giordano
Copy link
Member Author

giordano commented Apr 8, 2022

We shouldn't have any more warnings when building for Musl, this should be ready to go. The build status is now waiting only for aarch64-apple-darwin, the queue seems to be quite long...

@DilumAluthge
Copy link
Member

DilumAluthge commented Apr 8, 2022

If the only thing that this PR is waiting for is the Apple Silicon queue, I say just go ahead and merge it now. The queue will get better once we have more Apple Silicon machines.

@DilumAluthge
Copy link
Member

The merge conflicts are going to be annoying to fix. It will probably be easier for you to create this PR from scratch.

@giordano
Copy link
Member Author

giordano commented Apr 9, 2022

I'm not sure what was so complicated about fixing merge conflicts, but I did it

@giordano
Copy link
Member Author

giordano commented Apr 9, 2022

Build jobs are successful. All other failures should be unrelated. Good to merge?

@staticfloat staticfloat merged commit e898a9c into JuliaCI:main Apr 9, 2022
@giordano giordano deleted the mg/musl-werror branch April 9, 2022 15:42
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

Successfully merging this pull request may close these issues.

3 participants