[Rd] Assistance much appreciated

Michael Felt aixtools at gmail.com
Fri Dec 18 10:58:05 CET 2015


On 2015-12-18 02:29, Simon Urbanek wrote:
> Michael,
>
> I got access to PDP AIX so I can try to replicate your problem. Can you, please, share exactly your setup - AIX version and well as how exactly you installed the compilers (=where from)? I can then try to replicate it. AFAICS there is no official binary for gfortran nor gcc 4.7 so it must be some 3rd party - which could also be a problem.
>
> Thanks,
> Simon
I built gcc and gfortran myself. Available via 
http://download.aixtools.net/test/aixtools.obj.gcc.4.7.4.0.aix537.I 
(still in the test directory because the fileset name should be 
aixtools.gnu.gcc) - other filesets and instructions are available at: 
http://download.aixtools.net/gnu/gcc/

Note, especially, I was not smart enough - then - to automatically run 
the mkheaders command (full command is either

  /opt/libexec/gcc/powerpc-ibm-aix5.3.7.0/4.7.4/install-tools/mkheaders or  /opt/libexec/gcc/powerpc-ibm-aix5.3.0.0/4.7.4/install-tools/mkheaders
depending on the version of libtool I had installed when packaging (the latest also looks at the TL level, hence 5.3.7.0 rather that 5.3.0.0)


Only looking at the rte (runtime) filesets - this is what I have added: 
All are available via http:://www.aixtools.net (wiki interface) or 
http://download.aixtools.net (self-service).

The AIXTOOLBOX approach uses rpm for packaging - which I did not 
understand when I got started several years back. And I am not switching 
to rpm - following in the footsteps of Perzl because:
a) Michael Perzl does an excellent job of keeping the AIXTOOLBOX where 
it should be - no need to replicate that
b) I hate the RPM dependency nightmare (e.g., installing three rpm -dev 
packages  just to get 5 include files)
c) The RPM.spec files often (well occaisionally, but once is once too 
many for me) overwrite AIX/IBM installp files - so updates of one damage 
the other
d) RPM and NIM did not work as well as NIM and INSTALLP

Almost end of soapbox --- In AIX 5.2 IBM included a tool called 
mkinstallp. I have a tool around that - that I call buildaix - that 
largely automates packaging OSS/FOSS, especially when the packaging 
follows GNU build guidelines.

root at x065:[/data/prj/cran/R-3.2.3/src/extra/tre] aixtools | grep rte <
   aixtools.32.R.rte          3.1.3.0    C     F    1548 1130 1457
   aixtools.bison.rte         3.0.4.0    C     F    bison 1504 0125 1445
   aixtools.buildaix.rte      2.0.3.1    C     F    1540 1007 2004
   aixtools.bzip2.rte         1.0.6.0    C     F    1543 1030 1351
   aixtools.curl.rte         7.45.0.0    C     F    1544 1106 1841
   aixtools.gmp.rte           5.0.5.0    C     F    gmp version 5.0.5 
for powerpc
   aixtools.gnu.bash.rte     4.3.42.0    C     F    1537 0913 1505
   aixtools.gnu.gettext.rte  0.19.5.0    C     F    1531 0807 0000
   aixtools.gnu.gzip.rte      1.6.0.0    C     F    1550 1216 1405
   aixtools.gnu.gzip.rte.64   1.6.0.0    C     F    1550 1216 1417
   aixtools.gnu.m4.rte       1.4.17.0    C     F    1523 0613 1221
   aixtools.gnu.make.rte      4.1.0.0    C     F    1523 0613 1158
   aixtools.libiconv.rte     1.14.0.0    C     F    libiconv 1447 1127 1728
   aixtools.libjpeg.rte       6.2.0.0    C     F    libjpeg version 
6.2.0 for
   aixtools.libpng.rte       1.5.12.0    C     F    libpng version 
1.5.12 for
   aixtools.mpc.rte           1.0.2.0    C     F    mpc 2014.Oct.31 
15.44 CUT
   aixtools.mpfr.rte          2.4.2.0    C     F    mpfr 2014.Oct.31 
