New Upstream Snapshot - ffindex

Ready changes

Summary

Merged new upstream version: 1.0+git20211022.1.a91bbfc (was: 0.9.9.9).

Resulting package

Built on 2022-12-20T14:15 (took 6m12s)

The resulting binary packages can be installed (if you have the apt repository enabled) by running one of:

apt install -t fresh-snapshots ffindex-dbgsymapt install -t fresh-snapshots ffindexapt install -t fresh-snapshots libffindex0-dbgsymapt install -t fresh-snapshots libffindex0-devapt install -t fresh-snapshots libffindex0

Lintian Result

Diff

diff --git a/LICENSE b/LICENSE
index fd662a7..1a6a4a5 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,3 +1,5 @@
+FFindex is a trademark of the Ludwig-Maximilians-Universität München.
+
 Attribution-ShareAlike 4.0 International
 
 =======================================================================
diff --git a/README b/README.md
similarity index 69%
rename from README
rename to README.md
index 688b5a7..12cbd10 100644
--- a/README
+++ b/README.md
@@ -1,21 +1,47 @@
-* Copyright
+# Copyright
 
 FFindex was written by Andreas Hauser <Andreas.Hauser@LMU.de>.
 Please add your name here if you distribute modified versions.
 
+FFindex is registered trademark of the Ludwig-Maximilians-Universität, Munich (LMU).
+
 FFindex is provided under the Create Commons license "Attribution-ShareAlike 4.0",
 which basically captures the spirit of the Gnu Public License (GPL).
 
 See:
 http://creativecommons.org/licenses/by-sa/4.0/
 
-* Thanks
+In addition, modified distributions need to add additional authors in files they distribute.
+Also mainline code must be refered to inlcuding a link:
+
+https://github.com/ahcm/ffindex
+
+Should the mainline code URL change, these changes must be reflected, so that the link is always pointing to current mainline.
+
+# Notice
+
+This is mainline FFindex:
+https://github.com/ahcm/ffindex
+
+A prominent fork is https://github.com/soedinglab/ffindex_soedinglab
+
+It introduces many bugs, limitations and security flaws.
+In violation of what the license asks, the authors do not add their names to the modified files.
+
+There is an open github issue: https://github.com/soedinglab/ffindex_soedinglab/issues/9
+
+From looking at the code I can only advise not to use it.
+Certainly not in a public service.
+
+If you have a problem with the fork, it might be worthwhile to just try mainline.
+
+# Thanks
 
 Thanks to Laszlo Kajan for creating and maintaining Debian packages
 and many suggestions to improve the build and user experience.
 
 
-* Overview
+# Overview
 
 FFindex is a very simple index/database for huge amounts of small files. The
 files are stored concatenated in one big data file, seperated by '\0'. A second
@@ -24,28 +50,32 @@ small files. The lookup is currently done with a binary search on an array made
 from the index file.
 
 
-* Installation
- 
+# Installation
+
+```
 $ cd src
 $ make
 $ make test
-
+```
 If you have MPI and want to compile ffindex_apply_mpi:
+```
 $ make HAVE_MPI=1
-
+```
 On OS X use for the first make line:
+```
 $ make -f Makefile.osx
-
-# Please use a sensible value for INSTALL_DIR, e.g. /usr/local or /opt/ffindex
-# or $HOME/ffindex instead of "..".
+```
+Please use a sensible value for INSTALL_DIR, e.g. /usr/local or /opt/ffindex
+or $HOME/ffindex instead of "..".
+```
 $ make install INSTALL_DIR=.. 
-
+```
 and with MPI:
-
+```
 $ make install INSTALL_DIR=.. HAVE_MPI=1
+```
 
-
-* Usage
+# Usage
 
 Please note that before querying or unlinking entries a ffindex must be
 sorted, although you can add to it without. So either specify -s with
@@ -54,40 +84,54 @@ Also the length of the entry names is restricted. See the usage output of
 the ffindex_build program.
 
 Setup environment:
+```
 $ export PATH="$INSTALL_DIR/bin:$PATH"
 $ export LD_LIBRARY_PATH="$INSTALL_DIR/lib:$LD_LIBRARY_PATH"
+```
 On OS X set DYLD_LIBRARY_PATH instead of LD_LIBRARY_PATH.
 
 Build index from files in test/data and test/data2.
