From d8d5855742c2129b7373d6fccd77f7132e7a5f57 Mon Sep 17 00:00:00 2001
From: Andreas Schneider <asn@cryptomilk.org>
Date: Fri, 29 Nov 2019 11:19:17 +0100
Subject: [PATCH] Remove the pidl patch and build pidl using its Makefile.PL

---
 pidl.patch | 116 -----------------------------------------------------
 samba.spec |  28 ++++++++++---
 2 files changed, 23 insertions(+), 121 deletions(-)
 delete mode 100644 pidl.patch

diff --git a/pidl.patch b/pidl.patch
deleted file mode 100644
index 889aeb0..0000000
--- a/pidl.patch
+++ /dev/null
@@ -1,116 +0,0 @@
-From 838457ac4f9f3f6c1bb5936738566210a62cbdc5 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?G=C3=BCnther=20Deschner?= <gd@samba.org>
-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 <gd@samba.org>
----
- 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,37 @@
-+#!/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)
-+
-+if not bld.CONFIG_SET('USING_SYSTEM_PARSE_YAPP_DRIVER'):
-+    bld.INSTALL_FILES(bld.env.PERL_LIB_INSTALL_DIR,
-+                      'Parse/Yapp/Driver.pm',
-+                      flat=False)
-diff --git a/pidl/wscript b/pidl/wscript
-index 01b71bd8b27..a2a15d36851 100644
---- a/pidl/wscript
-+++ b/pidl/wscript
-@@ -32,10 +32,49 @@
-     # Check if perl(Parse::Yapp::Driver) is available.
-     check_system_perl_module(conf, "Parse::Yapp::Driver", 1.05)
- 
-+    # 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
-     conf.find_program('yapp', var='YAPP')
-+    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
diff --git a/samba.spec b/samba.spec
index b644a66..c677fcf 100644
--- a/samba.spec
+++ b/samba.spec
@@ -118,7 +118,6 @@ Source14:       samba.pamd
 
 Source201:      README.downgrade
 
-Patch0:         pidl.patch
 Patch100:       0000-use-gnutls-for-des-cbc.patch
 Patch101:       0001-handle-removal-des-enctypes-from-krb5.patch
 Patch102:       0002-samba-tool-create-working-private-krb5.conf.patch
@@ -186,8 +185,6 @@ BuildRequires: pam-devel
 BuildRequires: perl-interpreter
 BuildRequires: perl-generators
 BuildRequires: perl(Archive::Tar)
-BuildRequires: perl(ExtUtils::MakeMaker)
-BuildRequires: perl(Parse::Yapp)
 BuildRequires: perl(Test::More)
 BuildRequires: popt-devel
 BuildRequires: python3-devel
@@ -232,6 +229,7 @@ BuildRequires: gnutls-devel >= 3.2.0
 %endif
 
 # pidl requirements
+BuildRequires: perl(ExtUtils::MakeMaker)
 BuildRequires: perl(Parse::Yapp)
 
 BuildRequires: libtalloc-devel >= %{talloc_version}
@@ -872,6 +870,12 @@ export LDFLAGS="%{__global_ldflags} -fuse-ld=gold"
 
 make %{?_smp_mflags}
 
+pushd pidl
+%__perl Makefile.PL PREFIX=%{_prefix} INSTALLSITELIB=%{perl_vendorlib}
+
+make %{?_smp_mflags}
+popd
+
 %install
 rm -rf %{buildroot}
 
@@ -1040,6 +1044,13 @@ for f in samba/libsamba-net-samba4.so \
 done
 %endif # ! with_dc
 
+pushd pidl
+make DESTDIR=%{buildroot} install
+
+rm -f %{buildroot}%{perl_archlib}/perllocal.pod
+rm -f %{buildroot}%{perl_vendorlib}/auto/Parse/Pidl/.packlist
+popd
+
 %if %{with testsuite}
 %check
 TDB_NO_FSYNC=1 make %{?_smp_mflags} test
@@ -1858,6 +1869,7 @@ fi
 %dir %{perl_vendorlib}/Parse/Pidl/Samba3
 %{perl_vendorlib}/Parse/Pidl/Samba3/ServerNDR.pm
 %{perl_vendorlib}/Parse/Pidl/Samba3/ClientNDR.pm
+%{perl_vendorlib}/Parse/Pidl/Samba3/Template.pm
 %dir %{perl_vendorlib}/Parse/Pidl/Samba4
 %{perl_vendorlib}/Parse/Pidl/Samba4/Header.pm
 %dir %{perl_vendorlib}/Parse/Pidl/Samba4/COM
@@ -1873,8 +1885,14 @@ fi
 %{perl_vendorlib}/Parse/Pidl/Samba4/TDR.pm
 %{perl_vendorlib}/Parse/Pidl/NDR.pm
 %{perl_vendorlib}/Parse/Pidl/Util.pm
-%{_mandir}/man1/pidl*
-%{_mandir}/man3/Parse::Pidl*
+%dir %{perl_vendorlib}/Parse/Yapp
+%{perl_vendorlib}/Parse/Yapp/Driver.pm
+%{_mandir}/man1/pidl.1*
+%{_mandir}/man3/Parse::Pidl::Dump.3pm*
+%{_mandir}/man3/Parse::Pidl::NDR.3pm*
+%{_mandir}/man3/Parse::Pidl::Util.3pm*
+%{_mandir}/man3/Parse::Pidl::Wireshark::Conformance.3pm*
+%{_mandir}/man3/Parse::Pidl::Wireshark::NDR.3pm*
 
 ### PYTHON3
 %files -n python3-%{name}