Aha, outstanding! Glad that's all it took.
Aside: Now that everybody's on C++11 or later, it's best to use std::shared_ptr, not boost nor tr1. -- lg > On Jul 1, 2020, at 5:33 PM, Zac Coster <zac.cos...@rsp.com.au> wrote: > > You Geniuses! > > I rebuilt ocio/1.1.1 with the -DOCIO_USE_BOOST_PTR=ON and now everything is > working fine in Nuke12.1 > > Thank you so much for the help!!! > > > From: "Zac Coster" <zac.cos...@rsp.com.au> > To: "oiio-dev" <oiio-dev@lists.openimageio.org> > Sent: Thursday, 2 July, 2020 9:12:05 AM > Subject: Re: [Oiio-dev] Do the tx plugins support Nuke12+? > > Many Thanks Nathan & Larry, > > Apologies for the late reply, i was not at work. I'll take a look at fixing > this up now. > > Appreciate your help! > > > From: "Larry Gritz" <l...@larrygritz.com> > To: "oiio-dev" <oiio-dev@lists.openimageio.org> > Sent: Wednesday, 1 July, 2020 3:27:49 PM > Subject: Re: [Oiio-dev] Do the tx plugins support Nuke12+? > > Pro tip for apps out there: > > If you are embedding or shipping your own build of a commonly-used library > and use a custom namespace (yes, please do!) you should either link > statically, or ALSO make sure the shared library itself also has a custom > name. > > Pro tip for library authors: > > Your build system should allow customizing of both the namespace and the > library name. (For OIIO, those build options are controlled by > -DOIIO_NAMESPACE=... and -DOIIO_LIBNAME_SUFFIX=...) > > > On Jun 30, 2020, at 10:31 PM, Nathan Rusch <nathanru...@gmail.com > <mailto:nathanru...@gmail.com>> wrote: > > OK, I think the OpenColorIO symbol lookup error was the missing link here > (pun very much intended). I should mention that we don’t currently build OIIO > against OCIO because static linkage won’t work without backporting some OCIO > build changes from the 2.x development branch, so that would explain why I > don’t encounter anything like this issue. > > Nuke ships with its own OCIO library that uses a custom outer symbol > namespace of FnOpenColorIO (which is what you’re seeing in your loader > error), but the library name is not customized (it’s just libOpenColorIO.so). > Because of this, the runtime OCIO requirement for your compiled > libOpenImageIO.so is going to resolve to the libOpenColorIO.so that ships > with Nuke. > > The smoking gun is that the OCIO library they ship in 12.x uses > boost::shared_ptr, while Nuke 11.3 and prior used std::tr1::shared_ptr (and > I’m guessing the OCIO build you’re using for OIIO does as well). This would > explain where the symbol mismatch is coming from, and why the plugins work in > 11.3. Thus, you’ll likely need to produce an alternate OCIO build (or at > least configure and install a new set of headers and find a way to link > against the libOpenColorIO.so that ships with Nuke) in order to build against > 12.x. > > Hope this helps. > > -Nathan > > On Tue, Jun 30, 2020 at 8:04 PM Zac Coster <zac.cos...@rsp.com.au > <mailto:zac.cos...@rsp.com.au>> wrote: > > > > Hi Larry, > > Many Thanks for taking a look! > > When i drop a Read Node down in Nuke. I get a red banner appear with the > below error after i try to read a .tx file > > Read1: ${tx_file_name}.tx: Read error: > /home/zacc/dev/junk/build_test/oiio/oiio-rb-2.2.3/oiio-RB-2.2.3/install/lib64/txReader.so:plugin > did not define txReader > > (*Not sure if this part is relevant) > If i then try to import txReader via the python scriptEditor, it returns. > > import txReader > # Result: Traceback (most recent call last): > File "<string>", line 1, in <module> > ImportError: dynamic module does not define init function (inittxReader) > > Interestingly if i try the same import, however without first creating a read > node, i actually get an OCIO symbol error. > > import txReader > # Result: Traceback (most recent call last): > File "<string>", line 1, in <module> > ImportError: > /home/zacc/dev/junk/build_test/oiio/oiio-rb-2.2.3/oiio-RB-2.2.3/install/lib64/libOpenImageIO.so.2.2.3: > undefined symbol: > _ZNK13FnOpenColorIO2v16Config12getProcessorERKNSt3tr110shared_ptrIKNS0_7ContextEEERKNS3_IKNS0_9TransformEEENS0_18TransformDirectionE > > Using C++Filt results in > FnOpenColorIO::v1::Config::getProcessor(std::tr1::shared_ptr<FnOpenColorIO::v1::Context > const> const&, std::tr1::shared_ptr<FnOpenColorIO::v1::Transform const> > const&, FnOpenColorIO::v1::TransformDirection) const > > (Strace results from forced plugin reload) > > I also see the below strace > if i try to forcefully load all of Nuke's plugins > import nuke > nuke.nodeTypes(True) > > open("/home/zacc/dev/junk/build_test/oiio/oiio-rb-2.2.3/oiio-RB-2.2.3/install/lib64/txWriter.so", > O_RDONLY|O_CLOEXEC) = 118 > read(118, > "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\220\242\0\0\0\0\0\0"..., 832) > = 832 > fstat(118, {st_mode=S_IFREG|0755, st_size=186872, ...}) = 0 > mmap(NULL, 2251928, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 118, 0) = > 0x7f88e758a000 > mprotect(0x7f88e75af000, 2093056, PROT_NONE) = 0 > mmap(0x7f88e77ae000, 8192, PROT_READ|PROT_WRITE, > MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 118, 0x24000) = 0x7f88e77ae000 > close(118) = 0 > mprotect(0x7f88e77ae000, 4096, PROT_READ) = 0 > openat(AT_FDCWD, "/sys/devices/system/cpu", > O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 118 > brk(NULL) = 0xcec3000 > brk(0xcee7000) = 0xcee7000 > getdents(118, /* 42 entries */, 32768) = 1248 > getdents(118, /* 0 entries */, 32768) = 0 > close(118) = 0 > sched_getaffinity(29347, 8, [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 > 19 20 21 22 23]) = 8 > futex(0x7f8a2c3f8678, FUTEX_WAKE_PRIVATE, 2147483647) = 0 > futex(0x7f8a2c3f8678, FUTEX_WAKE_PRIVATE, 2147483647) = 0 > --- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0xad8f6} --- > rt_sigaction(SIGSEGV, NULL, {0x451580, [ILL ABRT BUS FPE SEGV], > SA_RESTORER|SA_STACK|SA_SIGINFO, 0x7f8b4d7365f0}, 8) = 0 > prctl(PR_SET_DUMPABLE, 1) = 0 > gettid() = 29347 > socketpair(AF_LOCAL, SOCK_STREAM, 0, [118, 119]) = 0 > sendmsg(11, {msg_name(0)=NULL, > msg_iov(1)=[{"\v\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0\366\330\n\0\0\0\0\0\0\0\0\0\0\0\0\0"..., > 1584}], msg_controllen=24, [{cmsg_len=20, cmsg_level=SOL_SOCKET, > cmsg_type=SCM_RIGHTS, [119]}], msg_flags=0}, 0) = 1584 > close(119) = 0 > read(118, "B", 1) = 1 > close(118) = 0 > rt_sigaction(SIGSEGV, {SIG_DFL, [SEGV], SA_RESTORER|SA_RESTART, > 0x7f8b4b6d03b0}, {0x451580, [ILL ABRT BUS FPE SEGV], > SA_RESTORER|SA_STACK|SA_SIGINFO, 0x7f8b4d7365f0}, 8) = 0 > gettid() = 29347 > tgkill(29347, 29347, SIGSEGV) = 0 > rt_sigreturn({mask=[]}) = 0 > --- SIGSEGV {si_signo=SIGSEGV, si_code=SI_TKILL, si_pid=29347, si_uid=50242} > --- > +++ killed by SIGSEGV +++ > Segmentation fault > > Apologies, i wish i knew more. This is what i have found so far. > > > > From: "Larry Gritz" <l...@larrygritz.com <mailto:l...@larrygritz.com>> > To: "oiio-dev" <oiio-dev@lists.openimageio.org > <mailto:oiio-dev@lists.openimageio.org>> > Sent: Wednesday, 1 July, 2020 11:51:02 AM > Subject: Re: [Oiio-dev] Do the tx plugins support Nuke12+? > > Zac, what error message do you get, exactly? > > > _______________________________________________ > Oiio-dev mailing list > Oiio-dev@lists.openimageio.org <mailto:Oiio-dev@lists.openimageio.org> > http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org > > -- > Larry Gritz > l...@larrygritz.com <mailto:l...@larrygritz.com> > > > > > > _______________________________________________ > Oiio-dev mailing list > Oiio-dev@lists.openimageio.org > http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org > > _______________________________________________ > Oiio-dev mailing list > Oiio-dev@lists.openimageio.org > http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org > _______________________________________________ > Oiio-dev mailing list > Oiio-dev@lists.openimageio.org > http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org -- Larry Gritz l...@larrygritz.com
_______________________________________________ Oiio-dev mailing list Oiio-dev@lists.openimageio.org http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org