Bug 1391932 - [skopeo][ FTBFS due golang deficiency on ppc64
Summary: [skopeo][ FTBFS due golang deficiency on ppc64
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: skopeo
Version: 24
Hardware: ppc64
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Antonio Murdaca
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard: AcceptedFreezeException
Depends On:
Blocks: PPCTracker F25FinalFreezeException
TreeView+ depends on / blocked
 
Reported: 2016-11-04 12:27 UTC by Dan Horák
Modified: 2017-04-28 09:58 UTC (History)
11 users (show)

Fixed In Version: skopeo-0.1.14-5.git550a480.fc24
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2017-04-28 09:58:01 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Dan Horák 2016-11-04 12:27:14 UTC
skopeo builds fail on ppc64 with
...
+ export GOPATH=/builddir/build/BUILD/skopeo-550a480173090c9b94ac3bce48953b338fa92e94:/builddir/build/BUILD/skopeo-550a480173090c9b94ac3bce48953b338fa92e94/vendor:/usr/share/gocode
+ GOPATH=/builddir/build/BUILD/skopeo-550a480173090c9b94ac3bce48953b338fa92e94:/builddir/build/BUILD/skopeo-550a480173090c9b94ac3bce48953b338fa92e94/vendor:/usr/share/gocode
+ make binary-local docs
go build -ldflags "-X main.gitCommit=363a82115758b45d0355459d426659b855d5383b" -gcflags "" -o skopeo ./cmd/skopeo
# github.com/containers/image/signature
vendor/src/github.com/containers/image/signature/mechanism.go:28: undefined: gpgme.Context
Makefile:50: recipe for target 'binary-local' failed
make: *** [binary-local] Error 2

I've discussed the issue with our golang maintainer and the reason should be a deficiency of golang on ppc64 when interfacing the native libraries. Solution would be to drop ppc64 from ExclusiveArch tag list.

There is also a docker <-> skopeo dependency in the distro and dropping ppc64 here will only help, because even is docker is built on ppc64le only.


Version-Release number of selected component (if applicable):
skopeo-0.1.14-4.git550a480.fc25
golang-1.7.1-2.fc25.ppc64

Comment 1 Fedora Blocker Bugs Application 2016-11-04 12:33:10 UTC
Proposed as a Freeze Exception for 25-final by Fedora user sharkcz using the blocker tracking app because:

 The missing ppc64le build of skopeo breaks deps in the ppc64le F-25 server compose.

Comment 2 Antonio Murdaca 2016-11-04 12:33:46 UTC
Miloslav do you know why that's failing?(seems related to gpgme) 

If gpgme could be fixed I won't just drop ppc64

Comment 3 Dan Horák 2016-11-04 12:44:39 UTC
Antonio, I was told it's a golang issue, not gpgme. And dropping ppc64 causes no harm to us.

btw, we need something like

diff --git a/skopeo.spec b/skopeo.spec
index d2b7c83..8354b3b 100644
--- a/skopeo.spec
+++ b/skopeo.spec
@@ -40,7 +40,9 @@ Patch0:         skopeo-go142.patch
 %endif
 
 # e.g. el6 has ppc64 arch without gcc-go, so EA tag is required
-ExclusiveArch:  %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
+#ExclusiveArch:  %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm}}
+# manually listed arches due https://bugzilla.redhat.com/show_bug.cgi?id=1391932 (removed ppc64)
+ExclusiveArch:  %{?go_arches:%{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}}%{!?go_arches:%{ix86} x86_64 %{arm}}
 %if 0%{?fedora}
 BuildRequires: go-srpm-macros
 BuildRequires: compiler(go-compiler)

Comment 4 Jakub Čajka 2016-11-04 12:46:14 UTC
(In reply to Antonio Murdaca from comment #2)
> Miloslav do you know why that's failing?(seems related to gpgme) 
> 
> If gpgme could be fixed I won't just drop ppc64

It is caused by lack of support of Cgo and external linking in golang on ppc64.
I hope that I'm not wrong here as it is long time since I have been playing with those on BE and they were not working/supported(thus they are disabled by default in Fedora's golang).

Comment 5 Dan Horák 2016-11-04 12:52:41 UTC
for the record

[sharkcz@tyan-openpower-01 skopeo-550a480173090c9b94ac3bce48953b338fa92e94]$ export CGO_ENABLED=1
[sharkcz@tyan-openpower-01 skopeo-550a480173090c9b94ac3bce48953b338fa92e94]$ go build -v -ldflags "-X main.gitCommit=116756e71d47e30100d963e1a24fe0a9b8eddfe8" -gcflags "" -o skopeo ./cmd/skopeo
github.com/docker/engine-api/types/network
github.com/Sirupsen/logrus
github.com/opencontainers/image-spec/specs-go
github.com/containers/image/directory/explicitfilepath
github.com/docker/distribution/digest
github.com/docker/distribution/uuid
golang.org/x/net/context
github.com/opencontainers/runc/libcontainer/user
gopkg.in/yaml.v2
github.com/docker/engine-api/types/strslice
github.com/docker/go-units
github.com/docker/engine-api/types/blkiodev
github.com/docker/engine-api/types/versions
github.com/docker/engine-api/types/swarm
runtime/cgo
github.com/docker/engine-api/types/time
github.com/containers/image/version
github.com/imdario/mergo
k8s.io/kubernetes/pkg/util/errors
k8s.io/kubernetes/pkg/util/homedir
k8s.io/kubernetes/pkg/util/sets
gopkg.in/cheggaaa/pb.v1
github.com/projectatomic/skopeo/version
github.com/urfave/cli
github.com/opencontainers/image-spec/specs-go/v1
github.com/docker/engine-api/types/filters
github.com/docker/docker/pkg/homedir
github.com/docker/distribution/reference
github.com/containers/image/docker/reference
github.com/docker/engine-api/types/reference
github.com/containers/image/docker/policyconfiguration
github.com/containers/image/types
os/user
net
github.com/mtrmac/gpgme
github.com/ghodss/yaml
github.com/golang/glog
net/http/httptrace
net/textproto
github.com/docker/engine-api/types/registry
crypto/x509
golang.org/x/net/proxy
github.com/docker/go-connections/nat
github.com/docker/engine-api/types/container
mime/multipart
github.com/docker/engine-api/types
crypto/tls
github.com/docker/libtrust
net/http
github.com/docker/go-connections/tlsconfig
github.com/containers/image/manifest
github.com/containers/image/image
github.com/containers/image/oci/layout
github.com/containers/image/directory
github.com/gorilla/context
github.com/docker/distribution/registry/client/transport
k8s.io/kubernetes/pkg/util/net
github.com/docker/distribution/registry/api/errcode
github.com/docker/go-connections/sockets
net/http/httputil
github.com/gorilla/mux
github.com/docker/engine-api/client/transport
github.com/docker/distribution/context
github.com/docker/distribution/registry/api/v2
github.com/docker/engine-api/client/transport/cancellable
github.com/docker/engine-api/client
github.com/docker/distribution
github.com/docker/distribution/registry/storage/cache
github.com/docker/distribution/registry/storage/cache/memory
github.com/docker/distribution/registry/client
github.com/containers/image/docker/daemon
github.com/containers/image/docker
github.com/containers/image/openshift
github.com/containers/image/transports
github.com/containers/image/signature
github.com/containers/image/copy
_/home/sharkcz/skopeo/skopeo-550a480173090c9b94ac3bce48953b338fa92e94/cmd/skopeo
# _/home/sharkcz/skopeo/skopeo-550a480173090c9b94ac3bce48953b338fa92e94/cmd/skopeo
/usr/lib/golang/pkg/tool/linux_ppc64/link: $WORK/_/home/sharkcz/skopeo/skopeo-550a480173090c9b94ac3bce48953b338fa92e94/cmd/skopeo.a(_go_.o): cannot use dynamic imports with -d flag
/usr/lib/golang/pkg/tool/linux_ppc64/link: $WORK/runtime/cgo.a(_go_.o): cannot use dynamic imports with -d flag
/usr/lib/golang/pkg/tool/linux_ppc64/link: $WORK/github.com/mtrmac/gpgme.a(_go_.o): cannot use dynamic imports with -d flag
/usr/lib/golang/pkg/tool/linux_ppc64/link: $WORK/net.a(_go_.o): cannot use dynamic imports with -d flag
/usr/lib/golang/pkg/tool/linux_ppc64/link: $WORK/os/user.a(_go_.o): cannot use dynamic imports with -d flag

Comment 6 Dan Horák 2016-11-04 13:00:35 UTC
(In reply to Jakub Čajka from comment #4)
> (In reply to Antonio Murdaca from comment #2)
> > Miloslav do you know why that's failing?(seems related to gpgme) 
> > 
> > If gpgme could be fixed I won't just drop ppc64
> 
> It is caused by lack of support of Cgo and external linking in golang on
> ppc64.
> I hope that I'm not wrong here as it is long time since I have been playing
> with those on BE and they were not working/supported(thus they are disabled
> by default in Fedora's golang).

Going to build new golang with Cgo and external linking enabled on ppc64, stay tuned ...

Comment 7 Antonio Murdaca 2016-11-04 13:06:25 UTC
(In reply to Dan Horák from comment #6)
> (In reply to Jakub Čajka from comment #4)
> > (In reply to Antonio Murdaca from comment #2)
> > > Miloslav do you know why that's failing?(seems related to gpgme) 
> > > 
> > > If gpgme could be fixed I won't just drop ppc64
> > 
> > It is caused by lack of support of Cgo and external linking in golang on
> > ppc64.
> > I hope that I'm not wrong here as it is long time since I have been playing
> > with those on BE and they were not working/supported(thus they are disabled
> > by default in Fedora's golang).
> 
> Going to build new golang with Cgo and external linking enabled on ppc64,
> stay tuned ...

Does that mean I should hold updating skopeo to fix this BZ?

Comment 8 Dan Horák 2016-11-04 13:50:47 UTC
http://ppc.koji.fedoraproject.org/koji/taskinfo?taskID=3859365 is golang rebuilt with

diff --git a/golang.spec b/golang.spec
index 4e30243..34387a2 100644
--- a/golang.spec
+++ b/golang.spec
@@ -27,14 +27,14 @@
 # Golang build options.
 
 # Build golang using external/internal(close to cgo disabled) linking.
-%ifarch %{ix86} x86_64 ppc64le %{arm} aarch64 s390x
+%ifarch %{ix86} x86_64 ppc64 ppc64le %{arm} aarch64 s390x
 %global external_linker 1
 %else
 %global external_linker 0
 %endif
 
 # Build golang with cgo enabled/disabled(later equals more or less to internal linking).
-%ifarch %{ix86} x86_64 ppc64le %{arm} aarch64 s390x
+%ifarch %{ix86} x86_64 ppc64 ppc64le %{arm} aarch64 s390x
 %global cgo_enabled 1
 %else
 %global cgo_enabled 0

and there is no change, either "undefined: gpgme.Context" with defaults, and the "cannot use dynamic imports with -d flag" message when CGO_ENABLED=1 is set.

Antonio, please drop ppc64 from the arch list until there is some progress on the golang front.

Comment 9 Fedora Update System 2016-11-04 15:49:22 UTC
skopeo-0.1.14-5.git550a480.fc24 has been submitted as an update to Fedora 24. https://bodhi.fedoraproject.org/updates/FEDORA-2016-ed611fb9ab

Comment 10 Fedora Update System 2016-11-05 03:37:22 UTC
skopeo-0.1.14-5.git550a480.fc24 has been pushed to the Fedora 24 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2016-ed611fb9ab

Comment 11 Antonio Murdaca 2016-11-06 10:18:50 UTC
Everything depending on skopeo (including docker) is failing the dependency check on ppc64. Is that expected?

Comment 12 Geoffrey Marr 2016-11-08 01:05:51 UTC
Discussed during the 2016-11-07 blocker review meeting: [1]

The decision to delay the classification of this as an AcceptedFreezeException was made as we are unsure of all the details surrounding this one; we will look into the issue and get back to this bug at the next Blocker-Review-Meeting.

[1] https://meetbot.fedoraproject.org/fedora-blocker-review/2016-11-07/f25-blocker-review.2016-11-07-17.01.txt

Comment 13 Dan Horák 2016-11-10 10:03:52 UTC
(In reply to Geoffrey Marr from comment #12)
> Discussed during the 2016-11-07 blocker review meeting: [1]
> 
> The decision to delay the classification of this as an
> AcceptedFreezeException was made as we are unsure of all the details
> surrounding this one; we will look into the issue and get back to this bug
> at the next Blocker-Review-Meeting.
> 
> [1]
> https://meetbot.fedoraproject.org/fedora-blocker-review/2016-11-07/f25-
> blocker-review.2016-11-07-17.01.txt

As confirmed with the latest pc64le compose the skopeo-0.1.14-5.git550a480.fc25 build is required for successful Server compose for F-25 ppc64le. The only change between -4 (that's in f25 now) and -5 is omitting ppc64 as a build arch for skopeo.

Comment 14 Dan Horák 2016-11-10 10:04:56 UTC
(In reply to Dan Horák from comment #13)
> (In reply to Geoffrey Marr from comment #12)
> > Discussed during the 2016-11-07 blocker review meeting: [1]
> > 
> > The decision to delay the classification of this as an
> > AcceptedFreezeException was made as we are unsure of all the details
> > surrounding this one; we will look into the issue and get back to this bug
> > at the next Blocker-Review-Meeting.
> > 
> > [1]
> > https://meetbot.fedoraproject.org/fedora-blocker-review/2016-11-07/f25-
> > blocker-review.2016-11-07-17.01.txt
> 
> As confirmed with the latest pc64le compose the
> skopeo-0.1.14-5.git550a480.fc25 build is required for successful Server
> compose for F-25 ppc64le. The only change between -4 (that's in f25 now) and
> -5 is omitting ppc64 as a build arch for skopeo.

There is a docker-anaconda-addon -> docker -> skopeo-containers depency chain.

Comment 15 Stephen Gallagher 2016-11-11 13:24:48 UTC
+1 FE since it prevents creation of non-blocking media.

Comment 16 Fedora Update System 2016-11-12 23:55:15 UTC
skopeo-0.1.14-5.git550a480.fc24 has been pushed to the Fedora 24 stable repository. If problems still persist, please make note of it in this bug report.

Comment 17 Dan Horák 2016-11-15 11:07:24 UTC
f25 update is https://bodhi.fedoraproject.org/updates/FEDORA-2016-5b67a15de6

Comment 18 Petr Schindler 2016-11-15 12:13:25 UTC
I'm also +1 FE.

Comment 19 Kamil Páral 2016-11-15 12:14:22 UTC
+1 FE, marking as accepted.

Comment 20 Dan Horák 2017-04-28 09:58:01 UTC
Closing F-25 bug.


Note You need to log in before you can comment on or make changes to this bug.