From: pierce at hogranch.com (John R Pierce) Date: Fri, 12 Oct 2012 14:06:56 -0700 Subject: [Pljava-dev] pljava on AIX for postgres 9.1.x and IBM AIX Java 6? In-Reply-To: <50777D31.70707@hogranch.com> References: <50651F8A.1080704@hogranch.com> <50660523.5050503@hogranch.com> <50660A90.3020308@hogranch.com> <5069E7C8.4090004@hogranch.com> <5073DEED.8030504@hogranch.com> <507472B6.3060100@hogranch.com> <507474C0.1010304@hogranch.com> <50749A49.8060003@hogranch.com> <5075C351.1010101@hogranch.com> <5075C9D9.9080303@ejurka.com> <5075FE04.4020407@hogranch.com> <50775D08.9030409@hogranch.com> <5077662B.2000607@ejurka.com> <50776924.6080504@hogranch.com> <50777D31.70707@hogranch.com> Message-ID: <50788670.3060903@hogranch.com> On 10/11/12 7:15 PM, John R Pierce wrote: > $ psql -c "SELECT > sqlj.install_jar('file:///opt/xxx/pljava/examples.jar', 'samples', > true);" > INFO: JVMJ9VM011W Unable to load jclscar_23: No such file or directory > ERROR: Failed to create Java VM > > $ find /usr/java5_64 -name \*jclscar_23\* > /usr/java5_64/jre/bin/libjclscar_23.so again, I'm using the pljava-1.4.3 source tarball, and I'm only doing the `gmail c_all` part. can someone familiar with the Makefiles of pljava explain why the .so is apparently being built twice ? I've browsed the Makefile and frankly find it fairly confusing. if I delete build/objs/*.{o,a,so) and run gmake c_all... $ export PATH=/usr/java5_64/jre/bin:/usr/java5_64/bin:/usr/bin:/opt/pgsql91/bin $ export JAVA_HOME=/usr/java5_64 $ export OBJECT_MODE=64 $ export PLJAVA_LDFLAGS=-lm $ gmake c_all ...lots of compiles omitted.... /usr/bin/ar crs libpljava.a Backend.o Exception.o ExecutionPlan.o Function.o HashMap.o Invocation.o Iterator.o JNICalls.o PgObject.o PgSavepoint.o SPI.o SQLInputFromChunk.o SQLInputFromTuple.o SQLOutputToChunk.o SQLOutputToTuple.o Session.o SubXactListener.o XactListener.o backports.o type/AclId.o type/Any.o type/Array.o type/BigDecimal.o type/Boolean.o type/Byte.o type/Coerce.o type/Composite.o type/Date.o type/Double.o type/ErrorData.o type/Float.o type/HeapTupleHeader.o type/Integer.o type/JavaWrapper.o type/LargeObject.o type/Long.o type/Oid.o type/Portal.o type/Relation.o type/Short.o type/String.o type/Time.o type/Timestamp.o type/TriggerData.o type/Tuple.o type/TupleDesc.o type/TupleTable.o type/Type.o type/UDT.o type/Void.o type/byte_array.o touch libpljava.a /opt/pgsql91/lib/pgxs/src/makefiles/../../src/backend/port/aix/mkldexport.sh libpljava.a >libpljava.exp /usr/vacpp/bin/xlc -q64 -I/home/postgres/src/include -O2 -qarch=pwr5 -qtune=balanced -qnoansialias -o pljava.so libpljava.a -Wl,-bE:libpljava.exp -L/opt/pgsql91/lib -L/home/postgres/src/lib -Wl,-blibpath:'/opt/pgsql91/lib:/opt/pgsql91/lib:/home/postgres/src/lib:/usr/lib:/lib' -Wl,-bnoentry -Wl,-H512 -Wl,-bM:SRE -Wl,-bI:/opt/pgsql91/lib/postgres.imp -L. -L"/usr/java5_64/jre/bin/j9vm" -ljvm -lm rm -f libpljava.a /usr/bin/ar crs libpljava.a pljava.so /opt/pgsql91/lib/pgxs/src/makefiles/../../src/backend/port/aix/mkldexport.sh libpljava.a > pljava /usr/vacpp/bin/xlc -q64 -I/home/postgres/src/include -O2 -qarch=pwr5 -qtune=balanced -qnoansialias -Wl,-bnoentry -Wl,-H512 -Wl,-bM:SRE -o pljava.so libpljava.a -Wl,-bE:pljava -Wl,-bI:/opt/pgsql91/lib/postgres.imp -L. -L"/usr/java5_64/jre/bin/j9vm" -ljvm -lm gmake[1]: Leaving directory `/home/postgres/src/pljava-1.4.3/build/objs' $ I added blank lines to separate out the commands. anyways, after building this, and putting both libpljava.a and pljava.so into my designated runtime directory, I can run the deployer, and it apparently works.... postgres=# \dL+ List of languages Name | Owner | Trusted | Internal Language | Call Handler | Validator | Inline Handler | Access privileges ---------+----------+---------+-------------------+---------------------------+------------------------+---------------------------- ------+------------------- java | postgres | t | f | sqlj.java_call_handler() | - | - | javau | postgres | f | f | sqlj.javau_call_handler() | - | - | plpgsql | postgres | t | f | plpgsql_call_handler() | plpgsql_validator(oid) | plpgsql_inline_handler(inte rnal) | (3 rows) Yet, with the proper LIBPATH defined and dynamic_library_path for good measure, when I try and load the example.jar, I'm still getting.. postgres=# SELECT sqlj.install_jar('file:///opt/xxx/pljava/examples.jar', 'samples', true); INFO: JVMJ9VM011W Unable to load jclscar_23: No such file or directory ERROR: Failed to create Java VM postgres=# show dynamic_library_path ; dynamic_library_path ------------------------------------------------------- $libdir:/opt/xxx/pljava:/usr/java5_64/jre/bin (1 row) but I see... $ ls -l /usr/java5_64/jre/bin/libjclscar_23.so -r-xr-xr-x 1 bin bin 1278830 Dec 15 2010 /usr/java5_64/jre/bin/libjclscar_23.so yet, my pljava.so seemingly loads fine... $ echo $LIBPATH /opt/xxx/pljava:/usr/java5_64/jre/bin $ ldd /opt/xxx/pljava/pljava.so /opt/xxx/pljava/pljava.so needs: /usr/lib/libc.a(shr_64.o) /opt/xxx/pljava/libpljava.a(pljava.so) /usr/java5_64/jre/bin/j9vm/libjvm.a /unix /usr/lib/libcrypt.a(shr_64.o) /usr/lib/libc_r.a(shr_64.o) /usr/lib/libpthread.a(shr_xpg5_64.o) /usr/java5_64/jre/bin/libjsig.so /usr/java5_64/jre/bin/libj9thr23.so so I'm stuck here. again. -- john r pierce N 37, W 122 santa cruz ca mid-left coast