anitazha / rpms / ndctl

Forked from rpms/ndctl a year ago
Clone
e0018b
From 8b5b941093521dd18fcc99659b3e3b1b9e9456b7 Mon Sep 17 00:00:00 2001
e0018b
From: Dan Williams <dan.j.williams@intel.com>
e0018b
Date: Wed, 5 Jan 2022 13:32:58 -0800
e0018b
Subject: [PATCH 083/217] build: Add meson rpmbuild support
e0018b
e0018b
Beyond being a prerequisite for removing autotools support, this capability
e0018b
served as validation that the meson conversion generated all the same files
e0018b
as autotools and installed them to the same expected locations.
e0018b
e0018b
The procedure to use the rpmbuild.sh script is:
e0018b
e0018b
    meson setup build
e0018b
    meson compile -C build rhel/ndctl.spec
e0018b
    ./rpmbuild.sh build/rhel/ndctl.spec
e0018b
e0018b
Link: https://lore.kernel.org/r/164141837841.3990253.11379060834465142446.stgit@dwillia2-desk3.amr.corp.intel.com
e0018b
Tested-by: Alison Schofield <alison.schofield@intel.com>
e0018b
Tested-by: Vaibhav Jain <vaibhav@linux.ibm.com>
e0018b
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
e0018b
Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>
e0018b
---
e0018b
 .gitignore       |  2 +-
e0018b
 Makefile.am      |  2 ++
e0018b
 meson.build      |  6 ++++++
e0018b
 ndctl.spec.in    | 23 +++++++++++++++++++++++
e0018b
 rhel/meson.build | 23 +++++++++++++++++++++++
e0018b
 rpmbuild.sh      |  5 ++++-
e0018b
 sles/meson.build | 36 ++++++++++++++++++++++++++++++++++++
e0018b
 7 files changed, 95 insertions(+), 2 deletions(-)
e0018b
 create mode 100644 rhel/meson.build
e0018b
 create mode 100644 sles/meson.build
e0018b
e0018b
diff -up ndctl-71.1/.gitignore.orig ndctl-71.1/.gitignore
e0018b
--- ndctl-71.1/.gitignore.orig	2022-10-07 16:34:40.712445112 -0400
e0018b
+++ ndctl-71.1/.gitignore	2022-10-07 16:34:52.832486377 -0400
e0018b
@@ -35,7 +35,7 @@ daxctl/lib/libdaxctl.pc
e0018b
 ndctl/config.h
e0018b
 ndctl/lib/libndctl.pc
e0018b
 ndctl/ndctl
e0018b
-rhel/
e0018b
+rhel/ndctl.spec
e0018b
 sles/ndctl.spec
e0018b
 version.m4
e0018b
 *.swp
e0018b
diff -up ndctl-71.1/Makefile.am.orig ndctl-71.1/Makefile.am
e0018b
--- ndctl-71.1/Makefile.am.orig	2022-10-07 16:34:40.687445027 -0400
e0018b
+++ ndctl-71.1/Makefile.am	2022-10-07 16:34:52.832486377 -0400
e0018b
@@ -22,6 +22,7 @@ noinst_SCRIPTS = rhel/ndctl.spec sles/nd
e0018b
 CLEANFILES += $(noinst_SCRIPTS)
e0018b
 
e0018b
 do_rhel_subst = sed -e 's,VERSION,$(VERSION),g' \
e0018b
+            -e 's,MESON,0,g' \
e0018b
             -e 's,DAX_DNAME,daxctl-devel,g' \
e0018b
             -e 's,CXL_DNAME,cxl-devel,g' \
e0018b
             -e 's,DNAME,ndctl-devel,g' \
e0018b
@@ -31,6 +32,7 @@ do_rhel_subst = sed -e 's,VERSION,$(VERS
e0018b
 	    -e 's,LNAME,ndctl-libs,g'
e0018b
 
e0018b
 do_sles_subst = sed -e 's,VERSION,$(VERSION),g' \
e0018b
+            -e 's,MESON,0,g' \
e0018b
             -e 's,DAX_DNAME,libdaxctl-devel,g' \
e0018b
             -e 's,CXL_DNAME,libcxl-devel,g' \
e0018b
             -e 's,DNAME,libndctl-devel,g' \
