diff options
Diffstat (limited to 'results/classifier/108/none/1886793')
| -rw-r--r-- | results/classifier/108/none/1886793 | 398 |
1 files changed, 398 insertions, 0 deletions
diff --git a/results/classifier/108/none/1886793 b/results/classifier/108/none/1886793 new file mode 100644 index 000000000..bb8bf0719 --- /dev/null +++ b/results/classifier/108/none/1886793 @@ -0,0 +1,398 @@ +permissions: 0.313 +network: 0.294 +graphic: 0.290 +performance: 0.250 +debug: 0.249 +other: 0.242 +files: 0.220 +device: 0.217 +KVM: 0.217 +semantic: 0.190 +vnc: 0.188 +boot: 0.165 +socket: 0.147 +PID: 0.125 + +"go install" command fails while running inside s390x docker container on x86_64 host using qemu + +Steps to reproduce the issue: + +Register x86_64 host with the latest qemu-user-static. +docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + +Build the following Docker Image using following Dockerfile.s390x using command docker build -t test/crossbuild:latest-s390x -f Dockerfile.s390x . + +Dockerfile.s390x + +FROM alpine:3.11 as qemu + +ARG QEMU_VERSION=5.0.0-2 +ARG QEMU_ARCHS="s390x" + +RUN apk --update add curl + +#Enable non-native runs on amd64 architecture hosts +RUN for i in ${QEMU_ARCHS}; do curl -L https://github.com/multiarch/qemu-user-static/releases/download/v${QEMU_VERSION}/qemu-${i}-static.tar.gz | tar zxvf - -C /usr/bin; done +RUN chmod +x /usr/bin/qemu-* + +FROM s390x/golang:1.14.2-alpine3.11 +MAINTAINER LoZ Open Source Ecosystem (https://www.ibm.com/developerworks/community/groups/community/lozopensource) + +ARG MANIFEST_TOOL_VERSION=v1.0.2 + +#Enable non-native builds of this image on an amd64 hosts. +#This must be the first RUN command in this file! +COPY --from=qemu /usr/bin/qemu-*-static /usr/bin/ + +#Install su-exec for use in the entrypoint.sh (so processes run as the right user) +#Install bash for the entry script (and because it's generally useful) +#Install curl to download glide +#Install git for fetching Go dependencies +#Install ssh for fetching Go dependencies +#Install mercurial for fetching go dependencies +#Install wget since it's useful for fetching +#Install make for building things +#Install util-linux for column command (used for output formatting). +#Install grep and sed for use in some Makefiles (e.g. pulling versions out of glide.yaml) +#Install shadow for useradd (it allows to use big UID) +RUN apk update && apk add --no-cache su-exec curl bash git openssh mercurial make wget util-linux tini file grep sed shadow +RUN apk upgrade --no-cache + +#Disable ssh host key checking +RUN echo 'Host *' >> /etc/ssh/ssh_config \ + && echo ' StrictHostKeyChecking no' >> /etc/ssh/ssh_config + +#Disable cgo so that binaries we build will be fully static. +ENV CGO_ENABLED=0 + +#Recompile the standard library with cgo disabled. This prevents the standard library from being +#marked stale, causing full rebuilds every time. +RUN go install -v std + +#Install glide +RUN go get github.com/Masterminds/glide +ENV GLIDE_HOME /home/user/.glide + +#Install dep +RUN go get github.com/golang/dep/cmd/dep + +#Install ginkgo CLI tool for running tests +RUN go get github.com/onsi/ginkgo/ginkgo + +#Install linting tools. +RUN wget -O - -q https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s v1.20.0 +RUN golangci-lint --version + +#Install license checking tool. +RUN go get github.com/pmezard/licenses + +#Install tool to merge coverage reports. +RUN go get github.com/wadey/gocovmerge + +#Install CLI tool for working with yaml files +RUN go get github.com/mikefarah/yaml + +#Delete all the Go sources that were downloaded, we only rely on the binaries +RUN rm -rf /go/src/* + +#Install vgo (should be removed once we take Go 1.11) +RUN go get -u golang.org/x/vgo + +#Ensure that everything under the GOPATH is writable by everyone +RUN chmod -R 777 $GOPATH + +RUN curl -sSL https://github.com/estesp/manifest-tool/releases/download/${MANIFEST_TOOL_VERSION}/manifest-tool-linux-s390x > manifest-tool && \ + chmod +x manifest-tool && \ + mv manifest-tool /usr/bin/ + +COPY entrypoint.sh /usr/local/bin/entrypoint.sh +ENTRYPOINT ["/sbin/tini", "--", "/usr/local/bin/entrypoint.sh"] + + + + +The build just hangs at RUN go install -v std + + + +Also, while running the same command inside s390x container on x86_64 host, error Illegal instruction (core dumped) is thrown. +Register x86_64 host with the latest qemu-user-static. +docker run --rm --privileged multiarch/qemu-user-static --reset -p yes + +docker run -it -v /home/test/qemu-s390x-static:/usr/bin/qemu-s390x-static s390x/golang:1.14.2-alpine3.11 + +Inside s390x container: + +apk update && apk add --no-cache su-exec curl bash git openssh mercurial make wget util-linux tini file grep sed shadow +apk upgrade --no-cache + +#Disable ssh host key checking +echo 'Host *' >> /etc/ssh/ssh_config +echo ' StrictHostKeyChecking no' >> /etc/ssh/ssh_config + +#Disable cgo so that binaries we build will be fully static. +export CGO_ENABLED=0 + +#Recompile the standard library with cgo disabled. This prevents the standard library from being +#marked stale, causing full rebuilds every time. +go install -v std +Describe the results you re +This gives the following error: +Illegal instruction (core dumped) + + + +Environment: +x86_64 Ub18.04 4.15.0-101-generic Ubuntu SMP x86_64 GNU/Linux + +QEMU user static version: 5.0.0-2 + +Container application: Docker + +Client: Docker Engine - Community + Version: 19.03.11 + API version: 1.40 + Go version: go1.13.10 + Git commit: 42e35e61f3 + Built: Mon Jun 1 09:12:22 2020 + OS/Arch: linux/amd64 + Experimental: false + +Server: Docker Engine - Community + Engine: + Version: 19.03.11 + API version: 1.40 (minimum version 1.12) + Go version: go1.13.10 + Git commit: 42e35e61f3 + Built: Mon Jun 1 09:10:54 2020 + OS/Arch: linux/amd64 + Experimental: false + containerd: + Version: 1.2.13 + GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429 + runc: + Version: 1.0.0-rc10 + GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd + docker-init: + Version: 0.18.0 + GitCommit: fec3683 + +Additional information optionally: +When I build the same Dockerfile.s390x on an s390x machine, it is built successfully. + +One more thing which I tried: +I installed qemu on x86 Ubuntu host with apt-get install. +Extracted s390x go 1.14.2 binaries on the same. Ran the following commands: + +root:~ wget -q https://storage.googleapis.com/golang/go1.14.2.linux-s390x.tar.gz +root@:~# chmod ugo+r go1.14.2.linux-s390x.tar.gz +root@:~# rm -rf /usr/local/go /usr/bin/go +root@:~# tar -C /usr/local -xzf go1.14.2.linux-s390x.tar.gz +root@:~# ln -sf /usr/local/go/bin/go /usr/bin/ +root@:~# ln -sf /usr/local/go/bin/gofmt /usr/bin/ +root@:~# ln -sf /usr/bin/gcc /usr/bin/s390x-linux-gnu-gcc +root@:~# go version +/lib/ld64.so.1: No such file or directory +root@:~# qemu-s390x /usr/bin/go version +/lib/ld64.so.1: No such file or directory + +Could you try to reproduce the problem with the latest version of QEMU from git repo? + +Cloned qemu source code, checked out latest tag v5.0.0, built and installed the same on x86 Ubuntu host using "make" and "make install". + +root:~# qemu-s390x --version +qemu-s390x version 5.0.0 (v5.0.0-dirty) +Copyright (c) 2003-2020 Fabrice Bellard and the QEMU Project developers + + +root:~# wget -q https://storage.googleapis.com/golang/go1.14.2.linux-s390x.tar.gz +root:~# chmod ugo+r go1.14.2.linux-s390x.tar.gz +root:~# rm -rf /usr/local/go /usr/bin/go +root:~# tar -C /usr/local -xzf go1.14.2.linux-s390x.tar.gz +root:~# ln -sf /usr/local/go/bin/go /usr/bin/ +root:~# ln -sf /usr/local/go/bin/gofmt /usr/bin/ +root:~# ln -sf /usr/bin/gcc /usr/bin/s390x-linux-gnu-gcc +root:~# go version +-bash: /usr/bin/go: cannot execute binary file: Exec format error +root:~# qemu-s390x /usr/bin/go version +/lib/ld64.so.1: No such file or directory + + +If you install go directly in your host system you must also install the libraries of s390x somewhere (except if it statically linked). + +The easiest way to test this is to install debian chroot, with something like: + +Check binftm_misc is configured: + +# cat /proc/sys/fs/binfmt_misc/qemu-s390x +enabled +interpreter //qemu-s390x +flags: OC +offset 0 +magic 7f454c4602020100000000000000000000020016 +mask ffffffffffffff00fffffffffffffffffffeffff + +Then you can install a debian sid system into a directory: + +# debootstrap --arch=s390x --foreign sid chroot-s390x/ +# cp .../qemu-s390x chroot-s390x/ +# sudo chroot chroot-s390x/ /debootstrap/debootstrap --second-stage + +And then you can use it with: + +# sudo chroot s390x-chroot/ +# uname -m +s390x +# apt install golang-go +... + +I will try the same and will report here soon. + +What about the issue with getting a go s390x environment inside and s390x container running on x86 host using qemu-user-static? (This problem is also mentioned in the main issue above. This is the ultimate target which needs to be achieved, I want to be able to build an s390x docker image with go installations inside on an x86 host, rest of the stuff I did for debugging purposes only) + +I ran the following commands: + +#apt install debootstrap +#debootstrap_dir=debootstrap +#debootstrap --arch=s390x --foreign sid "$debootstrap_dir" +#sudo mkdir -p "${debootstrap_dir}/usr/bin" +#sudo cp "$(which qemu-s390x-static)" "${debootstrap_dir}/usr/bin" +#sudo cp "$(which qemu-s390x)" "${debootstrap_dir}/usr/bin" + +All commands above were successful except below one: + +#sudo chroot "$debootstrap_dir" /debootstrap/debootstrap --second-stage +Gave following error: +W: Failure trying to run: dpkg --force-depends --install /var/cache/apt/archives/base-passwd_3.5.47_s390x.deb +W: See //debootstrap/debootstrap.log for details (possibly the package libgcc1 is at fault) + +Anyway, I proceeded: +# uname -m +s390x + +# apt install golang-go +Reading package lists... Done +Building dependency tree... Done +You might want to run 'apt --fix-broken install' to correct these. +The following packages have unmet dependencies: + dpkg : Conflicts: dpkg:none + dpkg:none : Conflicts: dpkg but 1.20.5 is to be installed + golang-go : Depends: golang-1.14-go but it is not going to be installed + Depends: golang-src (>= 2:1.14~2) but it is not going to be installed + libgcc1 : Depends: gcc-10-base (= 10.1.0-1) but 10.1.0-6+b1 is to be installed +E: Unmet dependencies. Try 'apt --fix-broken install' with no packages (or specify a solution). + +# apt --fix-broken install +Reading package lists... Done +Building dependency tree... Done +Correcting dependencies... Done +The following packages will be REMOVED: + dpkg:none libgcc1 +0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded. +1 not fully installed or removed. +After this operation, 85.0 kB disk space will be freed. +Do you want to continue? [Y/n] y +perl: warning: Setting locale failed. +perl: warning: Please check that your locale settings: + LANGUAGE = (unset), + LC_ALL = (unset), + LANG = "en_US.UTF-8" + are supported and installed on your system. +perl: warning: Falling back to the standard locale ("C"). +/usr/bin/locale: Cannot set LC_CTYPE to default locale: No such file or directory +/usr/bin/locale: Cannot set LC_MESSAGES to default locale: No such file or directory +/usr/bin/locale: Cannot set LC_ALL to default locale: No such file or directory +dpkg: error: parsing file '/var/lib/dpkg/status' near line 3918 package 'dpkg': + duplicate value for 'Package' field +E: Sub-process dpkg --set-selections returned an error code (2) +E: Couldn't record the approved state changes as dpkg selection states + + + +Any update on this? +I tried the latest version of qemu-user-static, it still fails with the same error. + +Le 23/11/2020 à 12:03, Nirman Narang a écrit : +> Any update on this? +> I tried the latest version of qemu-user-static, it still fails with the same error. +> + +It works fine for me. Perhaps your chroot has been corrupted by your +previous attempts + + +Let me try again using the following commands on a fresh x86 host. + +#apt install debootstrap +#debootstrap_dir=debootstrap +#debootstrap --arch=s390x --foreign sid "$debootstrap_dir" +#sudo mkdir -p "${debootstrap_dir}/usr/bin" +#sudo cp "$(which qemu-s390x-static)" "${debootstrap_dir}/usr/bin" +#sudo cp "$(which qemu-s390x)" "${debootstrap_dir}/usr/bin"#sudo chroot "$debootstrap_dir" /debootstrap/debootstrap --second-stage + +Here is the output of the steps I tried: + +root@11:~# cat /proc/sys/fs/binfmt_misc/qemu-s390x +enabled +interpreter /usr/bin/qemu-s390x-static +flags: F +offset 0 +magic 7f454c4602020100000000000000000000020016 +mask ffffffffffffff00fffffffffffffffffffeffff + + +debootstrap --arch=s390x --foreign sid chroot-s390x_dir + +cp -f /usr/bin/qemu-s390x-static /root/chroot-s390x_dir/usr/bin/ + +chmod +x /root/chroot-s390x_dir/usr/bin/qemu-s390x-static + +chroot chroot-s390x_dir /debootstrap/debootstrap --second-stage --verbose + +chroot chroot-s390x_dir/ + + +root@11:/# uname -a +Linux 4.15.0-123-generic #126-Ubuntu SMP Wed Oct 21 09:40:11 UTC 2020 s390x GNU/Linux + +Then tried to install the golang version mentioned below: +golang | 2:1.15~1 | http://deb.debian.org/debian sid/main s390x Packages + + +root@11:/# go version +Illegal instruction (core dumped) + +root@11:/# go version -v +Segmentation fault (core dumped) + +The error is the same as the one faced while implementing the s390x container using qemu-user-static on x86 machine with go install commands as mentioned in the main issue above. + +Any update on this? +Tried on fresh env, Illegal instruction (core dumped), and Segmentation fault (core dumped) errors are still thrown with go commands. + +Which qemu version do you end up using? "/usr/bin/qemu-s390x-static" *usually* refers to the one provided by your distro, not your custom build. + +FWIW, I just installed go under Fedora 32 (which uses a slightly older version of go): + +[root@atomic-00 ~]# uname -a +Linux atomic-00 5.8.11-200.fc32.s390x #1 SMP Wed Sep 23 13:36:15 UTC 2020 s390x s390x s390x GNU/Linux + +[root@atomic-00 ~]# go version +go version go1.14.13 linux/s390x +[root@atomic-00 ~]# go version -v +go version go1.14.13 linux/s390x + + +As Laurent also cannot reproduce, maybe double check the QEMU you end up using is the right one? + +Using latest greatest go from https://golang.org/dl/ + +[root@atomic-00 hello]# /usr/local/go/bin/go version +go version go1.15.7 linux/s390x + + +I used the command "docker run --rm --privileged multiarch/qemu-user-static --reset -p yes". +This pulls the latest one automatically. + +[Expired for QEMU because there has been no activity for 60 days.] + |