From 764f28b67e4989dded24d8826b2a9b0c6f02e1b4 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Mon, 18 Sep 2023 07:51:44 +0200 Subject: Add binary distribution package build configurations for xsd and libxsd --- libxsd/manifest | 91 ++++++++++++++++++++++++++++++++++++++++ xsd/manifest | 128 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 219 insertions(+) diff --git a/libxsd/manifest b/libxsd/manifest index c4b7536..f4abc04 100644 --- a/libxsd/manifest +++ b/libxsd/manifest @@ -17,3 +17,94 @@ build-warning-email: builds@codesynthesis.com depends: * build2 >= 0.16.0 depends: * bpkg >= 0.16.0 tests: libxsd-tests == $ + +# Binary distribution packages. Overall notes: +# +# - While the library itself doesn't depend on either libxerces-c of libexpat +# directly, the tests do and it makes sense to use the system versions where +# available. Similarly, we pass optimization options where appropriate. +# +# - Build as C++11 for maximum compatibility (this is a C++11 codebase). +# +# - For archives adjust metadata since this is a binless library. + +bindist-debian-builds: bindist +bindist-debian-build-include: linux_debian*-** +bindist-debian-build-include: linux_ubuntu*-** +bindist-debian-build-exclude: ** +bindist-debian-build-config: +\ ++bpkg.bindist.debian: ++bbot.bindist.upload: +b.create:config.cxx.std=c++11 +?sys:libxerces-c +?sys:libexpat +\ + +# Note that there is no Xerces-C++ package in RHEL (only in EPEL) so we +# have a separate configuration for RHEL. +# +bindist-fedora-builds: bindist +bindist-fedora-build-include: linux_fedora*-** +bindist-fedora-build-exclude: ** +bindist-fedora-build-config: +\ ++bpkg.bindist.fedora: ++bbot.bindist.upload: +b.create:config.cxx.std=c++11 +?sys:libxerces-c +?sys:libexpat +\ + +bindist-rhel-builds: bindist +bindist-rhel-build-include: linux_rhel*-** +bindist-rhel-build-exclude: ** +bindist-rhel-build-config: +\ ++bpkg.bindist.fedora: ++bbot.bindist.upload: +b.create:config.cxx.std=c++11 +?sys:libexpat +\ + +bindist-windows-builds: bindist +bindist-windows-build-include: windows*-** +bindist-windows-build-exclude: ** +bindist-windows-build-config: +\ ++bpkg.bindist.archive: ++bbot.bindist.upload: +bpkg.bindist.archive:--archive-build-meta=windows +bpkg.bindist.archive:config.install.relocatable=true +b.create:config.cc.coptions="/W2 /O2" +b.create:config.cxx.std=c++11 +\ + +bindist-macos-builds: bindist +bindist-macos-build-include: macos*-** +bindist-macos-build-exclude: ** +bindist-macos-build-config: +\ ++bpkg.bindist.archive: ++bbot.bindist.upload: +bpkg.bindist.archive:--archive-build-meta=macos +bpkg.bindist.archive:config.install.relocatable=true +b.create:config.cc.coptions="-Wall -O3" +b.create:config.cxx.std=c++11 +\ + +# Generic linux package (built using oldest Debian we support). +# +bindist-linux-builds: bindist +bindist-linux-build-include: linux_debian_11-gcc_10.2-bindist +bindist-linux-build-exclude: ** +bindist-linux-build-config: +\ ++bpkg.bindist.archive: ++bbot.bindist.upload: +bpkg.bindist.archive:--archive-build-meta=linux +bpkg.bindist.archive:config.install.relocatable=true +b.create:config.cxx.std=c++11 +?sys:libxerces-c +?sys:libexpat +\ diff --git a/xsd/manifest b/xsd/manifest index d764c91..909c058 100644 --- a/xsd/manifest +++ b/xsd/manifest @@ -22,3 +22,131 @@ depends: libxerces-c ^3.0.0 depends: * cli ^1.2.0- ? ($config.xsd.develop) tests: * xsd-tests == $ examples: * xsd-examples == $ + +# Binary distribution packages. Overall notes: +# +# - Link dependencies that don't come from system packages statically. +# +# - We suppress generating binary packages for dependecies (libcutl, +# libxsd-frontend) with --recursive=auto since they are linked statically. +# +# - For archives we strip the default compiler name from metadata since +# it's unimportant (we link the C++ runtime statically). + +# Note that the Xerces-C++ package is in the unsupported `universe` section on +# Ubuntu so we have a separate configuration for it where we build Xerces-C++ +# ourselves. +# +bindist-debian-builds: bindist +bindist-debian-build-include: linux_debian*-** +bindist-debian-build-exclude: ** +bindist-debian-build-config: +\ ++bpkg.bindist.debian: ++bbot.bindist.upload: +bpkg.bindist.debian:--recursive=auto +bpkg.create:config.bin.lib=static +bpkg.create:config.bin.liba.lib="shared static" +?sys:libxerces-c +\ + +bindist-ubuntu-builds: bindist +bindist-ubuntu-build-include: linux_ubuntu*-** +bindist-ubuntu-build-exclude: ** +bindist-ubuntu-build-config: +\ ++bpkg.bindist.debian: ++bbot.bindist.upload: +bpkg.bindist.debian:--recursive=auto +bpkg.create:config.bin.lib=static +bpkg.create:config.bin.liba.lib="shared static" +?sys:libicuuc +?sys:libicui18n +\ + +# Note that there is no Xerces-C++ package in RHEL (only in EPEL) so we +# have a separate configuration for RHEL. +# +bindist-fedora-builds: bindist +bindist-fedora-build-include: linux_fedora*-** +bindist-fedora-build-exclude: ** +bindist-fedora-build-config: +\ ++bpkg.bindist.fedora: ++bbot.bindist.upload: +bpkg.bindist.fedora:--recursive=auto +bpkg.create:config.bin.lib=static +bpkg.create:config.bin.liba.lib="shared static" +?sys:libxerces-c +\ + +bindist-rhel-builds: bindist +bindist-rhel-build-include: linux_rhel*-** +bindist-rhel-build-exclude: ** +bindist-rhel-build-config: +\ ++bpkg.bindist.fedora: ++bbot.bindist.upload: +bpkg.bindist.fedora:--recursive=auto +bpkg.create:config.bin.lib=static +bpkg.create:config.bin.liba.lib="shared static" +?sys:libicuuc +?sys:libicui18n +\ + +# Note: use static runtime since the DLL runtime is not universally +# pre-installed. +# +bindist-windows-builds: bindist +bindist-windows-build-include: windows*-** +bindist-windows-build-exclude: ** +bindist-windows-build-config: +\ ++bpkg.bindist.archive: ++bbot.bindist.upload: +bpkg.bindist.archive:--recursive=auto +bpkg.bindist.archive:--archive-lang-impl=cc= +bpkg.bindist.archive:config.install.relocatable=true +bpkg.create:config.bin.lib=static +bpkg.create:config.bin.liba.lib="shared static" +bpkg.create:config.cc.coptions+="/MT" +b.create:config.cc.coptions="/W2 /O2" +\ + +# Note that /usr/lib/libc++.1.dylib is pre-installed and appears to be +# reasonably compatible (even forward-compatible) so we don't bother +# with linking it statically for now. +# +bindist-macos-builds: bindist +bindist-macos-build-include: macos*-** +bindist-macos-build-exclude: ** +bindist-macos-build-config: +\ ++bpkg.bindist.archive: ++bbot.bindist.upload: +bpkg.bindist.archive:--recursive=auto +bpkg.bindist.archive:--archive-lang-impl=cc= +bpkg.bindist.archive:config.install.relocatable=true +bpkg.create:config.bin.lib=static +bpkg.create:config.bin.liba.lib="shared static" +b.create:config.cc.coptions="-Wall -O3" +\ + +# Generic linux package (built using oldest Debian we support). +# +# Note: update glibc version in metadata if changing build configuration. +# +bindist-linux-builds: bindist +bindist-linux-build-include: linux_debian_11-gcc_10.2-bindist +bindist-linux-build-exclude: ** +bindist-linux-build-config: +\ ++bpkg.bindist.archive: ++bbot.bindist.upload: +bpkg.bindist.archive:--recursive=auto +bpkg.bindist.archive:--archive-build-meta=linux-glibc2.31 +bpkg.bindist.archive:config.install.relocatable=true +bpkg.create:config.bin.lib=static +bpkg.create:config.bin.liba.lib="shared static" +config.cc.loptions+="-static-libstdc++ -static-libgcc" +\ -- cgit v1.1