15.19 CUT
   aixtools.obj.gcc.rte       4.7.4.0    C     F    1515 0416 2134
   aixtools.pcre.rte         8.37.0.0    C     F    1544 1106 1445
   aixtools.pkgconfig.gcc.rte
   aixtools.tiff.rte          4.0.6.0    C     F    1542 1024 2144
   aixtools.xz.rte            5.0.8.0    C     F    1522 0602 0809
   aixtools.zlib.rte          1.2.8.1    C     F    zlib 1505 0203 1627

In closing, I made the mistake of thinking people know installp as well 
as they know rpm (at command-line). If you do not know installp at the 
command line level
a) run rm -f /where/you/download/to/.toc after everytime you add a file
b) use "smit install" to install filesets

If you are comfortable with installp cli interface the standard commands 
to remember are:
a) inutoc /where/you/download/to
b) installp -d /where/you/download/to -L # to list filesets
c) installp -d /where/you/download/to -agX <what you want to install> | 
"all"

Part II

a) I download R-project files to /data/prj/cran/downloads
b) cd /data/prj/cran
     gzip -dc downloads/R-3.2.3.tar.gz | tar xf -
     cp -rp R-3.2.3 R-3.2.3.dist
c) ls -l 32/*.env 64/*.env

sdiff -w ??/aix.env
cat bin/my_shared.ksh

d) slibclean; rm -rf 32/R-3.2.3; rm -rf 64/R-3.2.3
     mkdir 32/R-3.2.3
     mkdir 64/R-3.2.3

e) note current diffs between R-3.2.3 and R-3.2.3.dist
root at x072:[/data/prj/cran]diff -ru R-3.2.3.dist R-3.2.3
diff -ru R-3.2.3.dist/configure R-3.2.3/configure
--- R-3.2.3.dist/configure      2015-12-02 23:16:46.000000000 +0000
+++ R-3.2.3/configure   2015-12-16 10:52:15.000000000 +0000
@@ -26339,11 +26339,11 @@
       ##ADD: However, for example, symbol in libc of memcpy is 
__memmove,__memmove64.
       ##ADD: This black magic puts lc before lR and pockets this.
       if test "x${OBJECT_MODE}" = "x64"; then
-       main_ldflags="${wl}-brtl ${wl}-bexpall ${wl}-bpT:0x100000000 
${wl}-bpD:0x110000000 -lc"
+       main_ldflags="${wl}-brtl ${wl}-bpT:0x100000000 
${wl}-bpD:0x110000000 -lc"
       else
-       main_ldflags="${wl}-brtl ${wl}-bexpall -lc"
+       main_ldflags="${wl}-brtl ${wl}-bmaxdata:0xd0000000/dsa -lc"
       fi
-     shlib_ldflags="${wl}-brtl ${wl}-G ${wl}-bexpall ${wl}-bnoentry -lc"
+     shlib_ldflags="${wl}-G ${wl}-bnoentry -lc"
       SHLIB_LIBADD="\$(LIBM)"
       shlib_cxxldflags="${shlib_ldflags}"
       if test "${GCC}" = yes; then
diff -ru R-3.2.3.dist/share/make/basepkg.mk R-3.2.3/share/make/basepkg.mk
--- R-3.2.3.dist/share/make/basepkg.mk  2015-03-18 23:04:12.000000000 +0000
+++ R-3.2.3/share/make/basepkg.mk       2015-12-17 12:01:02.000000000 +0000
@@ -148,7 +148,9 @@

   sysdata: $(srcdir)/R/sysdata.rda
         @$(ECHO) "installing 'sysdata.rda'"
-       @$(ECHO) 
"tools:::sysdata2LazyLoadDB(\"$(srcdir)/R/sysdata.rda\",\"$(top_builddir)/library/$(pkg)/R\")" 
| \
+       $(ECHO) "warnings()" | \
+         R_DEFAULT_PACKAGES=NULL LC_ALL=C $(R_EXE)
+       $(ECHO) 
"tools:::sysdata2LazyLoadDB(\"$(srcdir)/R/sysdata.rda\",\"$(top_builddir)/library/$(pkg)/R\")" 
| \
           R_DEFAULT_PACKAGES=NULL LC_ALL=C $(R_EXE)


diff -ru R-3.2.3.dist/src/include/Defn.h R-3.2.3/src/include/Defn.h
--- R-3.2.3.dist/src/include/Defn.h     2015-08-25 22:15:24.000000000 +0000
+++ R-3.2.3/src/include/Defn.h  2015-12-16 10:53:08.000000000 +0000
@@ -1271,7 +1271,7 @@
   void invalidate_cached_recodings(void);  /* from sysutils.c */
   void resetICUcollator(void); /* from util.c */
   void dt_invalidate_locale(); /* from Rstrptime.h */
