Schlesinger, Philip wrote:
> Hi David and all.
>
> I tried the perl script for building ICU and Xerces together.  Ran into
> problems with the perl script too - hope you can help.
>
> I exported three variables:
> export XERCESCROOT=/PEBuilds/bldtogether/xerces-c-src_2_7_0
> export ICUROOT=/PEBuilds/bldtogether/icu
>
> export XERCESC_NLS_HOME=/PEBuilds/bldtogether/xerces-c-src_2_7_0/msg
> Note that this third directory does NOT exist as part of the
> xerces-c-current.tar.gz file and I did not create it.  I only exported
> this third variable because the directions for building xerces via the
> perl script said to do it.

Hmmm, this is no longer necessary, so you should create a Jira issue so we can 
update the documentation.

>
> I also edited the Xerces files to make them build a single-threaded
> version as per the documents online.
>
> My perl script execution line:
>
> perl packageBinaries.pl -s $XERCESCROOT -o /PEBuilds/bldtogether/build
> -t icu -m icu -c xlc -x xlC -r none -b 32
>
> Log available here:
> http://www.electronicfiles.net/files/3560/myperlbuild.zip
>
> Note: I have no idea how to make the perl script comple ICU for single
> threading - something for the documentation?  Or does putting the "-r
> none" on the command line do single threading for both xerces and icu?
>
> Anyway, the result of the perl script:
>
> The target directory - /PEBuilds/bldtogether/build - has the following
> directories empty:
>
> /PEBuilds/bldtogether/build/bin
> /PEBuilds/bldtogether/build/etc
> /PEBuilds/bldtogether/build/lib
> /PEBuilds/bldtogether/build/msg
>
> After going to /PEBuilds/bldtogether/build/samples and running:
>
> runConfigure -paix -cxlc -xxlC -rnone -b32
>
> ...I ran gmake.  The gmake output is in the same samples file.  It can't
> find the library "xerces-c".

I suspect this is because your ICU binaries are not on the path, and the ICU 
libraries are not on the LIBPATH.

Here's what I did:

1. Modified the ICU runConfigureICU to use "xlc" and "xlC" instead of "xlc_r" and 
"xlC_r".

2. Ran runConfigureICU with the following options:

    ./runConfigureICU AIX --prefix=/home2/dbertoni/xerces-c/local 
--disable-threads.

Note that "--disable-threads" alone does not disable threads, apparently.

3. Ran "gmake check install" to make, verify and install the ICU.

4. Updated my .profile to add /home2/dbertoni/xerces-c/local/bin to the PATH.

5. Updated my .profile to add /home2/dbertoni/xerces-c/local/lib to the LIBPATH.

6. Untarred the source archive and copied 
xerces-c-src_2_7_0/src/xercesc/Makefile.incl to my build directory.

7. Modified Makefile.incl as follows:

208c208
<     ALLLIBS = ${LIBS} -L/usr/lpp/xlC/lib -licuuc32 -licudata32
---
>     ALLLIBS = ${LIBS} -L/usr/lpp/xlC/lib -licuuc34 -licudata34
214c214
<     ALLLIBS = ${LIBS} -L/usr/lpp/xlC/lib -licuuc32 -licudata32 
-lXercesMessages26
---
>     ALLLIBS = ${LIBS} -L/usr/lpp/xlC/lib -licuuc34 -licudata34 
-lXercesMessages27

8. Copied xerces-c-src_2_7_0/src/scripts/packageBinaries.pl to my build 
directory.

9. Modified packageBinaries.pl as follows:

