The reason I asked for the final Mac AOO installation package filenames of
jpipe, is because I need to understand the interaction between the .dylib
and .jnilib files during delivery and packaging.

For example in a similar problem on *nix, in
main/solver/420/unxfbsdx/workdir/LinkTarget/Library I have:
libreg.so -> libreg.so.3
libreg.so.3
and when delivered into "solver", ie. main/solver/420/unxfbsdx/lib, they're
both still there,
but in
main/instsetoo_native/unxfbsdx/Apache_OpenOffice/installed/install/en-US/openoffice4/program
it only has:
libreg.so.3

Looking through main/scp2, apparently .jnilibs are used during packaging on
Mac:

$ grep SCP2_URE_JDL_NORMAL * -R
inc/macros.inc:#define SCP2_URE_JDL_NORMAL(n) "lib" n ".jnilib"
inc/macros.inc:#define SCP2_URE_JDL_NORMAL(n) SCP2_URE_DL_NORMAL(n)
source/ooo/ure.scp:    Name = SCP2_URE_JDL_NORMAL("jpipe");

$ grep SCP2_URE_DL_NORMAL * -R
inc/macros.inc:#define SCP2_URE_DL_NORMAL(n) n ".dll"
inc/macros.inc:#define SCP2_URE_DL_NORMAL(n) "lib" n STRING(UNXSUFFIX)
inc/macros.inc:#define SCP2_URE_JDL_NORMAL(n) SCP2_URE_DL_NORMAL(n)
source/ooo/file_library_ooo.scp:    Name = SCP2_URE_DL_NORMAL("sofficea");
source/ooo/file_library_ooo.scp:    Name = SCP2_URE_DL_NORMAL("sofficeapp");
source/ooo/file_library_ooo.scp:    Name = SCP2_URE_DL_NORMAL("unopkgapp");
source/ooo/file_library_ooo.scp:    Name = SCP2_URE_DL_NORMAL("msvcr100");
source/ooo/common_brand.scp://    Name = SCP2_URE_DL_NORMAL("libxml2-2");
source/ooo/common_brand.scp://    Name = SCP2_URE_DL_NORMAL("libxml2");
source/ooo/ure.scp:    Name = SCP2_URE_DL_NORMAL("xmlreade");
source/ooo/ure.scp:    Name = SCP2_URE_DL_NORMAL("xmlreader");
source/ooo/ure.scp:    Name = SCP2_URE_DL_NORMAL(STRING(COMNAME) "_uno");
source/ooo/ure.scp:    Name = SCP2_URE_DL_NORMAL("java_uno");
source/ooo/ure.scp:    Name = SCP2_URE_DL_NORMAL("unsafe_uno_uno");
source/ooo/ure.scp:    Name = SCP2_URE_DL_NORMAL("affine_u");
source/ooo/ure.scp:    Name = SCP2_URE_DL_NORMAL("affine_uno_uno");
source/ooo/ure.scp:    Name = SCP2_URE_DL_NORMAL("log_uno_");
source/ooo/ure.scp:    Name = SCP2_URE_DL_NORMAL("log_uno_uno");
source/ooo/ure.scp:    Name = SCP2_URE_DL_NORMAL("cli_uno");
source/ooo/ure.scp:    Name = SCP2_URE_DL_NORMAL("jpipx");
source/ooo/ure.scp:    Name = SCP2_URE_DL_NORMAL("juh");
source/ooo/ure.scp:    Name = SCP2_URE_DL_NORMAL("juhx");
source/ooo/ure.scp:    Name = SCP2_URE_DL_NORMAL("libxml2-2");
source/ooo/ure.scp:    Name = SCP2_URE_DL_NORMAL("libxml2");
source/ooo/ure.scp:    Name = SCP2_URE_DL_NORMAL("xml2.2");
source/ooo/ure.scp:    Name = SCP2_URE_DL_NORMAL("mingwm10");
source/ooo/ure.scp:    Name = SCP2_URE_DL_NORMAL("uwinapi");

