Message ID | 20191213232156.28367-1-ross.burton@intel.com |
---|---|
State | Accepted |
Commit | 18d8e5ac689d6eb6098f68ac785f43e9d5f5938a |
Headers | show |
Series | [RFC,1/2] podfix: class to remove Pod::Man versions from manpages | expand |
On Fri, Dec 13, 2019 at 3:22 PM Ross Burton <ross.burton@intel.com> wrote: > > 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(). > seeing this error https://errors.yoctoproject.org/Errors/Details/297478/ > Signed-off-by: Ross Burton <ross.burton@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 > > -- > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.openembedded.org/mailman/listinfo/openembedded-core -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core
On 16/12/2019 04:39, Khem Raj wrote: > On Fri, Dec 13, 2019 at 3:22 PM Ross Burton <ross.burton@intel.com> wrote: >> >> 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(). >> > > seeing this error > > https://errors.yoctoproject.org/Errors/Details/297478/ Exception: FileNotFoundError: [Errno 2] No such file or directory: 'TOPDIR/build/tmp/work/core2-32-yoe-linux/fvwm/2.6.8-r0/image/usr/share/man/man1/fvwm2.1' Is that actually a broken symlink? Ross -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core
On Mon, Dec 16, 2019 at 3:21 AM Ross Burton <ross.burton@intel.com> wrote: > > On 16/12/2019 04:39, Khem Raj wrote: > > On Fri, Dec 13, 2019 at 3:22 PM Ross Burton <ross.burton@intel.com> wrote: > >> > >> 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(). > >> > > > > seeing this error > > > > https://errors.yoctoproject.org/Errors/Details/297478/ > > Exception: FileNotFoundError: [Errno 2] No such file or directory: > 'TOPDIR/build/tmp/work/core2-32-yoe-linux/fvwm/2.6.8-r0/image/usr/share/man/man1/fvwm2.1' > > Is that actually a broken symlink? > it is perhaps I have to rebuilt and check but I think it would be good if this class did not crash like that. maybe just report a useful warning of some sort or just ignore it. > Ross -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core
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"
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@intel.com> --- meta/classes/podfix.bbclass | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 meta/classes/podfix.bbclass -- 2.20.1 -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core