diff: 0653-827 Missing newline at the end of file 
xerces-c-src_2_7_0/scripts/packageBinaries.pl.
383,384c383,384
<         psystem("cp -fv $ICUROOT/bin/icuuc32.dll $targetdir/bin");
<         psystem("cp -fv $ICUROOT/bin/icuuc32d.dll $targetdir/bin");
---
>         psystem("cp -fv $ICUROOT/bin/icuuc34.dll $targetdir/bin");
>         psystem("cp -fv $ICUROOT/bin/icuuc34d.dll $targetdir/bin");
386c386
<         # it seems icudt32*.DLL is generated (upper case dll)
---
>         # it seems icudt34*.DLL is generated (upper case dll)
388,389c388,389
<         psystem("cp -fv $ICUROOT/bin/icudt32*.DLL $targetdir/bin");
<         psystem("cp -fv $ICUROOT/bin/icudt32*.dll $targetdir/bin");
---
>         psystem("cp -fv $ICUROOT/bin/icudt34*.DLL $targetdir/bin");
>         psystem("cp -fv $ICUROOT/bin/icudt34*.dll $targetdir/bin");
1145,1147c1145,1147
<         # on AIX,              it is called libicudata32.0.a
<         # on Solaris/Linux,    it is called libicudata.so.32.0
<         # on HP,               it is called libicudata.sl.32.0
---
>         # on AIX,              it is called libicudata34.1.a
>         # on Solaris/Linux,    it is called libicudata.so.34.1
>         # on HP,               it is called libicudata.sl.34.1
1150,1153c1150,1153
<         psystem("cp -f $ICUROOT/lib/libicudata32.0.so .");
<         psystem("cp -f $ICUROOT/lib/libicudata32.0.a .");
<         psystem("cp -f $ICUROOT/lib/libicudata.so.32.0 .");
<         psystem("cp -f $ICUROOT/lib/libicudata.sl.32.0 .");
---
>         psystem("cp -f $ICUROOT/lib/libicudata34.1.so .");
>         psystem("cp -f $ICUROOT/lib/libicudata34.1.a .");
>         psystem("cp -f $ICUROOT/lib/libicudata.so.34.1 .");
>         psystem("cp -f $ICUROOT/lib/libicudata.sl.34.1 .");
1155,1156c1155,1156
<         psystem("find . -name 'libicudata32.0.so' -exec ln -s {} libicudata.so 
\\;");
<         psystem("find . -name 'libicudata32.0.so' -exec ln -s {} libicudata32.so 
\\;");
---
>         psystem("find . -name 'libicudata34.1.so' -exec ln -s {} libicudata.so 
\\;");
>         psystem("find . -name 'libicudata34.1.so' -exec ln -s {} libicudata34.so 
\\;");
1158,1159c1158,1159
<         psystem("find . -name 'libicudata32.0.a'  -exec ln -s {} libicudata.a 
\\;");
<         psystem("find . -name 'libicudata32.0.a'  -exec ln -s {} libicudata32.a 
\\;");
---
>         psystem("find . -name 'libicudata34.1.a'  -exec ln -s {} libicudata.a 
\\;");
>         psystem("find . -name 'libicudata34.1.a'  -exec ln -s {} libicudata34.a 
\\;");
1161,1162c1161,1162
<         psystem("find . -name 'libicudata.so.32.0' -exec ln -s {} libicudata.so 
\\;");
<         psystem("find . -name 'libicudata.so.32.0' -exec ln -s {} libicudata.so.32 
\\;");
---
>         psystem("find . -name 'libicudata.so.34.1' -exec ln -s {} libicudata.so 
\\;");
>         psystem("find . -name 'libicudata.so.34.1' -exec ln -s {} libicudata.so.34 
\\;");
1164,1165c1164,1165
<         psystem("find . -name 'libicudata.sl.32.0' -exec ln -s {} libicudata.sl 
\\;");
<         psystem("find . -name 'libicudata.sl.32.0' -exec ln -s {} libicudata.sl.32 
\\;");
---
>         psystem("find . -name 'libicudata.sl.34.1' -exec ln -s {} libicudata.sl 
\\;");
>         psystem("find . -name 'libicudata.sl.34.1' -exec ln -s {} libicudata.sl.34 
\\;");
1169,1171c1169,1171
<         # on AIX,              it is called libicuuc32.0.a
<         # on Solaris/Linux,    it is called libicuuc.so.32.0
<         # on HP,               it is called libicuuc.sl.32.0
---
>         # on AIX,              it is called libicuuc34.1.a
>         # on Solaris/Linux,    it is called libicuuc.so.34.1
>         # on HP,               it is called libicuuc.sl.34.1
1174,1177c1174,1177
<         psystem("cp -f $ICUROOT/lib/libicuuc32.0.so .");
<         psystem("cp -f $ICUROOT/lib/libicuuc32.0.a  .");
<         psystem("cp -f $ICUROOT/lib/libicuuc.so.32.0  .");
<         psystem("cp -f $ICUROOT/lib/libicuuc.sl.32.0  .");
---
>         psystem("cp -f $ICUROOT/lib/libicuuc34.1.so .");
>         psystem("cp -f $ICUROOT/lib/libicuuc34.1.a  .");
>         psystem("cp -f $ICUROOT/lib/libicuuc.so.34.1  .");
>         psystem("cp -f $ICUROOT/lib/libicuuc.sl.34.1  .");
1179,1180c1179,1180
<         psystem("find . -name 'libicuuc32.0.so' -exec ln -s {} libicuuc.so 
\\;");
<         psystem("find . -name 'libicuuc32.0.so' -exec ln -s {} libicuuc32.so 
\\;");
---
>         psystem("find . -name 'libicuuc34.1.so' -exec ln -s {} libicuuc.so 
\\;");
>         psystem("find . -name 'libicuuc34.1.so' -exec ln -s {} libicuuc34.so 
\\;");
1182,1183c1182,1183
<         psystem("find . -name 'libicuuc32.0.a'  -exec ln -s {} libicuuc.a 
\\;");
<         psystem("find . -name 'libicuuc32.0.a'  -exec ln -s {} libicuuc32.a 
\\;");
---
>         psystem("find . -name 'libicuuc34.1.a'  -exec ln -s {} libicuuc.a 
\\;");
>         psystem("find . -name 'libicuuc34.1.a'  -exec ln -s {} libicuuc34.a 
\\;");
1185,1186c1185,1186
<         psystem("find . -name 'libicuuc.so.32.0' -exec ln -s {} libicuuc.so 
\\;");
<         psystem("find . -name 'libicuuc.so.32.0' -exec ln -s {} libicuuc.so.32 
\\;");
---
>         psystem("find . -name 'libicuuc.so.34.1' -exec ln -s {} libicuuc.so 
\\;");
>         psystem("find . -name 'libicuuc.so.34.1' -exec ln -s {} libicuuc.so.34 
\\;");
1188,1189c1188,1189
<         psystem("find . -name 'libicuuc.sl.32.0' -exec ln -s {} libicuuc.sl 
\\;");
<         psystem("find . -name 'libicuuc.sl.32.0' -exec ln -s {} libicuuc.sl.32 
\\;");
---
>         psystem("find . -name 'libicuuc.sl.34.1' -exec ln -s {} libicuuc.sl 
\\;");
>         psystem("find . -name 'libicuuc.sl.34.1' -exec ln -s {} libicuuc.sl.34 
\\;");
1460c1460
<     }
---
>     }

10. Created a small script to build the package:

export BLDROOT=/home2/dbertoni/xerces-c
export XERCESCROOT=$BLDROOT/xerces-c-src_2_7_0
export OUTDIR=$BLDROOT/xerces-c2.7.0-aix
export ICUROOT=/home2/dbertoni/xerces-c/local
rm -rf $OUTDIR/
rm -rf $XERCESCROOT/
rm $OUTDIR.tar
rm $OUTDIR.tar.gz
gtar xzf xerces-c-current.tar.gz
cp Makefile.incl $XERCESCROOT/src/xercesc/Makefile.incl
cp packageBinaries.pl $XERCESCROOT/scripts/packageBinaries.pl
cd $XERCESCROOT/scripts
perl packageBinaries.pl -s $XERCESCROOT -o $OUTDIR -m icu -n socket -t icu -b 
64 -c xlc -x xlC -r none -j
cd $BLDROOT

This completed successfully, and I had a source package containing binaries 
without threads enabled.

Dave

Reply via email to