svn commit: r499251 - in head/biology/canu: . files

Jason W. Bacon jwb at FreeBSD.org
Thu Apr 18 12:15:58 UTC 2019


Author: jwb
Date: Thu Apr 18 12:15:56 2019
New Revision: 499251
URL: https://svnweb.freebsd.org/changeset/ports/499251

Log:
  biology/canu: Fix build on powerpc64 and aarch64
  
  Should also work on powerpc and arm*, but unable to test
  
  PR:             237105
  Reported by:    pkubaj

Added:
  head/biology/canu/files/patch-Makefile   (contents, props changed)
Modified:
  head/biology/canu/Makefile
  head/biology/canu/files/patch-pipelines_canu_Defaults.pm
  head/biology/canu/files/patch-pipelines_canu_Execution.pm

Modified: head/biology/canu/Makefile
==============================================================================
--- head/biology/canu/Makefile	Thu Apr 18 11:56:29 2019	(r499250)
+++ head/biology/canu/Makefile	Thu Apr 18 12:15:56 2019	(r499251)
@@ -12,10 +12,6 @@ COMMENT=	Single molecule sequence assembler
 LICENSE=	GPLv2
 LICENSE_FILE=	${WRKDIR}/${PORTNAME}-${PORTVERSION}/README.license.GPL
 
-BROKEN_aarch64=		fails to link: undefined reference to omp_set_num_threads
-BROKEN_armv6=		fails to install: mv: rename site_perl to /wrkdirs/usr/ports/biology/canu/work/canu-1.7/src/usr/local/FreeBSD-armv6/lib/perl5/site_perl: No such file or directory
-BROKEN_armv7=		fails to install: mv: rename site_perl to /wrkdirs/usr/ports/biology/canu/work/canu-1.7/src/usr/local/FreeBSD-armv7/lib/perl5/site_perl: No such file or directory
-
 LIB_DEPENDS=	libboost_regex.so:devel/boost-libs
 RUN_DEPENDS=	gnuplot:math/gnuplot
 
@@ -28,19 +24,28 @@ JAVA_VERSION=	1.8+
 GH_ACCOUNT=	marbl
 
 WRKSRC_SUBDIR=	src
-# Makefile compiles directly into ${DESTDIR}${PREFIX}
-MAKE_ENV+=	DESTDIR=${WRKSRC}
+# Upstream Makefile compiles directly into ${DESTDIR}${PREFIX} rather than
+# using a separate install target.
+MAKE_ENV=	DESTDIR=${WRKSRC} CANU_BUILD_ENV=ports
 
-post-patch:
-	${REINPLACE_CMD} \
+.include <bsd.port.pre.mk>
+
+# GCC 4.2.1 (still base compiler on some 2nd tier platforms) cannot build canu
+.if ${COMPILER_TYPE} == gcc && ${COMPILER_VERSION} <= 42
+USE_GCC=	yes
+.endif
+
+pre-configure:
+	@${REINPLACE_CMD} \
 		-e 's|-O4||g' \
 		-e 's|-funroll-loops||g' \
 		-e 's|-fexpensive-optimizations||g' \
-		-e 's|amd64|${ARCH}|g' \
 		${WRKSRC}/Makefile
-	${REINPLACE_CMD} -e 's|\\$$bin/mhap-|${JAVAJARDIR}/mhap-|g' \
+	@${REINPLACE_CMD} \
+		-e 's|\\$$bin/mhap-|${JAVAJARDIR}/mhap-|g' \
 		${WRKSRC}/pipelines/canu/OverlapMhap.pm
-	${REINPLACE_CMD} -e 's|RealBin/lib|RealBin/../${SITE_PERL_REL}/canu|g' \
+	@${REINPLACE_CMD} \
+		-e 's|RealBin/lib|RealBin/../${SITE_PERL_REL}/canu|g' \
 		${WRKSRC}/pipelines/canu.pl
 
 # Upstream does not want to use lib/perl5/site_perl
