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

Multiple definitions of shadow_logfd #2260

Open
alex14641 opened this issue Feb 15, 2025 · 2 comments
Open

Multiple definitions of shadow_logfd #2260

alex14641 opened this issue Feb 15, 2025 · 2 comments

Comments

@alex14641
Copy link

When building skopeo from git, the following error occurs

go build "-buildmode=pie" -ldflags '-X main.gitCommit=64361bde0687b2d8ae490fd9d7358a1e89d70e5b ' -gcflags "" -tags "  libsubid" -o bin/skopeo ./cmd/skopeo
github.com/containers/skopeo/cmd/skopeo/opt/go1.23.6/pkg/tool/linux_amd64/link: running gcc failed: exit status 1
/usr/bin/gcc -m64 -Wl,-z,relro -pie -o $WORK/b001/exe/a.out -Wl,--export-dynamic-symbol=_cgo_panic -Wl,--export-dynamic-symbol=_cgo_topofstack -Wl,--export-dynamic-symbol=authorizerTrampoline -Wl,--export-dynamic-symbol=callbackTrampoline -Wl,--export-dynamic-symbol=commitHookTrampoline -Wl,--export-dynamic-symbol=compareTrampoline -Wl,--export-dynamic-symbol=crosscall2 -Wl,--export-dynamic-symbol=doneTrampoline -Wl,--export-dynamic-symbol=gogpgme_assuan_data_callback -Wl,--export-dynamic-
symbol=gogpgme_assuan_inquiry_callback -Wl,--export-dynamic-symbol=gogpgme_assuan_status_callback -Wl,--export-dynamic-symbol=gogpgme_passfunc -Wl,--export-dynamic-symbol=gogpgme_readfunc -Wl,--export-dynamic-symbol=gogpgme_seekfunc -Wl,--export-dynamic-symbol=gogpgme_writefunc -Wl,--export-dynamic-symbol=preUpdateHookTrampoline -Wl,--export-dynamic-symbol=rollbackHookTrampoline -Wl,--export-dynamic-symbol=stepTrampoline -Wl,--export-dynamic-symbol=updateHookTrampoline -Wl,--compress-debug-sections=zlib /tmp/go-link-1078823919/go.o /tmp/go-link-1078823919/000000.o /tmp/go-link-1078823919/000001.o /tmp/go-link-1078823919/000002.o /tmp/go-link-1078823919/000003.o /tmp/go-link-1078823919/000004.o /tmp/go-link-1078823919/000005.o /tmp/go-link-1078823919/000006.o /tmp/go-link-1078823919/000007.o /tmp/go-link-1078823919/000008.o /tmp/go-link-1078823919/000009.o /tmp/go-link-1078823919/000010.o /tmp/go-link-1078823919/000011.o /tmp/go-link-1078823919/000012.o /tmp/go-link-1078823919/000013.o /tmp/go-link-1078823919/000014.o /tmp/go-link-1078823919/000015.o /tmp/go-link-1078823919/000016.o /tmp/go-link-1078823919/000017.o /tmp/go-link-1078823919/000018.o /tmp/go-link-1078823919/000019.o /tmp/go-link-1078823919/000020.o /tmp/go-link-1078823919/000021.o /tmp/go-link-1078823919/000022.o /tmp/go-link-1078823919/000023.o /tmp/go-link-1078823919/000024.o /tmp/go-link-1078823919/000025.o /tmp/go-link-1078823919/000026.o /tmp/go-link-1078823919/000027.o /tmp/go-link-1078823919/000028.o /tmp/go-link-1078823919/000029.o /tmp/go-link-1078823919/000030.o /tmp/go-link-1078823919/000031.o /tmp/go-link-1078823919/000032.o /tmp/go-link-1078823919/000033.o /tmp/go-link-1078823919/000034.o /tmp/go-link-1078823919/000035.o /tmp/go-link-1078823919/000036.o /tmp/go-link-1078823919/000037.o /tmp/go-link-1078823919/000038.o /tmp/go-link-1078823919/000039.o /tmp/go-link-1078823919/000040.o /tmp/go-link-1078823919/000041.o /tmp/go-link-1078823919/000042.o /tmp/go-link-1078823919/000043.o /tmp/go-link-1078823919/000044.o /tmp/go-link-1078823919/000045.o /tmp/go-link-1078823919/000046.o /tmp/go-link-1078823919/000047.o /tmp/go-link-1078823919/000048.o /tmp/go-link-1078823919/000049.o /tmp/go-link-1078823919/000050.o /tmp/go-link-1078823919/000051.o /tmp/go-link-1078823919/000052.o /tmp/go-link-1078823919/000053.o /tmp/go-link-1078823919/000054.o /tmp/go-link-1078823919/000055.o /tmp/go-link-1078823919/000056.o /tmp/go-link-1078823919/000057.o -O2 -g -lresolv -O2 -g -O2 -g -lgpgme -O2 -g -lpthread -O2 -g -O2 -g -l subid -O2 -g -ldl -O2 -g -ldl -O2 -g -O2 -g -O2 -g
/usr/bin/ld: /usr/lib64/gcc/x86_64-slackware-linux/14.2.0/../../../../lib64/libsubid.a(libshadow_la-shadowlog.o):(.bss+0x0): multiple definition of `shadow_logfd'; /tmp/go-link-1078823919/000033.o:/spare/sources/skopeo/vendor/github.com/containers/storage/pkg/idtools/idtools_supported.go:17: first defined here
collect2: error: ld returned 1 exit status

make: *** [Makefile:134: bin/skopeo] Error 1

I'm building on Slackware current with gcc 14.2 and go v1.23.6. The following patch fixes it:

diff --git a/vendor/github.com/containers/storage/pkg/idtools/idtools_supported.go b/vendor/github.com/containers/storage/pkg/idtools/idtools_supported.go
index 2bd26d0e..3b9f88e1 100644
--- a/vendor/github.com/containers/storage/pkg/idtools/idtools_supported.go
+++ b/vendor/github.com/containers/storage/pkg/idtools/idtools_supported.go
@@ -14,7 +14,7 @@ import (
 #include <stdlib.h>
 #include <stdio.h>
 const char *Prog = "storage";
-FILE *shadow_logfd = NULL;
+extern FILE *shadow_logfd;
 
 struct subid_range get_range(struct subid_range *ranges, int i)
 {
@mtrmac
Copy link
Collaborator

mtrmac commented Feb 17, 2025

Thanks; moving to the relevant repo.

… looking at shadow-maint/shadow#471, it seems we should not be referring to the variable directly anyway (on recent enough versions?). And it seems weird to me to modify the value inside our private get_range, long after all API calls have returned.

@mtrmac mtrmac transferred this issue from containers/skopeo Feb 17, 2025
@mtrmac mtrmac changed the title Skopeo build issue Multiple definitions of shadow_logfd Feb 17, 2025
@mtrmac
Copy link
Collaborator

mtrmac commented Feb 20, 2025

Cc: @giuseppe

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

2 participants