Replies: 6 comments 16 replies
-
Ubuntu will not ship source tarballs with prebuild binaries. Ubuntu will not sign prebuild binaries. Introducing prebuild binaries, will force us to manually repack/recreate orig tarballs and exclude prebuild binaries. Please do not ship prebuild binaries in the source tarball. In Ubuntu, and any linux distribution, it is trivial to build stage3 bootloader during native s390x source build, but package it as an architecture independent binary package (_all.deb / .noarch.rpm) such that tooling on any other architecture can use it directly. For Ubuntu, it will mean that the signed bootloader portions will be packaged as architecture independent binary package. If cross-toolchain is available, which one can detect in a universal manner, one can cross-build stage3 portions on non-s390x host architectures if you so wish. This is done often by packages such as qemu & grub2 if you want some working examples. On Ubuntu, installing cross-toolchains / build-depending on cross-toolchains is trivial. Also, we ensure that compilers are available under the same names as either native or cross version, further simplifying build process. In Ubuntu crossbuild-essential-s390x is available on amd64 arm64 ppc64el => meaning all supported 64bit arches can cross-compile code for s390x. And library dependencies can be installed with multiarch. For example, However, I don't see how this will be required here. Again, distributions will likely expect to build things natively as needed, and make them installable where needed at runtime. Meaning stage3.bin will be build with native toolchain on s390x, Userspace tooling will be build with native toolchains on x86, arm64, ppc64le, s390x. Which once installed will reuse the identical s390x's build produced stage3.bin build + native tooling on each arch. There is no need to prebuild anything. In general, Ubuntu policy is to build with debug symbols, strip them from binaries, and ship them in dbgsyms package. If ubuntu .ddeb / debug symbols service are missing any debug symbols for any portions of s390-tools please open a separate bug report, with hints as to where we may have lost them, and we will fix that to introduce them. |
Beta Was this translation helpful? Give feedback.
-
For some RPM distributions, relying on |
Beta Was this translation helpful? Give feedback.
-
In Fedora we can cross-compile the s390x bits on non-s390x arches, but that's not possible in RHEL. Also we can't combine artifacts from various arches into a single arch rpm. |
Beta Was this translation helpful? Give feedback.
-
I think the ask is to provide .noarch.rpm / _all.deb (single or multiple as needed for signing) which will contain:
On x86, arm64 provide .x86_64.rpm / .aarch64.rpm / _amd64.deb / _arm64.deb which will contain:
Adjust paths to taste (/lib vs /usr/lib, sbin vs usr/sbin vs usr/bin). At least in Launchpad it is trivial for us to indicate that we want .noarch.rpm / _all.deb to be produced by the s390x arch build (as that's were we will sign stage3.bin as well). And it is trivial for us to limit s390-tools x86/arm build to just the desired tools. Hopefully koji has similar functionality, or it can be emulated by creating new src.rpm which only builds stage3*.bin. I think on ubuntu we will split out genprotimg-data & zipl into separate sub-packages. Because we try to route as little things via signing as possible. Which all should be transparent to the end user. |
Beta Was this translation helpful? Give feedback.
-
fyi, we've made a couple of changes to our build system with the latest release to hopefully simplify cross and non-s390x builds: 49937f4...e99b32c |
Beta Was this translation helpful? Give feedback.
-
Sounds like a good plan to me! I'm planning to add the following changes to s390-tools (highlighted in bold) - please check if this fits with your solution described above.
$ make -j
$ make install -j
$ # package the /usr/bin/genprotimg, etc. build artifacts in a .x86_64.rpm / .aarch64.rpm / _amd64.deb / _arm64.deb package
$ make -j # optionally -C genprotimg/boot
$ make install -j # optionally -C genprotimg/boot
$ # package the required genprotimg bootloader build artifacts in a .noarch.rpm / _all.deb @sharkcz |
Beta Was this translation helpful? Give feedback.
-
We're currently working on changes to support the build of certain tools for and on x86 (or ARM) machines.
Most prominent tools would be
pvattest
,genprotimg
,zgetdump
. These tools would allow to prepare and analyzeboot images (or dumps) in the realm of IBM Secure Execution on a trusted environment such as the laptop of
an admin (which would be an x86 or ARM (e.g. Mac) machine). The idea is to limit the build targets depending on
the defined or detected host architecture.
The main issue we're facing at the moment is the build of the bootloader binaries (stage3a/b for genprotimg).
Those have to be built for s390x no matter what host machine is targeted. So, running the build on x86 should build
the genprotimg tool for x86 and the bootloader files for s390x. This however requires a cross building setup, which
can get complicated to set up.
Our current idea to solve this problem would be to ship pre-built binaries with each release. Recent changes to the
build system would already allow to include pre-build binaries.
@sharkcz @xnox @frank-heimes @ngueorguiev How would packaging look like with this approach? Do you have
other ideas to solve this? Or would a partial cross-compilation as described already work for everyone and we
wouldn't need to handle this in a special way?
On that note, we couldn't find debug info packages for the bootloaders on any distro. Which is probably due to the
fact that we strip those information away during build. Maybe a pre-built approach could solve this issue, too.
Beta Was this translation helpful? Give feedback.
All reactions