1
0
mirror of https://git.FreeBSD.org/ports.git synced 2025-01-30 10:38:37 +00:00

biology/canu: Fix build on powerpc64 and aarch64

Should also work on powerpc and arm*, but unable to test

PR:             237105
Reported by:    pkubaj
This commit is contained in:
Jason W. Bacon 2019-04-18 12:15:56 +00:00
parent 1378000847
commit 43103da79d
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=499251
4 changed files with 141 additions and 20 deletions

View File

@ -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>

View File

@ -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}))

View File

@ -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");

View File

@ -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"));