diff options
author | Daniel P. Berrangé <berrange@redhat.com> | 2022-08-08 13:12:49 -0400 |
---|---|---|
committer | Daniel P. Berrangé <berrange@redhat.com> | 2022-08-08 13:12:49 -0400 |
commit | b7752d4df7fd4b325a85a5e78a7beadf26a1837c (patch) | |
tree | 0cff4040008d4ecada805cfc89531b63ebe04810 | |
parent | 962953f492919af0a182462b7aeffa02500e2090 (diff) | |
download | libosinfo-b7752d4df7fd4b325a85a5e78a7beadf26a1837c.tar.gz |
rpm: merge mingw sub-packages into native spec
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é <berrange@redhat.com>
-rw-r--r-- | .gitlab-ci.yml | 2 | ||||
-rw-r--r-- | libosinfo.spec.in | 116 | ||||
-rw-r--r-- | meson.build | 13 | ||||
-rw-r--r-- | mingw-libosinfo.spec.in | 131 | ||||
-rwxr-xr-x | prepare-release.sh | 11 |
5 files changed, 122 insertions, 151 deletions
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 . |