Dear all,
I am trying to install Primer3 on an Ubuntu machine. Following the instructions, I moved into primer3-<release>/src and typed make all
but i got:
/usr/local/lib/primer3/src$ make all
g++ -c -g -Wall -D__USE_FIXED_PROTOTYPES__ -O2 primer3_boulder_main.c
g++ -c -g -Wall -D__USE_FIXED_PROTOTYPES__ -O2 -o format_output.o format_output.c
g++ -c -g -Wall -D__USE_FIXED_PROTOTYPES__ -O2 -o read_boulder.o read_boulder.c
g++ -c -g -Wall -D__USE_FIXED_PROTOTYPES__ -O2 -o print_boulder.o print_boulder.c
g++ -c -g -Wall -D__USE_FIXED_PROTOTYPES__ -O2 -Wno-deprecated -o libprimer3.o libprimer3.c
g++ -c -g -Wall -D__USE_FIXED_PROTOTYPES__ -O2 -o p3_seq_lib.o p3_seq_lib.c
ar rv libprimer3.a libprimer3.o p3_seq_lib.o
ar: creating libprimer3.a
a - libprimer3.o
a - p3_seq_lib.o
ranlib libprimer3.a
g++ -c -g -Wall -D__USE_FIXED_PROTOTYPES__ -O2 -o dpal_primer.o dpal.c
dpal.c: In function ‘void print_align(const unsigned char*, const unsigned char*, int (*)[1600][3], int, int, const dpal_args*)’:
dpal.c:1036:5: warning: this ‘for’ clause does not guard... [-Wmisleading-indentation]
for(i=j;i<j+70;i++) fprintf(stderr, "%c",sy[i]); fprintf(stderr,"\n");
^~~
dpal.c:1036:54: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘for’
for(i=j;i<j+70;i++) fprintf(stderr, "%c",sy[i]); fprintf(stderr,"\n");
^~~~~~~
ar rv libdpal.a dpal_primer.o
ar: creating libdpal.a
a - dpal_primer.o
ranlib libdpal.a
g++ -c -g -Wall -D__USE_FIXED_PROTOTYPES__ -O2 -ffloat-store -o thal_primer.o thal.c
thal.c: In function ‘void thal(const unsigned char*, const unsigned char*, const thal_args*, thal_results*)’:
thal.c:429:16: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
if ('\0' == oligo_f) {
^~~~~~~
thal.c:434:16: error: ISO C++ forbids comparison between pointer and integer [-fpermissive]
if ('\0' == oligo_r) {
^~~~~~~
thal.c: In function ‘void tableStartATS(double, double (*)[5])’:
thal.c:1200:4: warning: this ‘for’ clause does not guard... [-Wmisleading-indentation]
for (i = 0; i < 5; ++i)
^~~
thal.c:1203:6: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘for’
atpS[0][3] = atpS[3][0] = atp_value;
^~~~
thal.c: In function ‘void tableStartATH(double, double (*)[5])’:
thal.c:1212:4: warning: this ‘for’ clause does not guard... [-Wmisleading-indentation]
for (i = 0; i < 5; ++i)
^~~
thal.c:1216:6: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the ‘for’
atpH[0][3] = atpH[3][0] = atp_value;
^~~~
Makefile:192: recipe for target 'thal_primer.o' failed
make: *** [thal_primer.o] Error 1
what I did wrong?
thank you
Have you tried installation using bioconda?
works fine here.( ubuntu 16.04 / 32). gcc 5.4.0
I am on Ubuntu 17.10, still same error
It says here that it was a bug corrected in the latest version of primer3: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=853621
Are you installing primer3 2.3.7-4 or above?
it is 2.3.7
I am having the exact same issue compiling primer3-2.4.0 using gcc 7.3.0 in Ubuntu .
Have you tried installation using bioconda?
Do you conda advocates ever get bored of saying “have you tried conda?”?
What would be useful would be if you said “This works in bioconda because we have invented an unofficial 2.4.1a release that includes a few post-2.4.0 commits from upstream primer3, notably a fix for this thal.c:429 problem. See bioconda PR #10390”.
I will often comment on software installation issues by asking "have you tried bioconda", because i) it is likely to solve many issues people encounter and ii) if it doesn't work then we/someone has to look into why bioconda failed here.
So it is meant to both point users to a likely solution and to hear from them if there is anything wrong with the current recipe.