e0018b
diff -up ndctl-71.1/meson.build.orig ndctl-71.1/meson.build
e0018b
--- ndctl-71.1/meson.build.orig	2022-10-07 16:34:40.715445122 -0400
e0018b
+++ ndctl-71.1/meson.build	2022-10-07 16:34:52.833486380 -0400
e0018b
@@ -278,3 +278,9 @@ if get_option('docs').enabled()
e0018b
 endif
e0018b
 subdir('test')
e0018b
 subdir('contrib')
e0018b
+
e0018b
+# only support spec file generation from git builds
e0018b
+if version_tag == ''
e0018b
+  subdir('rhel')
e0018b
+  subdir('sles')
e0018b
+endif
e0018b
diff -up ndctl-71.1/ndctl.spec.in.orig ndctl-71.1/ndctl.spec.in
e0018b
--- ndctl-71.1/ndctl.spec.in.orig	2022-10-07 16:34:40.645444884 -0400
e0018b
+++ ndctl-71.1/ndctl.spec.in	2022-10-07 16:34:52.833486380 -0400
e0018b
@@ -6,14 +6,20 @@ License:	GPLv2
e0018b
 Url:		https://github.com/pmem/ndctl
e0018b
 Source0:	https://github.com/pmem/%{name}/archive/v%{version}.tar.gz#/%{name}-%{version}.tar.gz
e0018b
 
e0018b
+%define with_meson MESON
e0018b
 Requires:	LNAME%{?_isa} = %{version}-%{release}
e0018b
 Requires:	DAX_LNAME%{?_isa} = %{version}-%{release}
e0018b
 Requires:	CXL_LNAME%{?_isa} = %{version}-%{release}
e0018b
 BuildRequires:	autoconf
e0018b
 %if 0%{?rhel} < 9
e0018b
 BuildRequires:	asciidoc
e0018b
+%if !%{with_meson}
e0018b
 %define asciidoc --disable-asciidoctor
e0018b
+%endif
e0018b
 %else
e0018b
+%if %{with_meson}
e0018b
+%define asciidoctor -Dasciidoctor=enabled
e0018b
+%endif
e0018b
 BuildRequires:	rubygem-asciidoctor
e0018b
 %endif
e0018b
 BuildRequires:	xmlto
e0018b
@@ -28,6 +34,10 @@ BuildRequires:	pkgconfig(bash-completion
e0018b
 BuildRequires:	pkgconfig(systemd)
e0018b
 BuildRequires:	keyutils-libs-devel
e0018b
 
e0018b
+%if %{with_meson}
e0018b
+BuildRequires:	meson
e0018b
+%endif
e0018b
+
e0018b
 %description
e0018b
 Utility library for managing the "libnvdimm" subsystem.  The "libnvdimm"
e0018b
 subsystem defines a kernel device model and control message interface for
e0018b
@@ -115,17 +125,30 @@ libcxl is a library for enumerating and
e0018b
 %setup -q ndctl-%{version}
e0018b
 
e0018b
 %build
e0018b
+%if %{with_meson}
e0018b
+%meson %{?asciidoctor} -Dversion-tag=%{version}
e0018b
+%meson_build
e0018b
+%else
e0018b
 echo %{version} > version
e0018b
 ./autogen.sh
e0018b
 %configure --disable-static --disable-silent-rules %{?asciidoc}
e0018b
 make %{?_smp_mflags}
e0018b
+%endif
e0018b
 
e0018b
 %install
e0018b
+%if %{with_meson}
e0018b
+%meson_install
e0018b
+%else
e0018b
 %make_install
e0018b
 find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';'
e0018b
+%endif
e0018b
 
e0018b
 %check
e0018b
+%if %{with_meson}
e0018b
+%meson_test
e0018b
+%else
e0018b
 make check
e0018b
+%endif
e0018b
 
e0018b
 %ldconfig_scriptlets -n LNAME
e0018b
 
e0018b
diff -up ndctl-71.1/rhel/meson.build.orig ndctl-71.1/rhel/meson.build
e0018b
--- ndctl-71.1/rhel/meson.build.orig	2022-10-07 16:34:52.834486384 -0400
e0018b
+++ ndctl-71.1/rhel/meson.build	2022-10-07 16:34:52.834486384 -0400
e0018b
@@ -0,0 +1,23 @@
e0018b
+rhel_spec1 = vcs_tag(
e0018b
+    input : '../ndctl.spec.in',
e0018b
+    output : 'ndctl.spec.in',
e0018b
+    command: vcs_tagger,
e0018b
+    replace_string : 'VERSION',
e0018b
+)
e0018b
+
e0018b
+rhel_spec2 = custom_target('ndctl.spec',
e0018b
+  command : [
e0018b
+    'sed', '-e', 's,MESON,1,g',
e0018b
+	   '-e', 's,DAX_DNAME,daxctl-devel,g',
e0018b
+	   '-e', 's,CXL_DNAME,cxl-devel,g',
e0018b
+	   '-e', 's,DNAME,ndctl-devel,g',
e0018b
+	   '-e', '/^%defattr.*/d',
e0018b
+	   '-e', 's,DAX_LNAME,daxctl-libs,g',
e0018b
+	   '-e', 's,CXL_LNAME,cxl-libs,g',
e0018b
+	   '-e', 's,LNAME,ndctl-libs,g',
e0018b
+	   '@INPUT@'
e0018b
+  ],
e0018b
+  input : rhel_spec1,
e0018b
+  output : 'ndctl.spec',
e0018b
+  capture : true,
e0018b
+)
e0018b
diff -up ndctl-71.1/rpmbuild.sh.orig ndctl-71.1/rpmbuild.sh
e0018b
--- ndctl-71.1/rpmbuild.sh.orig	2020-12-22 16:44:57.000000000 -0500
e0018b
+++ ndctl-71.1/rpmbuild.sh	2022-10-07 16:34:52.834486384 -0400
e0018b
@@ -1,6 +1,9 @@
e0018b
 #!/bin/bash
e0018b
+
e0018b
+spec=${1:-$(dirname $0)/rhel/ndctl.spec)}
e0018b
+
e0018b
 pushd $(dirname $0) >/dev/null
