On Fri, Jan 19, 2018 at 02:18:53PM +0000, Jeremie Courreges-Anglas wrote:
>
> Once again I've been bitten by the special handling of DEBUG done in
> cmake.port.mk.
>
> First, cmake might use different CFLAGS in debug and release mode (this
> is usually specified by upstream in CMakeLists.txt). Those CFLAGS might
> be undesirable or even unusable on OpenBSD (iirc some stuff might try to
> link against valgrind or ubsan / whatever). Those might be useful but
> IMO you shouldn't get to use them when all you want is to rebuild a port
> with DEBUG=-g, ie debug symbols.
>
> Also the release/debug difference means that some ports just won't
> package because of file names changes:
>
> --8<--
> ===> Building package for libical-3.0.1
> Create /usr/ports/packages/amd64/all/libical-3.0.1.tgz
> Creating package libical-3.0.1
> Error: change in plist
> | If the old and new builds were done correctly
> | (fully up-to-date ports tree including relevant MODULES)
> | then someone probably forgot to bump a REVISION.
> | (see bsd.port.mk(5), PACKAGE_REPOSITORY)
> --- /usr/ports/plist/amd64/libical-3.0.1
> +++ /usr/ports/plist/amd64/libical-3.0.1-new
> @@ -74,7 +74,7 @@
> lib/cmake/LibIcal/
> lib/cmake/LibIcal/LibIcalConfig.cmake
> lib/cmake/LibIcal/LibIcalConfigVersion.cmake
> -lib/cmake/LibIcal/LibIcalTargets-release.cmake
> +lib/cmake/LibIcal/LibIcalTargets-debug.cmake
> lib/cmake/LibIcal/LibIcalTargets.cmake
> lib/girepository-1.0/
> lib/girepository-1.0/ICalGLib-3.0.typelib
> *** Error 1 in . (/usr/ports/infrastructure/mk/bsd.port.mk:1943
> '/usr/ports/packages/amd64/all/libical-3.0.1.tgz')
> *** Error 1 in . (/usr/ports/infrastructure/mk/bsd.port.mk:2440
> '_internal-package')
> *** Error 1 in . (/usr/ports/infrastructure/mk/bsd.port.mk:2419 'package')
> *** Error 1 in /usr/ports/textproc/libical
> (/usr/ports/infrastructure/mk/bsd.port.mk:3421 'repackage')
> -->8--
>
> $ pkglocate release.cmake | wc -l
> 150
>
> I think it's fair to say that the ports tree is not ready to use
> cmake with DEBUG=-g. This could be fixed in theory, but someone has to
> do the work*, and is does not invalidate my first point.
>
> So here's the simple diff that does less and makes DEBUG=-g actually
> usable.
>
> ok?
>
>
>
> Index: cmake.port.mk
> ===================================================================
> RCS file: /d/cvs/ports/devel/cmake/cmake.port.mk,v
> retrieving revision 1.62
> diff -u -p -p -u -r1.62 cmake.port.mk
> --- cmake.port.mk 28 Nov 2017 10:26:00 -0000 1.62
> +++ cmake.port.mk 8 Jan 2018 09:37:03 -0000
> @@ -76,13 +76,8 @@ MODCMAKE_configure= cd ${WRKBUILD} && ${
> -G ${_MODCMAKE_GEN} ${CONFIGURE_ARGS} ${WRKSRC}
>
> .if !defined(CONFIGURE_ARGS) || ! ${CONFIGURE_ARGS:M*CMAKE_BUILD_TYPE*}
> -. if defined(DEBUG)
> -CONFIGURE_ARGS += -DCMAKE_BUILD_TYPE:String=Debug
> -MODCMAKE_BUILD_SUFFIX = -debug.cmake
> -. else
> CONFIGURE_ARGS += -DCMAKE_BUILD_TYPE:String=Release
> MODCMAKE_BUILD_SUFFIX = -release.cmake
> -. endif
> .endif
> SUBST_VARS += MODCMAKE_BUILD_SUFFIX
>
>
> * why isn't MODCMAKE_BUILD_SUFFIX properly substituted in all PLISTs?
I think that's the main issue isn't it?
We can probably fix the framework to do so.
--
Antoine