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?
-- 
jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF  DDCC 0DFA 74AE 1524 E7EE

Reply via email to