summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel P. Berrangé <berrange@redhat.com>2022-08-08 13:12:49 -0400
committerDaniel P. Berrangé <berrange@redhat.com>2022-08-08 13:12:49 -0400
commitb7752d4df7fd4b325a85a5e78a7beadf26a1837c (patch)
tree0cff4040008d4ecada805cfc89531b63ebe04810
parent962953f492919af0a182462b7aeffa02500e2090 (diff)
downloadlibosinfo-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.yml2
-rw-r--r--libosinfo.spec.in116
-rw-r--r--meson.build13
-rw-r--r--mingw-libosinfo.spec.in131
-rwxr-xr-xprepare-release.sh11
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 .