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