@@ -55,9 +60,9 @@ do-install:
 		${COPYTREE_BIN} bin ${STAGEDIR}${PREFIX})
 	# STRIP_CMD fails without this on 11.1 under poudriere
 	@${CHMOD} u+w ${STAGEDIR}${PREFIX}/bin/*
-	${STRIP_CMD} \
+	@${STRIP_CMD} \
 		`file ${STAGEDIR}${PREFIX}/bin/* | ${GREP} ELF | cut -d : -f 1`
 	(cd ${WRKSRC}${PREFIX}/FreeBSD-${ARCH} && \
 		${COPYTREE_SHARE} "lib share" ${STAGEDIR}${PREFIX})
 
-.include <bsd.port.mk>
+.include <bsd.port.post.mk>

Added: head/biology/canu/files/patch-Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/biology/canu/files/patch-Makefile	Thu Apr 18 12:15:56 2019	(r499251)
@@ -0,0 +1,116 @@
+--- Makefile.orig	2018-10-22 16:47:31 UTC
++++ Makefile
+@@ -481,68 +481,65 @@ endif
+ 
+ 
+ ifeq (${OSTYPE}, FreeBSD)
+-ifeq (${MACHINETYPE}, amd64)
+-  CC       ?= gcc48
+-  CXX      ?= g++48
+ 
+-  #  GCC
+-  CXXFLAGS  += -I/usr/local/include -D_GLIBCXX_PARALLEL -pthread -fopenmp -fPIC
+-  LDFLAGS   += -L/usr/local/lib     -D_GLIBCXX_PARALLEL -pthread -fopenmp -rpath /usr/local/lib/gcc48 -lm -lexecinfo
++  ifeq (${CANU_BUILD_ENV}, ports)
+ 
+-  #  CLANG
+-  #CXXFLAGS  += -I/usr/local/include -D_GLIBCXX_PARALLEL -pthread -fPIC
+-  #LDFLAGS   += -L/usr/local/lib     -D_GLIBCXX_PARALLEL -pthread -lm -lexecinfo -lgomp
++    #################################################
++    # If compiling within ports system (recommended)
++    #################################################
+ 
+-  #CXXFLAGS  += -Wall -Wextra -Wformat  -Wno-unused   -Wno-parentheses
+-  CXXFLAGS  += -Wall -Wextra -Wformat -Wno-unused-function -Wno-unused-parameter -Wno-unused-variable -Wno-char-subscripts -Wno-write-strings -Wno-sign-compare -Wno-format-truncation
++    # Use architecture as defined by ports rather than uname
++    # ${ARCH} matches uname -p, not uname -m
++    MACHINETYPE=${ARCH}
+ 
+-  #  Google Performance Tools malloc and heapchecker (HEAPCHECK=normal)
+-  #CXXFLAGS  +=
+-  #LDFLAGS   += -ltcmalloc
++    # Take compiler and most flags from the env and make command line
++    CXXFLAGS  += -D_GLIBCXX_PARALLEL -fPIC -pthread -fopenmp
++    LDFLAGS   += -D_GLIBCXX_PARALLEL -pthread -fopenmp
+ 
+-  #  Google Performance Tools cpu profiler (CPUPROFILE=/path)
+-  #CXXFLAGS  +=
+-  #LDFLAGS   += -lprofiler
++  else
+ 
+-  #  callgrind
+-  #CXXFLAGS  += -g3 -Wa,--gstabs -save-temps
++    ######################################################
++    # If compiling outside ports system (not recommended)
++    ######################################################
+ 
+-  ifeq ($(BUILDOPTIMIZED), 1)
+-  else
+-    CXXFLAGS += -g3
+-  endif
++    CC       ?= gcc48
++    CXX      ?= g++48
+ 
+-  ifeq ($(BUILDDEBUG), 1)
+-  else
+-    CXXFLAGS += -O3 -funroll-loops -fexpensive-optimizations -finline-functions -fomit-frame-pointer
+-  endif
+-endif
+-endif
++    #  GCC
++    CXXFLAGS  += -I/usr/local/include -D_GLIBCXX_PARALLEL -pthread -fopenmp -fPIC
++    LDFLAGS   += -L/usr/local/lib     -D_GLIBCXX_PARALLEL -pthread -fopenmp -rpath /usr/local/lib/gcc48 -lm -lexecinfo
+ 
++    #  CLANG
++    #CXXFLAGS  += -I/usr/local/include -D_GLIBCXX_PARALLEL -pthread -fPIC
++    #LDFLAGS   += -L/usr/local/lib     -D_GLIBCXX_PARALLEL -pthread -lm -lexecinfo -lgomp
+ 
+-ifeq (${OSTYPE}, FreeBSD)
+-ifeq (${MACHINETYPE}, arm)
+-  CC       ?= gcc48
+-  CXX      ?= g++48
++    #CXXFLAGS  += -Wall -Wextra -Wformat  -Wno-unused   -Wno-parentheses
++    CXXFLAGS  += -Wall -Wextra -Wformat -Wno-unused-function -Wno-unused-parameter -Wno-unused-variable -Wno-char-subscripts -Wno-write-strings -Wno-sign-compare -Wno-format-truncation
+ 
+-  CXXFLAGS  += -I/usr/local/include -D_GLIBCXX_PARALLEL -pthread -fopenmp -fPIC
+-  LDFLAGS   += -L/usr/local/lib     -D_GLIBCXX_PARALLEL -pthread -fopenmp -rpath /usr/local/lib/gcc48 -lm
++    #  Google Performance Tools malloc and heapchecker (HEAPCHECK=normal)
++    #CXXFLAGS  +=
++    #LDFLAGS   += -ltcmalloc
+ 
+-  CXXFLAGS  += -Wall -Wextra -Wno-write-strings -Wno-unused -Wno-char-subscripts -Wno-sign-compare -Wformat -Wno-parentheses
+-  CXXFLAGS  += -funroll-loops -fomit-frame-pointer
+-  LDFLAGS   += 
++    #  Google Performance Tools cpu profiler (CPUPROFILE=/path)
++    #CXXFLAGS  +=
++    #LDFLAGS   += -lprofiler
+ 
+-  ifeq ($(BUILDOPTIMIZED), 1)
+-  else
+-    CXXFLAGS += -g3
+-  endif
++    #  callgrind
++    #CXXFLAGS  += -g3 -Wa,--gstabs -save-temps
+ 
+-  ifeq ($(BUILDDEBUG), 1)
+-  else
+-    CXXFLAGS += -O4 -funroll-loops -fexpensive-optimizations -finline-functions -fomit-frame-pointer
+-  endif
+-endif
+-endif
++    ifeq ($(BUILDOPTIMIZED), 1)
++    else
++      CXXFLAGS += -g3
++    endif
++
++    ifeq ($(BUILDDEBUG), 1)
++    else
++      CXXFLAGS += -O3 -funroll-loops -fexpensive-optimizations -finline-functions -fomit-frame-pointer
++    endif
++
++  endif		# CANU_BUILD_ENV
++
++endif		# FreeBSD
+ 
+ 
+ ifneq (,$(findstring CYGWIN, ${OSTYPE}))

Modified: head/biology/canu/files/patch-pipelines_canu_Defaults.pm
==============================================================================
--- head/biology/canu/files/patch-pipelines_canu_Defaults.pm	Thu Apr 18 11:56:29 2019	(r499250)
+++ head/biology/canu/files/patch-pipelines_canu_Defaults.pm	Thu Apr 18 12:15:56 2019	(r499251)
@@ -1,6 +1,6 @@
---- pipelines/canu/Defaults.pm.orig	2018-06-19 17:20:30 UTC
+--- pipelines/canu/Defaults.pm.orig	2018-10-22 16:47:31 UTC
 +++ pipelines/canu/Defaults.pm
-@@ -812,6 +812,16 @@ sub setDefaults () {
+@@ -917,6 +917,16 @@ sub setDefaults () {
      setDefault("gridEngineArraySubmitID",             undef, "Grid engine configuration, not documented");
      setDefault("gridEngineJobID",                     undef, "Grid engine configuration, not documented");
  

Modified: head/biology/canu/files/patch-pipelines_canu_Execution.pm
==============================================================================
--- head/biology/canu/files/patch-pipelines_canu_Execution.pm	Thu Apr 18 11:56:29 2019	(r499250)
+++ head/biology/canu/files/patch-pipelines_canu_Execution.pm	Thu Apr 18 12:15:56 2019	(r499251)
@@ -1,6 +1,6 @@
---- pipelines/canu/Execution.pm.orig	2018-06-18 02:42:11 UTC
+--- pipelines/canu/Execution.pm.orig	2018-10-22 16:47:31 UTC
 +++ pipelines/canu/Execution.pm
-@@ -303,10 +303,6 @@ sub skipStage ($$@) {
+@@ -333,10 +333,6 @@ sub resetIteration ($) {
  sub getInstallDirectory () {
      my $installDir = $FindBin::RealBin;
  
@@ -11,7 +11,7 @@
      return($installDir);
  }
  
-@@ -694,8 +690,8 @@ sub submitScript ($$) {
+@@ -784,8 +780,8 @@ sub submitScript ($$) {
  
  
  
@@ -22,7 +22,7 @@
      my  $off = 0;
  
      #  In some grids (SGE)   this is the maximum size of an array job.
-@@ -725,8 +721,42 @@ sub buildGridArray ($$$$) {
+@@ -823,8 +819,42 @@ sub buildGridArray ($$$$) {
          $off = "-F \"$off\"";
      }
  
@@ -67,7 +67,7 @@
  
      return($opt, $off);
  }
-@@ -870,7 +900,7 @@ sub buildGridJob ($$$$$$$$$) {
+@@ -973,7 +1003,7 @@ sub buildGridJob ($$$$$$$$$) {
      my $jobNameT               = makeUniqueJobName($jobType, $asm);
  
      my ($jobName,  $jobOff)    = buildGridArray($jobNameT, $bgnJob, $endJob, getGlobal("gridEngineArrayName"));


More information about the svn-ports-head mailing list