On Tue Mar 08, 2022 at 07:43:04PM +0000, Klemens Nanni wrote: > On Mon, Mar 07, 2022 at 07:53:49PM +0000, Stuart Henderson wrote: > > On 2022/03/06 18:21, Rafael Sadowski wrote: > > > > Yet another cmake patch, which needs a full bulk test. Many of you will > > > > certainly know it, our cmake's SHARED_LIBS handling is broken for new > > > > shared libs. > > > > > > > > The default "0.0" version has been broken for several months/years. > > > > Here is a attempt to fix this. With the following patch you get back the > > > > following lines, if (a) LIBxxx_VERSION is not set and (b) SOVERSION for > > > > the shared lib is set by cmake. (a) is clear but (b) helps us to handle > > > > shared libs and not plugins (dlopen) aka shared libs without version. > > > > > > > > ... > > > > Warning: unregistered shared lib(s) > > > > SHARED_LIBS += fmt 0.0 # 0.0 > > > > /usr/ports/devel/fmt/pkg/PLIST is new > > > > > > > > > > > > Patch changes: > > > > > > > > - Remove MODULE_LIBRARY processing. > > > > "MODULE libraries are plugins that are not linked into other targets > > > > but may be loaded dynamically at runtime using dlopen-like > > > > functionality." -- > > > > https://cmake.org/cmake/help/latest/command/add_library.html > > > > > > > > - Add default "0.0" version: > > > > if type SHARED_LIBRARY AND empty LIBxxx_VERSION BUT SOVERSION is set. > > > > > > > > I would appreciate a bulk test, unfortunately I can't do one. > > > > Not finished yet, but this one looks a bit odd so I'm sending it early. > > net/dino fails; despite having > > > > SHARED_LIBS += dino 1.0 # 0.0 > > > > the actual file produced is > > > > -rw-r--r-- 1 _pbuild _pbuild 3085740 Mar 7 12:32 libdino.so.0.0 > > Their main lib's target is called "libdino" but they install it with > `PREFIX ""'... maybe to avoid conflicts with the main project "Dino"?
Hi Klemens, yes to distinguish two targets we have to define tow different target-names in cmake. I see this in mariadb/libmariadb ledger/libledger... I think it's better to handle this in the cmake openbsd patch by evaluating PREFIX. Other Opinions? > > $ cd `make show=WRKSRC`; rg -t cmake -w SOVERSION > qlite/CMakeLists.txt > 39:set_target_properties(qlite PROPERTIES VERSION 0.1 SOVERSION 0) > > xmpp-vala/CMakeLists.txt > 168:set_target_properties(xmpp-vala PROPERTIES VERSION 0.1 SOVERSION 0) > > libdino/CMakeLists.txt > 96:set_target_properties(libdino PROPERTIES PREFIX "" VERSION 0.0 > SOVERSION 0) > > crypto-vala/CMakeLists.txt > 37:set_target_properties(crypto-vala PROPERTIES VERSION 0.0 SOVERSION 0) > > Diff below fixes the build and packages without PLIST change except the > RCSID marker when built with rsadowski's patch, it does however "warn" > in this unique port: > > Looking for unregistered conflicts > Warning: unregistered shared lib(s) > SHARED_LIBS += dino 0.0 # 3.4 > /usr/ports/net/dino/pkg/PLIST changed > > net/dino would be the only port with a SHARED_LIBS entry that begins > with "libfoo" but installs "foo". > > PS: I've built with shared lib versions 1.2 3.4 5.6 and 7.8 just to > confirm that cmake installs exactly those and does without any patches: > The existing one is indeed obsolete as all versions are picked and no > symlinks are around: > > $ cd `make show=WRKINST`; find . -name \*.so.\* > ./usr/local/lib/libqlite.so.5.6 > ./usr/local/lib/libxmpp-vala.so.7.8 > ./usr/local/lib/libdino.so.3.4 > ./usr/local/lib/libcrypto-vala.so.1.2 > > > Index: Makefile > =================================================================== > RCS file: /home/cvs/ports/net/dino/Makefile,v > retrieving revision 1.7 > diff -u -p -r1.7 Makefile > --- Makefile 21 Feb 2022 16:33:33 -0000 1.7 > +++ Makefile 8 Mar 2022 19:17:17 -0000 > @@ -2,11 +2,13 @@ > > COMMENT= XMPP desktop client > VERSION= 0.3.0 > +REVISION= 0 > DISTNAME= dino-${VERSION} > CATEGORIES= net x11 > > SHARED_LIBS += crypto-vala 0.0 # 0.0 > -SHARED_LIBS += dino 1.0 # 0.0 > +# target `libdino' installed with `PREFIX ""' > +SHARED_LIBS += libdino 1.0 # 0.0 > SHARED_LIBS += qlite 0.0 # 0.1 > SHARED_LIBS += xmpp-vala 1.0 # 0.1 > > Index: patches/patch-libdino_CMakeLists_txt > =================================================================== > RCS file: patches/patch-libdino_CMakeLists_txt > diff -N patches/patch-libdino_CMakeLists_txt > --- patches/patch-libdino_CMakeLists_txt 21 Feb 2022 16:33:33 -0000 > 1.3 > +++ /dev/null 1 Jan 1970 00:00:00 -0000 > @@ -1,16 +0,0 @@ > -$OpenBSD: patch-libdino_CMakeLists_txt,v 1.3 2022/02/21 16:33:33 kn Exp $ > - > -avoid stupid links to libraries > - > -Index: libdino/CMakeLists.txt > ---- libdino/CMakeLists.txt.orig > -+++ libdino/CMakeLists.txt > -@@ -93,7 +93,7 @@ add_definitions(${VALA_CFLAGS} -DDINO_SYSTEM_PLUGIN_DI > - add_library(libdino SHARED ${LIBDINO_VALA_C} > ${CMAKE_BINARY_DIR}/exports/dino_i18n.h) > - add_dependencies(libdino dino-vapi) > - target_link_libraries(libdino xmpp-vala qlite ${LIBDINO_PACKAGES} m) > --set_target_properties(libdino PROPERTIES PREFIX "" VERSION 0.0 SOVERSION 0) > -+set_target_properties(libdino PROPERTIES PREFIX "" VERSION > ${LIBdino_VERSION}) > - > - install(TARGETS libdino ${TARGET_INSTALL}) > - install(FILES ${CMAKE_BINARY_DIR}/exports/dino.vapi > ${CMAKE_BINARY_DIR}/exports/dino.deps DESTINATION ${VAPI_INSTALL_DIR}) > Index: pkg/PLIST > =================================================================== > RCS file: /home/cvs/ports/net/dino/pkg/PLIST,v > retrieving revision 1.3 > diff -u -p -r1.3 PLIST > --- pkg/PLIST 21 Feb 2022 16:33:33 -0000 1.3 > +++ pkg/PLIST 8 Mar 2022 19:11:22 -0000 > @@ -1,4 +1,3 @@ > -@comment $OpenBSD: PLIST,v 1.3 2022/02/21 16:33:33 kn Exp $ > @bin bin/dino > include/crypto-vala.h > include/dino.h