r26609: Try a few more variatations to get the selftest to run against
[samba.git] / source4 / selftest / env / Samba4.pm
index 9e3c29b32bed1f65c25dbf396988b2356ac7f74f..61edeb388548d7601b3b186dce619b9f83489b20 100644 (file)
@@ -25,9 +25,11 @@ sub new($$$$) {
 sub openldap_start($$$) {
         my ($slapd_conf, $uri, $logs) = @_;
        my $oldpath = $ENV{PATH};
+       my $olroot = "";
        my $olpath = "";
-       if (defined $ENV{OPENLDAP_PATH}) {
-               $olpath = "$ENV{OPENLDAP_PATH}:"
+       if (defined $ENV{OPENLDAP_ROOT}) {
+           $olroot = "$ENV{OPENLDAP_ROOT}";
+           $olpath = "$olroot/libexec:$olroot/sbin:";
        }
        $ENV{PATH} = "$olpath/usr/local/sbin:/usr/sbin:/sbin:$ENV{PATH}";
         system("slapd -d63 -f $slapd_conf -h $uri > $logs 2>&1 &");
@@ -44,7 +46,7 @@ sub slapd_start($$)
        # running slapd in the background means it stays in the same process group, so it can be
        # killed by timelimit
        if ($self->{ldap} eq "fedora-ds") {
-               system("$ENV{FEDORA_DS_PREFIX}/sbin/ns-slapd -D $env_vars->{FEDORA_DS_DIR} -d0 -i $env_vars->{FEDORA_DS_PIDFILE}> $env_vars->{LDAPDIR}/logs 2>&1 &");
+               system("$ENV{FEDORA_DS_ROOT}/sbin/ns-slapd -D $env_vars->{FEDORA_DS_DIR} -d0 -i $env_vars->{FEDORA_DS_PIDFILE}> $env_vars->{LDAPDIR}/logs 2>&1 &");
        } elsif ($self->{ldap} eq "openldap") {
                openldap_start($env_vars->{SLAPD_CONF}, $uri, "$env_vars->{LDAPDIR}/logs");
        }
@@ -202,10 +204,10 @@ sub mk_fedora_ds($$$)
        system("$self->{bindir}/ad2oLschema $configuration -H $ldapdir/schema-tmp.ldb --option=convert:target=fedora-ds -I $self->{setupdir}/schema-map-fedora-ds-1.0 -O $ldapdir/99_ad.ldif >&2") == 0 or die("schema conversion for Fedora DS failed");
 
 my $dir = getcwd();
-chdir "$ENV{FEDORA_DS_PREFIX}/bin" || die;
-       if (system("perl $ENV{FEDORA_DS_PREFIX}/sbin/setup-ds.pl --silent --file=$fedora_ds_inf >&2") != 0) {
+chdir "$ENV{FEDORA_DS_ROOT}/bin" || die;
+       if (system("perl $ENV{FEDORA_DS_ROOT}/sbin/setup-ds.pl --silent --file=$fedora_ds_inf >&2") != 0) {
             chdir $dir;
-            die("perl $ENV{FEDORA_DS_PREFIX}/sbin/setup-ds.pl --silent --file=$fedora_ds_inf FAILED: $?");
+            die("perl $ENV{FEDORA_DS_ROOT}/sbin/setup-ds.pl --silent --file=$fedora_ds_inf FAILED: $?");
         }
         chdir $dir || die;
 
@@ -225,20 +227,45 @@ sub mk_openldap($$$)
 
        my $oldpath = $ENV{PATH};
        my $olpath = "";
-       if (defined $ENV{OPENLDAP_PATH}) {
-               $olpath = "$ENV{OPENLDAP_PATH}:"
+       my $olroot = "";
+       if (defined $ENV{OPENLDAP_ROOT}) {
+               $olroot = "$ENV{OPENLDAP_ROOT}";
+              $olpath = "$olroot/libexec:$olroot/sbin:";
        }
        $ENV{PATH} = "$olpath/usr/local/sbin:/usr/sbin:/sbin:$ENV{PATH}";
 
        unlink($modconf);
        open(CONF, ">$modconf"); close(CONF);
 
+       if (system("slaptest -u -f $slapd_conf >&2") != 0) {
+               open(CONF, ">$modconf"); 
+               # enable slapd modules
+               print CONF "
+modulepath      $olroot/libexec/openldap
+moduleload     syncprov
+moduleload      memberof
+";
+               close(CONF);
+       }
+       if (system("slaptest -u -f $slapd_conf >&2") != 0) {
+               open(CONF, ">$modconf"); 
+               # enable slapd modules
+               print CONF "
+modulepath      $olroot/libexec/openldap
+moduleload     back_hdb
+moduleload     syncprov
+moduleload      memberof
+";
+               close(CONF);
+       }
+
        if (system("slaptest -u -f $slapd_conf >&2") != 0) {
                open(CONF, ">$modconf"); 
                # enable slapd modules
                print CONF "
 moduleload     back_hdb
 moduleload     syncprov
+moduleload      memberof
 ";
                close(CONF);
        }
@@ -250,6 +277,7 @@ moduleload  syncprov
 modulepath     /usr/lib/ldap
 moduleload     back_hdb
 moduleload     syncprov
+moduleload      memberof
 ";
                close(CONF);
        }
@@ -260,6 +288,7 @@ moduleload  syncprov
                print CONF "
 modulepath     /usr/lib/openldap
 moduleload     syncprov
+moduleload      memberof
 ";
                close(CONF);
        }
@@ -270,6 +299,7 @@ moduleload  syncprov
                print CONF "
 modulepath     /usr/lib64/openldap
 moduleload     syncprov
+moduleload      memberof
 ";
                close(CONF);
        }
@@ -624,8 +654,13 @@ nogroup:x:65534:nobody
        my @provision_options = ();
        push (@provision_options, "NSS_WRAPPER_PASSWD=\"$nsswrap_passwd\"");
        push (@provision_options, "NSS_WRAPPER_GROUP=\"$nsswrap_group\"");
-       push (@provision_options, "$self->{bindir}/smbscript");
-       push (@provision_options, "$self->{setupdir}/provision");
+       if (defined($ENV{PROVISION_PYTHON})) {
+               push (@provision_options, "$self->{bindir}/smbpython");
+               push (@provision_options, "$self->{setupdir}/provision.py");
+       } else {
+               push (@provision_options, "$self->{bindir}/smbscript");
+               push (@provision_options, "$self->{setupdir}/provision");
+       }
        push (@provision_options, split(' ', $configuration));
        push (@provision_options, "--host-name=$netbiosname");
        push (@provision_options, "--host-ip=$ifaceipv4");