Note: This is a public test instance of Red Hat Bugzilla. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback at bugzilla.redhat.com.
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.