From 838457ac4f9f3f6c1bb5936738566210a62cbdc5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=BCnther=20Deschner?= Date: Tue, 27 Aug 2019 15:25:13 +0200 Subject: [PATCH] Revert "waf: install: Remove installation of PIDL and manpages." This reverts commit e24e344d0da58013fd5fa404529fe1d25ef403bf. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14103 Guenther Signed-off-by: Guenther Deschner --- pidl/lib/wscript_build | 37 +++++++++++++++++++++++++++++++++++++ pidl/wscript | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 pidl/lib/wscript_build diff --git a/pidl/lib/wscript_build b/pidl/lib/wscript_build new file mode 100644 index 00000000000..54b3170c4e2 --- /dev/null +++ b/pidl/lib/wscript_build @@ -0,0 +1,33 @@ +#!/usr/bin/env python + +# install the pidl modules +bld.INSTALL_FILES(bld.env.PERL_LIB_INSTALL_DIR, + ''' + Parse/Pidl.pm + Parse/Pidl/Samba4.pm + Parse/Pidl/CUtil.pm + Parse/Pidl/Expr.pm + Parse/Pidl/Wireshark/Conformance.pm + Parse/Pidl/Wireshark/NDR.pm + Parse/Pidl/ODL.pm + Parse/Pidl/Dump.pm + Parse/Pidl/Util.pm + Parse/Pidl/Samba4/Header.pm + Parse/Pidl/Samba4/COM/Header.pm + Parse/Pidl/Samba4/COM/Proxy.pm + Parse/Pidl/Samba4/COM/Stub.pm + Parse/Pidl/Samba4/TDR.pm + Parse/Pidl/Samba4/NDR/Server.pm + Parse/Pidl/Samba4/NDR/Client.pm + Parse/Pidl/Samba4/NDR/Parser.pm + Parse/Pidl/Samba4/Python.pm + Parse/Pidl/Samba4/Template.pm + Parse/Pidl/IDL.pm + Parse/Pidl/Typelist.pm + Parse/Pidl/Samba3/ClientNDR.pm + Parse/Pidl/Samba3/ServerNDR.pm + Parse/Pidl/Compat.pm + Parse/Pidl/NDR.pm + ''', + flat=False) + diff --git a/pidl/wscript b/pidl/wscript index 01b71bd8b27..a2a15d36851 100644 --- a/pidl/wscript +++ b/pidl/wscript @@ -28,12 +28,51 @@ 1.05): raise Errors.WafError('perl module "Parse::Yapp::Driver" not found') + # we need a recent version of MakeMaker to get the right man page names + if conf.CHECK_PERL_MANPAGE(): + conf.env.PERLMAN1EXT = conf.CHECK_PERL_MANPAGE(section='1') + conf.env.PERLMAN3EXT = conf.CHECK_PERL_MANPAGE(section='3') + conf.DEFINE('HAVE_PERL_MAKEMAKER', 1) + # yapp is used for building the parser if not conf.find_program('yapp', var='YAPP'): raise Errors.WafError('yapp not found') + conf.find_program('pod2man', var='POD2MAN') def build(bld): + bld.INSTALL_FILES('${BINDIR}', 'pidl', chmod=MODE_755, perl_fixup=True) + + bld.RECURSE('lib') + + if not bld.CONFIG_SET('HAVE_PERL_MAKEMAKER'): + return + + pidl_manpages = { + 'pidl': 'man1/pidl.${PERLMAN1EXT}', + 'lib/Parse/Pidl/NDR.pm': 'man3/Parse::Pidl::NDR.${PERLMAN3EXT}', + 'lib/Parse/Pidl/Wireshark/Conformance.pm': 'man3/Parse::Pidl::Wireshark::Conformance.${PERLMAN3EXT}', + 'lib/Parse/Pidl/Dump.pm': 'man3/Parse::Pidl::Dump.${PERLMAN3EXT}', + 'lib/Parse/Pidl/Util.pm': 'man3/Parse::Pidl::Util.${PERLMAN3EXT}', + 'lib/Parse/Pidl/Wireshark/NDR.pm': 'man3/Parse::Pidl::Wireshark::NDR.${PERLMAN3EXT}' + } + + for k in pidl_manpages.keys(): + pidl_manpages[k] = bld.EXPAND_VARIABLES(pidl_manpages[k]) + + # use perl to build the manpages + bld.env.pidl_srcdir = os.path.join(bld.srcnode.abspath(), 'pidl') + bld.SET_BUILD_GROUP('final') + if 'POD2MAN' in bld.env and bld.env['POD2MAN'] != '': + for src in pidl_manpages.keys(): + manpage = pidl_manpages[src] + section = manpage.rsplit( ".", 1)[1] + bld(rule='${POD2MAN} -c "Samba Documentation" -s %s ${SRC} ${TGT}' % section, + shell=True, + source=src, + install_path=os.path.dirname(bld.EXPAND_VARIABLES('${MANDIR}/'+manpage)), + target=os.path.basename(manpage)) + # we want to prefer the git version of the parsers if we can. # Only if the source has changed do we want to re-run yapp # But we force the developer to use the pidl standalone build