- int R_OutputCon; /* from connections.c */
+ extern int R_OutputCon; /* from connections.c */
   extern int R_InitReadItemDepth, R_ReadItemDepth; /* from serialize.c */
   void get_current_mem(size_t *,size_t *,size_t *); /* from memory.c */
   unsigned long get_duplicate_counter(void);  /* from duplicate.c */
diff -ru R-3.2.3.dist/src/library/tools/R/makeLazyLoad.R 
R-3.2.3/src/library/tools/R/makeLazyLoad.R
--- R-3.2.3.dist/src/library/tools/R/makeLazyLoad.R     2015-08-25 
22:16:54.000000000 +0000
+++ R-3.2.3/src/library/tools/R/makeLazyLoad.R  2015-12-17 
06:53:34.000000000 +0000
@@ -38,9 +38,13 @@

   sysdata2LazyLoadDB <- function(srcFile, destDir, compress = TRUE)
   {
+ browser()
       e <- new.env(hash=TRUE)
+ # browser()
       load(srcFile, e)
+ # browser()
       makeLazyLoadDB(e, file.path(destDir, "sysdata"), compress = compress)
+ # browser()
   }

   list_data_in_pkg <- function(package, lib.loc = NULL, dataDir = NULL)
diff -ru R-3.2.3.dist/src/library/tools/src/gramLatex.c 
R-3.2.3/src/library/tools/src/gramLatex.c
--- R-3.2.3.dist/src/library/tools/src/gramLatex.c      2015-12-09 
23:20:01.000000000 +0000
+++ R-3.2.3/src/library/tools/src/gramLatex.c   2015-12-17 
14:50:14.000000000 +0000
@@ -1358,7 +1358,7 @@


   /* The lookahead symbol.  */
- int yychar;
+ extern int yychar;


   #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
@@ -1370,7 +1370,7 @@
   #endif

   /* The semantic value of the lookahead symbol.  */
- YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
+ extern YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);

   /* Location data for the lookahead symbol.  */
   YYLTYPE yylloc
@@ -1381,7 +1381,7 @@


   /* Number of syntax errors so far.  */
- int yynerrs;
+ extern int yynerrs;


   /*----------.
diff -ru R-3.2.3.dist/src/library/tools/src/gramRd.c 
R-3.2.3/src/library/tools/src/gramRd.c
--- R-3.2.3.dist/src/library/tools/src/gramRd.c 2015-12-09 
23:20:01.000000000 +0000
+++ R-3.2.3/src/library/tools/src/gramRd.c      2015-12-17 
14:51:19.000000000 +0000
@@ -1972,7 +1972,7 @@


   /* The lookahead symbol.  */
- int yychar;
+ extern int yychar;


   #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
@@ -1984,7 +1984,7 @@
   #endif

   /* The semantic value of the lookahead symbol.  */
- YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
+ extern YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);

   /* Location data for the lookahead symbol.  */
   YYLTYPE yylloc
@@ -1995,7 +1995,7 @@


   /* Number of syntax errors so far.  */
- int yynerrs;
+ extern int yynerrs;


   /*----------.

+++++++++
The changes in /src/library/tools/R/makeLazyLoad.R are not relevant 
(initial learning...)

f) cd 32/R-3.2.3; ../../bin/my_shared.ksh aix R-3.2.3; export 
OBJECT_MODE=32; make -j4; cd -
g) cd 64/R-3.2.3; ../../bin/my_shared.ksh aix R-3.2.3; export 
OBJECT_MODE=64; make -j4 && cd -

Michael

p.s. please keep me posted on any difficulties - so I can add better 
instructions on the wiki.
p.p.s. - I am using R-3.2.3 to by-pass the removal of the src/extra packages



More information about the R-devel mailing list