+```
 $ ffindex_build -s /tmp/test.data /tmp/test.ffindex test/data test/data2
-
+```
 Retrieve three entries:
+```
 $ ffindex_get  /tmp/test.data /tmp/test.ffindex a b foo
-
+```
 Unlink (Remove reference from index) an entry:
+```
 $ ffindex_modify -u /tmp/test.ffindex b
-
+```
 Retrieve three entries, "b" should now be missing:
+```
 $ ffindex_get /tmp/test.data /tmp/test.ffindex a b foo
-
+```
 Convert a Fasta file to ffindex, entry names are incerental IDs starting from 1:
+```
 $ ffindex_from_fasta -s fasta.ffdata fasta.ffindex NC_007779.ffn
-
+```
 Get first entry by name:
+```
 $ ffindex_get fasta.ffdata fasta.ffindex 1
-
+```
 Get first and third entry by entry index, this a little faster:
+```
 $ ffindex_get fasta.ffdata fasta.ffindex -n 1 3
-
+```
 Count the characters including header in each entry:
+```
 $ ffindex_apply fasta.ffdata fasta.ffindex wc -c
-
+```
 Count the number of characters in each sequence, without the header:
+```
 $ ffindex_apply fasta.ffdata fasta.ffindex perl -ne '$x += length unless(/^>/); END{print "$x\n"}'
-
+```
 Parallel version for counting the characters including header in each entry:
+```
 $ mpirun -np 4 ffindex_apply_mpi fasta.ffdata fasta.ffindex -- wc -c
-
+```
 Parallel version for counting the characters including header in each entry and
 saving the output to a new ffindex:
+```
 $ mpirun -np 4 ffindex_apply_mpi fasta.ffdata fasta.ffindex -i out-wc.ffindex -d out-wc.ffdata -- wc -c
+```
diff --git a/VERSION b/VERSION
index 8b1477b..d3827e7 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.9.9.9
+1.0
diff --git a/debian/changelog b/debian/changelog
index 746beaa..4544c44 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+ffindex (1.0+git20211022.1.a91bbfc-1) UNRELEASED; urgency=low
+
+  * New upstream snapshot.
+
+ -- Debian Janitor <janitor@jelmer.uk>  Tue, 20 Dec 2022 14:10:54 -0000
+
 ffindex (0.9.9.9-6) unstable; urgency=medium
 
   * Fix watch file
diff --git a/debian/patches/Makefile.patch b/debian/patches/Makefile.patch
index 84d0fea..8278daa 100644
--- a/debian/patches/Makefile.patch
+++ b/debian/patches/Makefile.patch
@@ -10,8 +10,10 @@ Author: Laszlo Kajan <lkajan@debian.org>
 Author: Graham Inggs <ginggs@debian.org>
 Last-Update: 2017-06-29
 
---- a/src/Makefile
-+++ b/src/Makefile
+Index: ffindex.git/src/Makefile
+===================================================================
+--- ffindex.git.orig/src/Makefile
++++ ffindex.git/src/Makefile
 @@ -1,17 +1,22 @@
 -INSTALL_DIR?=..
 -libdir=`([ -d /usr/lib64 ] && echo lib64) || echo lib`
diff --git a/debian/patches/basename.patch b/debian/patches/basename.patch
index 75394c0..d261039 100644
--- a/debian/patches/basename.patch
+++ b/debian/patches/basename.patch
@@ -8,8 +8,10 @@ Subject: 40000000 bug and basename
  using basename for usage print, this helps help2man if a packager is using it
 Forwarded: yes
 
---- a/src/ffindex_build.c
-+++ b/src/ffindex_build.c
+Index: ffindex.git/src/ffindex_build.c
+===================================================================
+--- ffindex.git.orig/src/ffindex_build.c
++++ ffindex.git/src/ffindex_build.c
 @@ -42,6 +42,8 @@ void usage(char *program_name)
                      "\t\t\tAnother append operations can be done without sorting.\n"
                      "\t-v\t\tprint version and other info then exit\n"
@@ -28,9 +30,11 @@ Forwarded: yes
  }
  
  int main(int argn, char **argv)
