[OE-core] [RFC PATCH 1/2] podfix: class to remove Pod::Man versions from manpages
Ross Burton
ross.burton at intel.com
Fri Dec 13 23:21:55 UTC 2019
Manpages generated by Pod::Man contain the version number, which isn't
reproducible if we're using the host Perl to generate manpage.
One option is to always depend on perl-native when generating manpages
but this is a heavy dependency, so instead strip out the versions in
do_install().
Signed-off-by: Ross Burton <ross.burton at intel.com>
---
meta/classes/podfix.bbclass | 32 ++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)
create mode 100644 meta/classes/podfix.bbclass
diff --git a/meta/classes/podfix.bbclass b/meta/classes/podfix.bbclass
new file mode 100644
index 00000000000..54fff6a0a23
--- /dev/null
+++ b/meta/classes/podfix.bbclass
@@ -0,0 +1,32 @@
+python pod_strip_version() {
+ import re
+
+ def opener(filename, mode):
+ if filename.endswith(".gz"):
+ import gzip
+ return gzip.open(filename, mode)
+ elif filename.endswith(".bz2"):
+ import bz2
+ return bz2.open(filename, mode)
+ else:
+ return open(filename, mode)
+
+ bad_re = re.compile(rb"Automatically generated by Pod::Man( [0-9]+.+)")
+
+ for root, dirs, files in os.walk(d.expand("${D}${mandir}")):
+ for filename in files:
+ filename = os.path.join(root, filename)
+ with opener(filename, "rb") as manfile:
+ manpage = manfile.read()
+ m = bad_re.search(manpage)
+ if not m:
+ continue
+
+ bb.note("podfix: stripping version from %s" % filename)
+ os.unlink(filename)
+ with opener(filename, "wb") as manfile:
+ manfile.write(manpage[:m.start(1)])
+ manfile.write(manpage[m.end(1):])
+}
+
+do_install[postfuncs] += "pod_strip_version"
--
2.20.1
More information about the Openembedded-core
mailing list