So the lifecycle of Mac's .jnilib is similar to *nix's UDK versioned
library symlinks, in that both need to be delivered to solver during the
build. *nix needs the symlink so the versioned libraries can be linked to
during the build (because passing "-lreg" to the linker resolves to
libreg.so, not libreg.so.3 like it should). Mac needs .jnilib even later,
during packaging.

I solved the *nix symlink problem by adding the symlink to AUXTARGETS, so
that it gets delivered with the original library. You probably need the
same for .jniblib.

Please try the attached patch, which does something like that on Mac.

Damjan




On Thu, Jul 26, 2018 at 9:07 PM Jim Jagielski <j...@jagunet.com> wrote:

> In previous versions and, in fact, before jurt was ported to gbuild, all
> worked
> as it should. the macosx.mk makefile took care of the symlinking as well
> as ensuring that the jnilib file came along for the ride.
>
>
>         $(if $(filter Library,$(TARGETTYPE)),\
>                 $(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl
> Library $(LAYER) $(1) && \
>                 ln -shf $(if $(call
> gb_Library_is_udk_versioned,$(1)),$(1).$(gb_UDK_MAJOR),$(1)) \
>                       $(patsubst %.dylib,%.jnilib,$(1)) &&) \
>
>
> Anyway, here is the pertinent part of the build output. As you can
> see, the symlink happens, as it should, but any knowledge of the
> jnilib now disappears. So someplace back in r1827249, the dmake
> version added in the jnilib as a required lib... that doesn't happen
> anymore.
>
> BUILD SUCCESSFUL
> Total time: 3 seconds
> mkdir -p /Users/jim/src/asf/AOO420/main/solver/420/unxmaccx.pro/bin/ &&
> rm -f /Users/jim/src/asf/AOO420/main/solver/420/unxmaccx.pro/bin/jurt.jar
> && cp -R -P -f /Users/jim/src/asf/AOO420/main/solver/420/
> unxmaccx.pro/workdir/Ant/jurt.jar
> /Users/jim/src/asf/AOO420/main/solver/420/unxmaccx.pro/bin/jurt.jar &&
> touch -r /Users/jim/src/asf/AOO420/main/solver/420/
> unxmaccx.pro/workdir/Ant/jurt.jar
> /Users/jim/src/asf/AOO420/main/solver/420/unxmaccx.pro/bin/jurt.jar
> [ build LNK ] Library/libjpipe.dylib
> R=/Users/jim/src/asf/AOO420 && S=$R/main && O=$S/solver/420/unxmaccx.pro
> && W=$O/workdir &&  mkdir -p $W/LinkTarget/Library/ &&
> DYLIB_FILE=`/usr/bin/mktemp -t gbuild.` && /Users/jim/bin/perl
> $S/solenv/bin/macosx-dylib-link-list.pl  -dynamiclib -single_module
> -install_name
> '@__________________________________________________URELIB/libjpipe.dylib'
> -Wl,-syslibroot,/Applications/Xcode7.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk
> -L$O/lib -L/usr/lib   -luno_sal  > ${DYLIB_FILE} &&
> /Applications/Xcode7.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++
> -arch x86_64  -dynamiclib -single_module -install_name
> '@__________________________________________________URELIB/libjpipe.dylib'
> -Wl,-syslibroot,/Applications/Xcode7.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk
> -L$O/lib -L/usr/lib   -std=c++11 -stdlib=libc++ -luno_sal
> $W/CObject/jurt/source/pipe/com_sun_star_lib_connections_pipe_PipeConnection.o
>     -o $W/LinkTarget/Library/libjpipe.dylib `cat ${DYLIB_FILE}` &&
> /Users/jim/bin/perl $S/solenv/bin/macosx-change-install-names.pl Library
> URELIB $W/LinkTarget/Library/libjpipe.dylib && ln -shf
> $W/LinkTarget/Library/libjpipe.dylib $W/LinkTarget/Library/libjpipe.jnilib
> && rm -f ${DYLIB_FILE}
> R=/Users/jim/src/asf/AOO420 && S=$R/main && O=$S/solver/420/unxmaccx.pro
> && W=$O/workdir &&  mkdir -p $O/lib/ && rm -f $O/lib/libjpipe.dylib && cp
> -R -P -f $W/LinkTarget/Library/libjpipe.dylib $O/lib/libjpipe.dylib &&
> touch -r $W/LinkTarget/Library/libjpipe.dylib $O/lib/libjpipe.dylib
> R=/Users/jim/src/asf/AOO420 && S=$R/main && O=$S/solver/420/unxmaccx.pro
> && W=$O/workdir &&  mkdir -p $W/Zip/ && cd $S/jurt/java/jurt/src/main/java
> && zip -rX -FS $W/Zip/jurt_src.zip
> com/sun/star/comp/loader/RegistrationClassFinder.java
> com/sun/star/comp/loader/FactoryHelper.java
> com/sun/star/comp/loader/JavaLoaderFactory.java
> com/sun/star/comp/loader/JavaLoader.java
> com/sun/star/comp/bridgefactory/BridgeFactory.java
> com/sun/star/comp/connections/ConstantInstanceProvider.java
> com/sun/star/comp/connections/Implementation.java
> com/sun/star/comp/connections/PipedConnection.java
> com/sun/star/comp/connections/Connector.java
> com/sun/star/comp/connections/Acceptor.java
> com/sun/star/comp/urlresolver/UrlResolver.java
> com/sun/star/comp/servicemanager/ServiceManager.java
> com/sun/star/uno/MappingException.java com/sun/star/uno/AsciiString.java
> com/sun/star/uno/Ascii.java com/sun/star/uno/WeakReference.java
> com/sun/star/uno/AnyConverter.java
> com/sun/star/lib/util/UrlToFileMapper.java
> com/sun/star/lib/util/AsynchronousFinalizer.java
> com/sun/star/lib/util/StringHelper.java
> com/sun/star/lib/util/NativeLibraryLoader.java
> com/sun/star/lib/connections/socket/socketAcceptor.java
> com/sun/star/lib/connections/socket/SocketConnection.java
> com/sun/star/lib/connections/socket/ConnectionDescriptor.java
> com/sun/star/lib/connections/socket/socketConnector.java
> com/sun/star/lib/connections/pipe/pipeAcceptor.java
> com/sun/star/lib/connections/pipe/pipeConnector.java
> com/sun/star/lib/connections/pipe/PipeConnection.java
> com/sun/star/lib/uno/environments/remote/JavaThreadPoolFactory.java
> com/sun/star/lib/uno/environments/remote/IProtocol.java
> com/sun/star/lib/uno/environments/remote/Job.java
> com/sun/star/lib/uno/environments/remote/IReceiver.java
> com/sun/star/lib/uno/environments/remote/remote_environment.java
> com/sun/star/lib/uno/environments/remote/IThreadPool.java
> com/sun/star/lib/uno/environments/remote/Message.java
> com/sun/star/lib/uno/environments/remote/JavaThreadPool.java
> com/sun/star/lib/uno/environments/remote/JobQueue.java
> com/sun/star/lib/uno/environments/remote/ThreadId.java
> com/sun/star/lib/uno/environments/remote/ThreadPoolManager.java
> com/sun/star/lib/uno/environments/remote/NativeThreadPool.java
> com/sun/star/lib/uno/environments/java/java_environment.java
> com/sun/star/lib/uno/bridges/java_remote/XConnectionOutputStream_Adapter.java
> com/sun/star/lib/uno/bridges/java_remote/RequestHandler.java
> com/sun/star/lib/uno/bridges/java_remote/XConnectionInputStream_Adapter.java
> com/sun/star/lib/uno/bridges/java_remote/ProxyFactory.java
> com/sun/star/lib/uno/bridges/java_remote/BridgedObject.java
> com/sun/star/lib/uno/bridges/java_remote/java_remote_bridge.java
> com/sun/star/lib/uno/Proxy.java
> com/sun/star/lib/uno/protocols/urp/PendingRequests.java
> com/sun/star/lib/uno/protocols/urp/UrpMessage.java
> com/sun/star/lib/uno/protocols/urp/Cache.java
> com/sun/star/lib/uno/protocols/urp/Unmarshal.java
> com/sun/star/lib/uno/protocols/urp/Marshal.java
> com/sun/star/lib/uno/protocols/urp/urp.java
>
> > On Jul 26, 2018, at 12:15 PM, Damjan Jovanovic <dam...@apache.org>
> wrote:
> >
> > That looks right.
> >
> > You were saying libjpipe.jnilib doesn't get copied over. If it doesn't
> > appear in that output, it won't be.
> >
> > My Mac experience is pretty minimal, but grepping through main/solenv/inc
> > and reading main/solenv/macosx-create-bundle seems to say how
> libfoo.jnilib
> > is a symlink back to libfoo.dylib.
> >
> > Gbuild doesn't call that macosx-create-bundle script, but does have this
> > comment just before gb_LinkTarget__command_dynamiclink:
> > # FIXME the DYLIB_FILE mess is only necessary because
> > # solver layout is different from installation layout
> >
> > Please run "make clean" in main/jurt and then post the output of "make".
> >
> > Also what libjpipe files are normally packaged in a Mac AOO installation
> > package? What are their exact names?
> >
> >
> >
> > On Thu, Jul 26, 2018 at 4:20 PM Jim Jagielski <j...@jagunet.com> wrote:
> >
> >> %# make showdeliverables
> >> /Users/jim/src/asf/AOO420/main/solver/420/
> >> unxmaccx.pro/workdir/Ant/jurt.jar
> >> /Users/jim/src/asf/AOO420/main/solver/420/unxmaccx.pro/bin/jurt.jar
> >>
> >> /Users/jim/src/asf/AOO420/main/solver/420/
> unxmaccx.pro/workdir/LinkTarget/Library/libjpipe.dylib
> >> <
> http://unxmaccx.pro/bin/jurt.jar/Users/jim/src/asf/AOO420/main/solver/420/unxmaccx.pro/workdir/LinkTarget/Library/libjpipe.dylib
> >
> >> /Users/jim/src/asf/AOO420/main/solver/420/
> unxmaccx.pro/lib/libjpipe.dylib
> >>
> >> /Users/jim/src/asf/AOO420/main/solver/420/
> unxmaccx.pro/workdir/Zip/jurt_src.zip
> >> <
> http://unxmaccx.pro/lib/libjpipe.dylib/Users/jim/src/asf/AOO420/main/solver/420/unxmaccx.pro/workdir/Zip/jurt_src.zip
> >
> >> /Users/jim/src/asf/AOO420/main/solver/420/unxmaccx.pro/pck/jurt_src.zip
> >> true
> >>
> >> Thx
> >>
> >>> On Jul 25, 2018, at 9:48 PM, Damjan Jovanovic <damjan....@gmail.com>
> >> wrote:
> >>>
> >>> make showdeliverables
> >>
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: dev-unsubscr...@openoffice.apache.org
> >> For additional commands, e-mail: dev-h...@openoffice.apache.org
> >>
> >>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@openoffice.apache.org
> For additional commands, e-mail: dev-h...@openoffice.apache.org
>
>
Index: main/solenv/gbuild/platform/macosx.mk
===================================================================
--- main/solenv/gbuild/platform/macosx.mk	(revision 1836648)
+++ main/solenv/gbuild/platform/macosx.mk	(working copy)
@@ -386,6 +386,9 @@
 $(call gb_Library_get_clean_target,$(1)) : AUXTARGETS +=  \
 	$(call gb_Library_get_target,$(1)).$(gb_UDK_MAJOR)
 endif
+$(call gb_Library_get_target,$(1)) \
+$(call gb_Library_get_clean_target,$(1)) : AUXTARGETS += \
+	$(patsubst %.dylib,%.jnilib,$(call gb_Library_get_target,$(1))
 
 endef
 
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@openoffice.apache.org
For additional commands, e-mail: dev-h...@openoffice.apache.org

Reply via email to