---- a/src/ffindex_from_fasta.c
-+++ b/src/ffindex_from_fasta.c
-@@ -36,8 +36,10 @@ void usage(char *program_name)
+Index: ffindex.git/src/ffindex_from_fasta.c
+===================================================================
+--- ffindex.git.orig/src/ffindex_from_fasta.c
++++ ffindex.git/src/ffindex_from_fasta.c
+@@ -34,8 +34,10 @@ void usage(char *program_name)
                      "\t-i\tuse identifier as name (you probably want -s too)\n"
                      "\t-n\tuse incremental number as id (default)\n"
                      "\t-v\tprint version\n"
@@ -42,16 +46,18 @@ Forwarded: yes
  }
  
  int main(int argn, char **argv)
-@@ -140,4 +142,4 @@ int main(int argn, char **argv)
+@@ -139,4 +141,4 @@ int main(int argn, char **argv)
    return err;
  }
  
 -/* vim: ts=2 sw=2 et: */
 +// vim: ts=2 sw=2 et:
---- a/src/ffindex.h
-+++ b/src/ffindex.h
+Index: ffindex.git/src/ffindex.h
+===================================================================
+--- ffindex.git.orig/src/ffindex.h
++++ ffindex.git/src/ffindex.h
 @@ -24,6 +24,8 @@
- #define FFINDEX_VERSION 0.999
+ #define FFINDEX_VERSION 1.0
  #define FFINDEX_COPYRIGHT "\nDesigned and implemented by Andreas Hauser <andy@splashground.de>.\n"
  
 +// lkajan: the below makes a default allocation over 2G. malloc in ffindex.c:225 fails on a machine with 'only' 2G of RAM.
@@ -68,8 +74,10 @@ Forwarded: yes
  int ffindex_insert_memory(FILE *data_file, FILE *index_file, size_t *offset, char *from_start, size_t from_length, char *name);
  
  int ffindex_insert_file(FILE *data_file, FILE *index_file, size_t *offset, const char *path, char *name);
---- a/src/ffindex_get.c
-+++ b/src/ffindex_get.c
+Index: ffindex.git/src/ffindex_get.c
+===================================================================
+--- ffindex.git.orig/src/ffindex_get.c
++++ ffindex.git/src/ffindex_get.c
 @@ -29,8 +29,10 @@ void usage(char* program_name)
                      "\t-f FILE\t\tfile containing a list of file names, one per line\n"
                      "\t-h\t\tdisplay this help message\n"
@@ -82,9 +90,11 @@ Forwarded: yes
  }
  
  int main(int argn, char **argv)
---- a/src/ffindex_modify.c
-+++ b/src/ffindex_modify.c
-@@ -41,7 +41,7 @@ void usage(char *program_name)
+Index: ffindex.git/src/ffindex_modify.c
+===================================================================
+--- ffindex.git.orig/src/ffindex_modify.c
++++ ffindex.git/src/ffindex_modify.c
+@@ -42,7 +42,7 @@ void usage(char *program_name)
                      "\tTo clean up the data file after unlinking insert it to an new one:\n"
                      "\tffindex_build -as cleaned.ffdata cleaned.ffindex -d foo.ffdata -i foo.ffindex\n"
                      FFINDEX_COPYRIGHT,
@@ -93,9 +103,11 @@ Forwarded: yes
  }
  
  int main(int argn, char **argv)
