[med-svn] [Git][med-team/libtfbs-perl][master] 2 commits: Add patch to fix FTBFS with GCC 14. (closes: #1066716)
Bas Couwenberg (@sebastic)
gitlab at salsa.debian.org
Wed Mar 13 17:37:17 GMT 2024
Bas Couwenberg pushed to branch master at Debian Med / libtfbs-perl
Commits:
c01f62e8 by Bas Couwenberg at 2024-03-13T18:29:37+01:00
Add patch to fix FTBFS with GCC 14. (closes: #1066716)
- - - - -
90041345 by Bas Couwenberg at 2024-03-13T18:34:12+01:00
Set distribution to unstable.
- - - - -
3 changed files:
- debian/changelog
- + debian/patches/gcc-14.patch
- debian/patches/series
Changes:
=====================================
debian/changelog
=====================================
@@ -1,4 +1,4 @@
-libtfbs-perl (0.7.1+ds-3) UNRELEASED; urgency=medium
+libtfbs-perl (0.7.1+ds-3) unstable; urgency=medium
* Team upload.
* Bump debhelper compat to 13.
@@ -6,8 +6,10 @@ libtfbs-perl (0.7.1+ds-3) UNRELEASED; urgency=medium
* Update lintian overrides.
* Bump Standards-Version to 4.6.2, no changes.
* Add Rules-Requires-Root to control file.
+ * Add patch to fix FTBFS with GCC 14.
+ (closes: #1066716)
- -- Bas Couwenberg <sebastic at debian.org> Mon, 12 Jun 2023 07:44:39 +0200
+ -- Bas Couwenberg <sebastic at debian.org> Wed, 13 Mar 2024 18:33:49 +0100
libtfbs-perl (0.7.1+ds-2) unstable; urgency=medium
=====================================
debian/patches/gcc-14.patch
=====================================
@@ -0,0 +1,824 @@
+Description: Fix FTBFS with GCC 14.
+ https://gcc.gnu.org/gcc-14/porting_to.html#implicit-function-declaration
+Author: Bas Couwenberg <sebastic at debian.org>
+Bug-Debian: https://bugs.debian.org/1066716
+
+--- a/Ext/lib/pwm_searchPFF.c
++++ b/Ext/lib/pwm_searchPFF.c
+@@ -33,81 +33,6 @@
+ *------------------------------------------------------------------*/
+ #include "pwm_search.h"
+
+-int do_search(char* matrixfile,
+- char* seqfile,
+- float threshold,
+- char* tfname,
+- char* tfclass,
+- char* outfile)
+- /*was: main
+- int argc;
+- char **argv;*/
+-{
+- double pwm[2*MAXCOUNTS]; /* for pwm matrix */
+- /* do own indexing; 5*pos + nt */
+- int exitval = -1; /* exit value from main */
+- struct arguments args; /* command line args */
+- FILE *fp; /* for sequence input file */
+- FILE *outfp;
+- NUM_ERRS = 0;
+- if (__DEBUG__) fprintf(stderr, "%s %s %f %s %s %s\n", matrixfile, seqfile, threshold, tfname, tfclass, outfile);
+- if ( __DEBUG__ )
+- announce("+++\nEntering main.\n+++\n");
+-
+- /* Parse command line arguments */
+- /*if ( get_cmd_args(argc,argv,&args) )
+- {
+- err_log(
+- "Usage: pwm_searchPFF pwm_file seq_file threshold [-a][-b]|[-m mask_file] [-n TFname] [-c TFclass]\n"
+- );
+- }*/
+-
+- strcpy(args.counts_file, matrixfile);
+- strcpy(args.seq_file, seqfile);
+- args.threshold = threshold;
+- strcpy(args.name, tfname);
+- strcpy(args.class, tfclass);
+- args.print_all = 0;
+- args.best_only= 0;
+- /* Read in the pwm; calculate max/min score */
+- //else
+- if ( get_matrix(&args,pwm) )
+- {
+- err_log("MAIN: get_matrix failed.");
+- }
+-
+- /* Open the sequence file */
+- else if ( (fp=fopen(args.seq_file,"r")) == NULL )
+- {
+- err_log("MAIN: open_seq_file failed.");
+- }
+- else if ( (outfp=fopen(outfile,"w")) == NULL )
+- {
+- err_log("MAIN: open_outfile failed.");
+- }
+-
+- /* Loop on sequences */
+- else if ( loop_on_seqs(&args,pwm,fp,outfp) )
+- {
+- err_log("MAIN: loop_on_seqs failed.");
+- }
+-
+- /* Normal completion */
+- else
+- {
+- exitval = 0;
+- }
+-
+- /* Clean up and close out */
+- err_show();
+- fclose(fp);
+- fclose(outfp);
+- if ( __DEBUG__ )
+- announce("+++\nLeaving main.\n+++\n");
+-
+- return(exitval);
+-}
+-
+ /*--------------------------------------------------------------------
+ * Announce
+ *
+@@ -126,185 +51,6 @@ char *msg;
+ return(retval);
+ }
+
+-/*--------------------------------------------------------------------
+- * BEST_SAVE - Save the best score so far
+- *
+- * Called by do_seq
+- *
+- * Returns: 0
+- *------------------------------------------------------------------*/
+-int best_save(struct arguments* pargs, long base, int strand, double score)
+- //struct arguments *pargs; /* args from command line */
+- //long base; /* base where score occurs */
+- //int strand; /* strand where score occurs */
+- //double score; /* score of hit to save */
+-{
+- if ( pargs->best_base < 0 || score > pargs->best_score )
+- {
+- pargs->best_base = base;
+- pargs->best_score = score;
+- pargs->best_strand = strand;
+- }
+-
+- return(0);
+-}
+-
+-/*--------------------------------------------------------------------
+- * BEST_PULL - Copy back the best score saved
+- *
+- * Called by do_seq
+- *
+- * Returns: 0
+- *------------------------------------------------------------------*/
+-best_pull(pargs,pbase,pstrand,pscore)
+-struct arguments *pargs; /* args from command line */
+-long *pbase; /* base where score occurs */
+-int *pstrand; /* strand where score occurs */
+-double *pscore; /* score of hit to pull back */
+-{
+- *pbase = pargs->best_base;
+- if ( pargs->best_base >= 0 )
+- {
+- *pscore = pargs->best_score;
+- *pstrand = pargs->best_strand;
+- }
+- return(0);
+-}
+-
+-/*--------------------------------------------------------------------
+- * DO_SEQ - Search through the given sequence with the given matrix
+- *
+- * Called by loop_on_seqs
+- *
+- * Returns: 0 for success, -1 for failure.
+- *------------------------------------------------------------------*/
+-int
+-do_seq(pargs,pwm,seqid,seq,outfp)
+-struct arguments *pargs; /* args from command line */
+-double *pwm; /* pwm from get_matrix */
+-char *seqid; /* id of sequence to work on */
+-char *seq; /* the sequence to work on */
+-FILE *outfp;
+-{
+- double backward_score;
+- double forward_score;
+- double score;
+- long base;
+- int done = 0;
+- int nt;
+- int pos;
+- int retval = 0;
+- int strand;
+- long l;
+- long nhit=0L;
+- struct HIT hits[MAXHITS];
+-
+- if ( __DEBUG__ )
+- announce("+++\nEntering do_seq.\n+++\n");
+-
+- /* first make sure sequence is long enough */
+- for ( base=0; base < pargs->width; ++base )
+- {
+- if ( seq[base] == '\0' )
+- done = 1;
+- }
+-
+- /* loop on windows */
+- pargs->best_base = -1;
+- for ( base=0; !retval && !done && seq[base+pargs->width-1]; ++base )
+- {
+- forward_score = 0.0;
+- backward_score = 0.0;
+- for ( pos=0; pos<pargs->width; ++pos )
+- {
+- nt = TRANS[seq[base+pos]];
+- forward_score += pwm[5*pos + nt];
+- nt = ( nt==4 ) ? 4 : 3-nt;
+- backward_score += pwm[5*(pargs->width - pos -1) + nt];
+- }
+- if ( forward_score > pargs->threshold )
+- {
+- if ( pargs->print_all )
+- {
+- if ( save_hit(base,0,forward_score,hits,&nhit) )
+- {
+- err_log("DO_SEQ: save_hit failed");
+- retval = -1;
+- }
+- }
+- else if ( pargs->best_only )
+- {
+- best_save(pargs,base,0,forward_score);
+- }
+- else if ( output(pargs,seqid,base,seq,0,forward_score,outfp) )
+- {
+- err_log("DO_SEQ: output failed");
+- retval = -1;
+- }
+- }
+- if ( backward_score > pargs->threshold )
+- {
+- if ( pargs->print_all )
+- {
+- if ( save_hit(base,1,backward_score,hits,&nhit) )
+- {
+- err_log("DO_SEQ: save_hit failed");
+- retval = -1;
+- }
+- }
+- else if ( pargs->best_only )
+- {
+- best_save(pargs,base,1,backward_score);
+- }
+- else if ( output(pargs,seqid,base,seq,1,backward_score, outfp) )
+- {
+- err_log("DO_SEQ: output failed");
+- retval = -1;
+- }
+- }
+-
+- }
+-
+- if ( pargs->print_all )
+- {
+- for ( l=0; l<nhit; ++l )
+- printf("%ld %.3f\n",1+hits[l].base,hits[l].score);
+-/*
+- printf("# forward strand hits\n\n");
+- for ( l=0; l<nhit; ++l )
+- {
+- if ( hits[l].strand == 0 )
+- printf("%ld %.3f\n",1+hits[l].base,hits[l].score);
+- }
+- printf("\n# comp strand hits\n\n");
+- for ( l=0; l<nhit; ++l )
+- {
+- if ( hits[l].strand == 1 )
+- printf("%ld %.3f\n",1+hits[l].base,hits[l].score);
+- }
+-*/
+- }
+-
+- else
+- {
+- best_pull(pargs,&base,&strand,&score);
+- if ( base>=0 )
+- {
+- if ( output(pargs,seqid,base,seq,strand,score,outfp) )
+- {
+- err_log("DO_SEQ: output failed");
+- retval = -1;
+- }
+- }
+- }
+-
+- if ( __DEBUG__ )
+- announce("+++\nLeaving do_seq.\n+++\n");
+-
+- return(retval);
+-
+-}
+-
+ /***********************************************************************
+ * ERR_LOG and ERR_SHOW
+ *
+@@ -341,85 +87,37 @@ err_show()
+ return;
+ }
+
++
+ /*--------------------------------------------------------------------
+- * GET_CMD_ARGS - Parse execute line, fill arg structure.
++ * SAVE_HIT - save location, strand and score of a hit in an array of such
+ *
+- * Called by main.
++ * Called by do_seq.
+ *
+ * Returns: 0 for success, -1 for failure.
+ *------------------------------------------------------------------*/
+-int get_cmd_args(argc,argv,pargs)
+-int argc; /* argc as passed to main */
+-char **argv; /* argv as passed to main */
+-struct arguments *pargs; /* args from command line */
++int
++save_hit(base,strand,score,hits,pnhit)
++long base;
++int strand;
++double score;
++struct HIT *hits;
++long *pnhit;
+ {
+ int retval = 0;
+- int arg_count = 4;
+-
+- if ( __DEBUG__ )
+- announce("+++\nEntering get_cmd_args\n+++\n");
+
+- /* See if we got at least three arguments */
+- if ( argc < 4 )
+- { retval = -1;
+- err_log("GET_CMD_ARGS: Too few arguments.");
++ if ( *pnhit == MAXHITS )
++ {
++ err_log("SAVE_HIT: MAXHITS limit reached.");
++ retval = -1;
+ }
+
+- /* Get the arguments */
+- else
+- { strcpy(pargs->counts_file,argv[1]);
+- strcpy(pargs->seq_file,argv[2]);
+- pargs->threshold = atof(argv[3]);
+- pargs->best_only = 0;
+- pargs->print_all = 0;
+- pargs->mask_file[0] = '\0';
+- while (arg_count < argc)
+- {
+- if ( argv[arg_count][0]=='-' && argv[arg_count][1]=='b' )
+- {
+- pargs->best_only = 1;
+- arg_count++;
+- }
+- else if ( argv[arg_count][0]=='-' && argv[arg_count][1]=='a' )
+- {
+- pargs->print_all = 1;
+- arg_count++;
+- }
+- else if ( arg_count<argc-1 &&
+- argv[arg_count][0]=='-' && argv[arg_count][1]=='m' &&
+- argv[arg_count+1][0]!='\0'
+- )
+- {
+- strcpy(pargs->mask_file,argv[arg_count+1]);
+- arg_count = arg_count+2;
+- }
+- else if ( arg_count<argc-1 &&
+- argv[arg_count][0]=='-' && argv[arg_count][1]=='n' &&
+- argv[arg_count+1][0]!='\0'
+- )
+- {
+- strcpy(pargs->name,argv[arg_count+1]);
+- arg_count = arg_count+2;
+- }
+- else if ( arg_count<argc-1 &&
+- argv[arg_count][0]=='-' && argv[arg_count][1]=='c' &&
+- argv[arg_count+1][0]!='\0'
+- )
+- {
+- strcpy(pargs->class,argv[arg_count+1]);
+- arg_count = arg_count+2;
+- }
+- else
+- {
+- arg_count++;
+- }
+- }
+- }
+- if ( __DEBUG__ )
+- announce("+++\nLeaving get_cmd_args\n+++\n");
+- return( retval );
++ hits[*pnhit].base = base;
++ hits[*pnhit].strand = strand;
++ hits[*pnhit].score = score;
++ *pnhit = *pnhit + 1;
++
++ return(retval);
+ }
+-
+ /*--------------------------------------------------------------------
+ * GET_MATRIX - Read in pwm.
+ *
+@@ -515,6 +213,85 @@ get_matrix(struct arguments* pargs, doub
+ }
+
+ /*--------------------------------------------------------------------
++ * GET_CMD_ARGS - Parse execute line, fill arg structure.
++ *
++ * Called by main.
++ *
++ * Returns: 0 for success, -1 for failure.
++ *------------------------------------------------------------------*/
++int get_cmd_args(argc,argv,pargs)
++int argc; /* argc as passed to main */
++char **argv; /* argv as passed to main */
++struct arguments *pargs; /* args from command line */
++{
++ int retval = 0;
++ int arg_count = 4;
++
++ if ( __DEBUG__ )
++ announce("+++\nEntering get_cmd_args\n+++\n");
++
++ /* See if we got at least three arguments */
++ if ( argc < 4 )
++ { retval = -1;
++ err_log("GET_CMD_ARGS: Too few arguments.");
++ }
++
++ /* Get the arguments */
++ else
++ { strcpy(pargs->counts_file,argv[1]);
++ strcpy(pargs->seq_file,argv[2]);
++ pargs->threshold = atof(argv[3]);
++ pargs->best_only = 0;
++ pargs->print_all = 0;
++ pargs->mask_file[0] = '\0';
++ while (arg_count < argc)
++ {
++ if ( argv[arg_count][0]=='-' && argv[arg_count][1]=='b' )
++ {
++ pargs->best_only = 1;
++ arg_count++;
++ }
++ else if ( argv[arg_count][0]=='-' && argv[arg_count][1]=='a' )
++ {
++ pargs->print_all = 1;
++ arg_count++;
++ }
++ else if ( arg_count<argc-1 &&
++ argv[arg_count][0]=='-' && argv[arg_count][1]=='m' &&
++ argv[arg_count+1][0]!='\0'
++ )
++ {
++ strcpy(pargs->mask_file,argv[arg_count+1]);
++ arg_count = arg_count+2;
++ }
++ else if ( arg_count<argc-1 &&
++ argv[arg_count][0]=='-' && argv[arg_count][1]=='n' &&
++ argv[arg_count+1][0]!='\0'
++ )
++ {
++ strcpy(pargs->name,argv[arg_count+1]);
++ arg_count = arg_count+2;
++ }
++ else if ( arg_count<argc-1 &&
++ argv[arg_count][0]=='-' && argv[arg_count][1]=='c' &&
++ argv[arg_count+1][0]!='\0'
++ )
++ {
++ strcpy(pargs->class,argv[arg_count+1]);
++ arg_count = arg_count+2;
++ }
++ else
++ {
++ arg_count++;
++ }
++ }
++ }
++ if ( __DEBUG__ )
++ announce("+++\nLeaving get_cmd_args\n+++\n");
++ return( retval );
++}
++
++/*--------------------------------------------------------------------
+ * GET_SEQUENCE
+ *
+ * Get the next sequence from the input file (fasta format)
+@@ -628,50 +405,48 @@ char *sequence; /* text of sequence
+ }
+
+ /*--------------------------------------------------------------------
+- * LOOP_ON_SEQS - Loop through the sequences of the input file,
+- * doing the search and output.
++ * BEST_PULL - Copy back the best score saved
+ *
+- * Called by main.
++ * Called by do_seq
+ *
+- * Returns: 0 for success, -1 for failure.
++ * Returns: 0
+ *------------------------------------------------------------------*/
+-int
+-loop_on_seqs(pargs,pwm,fp, outfp)
++best_pull(pargs,pbase,pstrand,pscore)
+ struct arguments *pargs; /* args from command line */
+-double *pwm; /* pwm, from get_matrix */
+-FILE *fp; /* sequence file pointer */
+-FILE *outfp; /* output file pointer */
++long *pbase; /* base where score occurs */
++int *pstrand; /* strand where score occurs */
++double *pscore; /* score of hit to pull back */
+ {
+- char seq[SEQLEN+1];
+- char seqid[SEQNAMELEN+1];
+- int done = 0;
+- int retval=0;
+- if ( __DEBUG__ )
+- announce("+++\nEntering loop_on_seqs\n+++\n");
+-
+- /* Main loop */
+- while ( !retval && !done )
++ *pbase = pargs->best_base;
++ if ( pargs->best_base >= 0 )
+ {
+- done = get_sequence(fp,seqid,seq);
+- if ( done == -1 )
+- {
+- err_log("LOOP_ON_SEQS: get_sequence failed.");
+- retval = -1;
+- }
+- else if ( done == 0 )
+- {
+- if ( do_seq(pargs,pwm,seqid,seq,outfp) )
+- {
+- err_log("LOOP_ON_SEQS: do_seq failed.");
+- retval = -1;
+- }
+- }
++ *pscore = pargs->best_score;
++ *pstrand = pargs->best_strand;
+ }
++ return(0);
++}
+
+- if ( __DEBUG__ )
+- announce("+++\nLeaving loop_on_seqs\n+++\n");
++/*--------------------------------------------------------------------
++ * BEST_SAVE - Save the best score so far
++ *
++ * Called by do_seq
++ *
++ * Returns: 0
++ *------------------------------------------------------------------*/
++int best_save(struct arguments* pargs, long base, int strand, double score)
++ //struct arguments *pargs; /* args from command line */
++ //long base; /* base where score occurs */
++ //int strand; /* strand where score occurs */
++ //double score; /* score of hit to save */
++{
++ if ( pargs->best_base < 0 || score > pargs->best_score )
++ {
++ pargs->best_base = base;
++ pargs->best_score = score;
++ pargs->best_strand = strand;
++ }
+
+- return (retval);
++ return(0);
+ }
+
+ /*--------------------------------------------------------------------
+@@ -754,32 +529,257 @@ FILE *outfp;
+ }
+
+ /*--------------------------------------------------------------------
+- * SAVE_HIT - save location, strand and score of a hit in an array of such
++ * DO_SEQ - Search through the given sequence with the given matrix
+ *
+- * Called by do_seq.
++ * Called by loop_on_seqs
+ *
+ * Returns: 0 for success, -1 for failure.
+ *------------------------------------------------------------------*/
+ int
+-save_hit(base,strand,score,hits,pnhit)
+-long base;
+-int strand;
+-double score;
+-struct HIT *hits;
+-long *pnhit;
++do_seq(pargs,pwm,seqid,seq,outfp)
++struct arguments *pargs; /* args from command line */
++double *pwm; /* pwm from get_matrix */
++char *seqid; /* id of sequence to work on */
++char *seq; /* the sequence to work on */
++FILE *outfp;
+ {
++ double backward_score;
++ double forward_score;
++ double score;
++ long base;
++ int done = 0;
++ int nt;
++ int pos;
+ int retval = 0;
++ int strand;
++ long l;
++ long nhit=0L;
++ struct HIT hits[MAXHITS];
+
+- if ( *pnhit == MAXHITS )
++ if ( __DEBUG__ )
++ announce("+++\nEntering do_seq.\n+++\n");
++
++ /* first make sure sequence is long enough */
++ for ( base=0; base < pargs->width; ++base )
+ {
+- err_log("SAVE_HIT: MAXHITS limit reached.");
+- retval = -1;
++ if ( seq[base] == '\0' )
++ done = 1;
+ }
+
+- hits[*pnhit].base = base;
+- hits[*pnhit].strand = strand;
+- hits[*pnhit].score = score;
+- *pnhit = *pnhit + 1;
++ /* loop on windows */
++ pargs->best_base = -1;
++ for ( base=0; !retval && !done && seq[base+pargs->width-1]; ++base )
++ {
++ forward_score = 0.0;
++ backward_score = 0.0;
++ for ( pos=0; pos<pargs->width; ++pos )
++ {
++ nt = TRANS[seq[base+pos]];
++ forward_score += pwm[5*pos + nt];
++ nt = ( nt==4 ) ? 4 : 3-nt;
++ backward_score += pwm[5*(pargs->width - pos -1) + nt];
++ }
++ if ( forward_score > pargs->threshold )
++ {
++ if ( pargs->print_all )
++ {
++ if ( save_hit(base,0,forward_score,hits,&nhit) )
++ {
++ err_log("DO_SEQ: save_hit failed");
++ retval = -1;
++ }
++ }
++ else if ( pargs->best_only )
++ {
++ best_save(pargs,base,0,forward_score);
++ }
++ else if ( output(pargs,seqid,base,seq,0,forward_score,outfp) )
++ {
++ err_log("DO_SEQ: output failed");
++ retval = -1;
++ }
++ }
++ if ( backward_score > pargs->threshold )
++ {
++ if ( pargs->print_all )
++ {
++ if ( save_hit(base,1,backward_score,hits,&nhit) )
++ {
++ err_log("DO_SEQ: save_hit failed");
++ retval = -1;
++ }
++ }
++ else if ( pargs->best_only )
++ {
++ best_save(pargs,base,1,backward_score);
++ }
++ else if ( output(pargs,seqid,base,seq,1,backward_score, outfp) )
++ {
++ err_log("DO_SEQ: output failed");
++ retval = -1;
++ }
++ }
++
++ }
++
++ if ( pargs->print_all )
++ {
++ for ( l=0; l<nhit; ++l )
++ printf("%ld %.3f\n",1+hits[l].base,hits[l].score);
++/*
++ printf("# forward strand hits\n\n");
++ for ( l=0; l<nhit; ++l )
++ {
++ if ( hits[l].strand == 0 )
++ printf("%ld %.3f\n",1+hits[l].base,hits[l].score);
++ }
++ printf("\n# comp strand hits\n\n");
++ for ( l=0; l<nhit; ++l )
++ {
++ if ( hits[l].strand == 1 )
++ printf("%ld %.3f\n",1+hits[l].base,hits[l].score);
++ }
++*/
++ }
++
++ else
++ {
++ best_pull(pargs,&base,&strand,&score);
++ if ( base>=0 )
++ {
++ if ( output(pargs,seqid,base,seq,strand,score,outfp) )
++ {
++ err_log("DO_SEQ: output failed");
++ retval = -1;
++ }
++ }
++ }
++
++ if ( __DEBUG__ )
++ announce("+++\nLeaving do_seq.\n+++\n");
+
+ return(retval);
++
++}
++
++/*--------------------------------------------------------------------
++ * LOOP_ON_SEQS - Loop through the sequences of the input file,
++ * doing the search and output.
++ *
++ * Called by main.
++ *
++ * Returns: 0 for success, -1 for failure.
++ *------------------------------------------------------------------*/
++int
++loop_on_seqs(pargs,pwm,fp, outfp)
++struct arguments *pargs; /* args from command line */
++double *pwm; /* pwm, from get_matrix */
++FILE *fp; /* sequence file pointer */
++FILE *outfp; /* output file pointer */
++{
++ char seq[SEQLEN+1];
++ char seqid[SEQNAMELEN+1];
++ int done = 0;
++ int retval=0;
++ if ( __DEBUG__ )
++ announce("+++\nEntering loop_on_seqs\n+++\n");
++
++ /* Main loop */
++ while ( !retval && !done )
++ {
++ done = get_sequence(fp,seqid,seq);
++ if ( done == -1 )
++ {
++ err_log("LOOP_ON_SEQS: get_sequence failed.");
++ retval = -1;
++ }
++ else if ( done == 0 )
++ {
++ if ( do_seq(pargs,pwm,seqid,seq,outfp) )
++ {
++ err_log("LOOP_ON_SEQS: do_seq failed.");
++ retval = -1;
++ }
++ }
++ }
++
++ if ( __DEBUG__ )
++ announce("+++\nLeaving loop_on_seqs\n+++\n");
++
++ return (retval);
++}
++
++int do_search(char* matrixfile,
++ char* seqfile,
++ float threshold,
++ char* tfname,
++ char* tfclass,
++ char* outfile)
++ /*was: main
++ int argc;
++ char **argv;*/
++{
++ double pwm[2*MAXCOUNTS]; /* for pwm matrix */
++ /* do own indexing; 5*pos + nt */
++ int exitval = -1; /* exit value from main */
++ struct arguments args; /* command line args */
++ FILE *fp; /* for sequence input file */
++ FILE *outfp;
++ NUM_ERRS = 0;
++ if (__DEBUG__) fprintf(stderr, "%s %s %f %s %s %s\n", matrixfile, seqfile, threshold, tfname, tfclass, outfile);
++ if ( __DEBUG__ )
++ announce("+++\nEntering main.\n+++\n");
++
++ /* Parse command line arguments */
++ /*if ( get_cmd_args(argc,argv,&args) )
++ {
++ err_log(
++ "Usage: pwm_searchPFF pwm_file seq_file threshold [-a][-b]|[-m mask_file] [-n TFname] [-c TFclass]\n"
++ );
++ }*/
++
++ strcpy(args.counts_file, matrixfile);
++ strcpy(args.seq_file, seqfile);
++ args.threshold = threshold;
++ strcpy(args.name, tfname);
++ strcpy(args.class, tfclass);
++ args.print_all = 0;
++ args.best_only= 0;
++ /* Read in the pwm; calculate max/min score */
++ //else
++ if ( get_matrix(&args,pwm) )
++ {
++ err_log("MAIN: get_matrix failed.");
++ }
++
++ /* Open the sequence file */
++ else if ( (fp=fopen(args.seq_file,"r")) == NULL )
++ {
++ err_log("MAIN: open_seq_file failed.");
++ }
++ else if ( (outfp=fopen(outfile,"w")) == NULL )
++ {
++ err_log("MAIN: open_outfile failed.");
++ }
++
++ /* Loop on sequences */
++ else if ( loop_on_seqs(&args,pwm,fp,outfp) )
++ {
++ err_log("MAIN: loop_on_seqs failed.");
++ }
++
++ /* Normal completion */
++ else
++ {
++ exitval = 0;
++ }
++
++ /* Clean up and close out */
++ err_show();
++ fclose(fp);
++ fclose(outfp);
++ if ( __DEBUG__ )
++ announce("+++\nLeaving main.\n+++\n");
++
++ return(exitval);
+ }
=====================================
debian/patches/series
=====================================
@@ -1,3 +1,4 @@
hardening.patch
configure.patch
spelling-errors.patch
+gcc-14.patch
View it on GitLab: https://salsa.debian.org/med-team/libtfbs-perl/-/compare/b411c2e59bfd3913b0690b06c9355f4dd64c0643...900413457b23cd55728fa9451d44b10d78ff2a77
--
View it on GitLab: https://salsa.debian.org/med-team/libtfbs-perl/-/compare/b411c2e59bfd3913b0690b06c9355f4dd64c0643...900413457b23cd55728fa9451d44b10d78ff2a77
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20240313/2dd9e98c/attachment-0001.htm>
More information about the debian-med-commit
mailing list