[Patches] waf and other build fixes
Stefan Metzmacher
metze at samba.org
Fri Nov 16 16:06:45 UTC 2018
Hi,
here're some patches which fix some regressions introduced by the change
to waf 2.0.8.
Please review and push:-)
A pipeline was successful here:
https://gitlab.com/samba-team/devel/samba/pipelines/36776640
Thanks!
metze
-------------- next part --------------
From f63f3f3a7a55388df459d41d72bf8ac533d0dfa7 Mon Sep 17 00:00:00 2001
From: Stefan Metzmacher <metze at samba.org>
Date: Thu, 15 Nov 2018 19:53:41 +0100
Subject: [PATCH 1/8] s4:heimdal_build: make use of libreplace getprogname()
replacement
Signed-off-by: Stefan Metzmacher <metze at samba.org>
---
source4/heimdal_build/config.h | 5 +++++
source4/heimdal_build/replace.c | 8 --------
2 files changed, 5 insertions(+), 8 deletions(-)
diff --git a/source4/heimdal_build/config.h b/source4/heimdal_build/config.h
index 160b835b0f37..85ac3ba4facc 100644
--- a/source4/heimdal_build/config.h
+++ b/source4/heimdal_build/config.h
@@ -57,4 +57,9 @@
#define HAVE_CLOSEFROM 1
#endif
+/* lib/replace provides a getprogname */
+#ifndef HAVE_GETPROGNAME
+#define HAVE_GETPROGNAME 1
+#endif
+
#endif
diff --git a/source4/heimdal_build/replace.c b/source4/heimdal_build/replace.c
index e6a74f9ba8d5..3e43f3fc5613 100644
--- a/source4/heimdal_build/replace.c
+++ b/source4/heimdal_build/replace.c
@@ -92,11 +92,3 @@ void setprogname(const char *argv0)
}
#endif /* HAVE_SETPROGNAME */
-
-#ifndef HAVE_GETPROGNAME
-/* We don't want to use a getprogname reimplementation */
-const char *getprogname(void)
-{
- return "";
-}
-#endif /* HAVE_GETPROGNAME */
--
2.17.1
From f96e6c26472fdab23dd074a87f3a4caacbae1948 Mon Sep 17 00:00:00 2001
From: Stefan Metzmacher <metze at samba.org>
Date: Tue, 13 Nov 2018 15:58:17 +0100
Subject: [PATCH 2/8] wafsamba: fix CHECK_MAKEFLAGS() with waf 2.0.8
Changing Options.options.jobs in the build() hook
is too late in waf 2.
Signed-off-by: Stefan Metzmacher <metze at samba.org>
---
buildtools/wafsamba/samba_utils.py | 29 +++++++++++++++++++----------
buildtools/wafsamba/wscript | 1 -
2 files changed, 19 insertions(+), 11 deletions(-)
diff --git a/buildtools/wafsamba/samba_utils.py b/buildtools/wafsamba/samba_utils.py
index 58a0b71796c0..afcf54c4e60e 100644
--- a/buildtools/wafsamba/samba_utils.py
+++ b/buildtools/wafsamba/samba_utils.py
@@ -440,14 +440,14 @@ Options.OptionsContext.RECURSE = RECURSE
Build.BuildContext.RECURSE = RECURSE
-def CHECK_MAKEFLAGS(bld):
+def CHECK_MAKEFLAGS(options):
'''check for MAKEFLAGS environment variable in case we are being
called from a Makefile try to honor a few make command line flags'''
if not 'WAF_MAKE' in os.environ:
return
makeflags = os.environ.get('MAKEFLAGS')
if makeflags is None:
- return
+ makeflags = ""
jobs_set = False
jobs = None
# we need to use shlex.split to cope with the escaping of spaces
@@ -455,7 +455,7 @@ def CHECK_MAKEFLAGS(bld):
for opt in shlex.split(makeflags):
# options can come either as -x or as x
if opt[0:2] == 'V=':
- Options.options.verbose = Logs.verbose = int(opt[2:])
+ options.verbose = Logs.verbose = int(opt[2:])
if Logs.verbose > 0:
Logs.zones = ['runner']
if Logs.verbose > 2:
@@ -469,26 +469,35 @@ def CHECK_MAKEFLAGS(bld):
# this is also how "make test TESTS=testpattern" works, and
# "make VERBOSE=1" as well as things like "make SYMBOLCHECK=1"
loc = opt.find('=')
- setattr(Options.options, opt[0:loc], opt[loc+1:])
+ setattr(options, opt[0:loc], opt[loc+1:])
elif opt[0] != '-':
for v in opt:
if re.search(r'j[0-9]*$', v):
jobs_set = True
jobs = opt.strip('j')
elif v == 'k':
- Options.options.keep = True
+ options.keep = True
elif re.search(r'-j[0-9]*$', opt):
jobs_set = True
jobs = opt.strip('-j')
elif opt == '-k':
- Options.options.keep = True
+ options.keep = True
if not jobs_set:
# default to one job
- Options.options.jobs = 1
+ options.jobs = 1
elif jobs_set and jobs:
- Options.options.jobs = int(jobs)
-
-Build.BuildContext.CHECK_MAKEFLAGS = CHECK_MAKEFLAGS
+ options.jobs = int(jobs)
+
+waflib_options_parse_cmd_args = Options.OptionsContext.parse_cmd_args
+def wafsamba_options_parse_cmd_args(self, _args=None, cwd=None, allow_unknown=False):
+ (options, commands, envvars) = \
+ waflib_options_parse_cmd_args(self,
+ _args=_args,
+ cwd=cwd,
+ allow_unknown=allow_unknown)
+ CHECK_MAKEFLAGS(options)
+ return options, commands, envvars
+Options.OptionsContext.parse_cmd_args = wafsamba_options_parse_cmd_args
option_groups = {}
diff --git a/buildtools/wafsamba/wscript b/buildtools/wafsamba/wscript
index 5c4b037286be..013b026a5801 100644
--- a/buildtools/wafsamba/wscript
+++ b/buildtools/wafsamba/wscript
@@ -598,7 +598,6 @@ def build(bld):
Logs.error('bld.path %s is not a child of %s' % (curdir, srcdir))
raise Errors.WafError('''The top source directory has moved. Please run distclean and reconfigure''')
- bld.CHECK_MAKEFLAGS()
bld.SETUP_BUILD_GROUPS()
bld.ENFORCE_GROUP_ORDERING()
bld.CHECK_PROJECT_RULES()
--
2.17.1
From e0188f178f8bbcba8d1d6800e7ad715faacc6693 Mon Sep 17 00:00:00 2001
From: Stefan Metzmacher <metze at samba.org>
Date: Thu, 15 Nov 2018 19:35:27 +0100
Subject: [PATCH 3/8] wafsamba: add a fix for broken python threading if just
one job is forced
This fixes random failures during (at least) configure on AIX.
Signed-off-by: Stefan Metzmacher <metze at samba.org>
---
buildtools/wafsamba/nothreads.py | 219 -----------------------------
buildtools/wafsamba/samba_utils.py | 18 +++
buildtools/wafsamba/wafsamba.py | 4 -
3 files changed, 18 insertions(+), 223 deletions(-)
delete mode 100644 buildtools/wafsamba/nothreads.py
diff --git a/buildtools/wafsamba/nothreads.py b/buildtools/wafsamba/nothreads.py
deleted file mode 100644
index f873d7d5de12..000000000000
--- a/buildtools/wafsamba/nothreads.py
+++ /dev/null
@@ -1,219 +0,0 @@
-# encoding: utf-8
-# Thomas Nagy, 2005-2008 (ita)
-
-# this replaces the core of Runner.py in waf with a varient that works
-# on systems with completely broken threading (such as Python 2.5.x on
-# AIX). For simplicity we enable this when JOBS=1, which is triggered
-# by the compatibility makefile used for the waf build. That also ensures
-# this code is tested, as it means it is used in the build farm, and by
-# anyone using 'make' to build Samba with waf
-
-"Execute the tasks"
-
-import sys, random, threading
-try: from Queue import Queue
-except ImportError: from queue import Queue
-from waflib import Utils, Options, Errors
-from waflib.TaskGen import EXCEPTION, CRASHED, MAXJOBS, ASK_LATER, SKIPPED, SKIP_ME, SUCCESS
-
-GAP = 15
-
-run_old = threading.Thread.run
-def run(*args, **kwargs):
- try:
- run_old(*args, **kwargs)
- except (KeyboardInterrupt, SystemExit):
- raise
- except:
- sys.excepthook(*sys.exc_info())
-threading.Thread.run = run
-
-
-class TaskConsumer(object):
- consumers = 1
-
-def process(tsk):
- m = tsk.master
- if m.stop:
- m.out.put(tsk)
- return
-
- try:
- tsk.generator.bld.printout(tsk.display())
- if tsk.__class__.stat: ret = tsk.__class__.stat(tsk)
- # actual call to task's run() function
- else: ret = tsk.call_run()
- except Exception as e:
- tsk.err_msg = Utils.ex_stack()
- tsk.hasrun = EXCEPTION
-
- # TODO cleanup
- m.error_handler(tsk)
- m.out.put(tsk)
- return
-
- if ret:
- tsk.err_code = ret
- tsk.hasrun = CRASHED
- else:
- try:
- tsk.post_run()
- except Errors.WafError:
- pass
- except Exception:
- tsk.err_msg = Utils.ex_stack()
- tsk.hasrun = EXCEPTION
- else:
- tsk.hasrun = SUCCESS
- if tsk.hasrun != SUCCESS:
- m.error_handler(tsk)
-
- m.out.put(tsk)
-
-class Parallel(object):
- """
- keep the consumer threads busy, and avoid consuming cpu cycles
- when no more tasks can be added (end of the build, etc)
- """
- def __init__(self, bld, j=2):
-
- # number of consumers
- self.numjobs = j
-
- self.manager = bld.task_manager
- self.manager.current_group = 0
-
- self.total = self.manager.total()
-
- # tasks waiting to be processed - IMPORTANT
- self.outstanding = []
- self.maxjobs = MAXJOBS
-
- # tasks that are awaiting for another task to complete
- self.frozen = []
-
- # tasks returned by the consumers
- self.out = Queue(0)
-
- self.count = 0 # tasks not in the producer area
-
- self.processed = 1 # progress indicator
-
- self.stop = False # error condition to stop the build
- self.error = False # error flag
-
- def get_next(self):
- "override this method to schedule the tasks in a particular order"
- if not self.outstanding:
- return None
- return self.outstanding.pop(0)
-
- def postpone(self, tsk):
- "override this method to schedule the tasks in a particular order"
- # TODO consider using a deque instead
- if random.randint(0, 1):
- self.frozen.insert(0, tsk)
- else:
- self.frozen.append(tsk)
-
- def refill_task_list(self):
- "called to set the next group of tasks"
-
- while self.count > self.numjobs + GAP or self.count >= self.maxjobs:
- self.get_out()
-
- while not self.outstanding:
- if self.count:
- self.get_out()
-
- if self.frozen:
- self.outstanding += self.frozen
- self.frozen = []
- elif not self.count:
- (jobs, tmp) = self.manager.get_next_set()
- if jobs is not None:
- self.maxjobs = jobs
- if tmp:
- self.outstanding += tmp
- break
-
- def get_out(self):
- "the tasks that are put to execute are all collected using get_out"
- ret = self.out.get()
- self.manager.add_finished(ret)
- if not self.stop and getattr(ret, 'more_tasks', None):
- self.outstanding += ret.more_tasks
- self.total += len(ret.more_tasks)
- self.count -= 1
-
- def error_handler(self, tsk):
- "by default, errors make the build stop (not thread safe so be careful)"
- if not Options.options.keep:
- self.stop = True
- self.error = True
-
- def start(self):
- "execute the tasks"
-
- while not self.stop:
-
- self.refill_task_list()
-
- # consider the next task
- tsk = self.get_next()
- if not tsk:
- if self.count:
- # tasks may add new ones after they are run
- continue
- else:
- # no tasks to run, no tasks running, time to exit
- break
-
- if tsk.hasrun:
- # if the task is marked as "run", just skip it
- self.processed += 1
- self.manager.add_finished(tsk)
- continue
-
- try:
- st = tsk.runnable_status()
- except Exception as e:
- self.processed += 1
- if self.stop and not Options.options.keep:
- tsk.hasrun = SKIPPED
- self.manager.add_finished(tsk)
- continue
- self.error_handler(tsk)
- self.manager.add_finished(tsk)
- tsk.hasrun = EXCEPTION
- tsk.err_msg = Utils.ex_stack()
- continue
-
- if st == ASK_LATER:
- self.postpone(tsk)
- elif st == SKIP_ME:
- self.processed += 1
- tsk.hasrun = SKIPPED
- self.manager.add_finished(tsk)
- else:
- # run me: put the task in ready queue
- tsk.position = (self.processed, self.total)
- self.count += 1
- self.processed += 1
- tsk.master = self
-
- process(tsk)
-
- # self.count represents the tasks that have been made available to the consumer threads
- # collect all the tasks after an error else the message may be incomplete
- while self.error and self.count:
- self.get_out()
-
- #print loop
- assert (self.count == 0 or self.stop)
-
-
-# enable nothreads
-import Runner
-Runner.process = process
-Runner.Parallel = Parallel
diff --git a/buildtools/wafsamba/samba_utils.py b/buildtools/wafsamba/samba_utils.py
index afcf54c4e60e..8e3127734621 100644
--- a/buildtools/wafsamba/samba_utils.py
+++ b/buildtools/wafsamba/samba_utils.py
@@ -496,6 +496,24 @@ def wafsamba_options_parse_cmd_args(self, _args=None, cwd=None, allow_unknown=Fa
cwd=cwd,
allow_unknown=allow_unknown)
CHECK_MAKEFLAGS(options)
+ if options.jobs == 1:
+ #
+ # waflib.Runner.Parallel processes jobs inline if the possible number
+ # of jobs is just 1. But (at least in waf <= 2.0.12) it still calls
+ # create a waflib.Runner.Spawner() which creates a single
+ # waflib.Runner.Consumer() thread that tries to process jobs from the
+ # queue.
+ #
+ # This has strange effects, which are not noticed typically,
+ # but at least on AIX python has broken threading and fails
+ # in random ways.
+ #
+ # So we just add a dummy Spawner class.
+ class NoOpSpawner(object):
+ def __init__(self, master):
+ return
+ from waflib import Runner
+ Runner.Spawner = NoOpSpawner
return options, commands, envvars
Options.OptionsContext.parse_cmd_args = wafsamba_options_parse_cmd_args
diff --git a/buildtools/wafsamba/wafsamba.py b/buildtools/wafsamba/wafsamba.py
index 59a4eacb305b..906ae9e75b6d 100644
--- a/buildtools/wafsamba/wafsamba.py
+++ b/buildtools/wafsamba/wafsamba.py
@@ -33,10 +33,6 @@ import pkgconfig
import configure_file
import samba_waf18
-# some systems have broken threading in python
-if os.environ.get('WAF_NOTHREADS') == '1':
- import nothreads
-
LIB_PATH="shared"
os.environ['PYTHONUNBUFFERED'] = '1'
--
2.17.1
From e5719c701646fde49c0b678d4baa704f85c69b83 Mon Sep 17 00:00:00 2001
From: Stefan Metzmacher <metze at samba.org>
Date: Thu, 15 Nov 2018 12:51:37 +0100
Subject: [PATCH 4/8] wafsamba: remove hardcoded '..' and '/default/' from
SAMBA_PIDL()
This makes it possible to remove some move waf 1.8 compat code.
Signed-off-by: Stefan Metzmacher <metze at samba.org>
---
buildtools/wafsamba/samba_pidl.py | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/buildtools/wafsamba/samba_pidl.py b/buildtools/wafsamba/samba_pidl.py
index 2ff2c0dc64db..8073229bdd6f 100644
--- a/buildtools/wafsamba/samba_pidl.py
+++ b/buildtools/wafsamba/samba_pidl.py
@@ -76,7 +76,7 @@ def SAMBA_PIDL(bld, pname, source,
else:
cc = 'CC="%s"' % bld.CONFIG_GET("CC")
- t = bld(rule='cd .. && %s %s ${PERL} "${PIDL}" --quiet ${OPTIONS} --outputdir ${OUTPUTDIR} -- "${SRC[0].abspath(env)}"' % (cpp, cc),
+ t = bld(rule='cd ${PIDL_LAUNCH_DIR} && %s %s ${PERL} ${PIDL} --quiet ${OPTIONS} --outputdir ${OUTPUTDIR} -- "${IDLSRC}"' % (cpp, cc),
ext_out = '.c',
before = 'c',
update_outputs = True,
@@ -89,9 +89,13 @@ def SAMBA_PIDL(bld, pname, source,
# prime the list of nodes we are dependent on with the cached pidl sources
t.allnodes = pidl_src_nodes
- t.env.PIDL = os.path.join(bld.srcnode.abspath(), 'pidl/pidl')
+ t.env.PIDL_LAUNCH_DIR = bld.srcnode.path_from(bld.bldnode.parent)
+ pnode = bld.srcnode.find_resource('pidl/pidl')
+ t.env.PIDL = pnode.path_from(bld.srcnode)
t.env.OPTIONS = TO_LIST(options)
- t.env.OUTPUTDIR = bld.bldnode.parent.name + '/default/' + bld.path.find_dir(output_dir).path_from(bld.srcnode)
+ snode = t.path.find_resource(source[0])
+ t.env.IDLSRC = snode.path_from(bld.srcnode)
+ t.env.OUTPUTDIR = bld.bldnode.path_from(bld.srcnode) + '/' + bld.path.find_dir(output_dir).path_from(bld.srcnode)
if generate_tables and table_header_idx is not None:
pidl_headers = LOCAL_CACHE(bld, 'PIDL_HEADERS')
--
2.17.1
From 0934d102ea651a8a82a32ceb12850163257e0761 Mon Sep 17 00:00:00 2001
From: Stefan Metzmacher <metze at samba.org>
Date: Thu, 15 Nov 2018 11:41:07 +0100
Subject: [PATCH 5/8] wafsamba: remove the need of BuildContext.bdir
---
buildtools/wafsamba/samba_deps.py | 4 ++--
buildtools/wafsamba/samba_waf18.py | 1 -
2 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/buildtools/wafsamba/samba_deps.py b/buildtools/wafsamba/samba_deps.py
index 542e682619cd..d6b7c0f88d6b 100644
--- a/buildtools/wafsamba/samba_deps.py
+++ b/buildtools/wafsamba/samba_deps.py
@@ -1011,14 +1011,14 @@ def save_samba_deps(bld, tgt_list):
if tdeps != {}:
denv.outenv[t.sname] = tdeps
- depsfile = os.path.join(bld.bdir, "sambadeps")
+ depsfile = os.path.join(bld.cache_dir, "sambadeps")
denv.store_fast(depsfile)
def load_samba_deps(bld, tgt_list):
'''load a previous set of build dependencies if possible'''
- depsfile = os.path.join(bld.bldnode.abspath(), "sambadeps")
+ depsfile = os.path.join(bld.cache_dir, "sambadeps")
denv = ConfigSet.ConfigSet()
try:
debug('deps: checking saved dependencies')
diff --git a/buildtools/wafsamba/samba_waf18.py b/buildtools/wafsamba/samba_waf18.py
index 26441309d4f1..f2a2ba7fb5d3 100644
--- a/buildtools/wafsamba/samba_waf18.py
+++ b/buildtools/wafsamba/samba_waf18.py
@@ -44,7 +44,6 @@ for y in (Build.BuildContext, Build.CleanContext, Build.InstallContext, Build.Un
def pre_build(self):
self.cwdx = self.bldnode.parent
self.cwd = self.cwdx.abspath()
- self.bdir = self.bldnode.abspath()
return Build.BuildContext.old_pre_build(self)
Build.BuildContext.old_pre_build = Build.BuildContext.pre_build
Build.BuildContext.pre_build = pre_build
--
2.17.1
From d918e3e3fc0bbfd9f93b56a202648a0b573e5169 Mon Sep 17 00:00:00 2001
From: Stefan Metzmacher <metze at samba.org>
Date: Tue, 13 Nov 2018 17:04:39 +0100
Subject: [PATCH 6/8] wafsamba: remove unused Build.BuildContext.pre_build
overload
This is not needed and also fixed the interaction between
vim and ':make'
Signed-off-by: Stefan Metzmacher <metze at samba.org>
---
buildtools/wafsamba/samba_pidl.py | 2 +-
buildtools/wafsamba/samba_waf18.py | 7 -------
2 files changed, 1 insertion(+), 8 deletions(-)
diff --git a/buildtools/wafsamba/samba_pidl.py b/buildtools/wafsamba/samba_pidl.py
index 8073229bdd6f..04460d0e6566 100644
--- a/buildtools/wafsamba/samba_pidl.py
+++ b/buildtools/wafsamba/samba_pidl.py
@@ -89,7 +89,7 @@ def SAMBA_PIDL(bld, pname, source,
# prime the list of nodes we are dependent on with the cached pidl sources
t.allnodes = pidl_src_nodes
- t.env.PIDL_LAUNCH_DIR = bld.srcnode.path_from(bld.bldnode.parent)
+ t.env.PIDL_LAUNCH_DIR = bld.srcnode.path_from(bld.bldnode)
pnode = bld.srcnode.find_resource('pidl/pidl')
t.env.PIDL = pnode.path_from(bld.srcnode)
t.env.OPTIONS = TO_LIST(options)
diff --git a/buildtools/wafsamba/samba_waf18.py b/buildtools/wafsamba/samba_waf18.py
index f2a2ba7fb5d3..cc310fbf5129 100644
--- a/buildtools/wafsamba/samba_waf18.py
+++ b/buildtools/wafsamba/samba_waf18.py
@@ -41,13 +41,6 @@ for y in (Build.BuildContext, Build.CleanContext, Build.InstallContext, Build.Un
class tmp(y):
variant = 'default'
-def pre_build(self):
- self.cwdx = self.bldnode.parent
- self.cwd = self.cwdx.abspath()
- return Build.BuildContext.old_pre_build(self)
-Build.BuildContext.old_pre_build = Build.BuildContext.pre_build
-Build.BuildContext.pre_build = pre_build
-
def abspath(self, env=None):
if env and hasattr(self, 'children'):
return self.get_bld().abspath()
--
2.17.1
From 976b1e60a6922f522f9f12056dffc6c0c8ca2d52 Mon Sep 17 00:00:00 2001
From: Stefan Metzmacher <metze at samba.org>
Date: Thu, 15 Nov 2018 13:37:58 +0100
Subject: [PATCH 7/8] wafsamba: simplify SAMBA_PIDL_TABLES() rule
The builddir is not bin/default/ instead of just bin/,
so we don't need to strip 'default/' anymore.
And the '--output ${TGT}' part is not really implemented.
Signed-off-by: Stefan Metzmacher <metze at samba.org>
---
buildtools/wafsamba/samba_pidl.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/buildtools/wafsamba/samba_pidl.py b/buildtools/wafsamba/samba_pidl.py
index 04460d0e6566..1e55892127e5 100644
--- a/buildtools/wafsamba/samba_pidl.py
+++ b/buildtools/wafsamba/samba_pidl.py
@@ -121,6 +121,7 @@ Build.BuildContext.SAMBA_PIDL_LIST = SAMBA_PIDL_LIST
@before('exec_rule')
def collect(self):
pidl_headers = LOCAL_CACHE(self.bld, 'PIDL_HEADERS')
+ # The first source is tables.pl itself
self.source = Utils.to_list(self.source)
for (name, hd) in pidl_headers.items():
y = self.bld.get_tgen_by_name(name)
@@ -136,7 +137,7 @@ def SAMBA_PIDL_TABLES(bld, name, target):
bld.SET_BUILD_GROUP('main')
t = bld(
features = 'collect',
- rule = '${PERL} ${SRC} --output ${TGT} | sed "s|default/||" > ${TGT}',
+ rule = '${PERL} ${SRC} > ${TGT}',
ext_out = '.c',
before = 'c',
update_outputs = True,
--
2.17.1
From 0e4f55e6c37e3aefec9f65677c9432ddb5669555 Mon Sep 17 00:00:00 2001
From: Stefan Metzmacher <metze at samba.org>
Date: Thu, 15 Nov 2018 20:15:37 +0100
Subject: [PATCH 8/8] librpc/tables.pl: remove unused $opt_output option
Signed-off-by: Stefan Metzmacher <metze at samba.org>
---
librpc/tables.pl | 2 --
1 file changed, 2 deletions(-)
diff --git a/librpc/tables.pl b/librpc/tables.pl
index 04764f5fa0bf..b7ac6e004505 100755
--- a/librpc/tables.pl
+++ b/librpc/tables.pl
@@ -11,7 +11,6 @@ use strict;
use Getopt::Long;
use File::Basename;
-my $opt_output = 'librpc/gen_ndr/tables.c';
my $opt_help = 0;
@@ -32,7 +31,6 @@ sub ShowHelp()
# main program
GetOptions (
'help|h|?' => \$opt_help,
- 'output=s' => \$opt_output,
);
if ($opt_help) {
--
2.17.1
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <http://lists.samba.org/pipermail/samba-technical/attachments/20181116/7cdb4fc2/signature.sig>
More information about the samba-technical
mailing list