[MDEV-4775] Build failure on latest SmartOS versions Created: 2013-07-10  Updated: 2018-02-28  Resolved: 2018-02-28

Status: Closed
Project: MariaDB Server
Component/s: Compiling
Affects Version/s: 5.5.31
Fix Version/s: N/A

Type: Bug Priority: Minor
Reporter: Alasdair Lumsden Assignee: Unassigned
Resolution: Incomplete Votes: 1
Labels: need_feedback, upstream
Environment:

Joyent SmartOS



 Description   

DTrace on SmartOS has recently been made slightly more strict, and refuses to produce objects with no probes defined:

[ 54%] Building C object storage/maria/CMakeFiles/aria.dir/ma_commit.c.o
[ 54%] Building C object storage/maria/CMakeFiles/aria.dir/ma_pagecrc.c.o
[ 54%] Building C object storage/maria/CMakeFiles/aria.dir/ma_recovery_util.c.o
[ 54%] Building C object storage/maria/CMakeFiles/aria.dir/ma_servicethread.c.o
[ 54%] Building C object storage/maria/CMakeFiles/aria.dir/ma_norec.c.o
Linking CXX static library libaria.a
dtrace: failed to link script /ws/ec-userland/components/mariadb55/build/i86/include/probes_mysql.d: No probe sites found for declared provider
/ec/bin/ar: /ws/ec-userland/components/mariadb55/build/i86/storage/maria/CMakeFiles/aria.dir/aria_dtrace.o: No such file or directory
make[3]: *** [storage/maria/libaria.a] Error 1
make[3]: Leaving directory `/ws/ec-userland/components/mariadb55/build/i86'

This has been reported against MySQL and Percona:

http://bugs.mysql.com/bug.php?id=69639&thanks=3&notify=67
https://bugs.launchpad.net/percona-server/+bug/1196460

Below is a patch for MariaDB based on the Percona one:

http://al.cloud.ec/mariadb_dtrace.patch

--- mariadb-5.5.31.orig/CMakeLists.txt	2013-07-10 12:49:03.661543798 +0000
+++ mariadb-5.5.31/CMakeLists.txt	2013-07-10 12:49:23.498193806 +0000
@@ -156,6 +156,7 @@
   SET(WITHOUT_DYNAMIC_PLUGINS 1)
 ENDIF()
 OPTION(ENABLED_PROFILING "Enable profiling" ON)
+OPTION(ENABLE_DTRACE "Include support for DTrace probes" OFF)
 OPTION(CYBOZU "" OFF)
 OPTION(BACKUP_TEST "" OFF)
 OPTION(WITHOUT_SERVER OFF)
--- mariadb-5.5.31.orig/cmake/dtrace.cmake	2013-07-10 12:49:03.684799135 +0000
+++ mariadb-5.5.31/cmake/dtrace.cmake	2013-07-10 12:51:56.220641556 +0000
@@ -40,11 +40,11 @@
  ENDIF()
 
  # On FreeBSD, dtrace does not handle userland tracing yet
- IF(DTRACE AND NOT CMAKE_SYSTEM_NAME MATCHES "FreeBSD"
-     AND NOT BUGGY_GCC_NO_DTRACE_MODULES
-     AND NOT BUGGY_LINUX_DTRACE) 
-   SET(ENABLE_DTRACE ON CACHE BOOL "Enable dtrace")
+ IF(ENABLE_DTRACE AND (CMAKE_SYSTEM_NAME MATCHES "FreeBSD"
+    OR BUGGY_GCC_NO_DTRACE_MODULES OR NOT DTRACE))
+  MESSAGE(FATAL_ERROR "dtrace is not supported on this system")
  ENDIF()
+
  SET(HAVE_DTRACE ${ENABLE_DTRACE})
  IF(CMAKE_SYSTEM_NAME MATCHES "SunOS")
    IF(CMAKE_SIZEOF_VOID_P EQUAL 4)
--- mariadb-5.5.31.orig/cmake/plugin.cmake	2013-07-10 12:49:03.684867566 +0000
+++ mariadb-5.5.31/cmake/plugin.cmake	2013-07-10 12:55:24.330105257 +0000
@@ -21,6 +21,7 @@
 # [STORAGE_ENGINE]
 # [MANDATORY|DEFAULT]
 # [STATIC_ONLY|DYNAMIC_ONLY]
+# [DTRACE_INSTRUMENTED]
 # [MODULE_OUTPUT_NAME module_name]
 # [STATIC_OUTPUT_NAME static_name]
 # [RECOMPILE_FOR_EMBEDDED]
@@ -47,7 +48,7 @@
 MACRO(MYSQL_ADD_PLUGIN)
   MYSQL_PARSE_ARGUMENTS(ARG
     "LINK_LIBRARIES;DEPENDENCIES;MODULE_OUTPUT_NAME;STATIC_OUTPUT_NAME;COMPONENT"
-    "STORAGE_ENGINE;STATIC_ONLY;MODULE_ONLY;MANDATORY;DEFAULT;DISABLED;RECOMPILE_FOR_EMBEDDED"
+    "STORAGE_ENGINE;STATIC_ONLY;MODULE_ONLY;MANDATORY;DEFAULT;DISABLED;RECOMPILE_FOR_EMBEDDED;DTRACE_INSTRUMENTED"
     ${ARGN}
   )
   
@@ -134,7 +135,9 @@
     ENDIF()
 
     ADD_LIBRARY(${target} STATIC ${SOURCES})
-    DTRACE_INSTRUMENT(${target})
+    IF (ARG_DTRACE_INSTRUMENTED)
+      DTRACE_INSTRUMENT(${target})
+    ENDIF()
     ADD_DEPENDENCIES(${target} GenError ${ARG_DEPENDENCIES})
     RESTRICT_SYMBOL_EXPORTS(${target})
     IF(WITH_EMBEDDED_SERVER)
@@ -143,7 +146,9 @@
       IF(ARG_RECOMPILE_FOR_EMBEDDED OR NOT _SKIP_PIC)
         # Recompile some plugins for embedded
         ADD_CONVENIENCE_LIBRARY(${target}_embedded ${SOURCES})
-        DTRACE_INSTRUMENT(${target}_embedded)   
+        IF (ARG_DTRACE_INSTRUMENTED)
+          DTRACE_INSTRUMENT(${target}_embedded)
+        ENDIF()
         IF(ARG_RECOMPILE_FOR_EMBEDDED)
           SET_TARGET_PROPERTIES(${target}_embedded 
             PROPERTIES COMPILE_DEFINITIONS "EMBEDDED_LIBRARY")
@@ -182,7 +187,9 @@
   
     ADD_VERSION_INFO(${target} MODULE SOURCES)
     ADD_LIBRARY(${target} MODULE ${SOURCES}) 
-    DTRACE_INSTRUMENT(${target})
+    IF (ARG_DTRACE_INSTRUMENTED)
+      DTRACE_INSTRUMENT(${target})
+    ENDIF()
     SET_TARGET_PROPERTIES (${target} PROPERTIES PREFIX ""
       COMPILE_DEFINITIONS "MYSQL_DYNAMIC_PLUGIN")
     TARGET_LINK_LIBRARIES (${target} mysqlservices)
diff -ur mariadb-5.5.31.orig/storage/archive/CMakeLists.txt mariadb-5.5.31/storage/archive/CMakeLists.txt
--- mariadb-5.5.31.orig/storage/archive/CMakeLists.txt	2013-07-10 12:49:03.443916246 +0000
+++ mariadb-5.5.31/storage/archive/CMakeLists.txt	2013-07-10 12:56:35.710307439 +0000
@@ -14,5 +14,6 @@
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
 
 SET(ARCHIVE_SOURCES  azio.c ha_archive.cc ha_archive.h)
-MYSQL_ADD_PLUGIN(archive ${ARCHIVE_SOURCES} STORAGE_ENGINE LINK_LIBRARIES ${ZLIB_LIBRARY})
+MYSQL_ADD_PLUGIN(archive ${ARCHIVE_SOURCES} STORAGE_ENGINE
+                 LINK_LIBRARIES ${ZLIB_LIBRARY} DTRACE_INSTRUMENTED)
 
diff -ur mariadb-5.5.31.orig/storage/blackhole/CMakeLists.txt mariadb-5.5.31/storage/blackhole/CMakeLists.txt
--- mariadb-5.5.31.orig/storage/blackhole/CMakeLists.txt	2013-07-10 12:49:03.464410236 +0000
+++ mariadb-5.5.31/storage/blackhole/CMakeLists.txt	2013-07-10 12:57:13.599315523 +0000
@@ -14,4 +14,6 @@
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
 
 SET(BLACKHOLE_SOURCES  ha_blackhole.cc ha_blackhole.h)
-MYSQL_ADD_PLUGIN(blackhole ${BLACKHOLE_SOURCES} STORAGE_ENGINE)
+MYSQL_ADD_PLUGIN(blackhole ${BLACKHOLE_SOURCES} STORAGE_ENGINE
+                 DTRACE_INSTRUMENTED)
+
diff -ur mariadb-5.5.31.orig/storage/csv/CMakeLists.txt mariadb-5.5.31/storage/csv/CMakeLists.txt
--- mariadb-5.5.31.orig/storage/csv/CMakeLists.txt	2013-07-10 12:49:03.451392997 +0000
+++ mariadb-5.5.31/storage/csv/CMakeLists.txt	2013-07-10 12:57:36.220973044 +0000
@@ -14,4 +14,5 @@
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
 
 SET(CSV_SOURCES  ha_tina.cc ha_tina.h transparent_file.cc transparent_file.h)
-MYSQL_ADD_PLUGIN(csv ${CSV_SOURCES} STORAGE_ENGINE MANDATORY)
+MYSQL_ADD_PLUGIN(csv ${CSV_SOURCES} STORAGE_ENGINE
+                 MANDATORY DTRACE_INSTRUMENTED)
diff -ur mariadb-5.5.31.orig/storage/example/CMakeLists.txt mariadb-5.5.31/storage/example/CMakeLists.txt
--- mariadb-5.5.31.orig/storage/example/CMakeLists.txt	2013-07-10 12:49:03.486538127 +0000
+++ mariadb-5.5.31/storage/example/CMakeLists.txt	2013-07-10 12:58:28.979902634 +0000
@@ -14,4 +14,5 @@
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
 
 SET(EXAMPLE_SOURCES ha_example.cc)
-MYSQL_ADD_PLUGIN(example ${EXAMPLE_SOURCES} STORAGE_ENGINE MODULE_ONLY COMPONENT Test)
+MYSQL_ADD_PLUGIN(example ${EXAMPLE_SOURCES} STORAGE_ENGINE MODULE_ONLY
+	COMPONENT Test DTRACE_INSTRUMENTED)
diff -ur mariadb-5.5.31.orig/storage/federated/CMakeLists.txt mariadb-5.5.31/storage/federated/CMakeLists.txt
--- mariadb-5.5.31.orig/storage/federated/CMakeLists.txt	2013-07-10 12:49:03.429653714 +0000
+++ mariadb-5.5.31/storage/federated/CMakeLists.txt	2013-07-10 12:58:59.770846435 +0000
@@ -19,4 +19,5 @@
  # mysqld and are optimized away by the linker.
  SET(FEDERATED_SOURCES ${FEDERATED_SOURCES} ${CMAKE_SOURCE_DIR}/mysys/string.c)
 ENDIF()
-MYSQL_ADD_PLUGIN(federated ${FEDERATED_SOURCES} STORAGE_ENGINE MODULE_ONLY)
+MYSQL_ADD_PLUGIN(federated ${FEDERATED_SOURCES} STORAGE_ENGINE MODULE_ONLY
+		DTRACE_INSTRUMENTED)
diff -ur mariadb-5.5.31.orig/storage/heap/CMakeLists.txt mariadb-5.5.31/storage/heap/CMakeLists.txt
--- mariadb-5.5.31.orig/storage/heap/CMakeLists.txt	2013-07-10 12:49:03.482731437 +0000
+++ mariadb-5.5.31/storage/heap/CMakeLists.txt	2013-07-10 12:59:32.492100863 +0000
@@ -19,7 +19,8 @@
 				hp_rename.c hp_rfirst.c hp_rkey.c hp_rlast.c hp_rnext.c hp_rprev.c
 				hp_rrnd.c hp_rsame.c hp_scan.c hp_static.c hp_update.c hp_write.c)
 
-MYSQL_ADD_PLUGIN(heap ${HEAP_SOURCES} STORAGE_ENGINE MANDATORY RECOMPILE_FOR_EMBEDDED)
+MYSQL_ADD_PLUGIN(heap ${HEAP_SOURCES} STORAGE_ENGINE MANDATORY
+		RECOMPILE_FOR_EMBEDDED DTRACE_INSTRUMENTED)
 
 IF(WITH_UNIT_TESTS)
   ADD_EXECUTABLE(hp_test1 hp_test1.c)
@@ -27,4 +28,4 @@
 
   ADD_EXECUTABLE(hp_test2 hp_test2.c)
   TARGET_LINK_LIBRARIES(hp_test2 heap mysys dbug strings)
-ENDIF()
\ No newline at end of file
+ENDIF()
diff -ur mariadb-5.5.31.orig/storage/myisam/CMakeLists.txt mariadb-5.5.31/storage/myisam/CMakeLists.txt
--- mariadb-5.5.31.orig/storage/myisam/CMakeLists.txt	2013-07-10 12:49:03.434412273 +0000
+++ mariadb-5.5.31/storage/myisam/CMakeLists.txt	2013-07-10 13:00:09.894928098 +0000
@@ -30,7 +30,8 @@
 MYSQL_ADD_PLUGIN(myisam ${MYISAM_SOURCES} 
   STORAGE_ENGINE 
   MANDATORY 
-  RECOMPILE_FOR_EMBEDDED)
+  RECOMPILE_FOR_EMBEDDED
+  DTRACE_INSTRUMENTED)
 
 TARGET_LINK_LIBRARIES(myisam mysys)
 
diff -ur mariadb-5.5.31.orig/storage/myisammrg/CMakeLists.txt mariadb-5.5.31/storage/myisammrg/CMakeLists.txt
--- mariadb-5.5.31.orig/storage/myisammrg/CMakeLists.txt	2013-07-10 12:49:03.450326835 +0000
+++ mariadb-5.5.31/storage/myisammrg/CMakeLists.txt	2013-07-10 13:00:41.064935559 +0000
@@ -20,4 +20,5 @@
 				myrg_rprev.c myrg_rrnd.c myrg_rsame.c myrg_static.c myrg_update.c
 				myrg_write.c myrg_records.c)
 
-MYSQL_ADD_PLUGIN(myisammrg ${MYISAMMRG_SOURCES} STORAGE_ENGINE MANDATORY RECOMPILE_FOR_EMBEDDED)
+MYSQL_ADD_PLUGIN(myisammrg ${MYISAMMRG_SOURCES} STORAGE_ENGINE MANDATORY
+		RECOMPILE_FOR_EMBEDDED DTRACE_INSTRUMENTED)



 Comments   
Comment by Daniel Black [ 2017-12-30 ]

Seems now SmartOS https://wiki.smartos.org/display/DOC/DTrace and the FAQ seems to allude to dtrace being in userspace now for debugging applications. Is this really so? Is this patch still needed?

Generated at Thu Feb 08 06:59:03 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.