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
|