View | Details | Raw Unified | Return to bug 159231
Collapse All | Expand All

(-)/root/mysql55-server/Makefile (-2 / +7 lines)
Lines 7-13 Link Here
7
7
8
PORTNAME?=	mysql
8
PORTNAME?=	mysql
9
PORTVERSION=	5.5.14
9
PORTVERSION=	5.5.14
10
PORTREVISION?=	0
10
PORTREVISION?=	1
11
CATEGORIES=	databases ipv6
11
CATEGORIES=	databases ipv6
12
MASTER_SITES=	${MASTER_SITE_MYSQL}
12
MASTER_SITES=	${MASTER_SITE_MYSQL}
13
MASTER_SITE_SUBDIR=	MySQL-5.5
13
MASTER_SITE_SUBDIR=	MySQL-5.5
Lines 21-27 Link Here
21
MAKE_JOBS_SAFE=	yes
21
MAKE_JOBS_SAFE=	yes
22
22
23
OPTIONS=	OPENSSL "Enable SSL support" on \
23
OPTIONS=	OPENSSL "Enable SSL support" on \
24
		FASTMTX "Replace mutexes with spinlocks" off
24
		FASTMTX "Replace mutexes with spinlocks" off \
25
		DTRACE "Enable DTrace support" off
25
26
26
CMAKE_ARGS+=	-DINSTALL_DOCDIR="share/doc/mysql" \
27
CMAKE_ARGS+=	-DINSTALL_DOCDIR="share/doc/mysql" \
27
		-DINSTALL_DOCREADMEDIR="share/doc/mysql" \
28
		-DINSTALL_DOCREADMEDIR="share/doc/mysql" \
Lines 54-59 Link Here
54
CMAKE_ARGS+=	-DWITH_FAST_MUTEXES=1
55
CMAKE_ARGS+=	-DWITH_FAST_MUTEXES=1
55
.endif
56
.endif
56
57
58
.if defined(WITH_DTRACE)
59
CMAKE_ARGS+=	-DENABLE_DTRACE=1
60
.endif
61
57
# MySQL-Server part
62
# MySQL-Server part
58
.if !defined(CLIENT_ONLY)
63
.if !defined(CLIENT_ONLY)
59
USE_MYSQL=	yes
64
USE_MYSQL=	yes
(-)/root/mysql55-server/files/patch-dtrace.cmake (+70 lines)
Line 0 Link Here
1
--- cmake/dtrace.cmake.orig	2011-06-21 16:42:39.000000000 +0000
2
+++ cmake/dtrace.cmake	2011-07-27 11:49:47.214815458 +0000
3
@@ -34,13 +34,11 @@
4
  FIND_PROGRAM(DTRACE dtrace)
5
  MARK_AS_ADVANCED(DTRACE)
6
 
7
- # On FreeBSD, dtrace does not handle userland tracing yet
8
- IF(DTRACE AND NOT CMAKE_SYSTEM_NAME MATCHES "FreeBSD"
9
-     AND NOT BUGGY_GCC_NO_DTRACE_MODULES)
10
+ IF(DTRACE AND NOT BUGGY_GCC_NO_DTRACE_MODULES)
11
    SET(ENABLE_DTRACE ON CACHE BOOL "Enable dtrace")
12
  ENDIF()
13
  SET(HAVE_DTRACE ${ENABLE_DTRACE})
14
- IF(CMAKE_SYSTEM_NAME MATCHES "SunOS")
15
+ IF(CMAKE_SYSTEM_NAME MATCHES "SunOS|FreeBSD")
16
    IF(CMAKE_SIZEOF_VOID_P EQUAL 4)
17
      SET(DTRACE_FLAGS -32 CACHE INTERNAL "DTrace architecture flags")
18
    ELSE()
19
@@ -90,6 +88,10 @@
20
 ENDIF()
21
 
22
 FUNCTION(DTRACE_INSTRUMENT target)
