aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2022-01-05 13:32:58 -0800
committerVishal Verma <vishal.l.verma@intel.com>2022-01-13 15:17:50 -0700
commit8b5b941093521dd18fcc99659b3e3b1b9e9456b7 (patch)
treebfbd15f8a443ad5c17b2e3779aa8e213d9278203
parent4e5faa1726d22e8ef51e860d56f4300077a3e9ba (diff)
build: Add meson rpmbuild support
Beyond being a prerequisite for removing autotools support, this capability served as validation that the meson conversion generated all the same files as autotools and installed them to the same expected locations. The procedure to use the rpmbuild.sh script is: meson setup build meson compile -C build rhel/ndctl.spec ./rpmbuild.sh build/rhel/ndctl.spec Link: https://lore.kernel.org/r/164141837841.3990253.11379060834465142446.stgit@dwillia2-desk3.amr.corp.intel.com Tested-by: Alison Schofield <alison.schofield@intel.com> Tested-by: Vaibhav Jain <vaibhav@linux.ibm.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com> Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
-rw-r--r--.gitignore2
-rw-r--r--Makefile.am2
-rw-r--r--meson.build6
-rw-r--r--ndctl.spec.in23
-rw-r--r--rhel/meson.build23
-rwxr-xr-xrpmbuild.sh5
-rw-r--r--sles/meson.build36
7 files changed, 95 insertions, 2 deletions
diff --git a/.gitignore b/.gitignore
index 91c5e37b..df8245dc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -35,7 +35,7 @@ daxctl/lib/libdaxctl.pc
ndctl/config.h
ndctl/lib/libndctl.pc
ndctl/ndctl
-rhel/
+rhel/ndctl.spec
sles/ndctl.spec
version.m4
*.swp
diff --git a/Makefile.am b/Makefile.am
index daea39f5..b78059b0 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -22,6 +22,7 @@ noinst_SCRIPTS = rhel/ndctl.spec sles/ndctl.spec
CLEANFILES += $(noinst_SCRIPTS)
do_rhel_subst = sed -e 's,VERSION,$(VERSION),g' \
+ -e 's,MESON,0,g' \
-e 's,DAX_DNAME,daxctl-devel,g' \
-e 's,CXL_DNAME,cxl-devel,g' \
-e 's,DNAME,ndctl-devel,g' \
@@ -31,6 +32,7 @@ do_rhel_subst = sed -e 's,VERSION,$(VERSION),g' \
-e 's,LNAME,ndctl-libs,g'
do_sles_subst = sed -e 's,VERSION,$(VERSION),g' \
+ -e 's,MESON,0,g' \
-e 's,DAX_DNAME,libdaxctl-devel,g' \
-e 's,CXL_DNAME,libcxl-devel,g' \
-e 's,DNAME,libndctl-devel,g' \
diff --git a/meson.build b/meson.build
index 272ac642..b22fb2e5 100644
--- a/meson.build
+++ b/meson.build
@@ -278,3 +278,9 @@ if get_option('docs').enabled()
endif
subdir('test')
subdir('contrib')
+
+# only support spec file generation from git builds
+if version_tag == ''
+ subdir('rhel')
+ subdir('sles')
+endif
diff --git a/ndctl.spec.in b/ndctl.spec.in
index cb911194..94472678 100644
--- a/ndctl.spec.in
+++ b/ndctl.spec.in
@@ -6,14 +6,20 @@ License: GPLv2
Url: https://github.com/pmem/ndctl
Source0: https://github.com/pmem/%{name}/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
+%define with_meson MESON
Requires: LNAME%{?_isa} = %{version}-%{release}
Requires: DAX_LNAME%{?_isa} = %{version}-%{release}
Requires: CXL_LNAME%{?_isa} = %{version}-%{release}
BuildRequires: autoconf
%if 0%{?rhel} < 9
BuildRequires: asciidoc
+%if !%{with_meson}
%define asciidoc --disable-asciidoctor
+%endif
%else
+%if %{with_meson}
+%define asciidoctor -Dasciidoctor=enabled
+%endif
BuildRequires: rubygem-asciidoctor
%endif
BuildRequires: xmlto
@@ -30,6 +36,10 @@ BuildRequires: keyutils-libs-devel
BuildRequires: systemd-rpm-macros
BuildRequires: iniparser-devel
+%if %{with_meson}
+BuildRequires: meson
+%endif
+
%description
Utility library for managing the "libnvdimm" subsystem. The "libnvdimm"
subsystem defines a kernel device model and control message interface for
@@ -117,17 +127,30 @@ libcxl is a library for enumerating and communicating with CXL devices.
%setup -q ndctl-%{version}
%build
+%if %{with_meson}
+%meson %{?asciidoctor} -Dversion-tag=%{version}
+%meson_build
+%else
echo %{version} > version
./autogen.sh
%configure --disable-static --disable-silent-rules %{?asciidoc}
make %{?_smp_mflags}
+%endif
%install
+%if %{with_meson}
+%meson_install
+%else
%make_install
find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';'
+%endif
%check
+%if %{with_meson}
+%meson_test
+%else
make check
+%endif
%ldconfig_scriptlets -n LNAME
diff --git a/rhel/meson.build b/rhel/meson.build
new file mode 100644
index 00000000..8672098d
--- /dev/null
+++ b/rhel/meson.build
@@ -0,0 +1,23 @@
+rhel_spec1 = vcs_tag(
+ input : '../ndctl.spec.in',
+ output : 'ndctl.spec.in',
+ command: vcs_tagger,
+ replace_string : 'VERSION',
+)
+
+rhel_spec2 = custom_target('ndctl.spec',
+ command : [
+ 'sed', '-e', 's,MESON,1,g',
+ '-e', 's,DAX_DNAME,daxctl-devel,g',
+ '-e', 's,CXL_DNAME,cxl-devel,g',
+ '-e', 's,DNAME,ndctl-devel,g',
+ '-e', '/^%defattr.*/d',
+ '-e', 's,DAX_LNAME,daxctl-libs,g',
+ '-e', 's,CXL_LNAME,cxl-libs,g',
+ '-e', 's,LNAME,ndctl-libs,g',
+ '@INPUT@'
+ ],
+ input : rhel_spec1,
+ output : 'ndctl.spec',
+ capture : true,
+)
diff --git a/rpmbuild.sh b/rpmbuild.sh
index fe4154b6..b1f4d9e5 100755
--- a/rpmbuild.sh
+++ b/rpmbuild.sh
@@ -1,6 +1,9 @@
#!/bin/bash
+
+spec=${1:-$(dirname $0)/rhel/ndctl.spec)}
+
pushd $(dirname $0) >/dev/null
[ ! -d ~/rpmbuild/SOURCES ] && echo "rpmdev tree not found" && exit 1
./make-git-snapshot.sh
popd > /dev/null
-rpmbuild -ba $(dirname $0)/rhel/ndctl.spec
+rpmbuild --nocheck -ba $spec
diff --git a/sles/meson.build b/sles/meson.build
new file mode 100644
index 00000000..21c72cb4
--- /dev/null
+++ b/sles/meson.build
@@ -0,0 +1,36 @@
+sles_spec1 = vcs_tag(
+ input : '../ndctl.spec.in',
+ output : 'ndctl.spec.sles.in',
+ command: vcs_tagger,
+ replace_string : 'VERSION',
+)
+
+header = files('header')
+
+sles_spec2 = custom_target('ndctl.spec.in',
+ command : [
+ 'cat', header, '@INPUT@',
+ ],
+ input : sles_spec1,
+ output : 'ndctl.spec.in',
+ capture : true,
+)
+
+sles_spec3 = custom_target('ndctl.spec',
+ command : [
+ 'sed', '-e', 's,MESON,1,g',
+ '-e', 's,DAX_DNAME,libdaxctl-devel,g',
+ '-e', 's,CXL_DNAME,libcxl-devel,g',
+ '-e', 's,DNAME,libndctl-devel,g',
+ '-e', 's,%license,%doc,g',
+ '-e', 's,\(^License:.*GPL\)v2,\1-2.0,g',
+ '-e', 's,DAX_LNAME,libdaxctl@0@,g'.format(LIBDAXCTL_CURRENT - LIBDAXCTL_AGE),
+ '-e', 's,CXL_LNAME,libcxl@0@,g'.format(LIBCXL_CURRENT - LIBCXL_AGE),
+ '-e', 's,LNAME,libndctl@0@,g'.format(LIBNDCTL_CURRENT - LIBNDCTL_AGE),
+ '@INPUT@'
+ ],
+
+ input : sles_spec2,
+ output : 'ndctl.spec',
+ capture : true,
+)