Re: JPL mothballed?

[email protected] Sat, 17 Mar 2001 12:35:07 -0800 (PST)
Newsgroups perl.jpl
Message-ID <[email protected]>
> where is some recent information on JPL?  is the last release really 1999 as
> in the CPAN archives?

> does it work with perl 5.6 and jdk 1.3?
> we experienced this error attempting to install it:
> Package JNI (JNI.pm) does not match filename blib/lib/jni.pm at

I'm not sure why you're seeing that error but recently Jarkko
Hietieniemi produced a patch to make JPL work with jdk 1.2/3.
I've had success with JPL under perl 5.6 and jdk 1.3 using
the patch (included below). 

Rgds,
--
Charles DeRykus

Change 8803 by jhi@alpha on 2001/02/14 03:14:14

	Duplicate environment for JPL so that JDK 1.2/1.3 don't get upset.

Affected files ...

... //depot/perl/perl.c#300 edit
... //depot/perl/perl.h#315 edit

Differences ...

==== //depot/perl/perl.c#300 (text) ====
Index: perl/perl.c
--- perl/perl.c.~1~	Wed Feb 14 05:19:55 2001
+++ perl/perl.c	Wed Feb 14 05:19:55 2001
@@ -3257,6 +3257,8 @@
     char *s;
     SV *sv;
     GV* tmpgv;
+    char **dup_env_base = 0;
+    int dup_env_count = 0;
 
     argc--,argv++;	/* skip name of script */
     if (PL_doswitches) {
@@ -3325,6 +3327,23 @@
 	    env = environ;
 	if (env != environ)
 	    environ[0] = Nullch;
+#ifdef NEED_ENVIRON_DUP_FOR_MODIFY
+	{
+	    char **env_base;
+	    for (env_base = env; *env; env++) 
+		dup_env_count++;
+	    if ((dup_env_base = (char **)
+		 safemalloc( sizeof(char *) * (dup_env_count+1) ))) {
+		char **dup_env;
+		for (env = env_base, dup_env = dup_env_base;
+		     *env;
+		     env++, dup_env++)
+		    *dup_env = savepv(*env);
+		*dup_env = Nullch;
+		env = dup_env_base;
+	    } /* else what? */
+	}
+#endif /* NEED_ENVIRON_DUP_FOR_MODIFY */
 	for (; *env; env++) {
 	    if (!(s = strchr(*env,'=')))
 		continue;
@@ -3340,7 +3359,13 @@
 	    (void)PerlEnv_putenv(savepv(*env));
 #endif
 	}
-#endif
+	if (dup_env_base) {
+	    char **dup_env;
+	    for (dup_env = dup_env_base; *dup_env; dup_env++)
+		Safefree(*dup_env);
+	    Safefree(dup_env_base);
+	}
+#endif /* USE_ENVIRON_ARRAY */
 #ifdef DYNAMIC_ENV_FETCH
 	HvNAME(hv) = savepv(ENV_HV_NAME);
 #endif

==== //depot/perl/perl.h#315 (text) ====
Index: perl/perl.h
--- perl/perl.h.~1~	Wed Feb 14 05:19:55 2001
+++ perl/perl.h	Wed Feb 14 05:19:55 2001
@@ -1692,6 +1692,13 @@
 #  define USE_ENVIRON_ARRAY
 #endif
 
+#ifdef JPL
+    /* E.g. JPL needs to operate on a copy of the real environment.
+     * JDK 1.2 and 1.3 seem to get upset if the original environment
+     * is diddled with. */
+#   define NEED_ENVIRON_DUP_FOR_MODIFY
+#endif
+
 #ifndef PERL_SYS_INIT3
 #  define PERL_SYS_INIT3(argvp,argcp,envp) PERL_SYS_INIT(argvp,argcp)
 #endif
End of Patch.


-- 
$jhi++; # http://www.iki.fi/jhi/
        # There is this special biologist word we use for 'stable'.
        # It is 'dead'. -- Jack Cohen