23
+    # add libelf to the linker in the FreeBSD
24
+    IF(ENABLE_DTRACE AND CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
25
+        TARGET_LINK_LIBRARIES(${target} elf)
26
+    ENDIF()
27
   IF(BUGGY_GCC_NO_DTRACE_MODULES)
28
     GET_TARGET_PROPERTY(target_type ${target} TYPE)
29
     IF(target_type MATCHES "MODULE_LIBRARY")
30
@@ -105,7 +107,7 @@
31
 
32
     # On Solaris, invoke dtrace -G to generate object file and
33
     # link it together with target.
34
-    IF(CMAKE_SYSTEM_NAME MATCHES "SunOS")
35
+    IF(CMAKE_SYSTEM_NAME MATCHES "SunOS|FreeBSD")
36
       SET(objdir ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${target}.dir)
37
       SET(outfile ${objdir}/${target}_dtrace.o)
38
       GET_TARGET_PROPERTY(target_type ${target} TYPE)
39
@@ -117,6 +119,7 @@
40
           -DDFILE=${CMAKE_BINARY_DIR}/include/probes_mysql.d
41
           -DDTRACE_FLAGS=${DTRACE_FLAGS}
42
           -DDIRS=.
43
+          -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME}
44
           -DTYPE=${target_type}
45
           -P ${CMAKE_SOURCE_DIR}/cmake/dtrace_prelink.cmake
46
         WORKING_DIRECTORY ${objdir}
47
@@ -152,13 +155,13 @@
48
 # run them again through dtrace -G to generate an ELF file that links
49
 # to mysqld.
50
 MACRO (DTRACE_INSTRUMENT_STATIC_LIBS target libs)
51
-IF(CMAKE_SYSTEM_NAME MATCHES "SunOS" AND ENABLE_DTRACE)
52
+IF(CMAKE_SYSTEM_NAME MATCHES "SunOS|FreeBSD" AND ENABLE_DTRACE)
53
   # Filter out non-static libraries in the list, if any
54
   SET(static_libs)
55
   FOREACH(lib ${libs})
56
     GET_TARGET_PROPERTY(libtype ${lib} TYPE)
57
     IF(libtype MATCHES STATIC_LIBRARY)
58
-      SET(static_libs ${static_lics} ${lib})
59
+      SET(static_libs ${static_libs} ${lib})
60
     ENDIF()
61
   ENDFOREACH()
62
 
63
@@ -177,6 +180,7 @@
64
    -DDTRACE_FLAGS=${DTRACE_FLAGS}
65
    "-DDIRS=${dirs}"
66
    -DTYPE=MERGE
67
+   -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME}
68
    -P ${CMAKE_SOURCE_DIR}/cmake/dtrace_prelink.cmake
69
    VERBATIM
70
   )
(-)/root/mysql55-server/files/patch-dtrace_prelink.cmake (+36 lines)
Line 0 Link Here
1
--- cmake/dtrace_prelink.cmake.orig	2011-06-21 16:42:39.000000000 +0000
2
+++ cmake/dtrace_prelink.cmake	2011-07-27 11:48:13.000000000 +0000
3
@@ -44,7 +44,13 @@
4
     FILE(STRINGS ${dir}/dtrace_objects  OBJS)
5
     FOREACH(obj ${OBJS})
6
       IF(obj)
7
-        EXECUTE_PROCESS(COMMAND cp ${obj} dtrace_objects_merge)
8
+        # use original, non modified object
9
+        IF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
10
+            GET_FILENAME_COMPONENT(obj_dest ${obj} NAME)
11
+            EXECUTE_PROCESS(COMMAND cp ${obj}.orig dtrace_objects_merge/${obj_dest})
12
+        ELSE()
13
+            EXECUTE_PROCESS(COMMAND cp ${obj} dtrace_objects_merge)
14
+        ENDIF()
15
       ENDIF()
16
     ENDFOREACH()
17
   ENDFOREACH()
18
@@ -62,6 +68,18 @@
19
   LIST(APPEND REL_OBJECTS ${REL})
20
 ENDFOREACH()
21
 
22
+# there is a bug in dtrace/freebsd. When dtrace -G is running second time on already 
23
+# processed object it producing broken output. We need to save objects to use them 
24
+# later on a link stage
25
+
26
+IF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD")
27
+    FOREACH(rel_object ${REL_OBJECTS})
28
+	EXECUTE_PROCESS(
29
+	     COMMAND cp ${rel_object} ${rel_object}.orig
30
+	)
31
+    ENDFOREACH()
32
+ENDIF()
33
+
34
 FILE(WRITE  dtrace_timestamp "")
35
 EXECUTE_PROCESS(
36
  COMMAND ${DTRACE} ${DTRACE_FLAGS} -o ${OUTFILE}  -G -s ${DFILE}  ${REL_OBJECTS}

Return to bug 159231