---- a/src/ffindex.c
-+++ b/src/ffindex.c
-@@ -373,7 +373,7 @@ ffindex_entry_t* ffindex_bsearch_get_ent
+Index: ffindex.git/src/ffindex.c
+===================================================================
+--- ffindex.git.orig/src/ffindex.c
++++ ffindex.git/src/ffindex.c
+@@ -374,7 +374,7 @@ ffindex_entry_t* ffindex_bsearch_get_ent
  ffindex_index_t* ffindex_index_parse(FILE *index_file, size_t num_max_entries)
  {
    if(num_max_entries == 0)
diff --git a/debian/patches/cross.patch b/debian/patches/cross.patch
index f157e62..4bfac96 100644
--- a/debian/patches/cross.patch
+++ b/debian/patches/cross.patch
@@ -6,11 +6,11 @@ is unfixable in terms of cross building, which is why it is being moved
 to pkg-config upstream. Rather than wrap your build in mpicc, you can
 compute the relevant flags using pkg-config just like any other library.
 
-Index: ffindex/src/Makefile
+Index: ffindex.git/src/Makefile
 ===================================================================
---- ffindex.orig/src/Makefile
-+++ ffindex/src/Makefile
-@@ -7,7 +7,10 @@
+--- ffindex.git.orig/src/Makefile
++++ ffindex.git/src/Makefile
+@@ -7,7 +7,10 @@ LANG=C
  #CC=gcc
  #CC=icc
  #CC=clang
@@ -21,7 +21,7 @@ Index: ffindex/src/Makefile
  SOCURRENT=2
  SOREVISION=0
  SOAGE=2
-@@ -61,16 +64,16 @@
+@@ -61,16 +64,16 @@ ffindex_apply: ffindex_apply.o $(FFINDEX
  	$(CC) $(CFLAGS) -o $@  ffindex_apply.o $(LDFLAGS) -L. -lffindex
  
  ffindex_apply_mpi: ffindex_apply_mpi.o $(FFINDEX_LIBS)
diff --git a/rpm/ffindex.spec b/rpm/ffindex.spec
index 8b64b0b..4adcab9 100644
--- a/rpm/ffindex.spec
+++ b/rpm/ffindex.spec
@@ -1,10 +1,10 @@
 Summary: FFindex is a very simple index/database for huge amounts of small files. 
 Name: ffindex
-Version: 0.9.9.9
+Version: 1.0
 Release: 1
-License: Create Commons license "Attribution-ShareAlike 3.0"
+License: Create Commons license "Attribution-ShareAlike 4.0 International"
 Group: Utilities/System
-Source: https://github.com/ahcm/ffindex/archive/0.9.9.9.tar.gz
+  Source: https://github.com/ahcm/ffindex/archive/ffindex-1.0.tar.gz
 %description
 FFindex is a very simple index/database for huge amounts of small files. The
 files are stored concatenated in one big data file, seperated by '\0'. A second
diff --git a/src/ffindex.c b/src/ffindex.c
index 12b7494..fbc7873 100644
--- a/src/ffindex.c
+++ b/src/ffindex.c
@@ -217,7 +217,7 @@ int ffindex_insert_dir(FILE *data_file, FILE *index_file, size_t *start_offset,
   }
 
   size_t input_dir_name_len = strnlen(input_dir_name, FILENAME_MAX);
-  char path[PATH_MAX];
+  char path[PATH_MAX + 1];
   strncpy(path, input_dir_name, NAME_MAX);
   if(input_dir_name[input_dir_name_len - 1] != '/')
   {
@@ -231,7 +231,8 @@ int ffindex_insert_dir(FILE *data_file, FILE *index_file, size_t *start_offset,
   {
     if(entry->d_name[0] == '.')
       continue;
-    strncpy(path + input_dir_name_len, entry->d_name, NAME_MAX);
+    strncpy(path + input_dir_name_len, entry->d_name, PATH_MAX - input_dir_name_len);
+    path[PATH_MAX] = '\0';
     struct stat sb;
     if(stat(path, &sb) == -1)
       fferror_print(__FILE__, __LINE__, __func__, path);
@@ -449,8 +450,10 @@ ffindex_index_t* ffindex_index_parse(FILE *index_file, size_t num_max_entries)
 
   if(ret)
   {
-    fferror_print(__FILE__, __LINE__, __func__, "mlock");
-    return NULL;
+    /* Ignore. Linux distros keep the default value at too low values. */
+    //fferror_print(__FILE__, __LINE__, __func__, "mlock");
+    //return NULL;
+    errno = 0;
   }
 
   if(index->n_entries == 0)
@@ -574,7 +577,7 @@ int ffindex_write(ffindex_index_t* index, FILE* index_file)
         return EXIT_FAILURE;
 
 #if _POSIX_C_SOURCE >= 200112L
-  ftruncate(fileno(index_file), ftell(index_file));
+  ret = ftruncate(fileno(index_file), ftell(index_file));
 #endif
 
   return ret;
diff --git a/src/ffindex.h b/src/ffindex.h
index 4ac664e..2c21c93 100644
--- a/src/ffindex.h
+++ b/src/ffindex.h
@@ -21,7 +21,7 @@
 
 #include <stdio.h>
 
-#define FFINDEX_VERSION 0.999
+#define FFINDEX_VERSION 1.0
 #define FFINDEX_COPYRIGHT "\nDesigned and implemented by Andreas Hauser <andy@splashground.de>.\n"
 
 #define FFINDEX_MAX_INDEX_ENTRIES_DEFAULT 80000000
diff --git a/src/ffindex_apply_mpi.c b/src/ffindex_apply_mpi.c
index 27fb4b8..7e63966 100644
--- a/src/ffindex_apply_mpi.c
+++ b/src/ffindex_apply_mpi.c
@@ -21,6 +21,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
+#include <libgen.h>
 #include <sys/types.h>
 #include <sys/wait.h>
 #include <unistd.h>
diff --git a/src/ffindex_from_fasta.c b/src/ffindex_from_fasta.c
index 28aed92..1501146 100644
--- a/src/ffindex_from_fasta.c
+++ b/src/ffindex_from_fasta.c
@@ -14,14 +14,12 @@
 #define _LARGEFILE64_SOURCE 1
 #define _FILE_OFFSET_BITS 64
 
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <unistd.h>
-
+#include <stdlib.h>
+#include <stdio.h>
+#include <libgen.h>
 
 #include "ffindex.h"
 #include "ffutil.h"
@@ -97,9 +95,10 @@ int main(int argn, char **argv)
   char *fasta_data = ffindex_mmap_data(fasta_file, &fasta_size);
   size_t from_length = 0;
   char name[FFINDEX_MAX_ENTRY_NAME_LENTH];
-  int seq_id = 1;
+  int seq_id = 0;
   for(size_t fasta_offset = 1; fasta_offset < fasta_size; fasta_offset++) // position after first ">"
   {
+    seq_id++;
     from_length = 1;
     while(fasta_offset < fasta_size && !(*(fasta_data + fasta_offset) == '>' && *(fasta_data + fasta_offset - 1) == '\n'))
     {
@@ -115,7 +114,7 @@ int main(int argn, char **argv)
       name[len] = '\0';
     }
     else
-      sprintf(name, "%d", seq_id++);
+      sprintf(name, "%d", seq_id);
     ffindex_insert_memory(data_file, index_file, &offset, fasta_data + (fasta_offset - from_length), from_length, name);
   }
   fclose(data_file);
@@ -124,7 +123,7 @@ int main(int argn, char **argv)
   if(sort)
   {
     rewind(index_file);
-    ffindex_index_t* index = ffindex_index_parse(index_file, 0);
+    ffindex_index_t* index = ffindex_index_parse(index_file, seq_id);
     if(index == NULL)
     {
       perror("ffindex_index_parse failed");
diff --git a/src/ffindex_modify.c b/src/ffindex_modify.c
index df95b51..f2685c8 100644
--- a/src/ffindex_modify.c
+++ b/src/ffindex_modify.c
@@ -21,6 +21,7 @@
 #include <stdlib.h>
 #include <unistd.h>
 #include <unistd.h>
+#include <libgen.h>
 
 
 #include "ffindex.h"
diff --git a/src/ffindex_unpack.c b/src/ffindex_unpack.c
index d0cf36d..9e7fc8b 100644
--- a/src/ffindex_unpack.c
+++ b/src/ffindex_unpack.c
@@ -21,6 +21,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
+#include <libgen.h>
 #include <sys/types.h>
 #include <sys/wait.h>
 #include <sys/mman.h>

Debdiff

[The following lists of changes regard files as different if they have different names, permissions or owners.]

Files in second set of .debs but not in first

-rw-r--r--  root/root   /usr/lib/debug/.build-id/0a/31ab8c9a557ab4afc67a4adbc4e201c04abe65.debug
-rw-r--r--  root/root   /usr/lib/debug/.build-id/1f/172307134b39cd5990ac2e733735c8b0f0abd6.debug
-rw-r--r--  root/root   /usr/lib/debug/.build-id/42/c671781944d0ac5a51fc64cbcfb60eb6990b79.debug
-rw-r--r--  root/root   /usr/lib/debug/.build-id/46/c2d18a9cce8c46294c9278b01dad0133c9846f.debug
-rw-r--r--  root/root   /usr/lib/debug/.build-id/52/0b657f1fe5feff0ee75553bd8dfeefe3055fe1.debug
-rw-r--r--  root/root   /usr/lib/debug/.build-id/6a/8f47c0d221e146d617b1685c124555e83a56db.debug
-rw-r--r--  root/root   /usr/lib/debug/.build-id/97/d14c8ca1652217d91577930bab99ba0b6fe4ff.debug
-rw-r--r--  root/root   /usr/lib/debug/.build-id/d9/bd06c4c4c674c8d3777e5aea54b93294da58c0.debug
-rw-r--r--  root/root   /usr/lib/debug/.build-id/df/81cbbba22e4ac374d3a96dff72bd95630c578e.debug
-rw-r--r--  root/root   /usr/share/doc/ffindex/README.md.gz

Files in first set of .debs but not in second

-rw-r--r--  root/root   /usr/lib/debug/.build-id/3e/c405e70106b6bb434ebc97b9b3f22fb46fc097.debug
-rw-r--r--  root/root   /usr/lib/debug/.build-id/49/d4466da2491d10c432aba248eaf43eee1a5c3a.debug
-rw-r--r--  root/root   /usr/lib/debug/.build-id/58/27a2a849e8270f069e22d5ce3cfe67c8f9e753.debug
-rw-r--r--  root/root   /usr/lib/debug/.build-id/6e/3f7b9f0bd3e32ac7cc67ff9651f7d39018a1d6.debug
-rw-r--r--  root/root   /usr/lib/debug/.build-id/7c/9195d862e2840081b5fa3c78ad2d69ddf42ddc.debug
-rw-r--r--  root/root   /usr/lib/debug/.build-id/af/1dbb9957e9f422480ef2d0d7ebe6fcf26f8ad8.debug
-rw-r--r--  root/root   /usr/lib/debug/.build-id/dc/8a3649a4148263760b103caad9aacf7d007246.debug
-rw-r--r--  root/root   /usr/lib/debug/.build-id/ee/85746be66a9416b80bfc5acbccd26aaa608ca7.debug
-rw-r--r--  root/root   /usr/lib/debug/.build-id/f1/714e4c7bd0c8a9eaa8b079803ff75402e05870.debug
-rw-r--r--  root/root   /usr/share/doc/ffindex/README

No differences were encountered between the control files of package ffindex

Control files of package ffindex-dbgsym: lines which differ (wdiff format)

  • Build-Ids: 3ec405e70106b6bb434ebc97b9b3f22fb46fc097 49d4466da2491d10c432aba248eaf43eee1a5c3a 6e3f7b9f0bd3e32ac7cc67ff9651f7d39018a1d6 7c9195d862e2840081b5fa3c78ad2d69ddf42ddc af1dbb9957e9f422480ef2d0d7ebe6fcf26f8ad8 dc8a3649a4148263760b103caad9aacf7d007246 ee85746be66a9416b80bfc5acbccd26aaa608ca7 f1714e4c7bd0c8a9eaa8b079803ff75402e05870 0a31ab8c9a557ab4afc67a4adbc4e201c04abe65 1f172307134b39cd5990ac2e733735c8b0f0abd6 42c671781944d0ac5a51fc64cbcfb60eb6990b79 46c2d18a9cce8c46294c9278b01dad0133c9846f 520b657f1fe5feff0ee75553bd8dfeefe3055fe1 6a8f47c0d221e146d617b1685c124555e83a56db 97d14c8ca1652217d91577930bab99ba0b6fe4ff d9bd06c4c4c674c8d3777e5aea54b93294da58c0

No differences were encountered between the control files of package libffindex0

Control files of package libffindex0-dbgsym: lines which differ (wdiff format)

  • Build-Ids: 5827a2a849e8270f069e22d5ce3cfe67c8f9e753 df81cbbba22e4ac374d3a96dff72bd95630c578e

No differences were encountered between the control files of package libffindex0-dev

More details

Full run details