[comp.lang.perl] Perl and Patch for AIX3.1, my experience

lixj@acf4.NYU.EDU (Xiaojian Li) (02/02/91)

From lixj@acf4.NYU.EDU  Fri Feb  1 18:49:36 1991
Received: from ACF4.NYU.EDU by cmcl2.NYU.EDU (5.61/1.34)
	id AA16408; Fri, 1 Feb 91 18:49:36 -0500
Received: by acf4.NYU.EDU (5.61/1.34)
	id AA29050; Fri, 1 Feb 91 18:49:30 -0500
Date: Fri, 1 Feb 91 18:49:30 -0500
From: lixj@acf4.NYU.EDU (Xiaojian Li)
Message-Id: <9102012349.AA29050@acf4.NYU.EDU>
To: rnews@cmcl2.NYU.EDU, rosenblg@acf4.NYU.EDU

Relay-Version: version nyu B notes v1.6.1 1/11/90; site acf4.NYU.EDU
From: lixj@acf4.NYU.EDU (Xiaojian Li)
Date: 1 Feb 91 18:49 EST
Date-Received: 1 Feb 91 18:49 EST
Subject: Perl and Patch for AIX3.1, my experience
Message-ID: <2540003@acf4.NYU.EDU>
Path: acf4!lixj
Newsgroups: comp.lang.perl
Posting-Version: version nyu B notes v1.6.1 1/11/90; site acf4.NYU.EDU
Organization: New York University

Dear Netters, here is some of my experience with "patch" and "perl" on
IBM6000/320.

   apparently "xlc" is too strict to the packages, it complained
redeclaration of sprintf. Ok, I am smart enough to comment out lines like

  int sprintf();

and use bsdcc(which is just xlc with many macros defined and libraries called
in different order). This worked! Perl failed one official test:
------------------------------------------------
#!./perl
print (mkdir('blurfl',0777) ? "ok 1\n" : "not ok 1\n");
print (mkdir('blurfl',0777) ? "not ok 2\n" : "ok 2\n");
print ($! =~ /exists/ ? "ok 3\n" : "not ok 3\n");
print $!, "\n";
print (-d 'blurfl' ? "ok 4\n" : "not ok 4\n");
print (rmdir('blurfl') ? "ok 5\n" : "not ok 5\n");
print (rmdir('blurfl') ? "not ok 6\n" : "ok 6\n");
print ($! =~ /such|exist/ ? "ok 7\n" : "not ok 7\n");
print $!, "\n";

ok 1
ok 2
not ok 3
Do not specify an existing file.
ok 4
ok 5
ok 6
ok 7
A file or directory in the path name does not exist.
------------------------------------------------
I guess I can not call it a fail because IBM uses a different English.

Hope this would help those who want to install perl and patch under AIX3.1
Have fun.

Xiaojian

ejk@ux2.cso.uiuc.edu (Ed Kubaitis) (02/03/91)

Here is a recipe for building perl patchlevel 44 on AIX 3.1 (3001) that passes
all tests in "make test". Note that "cc", not "xlc" or "bsdcc" is used.

   o  used perl-3.0.41.tar.Z from prep.ai.mit.edu
   o  applied patches 42, 43, & 44
   o  ./Configure  
      Default answer on all questions, EXCEPT:
      "Do you wish to attempt to use the malloc that comes with perl? [y] n"

   o  apply attached patch which:
	 o defines SYMLINK in config.h
	 o prevents redefintion of sprintf in perl.h
	 o inserts "#pragma alloca" in x2p/a2p.y
   o  make depend
   o  make
   o  make test
   o  make install

----------------------------------
Ed Kubaitis (ejk@uxh.cso.uiuc.edu)
Computing Services Office - University of Illinois, Urbana

Attachment: patch for config.h, perl.h, x2p/a2p.y
==============================================================================
*** config.h-	Mon Jan 14 10:16:13 1991
--- config.h	Mon Jan 14 10:16:54 1991
***************
*** 418,424 ****
   *	This symbol, if defined, indicates that the symlink routine is available
   *	to create symbolic links.
   */
! /*#undef	SYMLINK		/**/
  
  /* SYSCALL:
   *	This symbol, if defined, indicates that the syscall routine is available
--- 418,424 ----
   *	This symbol, if defined, indicates that the symlink routine is available
   *	to create symbolic links.
   */
! #define	SYMLINK		/**/
  
  /* SYSCALL:
   *	This symbol, if defined, indicates that the syscall routine is available
*** perl.h-	Mon Jan 14 08:09:19 1991
--- perl.h	Mon Jan 14 08:23:20 1991
***************
*** 415,421 ****
  #   define I286
  #endif
  
! #ifndef	__STDC__
  #ifdef CHARSPRINTF
      char *sprintf();
  #else
--- 415,421 ----
  #   define I286
  #endif
  
! #if !defined(__STDC__) && !defined(_IBMR2)
  #ifdef CHARSPRINTF
      char *sprintf();
  #else
*** x2p/a2p.y-	Mon Jan 14 08:11:01 1991
--- x2p/a2p.y	Mon Jan 14 08:11:34 1991
***************
*** 22,27 ****
--- 22,28 ----
   * 
   */
  
+ #pragma alloca
  #include "INTERN.h"
  #include "a2p.h"