From b7752d4df7fd4b325a85a5e78a7beadf26a1837c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= Date: Mon, 8 Aug 2022 13:12:49 -0400 Subject: rpm: merge mingw sub-packages into native spec MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit One specfile containing both native and mingw builds is the new best practice for Fedora. This reduces the maint burden and ensures the mingw packages don't fall behind. Signed-off-by: Daniel P. Berrangé --- .gitlab-ci.yml | 2 +- libosinfo.spec.in | 116 ++++++++++++++++++++++++++++++++++++++++++ meson.build | 13 ++--- mingw-libosinfo.spec.in | 131 ------------------------------------------------ prepare-release.sh | 11 ---- 5 files changed, 122 insertions(+), 151 deletions(-) delete mode 100644 mingw-libosinfo.spec.in diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 2ec72c7..3c9dcd2 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -58,7 +58,7 @@ stages: - $NINJA dist - if test -x /usr/bin/rpmbuild && test "$RPM" != "skip"; then - rpmbuild --nodeps -ta meson-dist/*.tar.xz; + rpmbuild --nodeps --define '_without_mingw 1' -ta meson-dist/*.tar.xz; fi .cross_build_job: diff --git a/libosinfo.spec.in b/libosinfo.spec.in index e32f1d3..6419483 100644 --- a/libosinfo.spec.in +++ b/libosinfo.spec.in @@ -1,5 +1,10 @@ # -*- rpm-spec -*- +%define with_mingw 0 +%if 0%{?fedora} + %define with_mingw 0%{!?_without_mingw:1} +%endif + Summary: A library for managing OS information for virtualization Name: libosinfo Version: @VERSION@ @@ -23,6 +28,24 @@ Requires: hwdata Requires: osinfo-db Requires: osinfo-db-tools +%if %{with_mingw} +BuildRequires: mingw32-filesystem +BuildRequires: mingw32-gcc +BuildRequires: mingw32-binutils +BuildRequires: mingw32-glib2 +BuildRequires: mingw32-libxml2 +BuildRequires: mingw32-libxslt +BuildRequires: mingw32-libsoup + +BuildRequires: mingw64-filesystem +BuildRequires: mingw64-gcc +BuildRequires: mingw64-binutils +BuildRequires: mingw64-glib2 +BuildRequires: mingw64-libxml2 +BuildRequires: mingw64-libxslt +BuildRequires: mingw64-libsoup +%endif + %description libosinfo is a library that allows virtualization provisioning tools to determine the optimal device settings for a hypervisor/operating system @@ -44,6 +67,36 @@ combination. Libraries, includes, etc. to compile with the libosinfo library +%if %{with_mingw} +%package -n mingw32-libosinfo +Summary: %{summary} +BuildArch: noarch + +Requires: pkgconfig +Requires: mingw32-osinfo-db +Requires: mingw32-osinfo-db-tools + +%description -n mingw32-libosinfo +libosinfo is a library that allows virtualization provisioning tools to +determine the optimal device settings for a hypervisor/operating system +combination. + +%package -n mingw64-libosinfo +Summary: %{summary} +BuildArch: noarch + +Requires: pkgconfig +Requires: mingw64-osinfo-db +Requires: mingw64-osinfo-db-tools + +%description -n mingw64-libosinfo +libosinfo is a library that allows virtualization provisioning tools to +determine the optimal device settings for a hypervisor/operating system +combination. + +%{?mingw_debug_package} +%endif + %prep %setup -q @@ -55,11 +108,42 @@ Libraries, includes, etc. to compile with the libosinfo library -Denable-vala=enabled %meson_build +%if %{with_mingw} +%mingw_meson \ + -Denable-gtk-doc=false \ + -Denable-tests=false \ + -Denable-introspection=disabled \ + -Denable-vala=disabled +%mingw_ninja +%endif + %install %meson_install %find_lang %{name} +%if %{with_mingw} +%mingw_ninja_install + +# Remove static libraries but DON'T remove *.dll.a files. +rm -f $RPM_BUILD_ROOT%{mingw32_libdir}/libosinfo-1.0.a +rm -f $RPM_BUILD_ROOT%{mingw64_libdir}/libosinfo-1.0.a + +# Libtool files don't need to be bundled +find $RPM_BUILD_ROOT -name "*.la" -delete + +# Manpages don't need to be bundled +rm -rf $RPM_BUILD_ROOT%{mingw32_datadir}/man +rm -rf $RPM_BUILD_ROOT%{mingw64_datadir}/man + +rm -rf $RPM_BUILD_ROOT%{mingw32_datadir}/gtk-doc +rm -rf $RPM_BUILD_ROOT%{mingw64_datadir}/gtk-doc + +%mingw_debug_install_post + +%mingw_find_lang libosinfo +%endif + %check %meson_test @@ -90,4 +174,36 @@ Libraries, includes, etc. to compile with the libosinfo library %{_datadir}/vala/vapi/libosinfo-1.0.deps %{_datadir}/vala/vapi/libosinfo-1.0.vapi +%if %{with_mingw} +%files -n mingw32-libosinfo -f mingw32-libosinfo.lang +%doc AUTHORS ChangeLog COPYING.LIB NEWS README +%{mingw32_bindir}/osinfo-detect.exe +%{mingw32_bindir}/osinfo-install-script.exe +%{mingw32_bindir}/osinfo-query.exe +%{mingw32_bindir}/libosinfo-1.0-0.dll +%{mingw32_libdir}/libosinfo-1.0.dll.a +%{mingw32_libdir}/pkgconfig/libosinfo-1.0.pc +%dir %{mingw32_includedir}/libosinfo-1.0/ +%dir %{mingw32_includedir}/libosinfo-1.0/osinfo +%{mingw32_includedir}/libosinfo-1.0/osinfo/*.h +%dir %{mingw32_datadir}/libosinfo +%{mingw32_datadir}/libosinfo/usb.ids +%{mingw32_datadir}/libosinfo/pci.ids + +%files -n mingw64-libosinfo -f mingw64-libosinfo.lang +%doc AUTHORS ChangeLog COPYING.LIB NEWS README +%{mingw64_bindir}/osinfo-detect.exe +%{mingw64_bindir}/osinfo-install-script.exe +%{mingw64_bindir}/osinfo-query.exe +%{mingw64_bindir}/libosinfo-1.0-0.dll +%{mingw64_libdir}/libosinfo-1.0.dll.a +%{mingw64_libdir}/pkgconfig/libosinfo-1.0.pc +%dir %{mingw64_includedir}/libosinfo-1.0/ +%dir %{mingw64_includedir}/libosinfo-1.0/osinfo +%{mingw64_includedir}/libosinfo-1.0/osinfo/*.h +%dir %{mingw64_datadir}/libosinfo +%{mingw64_datadir}/libosinfo/usb.ids +%{mingw64_datadir}/libosinfo/pci.ids +%endif + %changelog diff --git a/meson.build b/meson.build index 037e4f3..422946a 100644 --- a/meson.build +++ b/meson.build @@ -49,14 +49,11 @@ libosinfo_pkgconfdir = join_paths(libosinfo_libdir, 'pkgconfig') libosinfo_spec_data = configuration_data() libosinfo_spec_data.set('VERSION', meson.project_version()) -specs = ['libosinfo.spec', 'mingw-libosinfo.spec'] -foreach spec: specs - configure_file( - input: spec + '.in', - output: spec, - configuration: libosinfo_spec_data, - ) -endforeach +configure_file( + input: 'libosinfo.spec.in', + output: 'libosinfo.spec', + configuration: libosinfo_spec_data, +) # ninja dist helper meson.add_dist_script('build-aux/dist.sh', meson.source_root(), meson.build_root()) diff --git a/mingw-libosinfo.spec.in b/mingw-libosinfo.spec.in deleted file mode 100644 index 781b59f..0000000 --- a/mingw-libosinfo.spec.in +++ /dev/null @@ -1,131 +0,0 @@ -%{?mingw_package_header} - -Name: mingw-libosinfo -Version: @VERSION@ -Release: 1%{?dist} -Summary: MinGW Windows port of a library for managing OS information for virtualization -License: LGPLv2+ -Source: https://releases.pagure.org/libosinfo/libosinfo-%{version}.tar.xz -URL: https://libosinfo.org/ - -BuildArch: noarch - -BuildRequires: git - -BuildRequires: intltool -BuildRequires: meson -BuildRequires: gcc -BuildRequires: hwdata - -BuildRequires: mingw32-filesystem >= 107 -BuildRequires: mingw64-filesystem >= 107 -BuildRequires: mingw32-gcc -BuildRequires: mingw64-gcc -BuildRequires: mingw32-binutils -BuildRequires: mingw64-binutils - -BuildRequires: mingw32-glib2 -BuildRequires: mingw64-glib2 -BuildRequires: mingw32-libxml2 -BuildRequires: mingw64-libxml2 -BuildRequires: mingw32-libxslt -BuildRequires: mingw64-libxslt -BuildRequires: mingw32-libsoup -BuildRequires: mingw64-libsoup - -BuildRequires: pkgconfig - -BuildRequires: /usr/bin/pod2man - -%description -libosinfo is a library that allows virtualization provisioning tools to -determine the optimal device settings for a hypervisor/operating system -combination. - -%package -n mingw32-libosinfo -Summary: %{summary} - -Requires: pkgconfig -Requires: mingw32-osinfo-db -Requires: mingw32-osinfo-db-tools - -%description -n mingw32-libosinfo -libosinfo is a library that allows virtualization provisioning tools to -determine the optimal device settings for a hypervisor/operating system -combination. - -%package -n mingw64-libosinfo -Summary: %{summary} - -Requires: pkgconfig -Requires: mingw64-osinfo-db -Requires: mingw64-osinfo-db-tools - -%description -n mingw64-libosinfo -libosinfo is a library that allows virtualization provisioning tools to -determine the optimal device settings for a hypervisor/operating system -combination. - -%{?mingw_debug_package} - -%prep -%autosetup -S git -n libosinfo-%{version} - -%build -%mingw_meson \ - -Denable-gtk-doc=false \ - -Denable-tests=false \ - -Denable-introspection=disabled \ - -Denable-vala=disabled -%mingw_ninja - -%install -%mingw_ninja_install - -# Remove static libraries but DON'T remove *.dll.a files. -rm -f $RPM_BUILD_ROOT%{mingw32_libdir}/libosinfo-1.0.a -rm -f $RPM_BUILD_ROOT%{mingw64_libdir}/libosinfo-1.0.a - -# Libtool files don't need to be bundled -find $RPM_BUILD_ROOT -name "*.la" -delete - -# Manpages don't need to be bundled -rm -rf $RPM_BUILD_ROOT%{mingw32_datadir}/man -rm -rf $RPM_BUILD_ROOT%{mingw64_datadir}/man - -rm -rf $RPM_BUILD_ROOT%{mingw32_datadir}/gtk-doc -rm -rf $RPM_BUILD_ROOT%{mingw64_datadir}/gtk-doc - -%mingw_find_lang libosinfo - -%files -n mingw32-libosinfo -f mingw32-libosinfo.lang -%doc AUTHORS ChangeLog COPYING.LIB NEWS README -%{mingw32_bindir}/osinfo-detect.exe -%{mingw32_bindir}/osinfo-install-script.exe -%{mingw32_bindir}/osinfo-query.exe -%{mingw32_bindir}/libosinfo-1.0-0.dll -%{mingw32_libdir}/libosinfo-1.0.dll.a -%{mingw32_libdir}/pkgconfig/libosinfo-1.0.pc -%dir %{mingw32_includedir}/libosinfo-1.0/ -%dir %{mingw32_includedir}/libosinfo-1.0/osinfo -%{mingw32_includedir}/libosinfo-1.0/osinfo/*.h -%dir %{mingw32_datadir}/libosinfo -%{mingw32_datadir}/libosinfo/usb.ids -%{mingw32_datadir}/libosinfo/pci.ids - -%files -n mingw64-libosinfo -f mingw64-libosinfo.lang -%doc AUTHORS ChangeLog COPYING.LIB NEWS README -%{mingw64_bindir}/osinfo-detect.exe -%{mingw64_bindir}/osinfo-install-script.exe -%{mingw64_bindir}/osinfo-query.exe -%{mingw64_bindir}/libosinfo-1.0-0.dll -%{mingw64_libdir}/libosinfo-1.0.dll.a -%{mingw64_libdir}/pkgconfig/libosinfo-1.0.pc -%dir %{mingw64_includedir}/libosinfo-1.0/ -%dir %{mingw64_includedir}/libosinfo-1.0/osinfo -%{mingw64_includedir}/libosinfo-1.0/osinfo/*.h -%dir %{mingw64_datadir}/libosinfo -%{mingw64_datadir}/libosinfo/usb.ids -%{mingw64_datadir}/libosinfo/pci.ids - -%changelog diff --git a/prepare-release.sh b/prepare-release.sh index 95a81b4..42f5650 100755 --- a/prepare-release.sh +++ b/prepare-release.sh @@ -60,15 +60,4 @@ if test -x /usr/bin/x86_64-w64-mingw32-gcc && \ DESTDIR="$INSTALL_ROOT/win64" ninja -C "$BUILD_ROOT/win64" install fi -if test -x /usr/bin/i686-w64-mingw32-gcc && \ - test -r /usr/share/mingw/toolchain-mingw32.meson && \ - test -x /usr/bin/x86_64-w64-mingw32-gcc && \ - test -r /usr/share/mingw/toolchain-mingw64.meson && \ - test -x /usr/bin/rpmbuild; then - rpmbuild --nodeps \ - --define "_topdir $RPMBUILD_ROOT" \ - --define "_sourcedir $DIST_ROOT" \ - -ba --clean "$BUILD_ROOT/native/mingw-libosinfo.spec" -fi - mv "$DIST_ROOT"/*.tar.xz . -- cgit v1.2.1