For focal the commit d14e7593cc6 (https://github.com/ibm-s390-linux/s390-tools/commit/d14e7593cc6380911ca42b09e11c53477ae13d5c) does not properly build and the logs show a few errors: https://launchpadlibrarian.net/723098720/buildlog_ubuntu-focal-s390x.s390-tools_2.12.0-0ubuntu3.8_BUILDING.txt.gz (search for "error:") " utils/crypto.c: In function ‘x509_armonk_locality_fixup’: utils/crypto.c:770:22: error: passing argument 1 of ‘X509_NAME_dup’ discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers] 770 | ret = X509_NAME_dup(name); | ^~~~ In file included from /usr/include/openssl/pem.h:17, from utils/crypto.c:17: /usr/include/openssl/x509.h:482:12: note: expected ‘X509_NAME *’ {aka ‘struct X509_name_st *’} but argument is of type ‘const X509_NAME *’ {aka ‘const struct X509_name_st *’} 482 | X509_NAME *X509_NAME_dup(X509_NAME *xn); | ^~~~~~~~~~~~~ utils/crypto.c: In function ‘quirk_X509_STORE_ctx_get1_crls’: utils/crypto.c:888:8: error: implicit declaration of function ‘Pv_X509_STORE_CTX_get1_crls’; did you mean ‘X509_STORE_CTX_get1_crls’? [-Werror=implicit-function-declaration] 888 | ret = Pv_X509_STORE_CTX_get1_crls(ctx, subject); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ | X509_STORE_CTX_get1_crls utils/crypto.c:888:8: error: nested extern declaration of ‘Pv_X509_STORE_CTX_get1_crls’ [-Werror=nested-externs] utils/crypto.c:888:6: error: assignment to ‘STACK_OF_X509_CRL_autoptr’ {aka ‘struct stack_st_X509_CRL *’} from ‘int’ makes pointer from integer without a cast [-Werror=int-conversion] 888 | ret = Pv_X509_STORE_CTX_get1_crls(ctx, subject); | ^ utils/crypto.c:902:7: error: assignment to ‘STACK_OF_X509_CRL_autoptr’ {aka ‘struct stack_st_X509_CRL *’} from ‘int’ makes pointer from integer without a cast [-Werror=int-conversion] 902 | ret = Pv_X509_STORE_CTX_get1_crls(ctx, fixed_subject); | ^ utils/crypto.c:913:7: error: assignment to ‘STACK_OF_X509_CRL_autoptr’ {aka ‘struct stack_st_X509_CRL *’} from ‘int’ makes pointer from integer without a cast [-Werror=int-conversion] 913 | ret = Pv_X509_STORE_CTX_get1_crls(ctx, fixed_subject); | ^ utils/crypto.c:925:6: error: assignment to ‘STACK_OF_X509_CRL_autoptr’ {aka ‘struct stack_st_X509_CRL *’} from ‘int’ makes pointer from integer without a cast [-Werror=int-conversion] 925 | ret = Pv_X509_STORE_CTX_get1_crls(ctx, fixed_subject); | ^ " and " utils/crypto.c: In function ‘x509_armonk_locality_fixup’: utils/crypto.c:770:22: error: passing argument 1 of ‘X509_NAME_dup’ discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers] 770 | ret = X509_NAME_dup(name); | ^~~~ In file included from /usr/include/openssl/pem.h:17, from utils/crypto.c:17: /usr/include/openssl/x509.h:482:12: note: expected ‘X509_NAME *’ {aka ‘struct X509_name_st *’} but argument is of type ‘const X509_NAME *’ {aka ‘const struct X509_name_st *’} 482 | X509_NAME *X509_NAME_dup(X509_NAME *xn); | ^~~~~~~~~~~~~ utils/crypto.c: In function ‘quirk_X509_STORE_ctx_get1_crls’: utils/crypto.c:888:8: error: implicit declaration of function ‘Pv_X509_STORE_CTX_get1_crls’; did you mean ‘X509_STORE_CTX_get1_crls’? [-Werror=implicit-function-declaration] 888 | ret = Pv_X509_STORE_CTX_get1_crls(ctx, subject); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ | X509_STORE_CTX_get1_crls utils/crypto.c:888:8: error: nested extern declaration of ‘Pv_X509_STORE_CTX_get1_crls’ [-Werror=nested-externs] utils/crypto.c:888:6: error: assignment to ‘STACK_OF_X509_CRL_autoptr’ {aka ‘struct stack_st_X509_CRL *’} from ‘int’ makes pointer from integer without a cast [-Werror=int-conversion] 888 | ret = Pv_X509_STORE_CTX_get1_crls(ctx, subject); | ^ utils/crypto.c:902:7: error: assignment to ‘STACK_OF_X509_CRL_autoptr’ {aka ‘struct stack_st_X509_CRL *’} from ‘int’ makes pointer from integer without a cast [-Werror=int-conversion] 902 | ret = Pv_X509_STORE_CTX_get1_crls(ctx, fixed_subject); | ^ utils/crypto.c:913:7: error: assignment to ‘STACK_OF_X509_CRL_autoptr’ {aka ‘struct stack_st_X509_CRL *’} from ‘int’ makes pointer from integer without a cast [-Werror=int-conversion] 913 | ret = Pv_X509_STORE_CTX_get1_crls(ctx, fixed_subject); | ^ utils/crypto.c:925:6: error: assignment to ‘STACK_OF_X509_CRL_autoptr’ {aka ‘struct stack_st_X509_CRL *’} from ‘int’ makes pointer from integer without a cast [-Werror=int-conversion] 925 | ret = Pv_X509_STORE_CTX_get1_crls(ctx, fixed_subject); | ^ utils/crypto.c: In function ‘x509_armonk_locality_fixup’: utils/crypto.c:770:22: error: passing argument 1 of ‘X509_NAME_dup’ discards ‘const’ qualifier from pointer target type [-Werror=discarded-qualifiers] 770 | ret = X509_NAME_dup(name); | ^~~~ In file included from /usr/include/openssl/pem.h:17, from utils/crypto.c:17: /usr/include/openssl/x509.h:482:12: note: expected ‘X509_NAME *’ {aka ‘struct X509_name_st *’} but argument is of type ‘const X509_NAME *’ {aka ‘const struct X509_name_st *’} 482 | X509_NAME *X509_NAME_dup(X509_NAME *xn); | ^~~~~~~~~~~~~ utils/crypto.c: In function ‘quirk_X509_STORE_ctx_get1_crls’: utils/crypto.c:888:8: error: implicit declaration of function ‘Pv_X509_STORE_CTX_get1_crls’; did you mean ‘X509_STORE_CTX_get1_crls’? [-Werror=implicit-function-declaration] 888 | ret = Pv_X509_STORE_CTX_get1_crls(ctx, subject); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ | X509_STORE_CTX_get1_crls utils/crypto.c:888:8: error: nested extern declaration of ‘Pv_X509_STORE_CTX_get1_crls’ [-Werror=nested-externs] utils/crypto.c:888:6: error: assignment to ‘STACK_OF_X509_CRL_autoptr’ {aka ‘struct stack_st_X509_CRL *’} from ‘int’ makes pointer from integer without a cast [-Werror=int-conversion] 888 | ret = Pv_X509_STORE_CTX_get1_crls(ctx, subject); | ^ utils/crypto.c:902:7: error: assignment to ‘STACK_OF_X509_CRL_autoptr’ {aka ‘struct stack_st_X509_CRL *’} from ‘int’ makes pointer from integer without a cast [-Werror=int-conversion] 902 | ret = Pv_X509_STORE_CTX_get1_crls(ctx, fixed_subject); | ^ utils/crypto.c:913:7: error: assignment to ‘STACK_OF_X509_CRL_autoptr’ {aka ‘struct stack_st_X509_CRL *’} from ‘int’ makes pointer from integer without a cast [-Werror=int-conversion] 913 | ret = Pv_X509_STORE_CTX_get1_crls(ctx, fixed_subject); | ^ utils/crypto.c:925:6: error: assignment to ‘STACK_OF_X509_CRL_autoptr’ {aka ‘struct stack_st_X509_CRL *’} from ‘int’ makes pointer from integer without a cast [-Werror=int-conversion] 925 | ret = Pv_X509_STORE_CTX_get1_crls(ctx, fixed_subject); | ^ cc1: all warnings being treated as errors make[4]: *** [../../common.mak:237: utils/crypto.o] Error 1 " With that that the genprotimg build fails, genprotimg is omitted, but the rest of the package can be build and is finally packaged (without genprotimg). This does not happen while building the s390-tools version for jammy and mantic, so it's either another commit needed, or due to the different tool-chain. So this unfortunately means that a backport of d14e7593cc6 is needed for focal.