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 < [ mailto:nathanru...@gmail.com | 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 < [ mailto:zac.cos...@rsp.com.au | zac.cos...@rsp.com.au ] > wrote: BQ_BEGIN 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" < [ mailto:l...@larrygritz.com | l...@larrygritz.com ] > To: "oiio-dev" < [ mailto:oiio-dev@lists.openimageio.org | 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 [ mailto:Oiio-dev@lists.openimageio.org | Oiio-dev@lists.openimageio.org ] http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org BQ_END -- Larry Gritz [ mailto:l...@larrygritz.com | 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