e0018b
 [ ! -d ~/rpmbuild/SOURCES ] && echo "rpmdev tree not found" && exit 1
e0018b
 ./make-git-snapshot.sh
e0018b
 popd > /dev/null
e0018b
-rpmbuild -ba $(dirname $0)/rhel/ndctl.spec
e0018b
+rpmbuild --nocheck -ba $spec
e0018b
diff -up ndctl-71.1/sles/meson.build.orig ndctl-71.1/sles/meson.build
e0018b
--- ndctl-71.1/sles/meson.build.orig	2022-10-07 16:34:52.836486391 -0400
e0018b
+++ ndctl-71.1/sles/meson.build	2022-10-07 16:34:52.835486387 -0400
e0018b
@@ -0,0 +1,36 @@
e0018b
+sles_spec1 = vcs_tag(
e0018b
+    input : '../ndctl.spec.in',
e0018b
+    output : 'ndctl.spec.sles.in',
e0018b
+    command: vcs_tagger,
e0018b
+    replace_string : 'VERSION',
e0018b
+)
e0018b
+
e0018b
+header = files('header')
e0018b
+
e0018b
+sles_spec2 = custom_target('ndctl.spec.in',
e0018b
+  command : [
e0018b
+    'cat', header, '@INPUT@',
e0018b
+  ],
e0018b
+  input : sles_spec1,
e0018b
+  output : 'ndctl.spec.in',
e0018b
+  capture : true,
e0018b
+)
e0018b
+
e0018b
+sles_spec3 = custom_target('ndctl.spec',
e0018b
+  command : [
e0018b
+    'sed', '-e', 's,MESON,1,g',
e0018b
+           '-e', 's,DAX_DNAME,libdaxctl-devel,g',
e0018b
+           '-e', 's,CXL_DNAME,libcxl-devel,g',
e0018b
+           '-e', 's,DNAME,libndctl-devel,g',
e0018b
+           '-e', 's,%license,%doc,g',
e0018b
+           '-e', 's,\(^License:.*GPL\)v2,\1-2.0,g',
e0018b
+           '-e', 's,DAX_LNAME,libdaxctl@0@,g'.format(LIBDAXCTL_CURRENT - LIBDAXCTL_AGE),
e0018b
+           '-e', 's,CXL_LNAME,libcxl@0@,g'.format(LIBCXL_CURRENT - LIBCXL_AGE),
e0018b
+           '-e', 's,LNAME,libndctl@0@,g'.format(LIBNDCTL_CURRENT - LIBNDCTL_AGE),
e0018b
+	   '@INPUT@'
e0018b
+  ],
e0018b
+
e0018b
+  input : sles_spec2,
e0018b
+  output : 'ndctl.spec',
e0018b
+  capture : true,
e0018b
+)