param: use generate_param.py to generate param_global.h
authorGarming Sam <garming@catalyst.net.nz>
Wed, 15 Jan 2014 04:39:48 +0000 (17:39 +1300)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 12 Feb 2014 00:17:13 +0000 (13:17 +1300)
Pair-programmed-with: Andrew Bartlett <abartlet@samba.org>
Signed-off-by: Garming Sam <garming@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Michael Adam <obnox@samba.org>
lib/param/wscript_build
script/mkparamdefs.pl [deleted file]
source3/param/loadparm.c
source3/param/wscript_build
source3/wscript_build

index 2a32133bc1d34a44c56321ba06c06cdbc234412f..3d216c4913c676693b94cdb845a8c7ed2f2716e1 100644 (file)
@@ -25,12 +25,11 @@ bld.SAMBA_GENERATOR('s3_param_h',
                     group='build_source',
                     rule='${PERL} ${SRC[0].abspath(env)} ${SRC[1].abspath(env)} ${SRC[2].abspath(env)} --file ${TGT}')
 
-
-bld.SAMBA_GENERATOR('param_global_h',
-                    source= '../../script/mkparamdefs.pl loadparm.c param_functions.c',
+bld.SAMBA_GENERATOR('param_global.h',
+                    source= '../../script/generate_param.py ../../docs-xml/smbdotconf/parameters.all.xml',
                     target='param_global.h',
                     group='build_source',
-                    rule='${PERL} ${SRC[0].abspath(env)} ${SRC[1].abspath(env)}  ${SRC[2].abspath(env)} --file ${TGT} --generate-scope=GLOBAL')
+                    rule='${PYTHON} ${SRC[0].abspath(env)} --file ${SRC[1].abspath(env)} --output ${TGT} --mode=PARAMDEFS --scope=GLOBAL')
 
 bld.SAMBA_LIBRARY('server-role',
                   source='loadparm_server_role.c',
diff --git a/script/mkparamdefs.pl b/script/mkparamdefs.pl
deleted file mode 100644 (file)
index 6b59230..0000000
+++ /dev/null
@@ -1,206 +0,0 @@
-#!/usr/bin/perl
-# Generate loadparm tables for loadparm.c
-# by Andrew Bartlett
-# based on mkproto.pl Written by Jelmer Vernooij
-# based on the original mkproto.sh by Andrew Tridgell
-
-use strict;
-
-# don't use warnings module as it is not portable enough
-# use warnings;
-
-use Getopt::Long;
-use File::Basename;
-use File::Path;
-
-#####################################################################
-# read a file into a string
-
-my $file = undef;
-my $public_define = undef;
-my $_public = "";
-my $_private = "";
-my $public_data = \$_public;
-my $builddir = ".";
-my $srcdir = ".";
-my $generate_scope = undef;
-
-sub public($)
-{
-       my ($d) = @_;
-       $$public_data .= $d;
-}
-
-sub usage()
-{
-       print "Usage: mkparamdefs.pl [options] [c files]\n";
-       print "OPTIONS:\n";
-       print "  --srcdir=path          Read files relative to this directory\n";
-       print "  --builddir=path        Write file relative to this directory\n";
-       print "  --generate-scope=[GLOBAL|LOCAL]        Filter which definitions to generate\n";
-       print "  --help                 Print this help message\n\n";
-       exit 0;
-}
-
-GetOptions(
-       'file=s' => sub { my ($f,$v) = @_; $file = $v; },
-       'srcdir=s' => sub { my ($f,$v) = @_; $srcdir = $v; },
-       'builddir=s' => sub { my ($f,$v) = @_; $builddir = $v; },
-       'generate-scope=s' => sub { my ($f,$v) = @_; $generate_scope = $v; },
-       'help' => \&usage
-) or exit(1);
-
-sub normalize_define($$)
-{
-       my ($define, $file) = @_;
-
-       if (not defined($define) and defined($file)) {
-               $define = "__" . uc($file) . "__";
-               $define =~ tr{./}{__};
-               $define =~ tr{\-}{_};
-       } elsif (not defined($define)) {
-               $define = '_S3_PARAM_H_';
-       }
-
-       return $define;
-}
-
-$public_define = normalize_define($public_define, $file);
-
-sub file_load($)
-{
-    my($filename) = @_;
-    local(*INPUTFILE);
-    open(INPUTFILE, $filename) or return undef;
-    my($saved_delim) = $/;
-    undef $/;
-    my($data) = <INPUTFILE>;
-    close(INPUTFILE);
-    $/ = $saved_delim;
-    return $data;
-}
-
-sub print_header($$$)
-{
-       my ($file, $header_name,$generate_scope) = @_;
-       $file->("#ifndef $header_name\n");
-       $file->("#define $header_name\n\n");
-$file->("/* This file was automatically generated by mkparamdefs.pl. DO NOT EDIT */\n\n");
-       $file->("/**\n");
-       if ($generate_scope eq "GLOBAL") {
-           $file->(" * This structure describes global (ie., server-wide) parameters.\n");
-           $file->(" */\n");
-           $file->("struct loadparm_global \n");
-           $file->("{\n");
-           $file->("\tTALLOC_CTX *ctx; /* Context for talloced members */\n");
-       } elsif ($generate_scope eq "LOCAL") {
-           $file->(" * This structure describes a single service.\n");
-           $file->(" */\n");
-           $file->("struct loadparm_service \n");
-           $file->("{\n");
-       }
-}
-
-sub print_footer($$$)
-{
-       my ($file, $header_name, $generate_scope) = @_;
-       $file->("LOADPARM_EXTRA_" . $generate_scope . "S\n");
-       $file->("};\n");
-       $file->("\n#endif /* $header_name */\n\n");
-}
-
-sub handle_loadparm($$$)
-{
-       my ($file,$line,$generate_scope) = @_;
-
-       my $scope;
-       my $type;
-       my $name;
-       my $var;
-
-       if ($line =~ /^FN_(GLOBAL|LOCAL)_(CONST_STRING|STRING|BOOL|bool|CHAR|INTEGER|LIST)\((\w+),(.*)\)/o) {
-               $scope = $1;
-               $type = $2;
-               $name = $3;
-               $var = $4;
-       } elsif ($line =~ /^FN_(GLOBAL|LOCAL)_PARM_(CONST_STRING|STRING|BOOL|bool|CHAR|INTEGER|LIST)\((\w+),(.*)\)/o) {
-               $scope = $1;
-               $type = $2;
-               $name = $3;
-               $var = $4;
-       } else {
-               return;
-       }
-       my %tmap = (
-           "BOOL" => "bool ",
-           "CONST_STRING" => "char *",
-           "STRING" => "char *",
-           "INTEGER" => "int ",
-           "CHAR" => "char ",
-           "LIST" => "const char **",
-           );
-
-       if ($scope eq $generate_scope) {
-           $file->("\t$tmap{$type} $var;\n");
-       }
-}
-
-sub process_file($$)
-{
-       my ($file, $filename) = @_;
-
-       $filename =~ s/\.o$/\.c/g;
-
-       if ($filename =~ /^\//) {
-               open(FH, "<$filename") or die("Failed to open $filename");
-       } elsif (!open(FH, "< $builddir/$filename")) {
-           open(FH, "< $srcdir/$filename") || die "Failed to open $filename";
-       }
-
-       my $comment = undef;
-       my $incomment = 0;
-       while (my $line = <FH>) {
-               if ($line =~ /^\/\*\*/) {
-                       $comment = "";
-                       $incomment = 1;
-               }
-
-               if ($incomment) {
-                       $comment .= $line;
-                       if ($line =~ /\*\//) {
-                               $incomment = 0;
-                       }
-               }
-
-               # these are ordered for maximum speed
-               next if ($line =~ /^\s/);
-
-               next unless ($line =~ /\(/);
-
-               next if ($line =~ /^\/|[;]/);
-
-               if ($line =~ /^static (FN_.*)/) {
-                       handle_loadparm($file, $1, $generate_scope);
-               } elsif ($line =~ /^FN_/) {
-                       handle_loadparm($file, $line, $generate_scope);
-               }
-               next;
-       }
-
-       close(FH);
-}
-
-
-print_header(\&public, $public_define, $generate_scope);
-
-process_file(\&public, $_) foreach (@ARGV);
-print_footer(\&public, $public_define, $generate_scope);
-
-if (not defined($file)) {
-       print STDOUT $$public_data;
-}
-
-mkpath(dirname($file), 0, 0755);
-open(PUBLIC, ">$file") or die("Can't open `$file': $!");
-print PUBLIC "$$public_data";
-close(PUBLIC);
index c464861fffe1f766d33434da6848a1feef78826b..be18f10921fc4f6f2cc4f821a443b0db7277b2c7 100644 (file)
@@ -130,7 +130,7 @@ static bool defaults_saved = false;
        char *tls_crlfile;                                              \
        char *tls_dhpfile;
 
-#include "param/param_global.h"
+#include "lib/param/param_global.h"
 
 static struct loadparm_global Globals;
 
index 5c0635c03edb7b6ee71c8387ba3b04db08cd567e..f0c6ddae8438c58789e12b54ce3e6ea67eee7c25 100644 (file)
@@ -8,12 +8,6 @@ bld.SAMBA3_SUBSYSTEM('LOADPARM_CTX',
                      source='loadparm_ctx.c',
                      deps='''talloc s3_param_h param''')
 
-bld.SAMBA_GENERATOR('s3_param_global_h',
-                    source= '../../script/mkparamdefs.pl loadparm.c ../../lib/param/param_functions.c',
-                    target='param_global.h',
-                    group='build_source',
-                    rule='${PERL} ${SRC[0].abspath(env)} ${SRC[1].abspath(env)} ${SRC[2].abspath(env)} --file ${TGT} --generate-scope=GLOBAL')
-
 bld.SAMBA_GENERATOR('s3_param_proto_h',
                     source= '../../script/generate_param.py ../../docs-xml/smbdotconf/parameters.all.xml',
                     target='param_proto.h',
index 61e7935c98b35327a8a32fab68fd472a7409f2f2..9b6111930d01b6412c48327054720b88208484bb 100755 (executable)
@@ -190,7 +190,7 @@ bld.SAMBA3_SUBSYSTEM('param',
                    lib/sharesec.c
                    lib/ldap_debug_handler.c
                    lib/util_names.c''',
-                   deps='samba-util PARAM_UTIL ldap lber LOADPARM_CTX samba3core smbconf param_local_h s3_param_global_h cups''')
+                   deps='samba-util PARAM_UTIL ldap lber LOADPARM_CTX samba3core smbconf param_local_h param_global.h cups''')
 
 # this includes only the low level parse code, not stuff
 # that requires knowledge of security contexts