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

Reply via email to