From owner-freebsd-ports-bugs@FreeBSD.ORG Wed Jul 27 12:50:13 2011 Return-Path: Delivered-To: freebsd-ports-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0CD8710656B5 for ; Wed, 27 Jul 2011 12:50:13 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id DDD228FC14 for ; Wed, 27 Jul 2011 12:50:12 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.4/8.14.4) with ESMTP id p6RCoCug075701 for ; Wed, 27 Jul 2011 12:50:12 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.4/8.14.4/Submit) id p6RCoCmA075700; Wed, 27 Jul 2011 12:50:12 GMT (envelope-from gnats) Resent-Date: Wed, 27 Jul 2011 12:50:12 GMT Resent-Message-Id: <201107271250.p6RCoCmA075700@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-ports-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Alex Samorukov Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8F18C106564A; Wed, 27 Jul 2011 12:45:06 +0000 (UTC) (envelope-from root@os2.ru) Received: from s1.sdv.com.ua (s1.sdv.com.ua [77.120.97.61]) by mx1.freebsd.org (Postfix) with ESMTP id 2AAA08FC16; Wed, 27 Jul 2011 12:45:05 +0000 (UTC) Received: from 90-105-243-80.cust.centrio.cz ([80.243.105.90] helo=os2.ru) by s1.sdv.com.ua with esmtpsa (TLSv1:AES256-SHA:256) (Exim 4.76 (FreeBSD)) (envelope-from ) id 1Qm3Tw-0003X9-VH; Wed, 27 Jul 2011 15:45:04 +0300 Received: from root by os2.ru with local (Exim 4.76 (FreeBSD)) (envelope-from ) id 1Qm3Tr-000AnY-Ca; Wed, 27 Jul 2011 14:44:55 +0200 Message-Id: Date: Wed, 27 Jul 2011 14:44:55 +0200 From: Alex Samorukov To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Cc: ale@FreeBSD.org Subject: ports/159231: [PATCH] databases/mysql-server: enable dtrace support on CURRENT or STABLE X-BeenThere: freebsd-ports-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Ports bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 27 Jul 2011 12:50:13 -0000 >Number: 159231 >Category: ports >Synopsis: [PATCH] databases/mysql-server: enable dtrace support on CURRENT or STABLE >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Wed Jul 27 12:50:11 UTC 2011 >Closed-Date: >Last-Modified: >Originator: Alex Samorukov >Release: FreeBSD 8.2-RELEASE i386 >Organization: NetArt s.r.o. >Environment: System: FreeBSD bsd 8.2-RELEASE FreeBSD 8.2-RELEASE #0: Fri Feb 18 02:24:46 UTC 2011 >Description: Added DTRACE configuration option (default off) and patched cmake files to build on FreeBSD. Issue also reported to upstream: http://bugs.mysql.com/bug.php?id=62005 Added file(s): - files/patch-dtrace.cmake - files/patch-dtrace_prelink.cmake Port maintainer (ale@FreeBSD.org) is cc'd. Generated with FreeBSD Port Tools 0.99 >How-To-Repeat: >Fix: --- mysql-server-5.5.14_1.patch begins here --- diff -ruN --exclude=CVS /root/mysql55-server.orig/Makefile /root/mysql55-server/Makefile --- /root/mysql55-server.orig/Makefile 2011-07-12 16:44:51.000000000 +0200 +++ /root/mysql55-server/Makefile 2011-07-27 14:40:26.000000000 +0200 @@ -7,7 +7,7 @@ PORTNAME?= mysql PORTVERSION= 5.5.14 -PORTREVISION?= 0 +PORTREVISION?= 1 CATEGORIES= databases ipv6 MASTER_SITES= ${MASTER_SITE_MYSQL} MASTER_SITE_SUBDIR= MySQL-5.5 @@ -21,7 +21,8 @@ MAKE_JOBS_SAFE= yes OPTIONS= OPENSSL "Enable SSL support" on \ - FASTMTX "Replace mutexes with spinlocks" off + FASTMTX "Replace mutexes with spinlocks" off \ + DTRACE "Enable DTrace support" off CMAKE_ARGS+= -DINSTALL_DOCDIR="share/doc/mysql" \ -DINSTALL_DOCREADMEDIR="share/doc/mysql" \ @@ -54,6 +55,10 @@ CMAKE_ARGS+= -DWITH_FAST_MUTEXES=1 .endif +.if defined(WITH_DTRACE) +CMAKE_ARGS+= -DENABLE_DTRACE=1 +.endif + # MySQL-Server part .if !defined(CLIENT_ONLY) USE_MYSQL= yes diff -ruN --exclude=CVS /root/mysql55-server.orig/files/patch-dtrace.cmake /root/mysql55-server/files/patch-dtrace.cmake --- /root/mysql55-server.orig/files/patch-dtrace.cmake 1970-01-01 01:00:00.000000000 +0100 +++ /root/mysql55-server/files/patch-dtrace.cmake 2011-07-27 14:40:27.000000000 +0200 @@ -0,0 +1,70 @@ +--- cmake/dtrace.cmake.orig 2011-06-21 16:42:39.000000000 +0000 ++++ cmake/dtrace.cmake 2011-07-27 11:49:47.214815458 +0000 +@@ -34,13 +34,11 @@ + FIND_PROGRAM(DTRACE dtrace) + MARK_AS_ADVANCED(DTRACE) + +- # 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) ++ IF(DTRACE AND NOT BUGGY_GCC_NO_DTRACE_MODULES) + SET(ENABLE_DTRACE ON CACHE BOOL "Enable dtrace") + ENDIF() + SET(HAVE_DTRACE ${ENABLE_DTRACE}) +- IF(CMAKE_SYSTEM_NAME MATCHES "SunOS") ++ IF(CMAKE_SYSTEM_NAME MATCHES "SunOS|FreeBSD") + IF(CMAKE_SIZEOF_VOID_P EQUAL 4) + SET(DTRACE_FLAGS -32 CACHE INTERNAL "DTrace architecture flags") + ELSE() +@@ -90,6 +88,10 @@ + ENDIF() + + FUNCTION(DTRACE_INSTRUMENT target) ++ # add libelf to the linker in the FreeBSD ++ IF(ENABLE_DTRACE AND CMAKE_SYSTEM_NAME MATCHES "FreeBSD") ++ TARGET_LINK_LIBRARIES(${target} elf) ++ ENDIF() + IF(BUGGY_GCC_NO_DTRACE_MODULES) + GET_TARGET_PROPERTY(target_type ${target} TYPE) + IF(target_type MATCHES "MODULE_LIBRARY") +@@ -105,7 +107,7 @@ + + # On Solaris, invoke dtrace -G to generate object file and + # link it together with target. +- IF(CMAKE_SYSTEM_NAME MATCHES "SunOS") ++ IF(CMAKE_SYSTEM_NAME MATCHES "SunOS|FreeBSD") + SET(objdir ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${target}.dir) + SET(outfile ${objdir}/${target}_dtrace.o) + GET_TARGET_PROPERTY(target_type ${target} TYPE) +@@ -117,6 +119,7 @@ + -DDFILE=${CMAKE_BINARY_DIR}/include/probes_mysql.d + -DDTRACE_FLAGS=${DTRACE_FLAGS} + -DDIRS=. ++ -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME} + -DTYPE=${target_type} + -P ${CMAKE_SOURCE_DIR}/cmake/dtrace_prelink.cmake + WORKING_DIRECTORY ${objdir} +@@ -152,13 +155,13 @@ + # run them again through dtrace -G to generate an ELF file that links + # to mysqld. + MACRO (DTRACE_INSTRUMENT_STATIC_LIBS target libs) +-IF(CMAKE_SYSTEM_NAME MATCHES "SunOS" AND ENABLE_DTRACE) ++IF(CMAKE_SYSTEM_NAME MATCHES "SunOS|FreeBSD" AND ENABLE_DTRACE) + # Filter out non-static libraries in the list, if any + SET(static_libs) + FOREACH(lib ${libs}) + GET_TARGET_PROPERTY(libtype ${lib} TYPE) + IF(libtype MATCHES STATIC_LIBRARY) +- SET(static_libs ${static_lics} ${lib}) ++ SET(static_libs ${static_libs} ${lib}) + ENDIF() + ENDFOREACH() + +@@ -177,6 +180,7 @@ + -DDTRACE_FLAGS=${DTRACE_FLAGS} + "-DDIRS=${dirs}" + -DTYPE=MERGE ++ -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME} + -P ${CMAKE_SOURCE_DIR}/cmake/dtrace_prelink.cmake + VERBATIM + ) diff -ruN --exclude=CVS /root/mysql55-server.orig/files/patch-dtrace_prelink.cmake /root/mysql55-server/files/patch-dtrace_prelink.cmake --- /root/mysql55-server.orig/files/patch-dtrace_prelink.cmake 1970-01-01 01:00:00.000000000 +0100 +++ /root/mysql55-server/files/patch-dtrace_prelink.cmake 2011-07-27 14:40:27.000000000 +0200 @@ -0,0 +1,36 @@ +--- cmake/dtrace_prelink.cmake.orig 2011-06-21 16:42:39.000000000 +0000 ++++ cmake/dtrace_prelink.cmake 2011-07-27 11:48:13.000000000 +0000 +@@ -44,7 +44,13 @@ + FILE(STRINGS ${dir}/dtrace_objects OBJS) + FOREACH(obj ${OBJS}) + IF(obj) +- EXECUTE_PROCESS(COMMAND cp ${obj} dtrace_objects_merge) ++ # use original, non modified object ++ IF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD") ++ GET_FILENAME_COMPONENT(obj_dest ${obj} NAME) ++ EXECUTE_PROCESS(COMMAND cp ${obj}.orig dtrace_objects_merge/${obj_dest}) ++ ELSE() ++ EXECUTE_PROCESS(COMMAND cp ${obj} dtrace_objects_merge) ++ ENDIF() + ENDIF() + ENDFOREACH() + ENDFOREACH() +@@ -62,6 +68,18 @@ + LIST(APPEND REL_OBJECTS ${REL}) + ENDFOREACH() + ++# there is a bug in dtrace/freebsd. When dtrace -G is running second time on already ++# processed object it producing broken output. We need to save objects to use them ++# later on a link stage ++ ++IF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD") ++ FOREACH(rel_object ${REL_OBJECTS}) ++ EXECUTE_PROCESS( ++ COMMAND cp ${rel_object} ${rel_object}.orig ++ ) ++ ENDFOREACH() ++ENDIF() ++ + FILE(WRITE dtrace_timestamp "") + EXECUTE_PROCESS( + COMMAND ${DTRACE} ${DTRACE_FLAGS} -o ${OUTFILE} -G -s ${DFILE} ${REL_OBJECTS} --- mysql-server-5.5.14_1.patch ends here --- >Release-Note: >Audit-Trail: >Unformatted: