[med-svn] [Git][med-team/genomethreader][master] add patch to use Debian paths for resources
Sascha Steinbiss
gitlab at salsa.debian.org
Sun Jan 12 10:43:50 GMT 2020
Sascha Steinbiss pushed to branch master at Debian Med / genomethreader
Commits:
edbfc9c4 by Sascha Steinbiss at 2020-01-12T11:43:29+01:00
add patch to use Debian paths for resources
- - - - -
2 changed files:
- + debian/patches/search-paths.patch
- debian/patches/series
Changes:
=====================================
debian/patches/search-paths.patch
=====================================
@@ -0,0 +1,348 @@
+--- a/src/gth/bssm_param.c
++++ b/src/gth/bssm_param.c
+@@ -29,6 +29,7 @@
+ #include "gth/gthprobdef.h"
+ #include "gth/gthspeciestab.h"
+ #include "gth/showbool.h"
++#include "libgenomethreader/findfile.h"
+
+ /*
+ This is a collection of functions associated with
+@@ -451,42 +452,7 @@
+ if (gt_file_exists(filename))
+ gt_str_append_cstr(path, filename);
+ else {
+- if (strchr(filename, GT_PATH_SEPARATOR)) {
+- gt_error_set(err, "filename \"%s\" contains illegal symbol '%c': the "
+- "path list specified by environment variable \"%s\" "
+- "cannot be searched for it", filename,
+- GT_PATH_SEPARATOR, BSSMENVNAME);
+- had_err = -1;
+- }
+- /* check for file path in environment variable */
+- if (!had_err)
+- had_err = gt_file_find_in_env(path, filename, BSSMENVNAME, err);
+- if (!had_err && !gt_str_length(path)) {
+- gt_error_set(err, "file \"%s\" not found in directory list specified "
+- "by environment variable %s", filename, BSSMENVNAME);
+- had_err = -1;
+- }
+- if (!had_err) {
+- /* path found -> append filename */
+- gt_str_append_char(path, GT_PATH_SEPARATOR);
+- gt_str_append_cstr(path, filename);
+- }
+- else {
+- /* check for file path relative to binary */
+- int new_err = gt_file_find_exec_in_path(path, gt_error_get_progname(err),
+- NULL);
+- if (!new_err) {
+- gt_assert(gt_str_length(path));
+- gt_str_append_char(path, GT_PATH_SEPARATOR);
+- gt_str_append_cstr(path, "bssm");
+- gt_str_append_char(path, GT_PATH_SEPARATOR);
+- gt_str_append_cstr(path, filename);
+- if (gt_file_exists(gt_str_get(path))) {
+- gt_error_unset(err);
+- had_err = 0;
+- }
+- }
+- }
++ had_err = gth_find_file(filename, BSSMENVNAME, "bssm", path, err);
+ }
+
+ if (!had_err) {
+--- a/src/gth/input.c
++++ b/src/gth/input.c
+@@ -30,6 +30,7 @@
+ #include "gth/input.h"
+ #include "gth/md5_cache.h"
+ #include "gth/parse_options.h"
++#include "libgenomethreader/findfile.h"
+
+ #define GTHFORWARD 1 /* run program to match forward */
+ #define GTHREVERSE (1 << 1) /* run program to match reverse */
+@@ -653,45 +654,14 @@
+ {
+ GtStr *path = gt_str_new();
+ int had_err = 0;
++
+ if (gt_file_exists(scorematrixfile)) {
+ gt_str_set(path, scorematrixfile);
+ return path;
+ }
+- if (strchr(scorematrixfile, GT_PATH_SEPARATOR)) {
+- gt_error_set(err, "filename \"%s\" contains illegal symbol '%c': the path "
+- "list specified by environment variable \"%s\" cannot be "
+- "searched for it", scorematrixfile, GT_PATH_SEPARATOR,
+- GTHDATAENVNAME);
+- had_err = -1;
+- }
+- if (!had_err)
+- had_err = gt_file_find_in_env(path, scorematrixfile, GTHDATAENVNAME, err);
+- if (!had_err && !gt_str_length(path)) {
+- gt_error_set(err, "file \"%s\" not found in directory list specified by "
+- "environment variable %s", scorematrixfile, GTHDATAENVNAME);
+- had_err = -1;
+- }
+- if (!had_err) {
+- gt_assert(gt_str_length(path));
+- /* path found -> append score matrix file name */
+- gt_str_append_char(path, GT_PATH_SEPARATOR);
+- gt_str_append_cstr(path, scorematrixfile);
+- }
+- else {
+- /* check for file relative to binary */
+- int new_err = gt_file_find_exec_in_path(path, gt_error_get_progname(err),
+- NULL);
+- if (!new_err) {
+- gt_str_append_char(path, GT_PATH_SEPARATOR);
+- gt_str_append_cstr(path, GTHDATADIRNAME);
+- gt_str_append_char(path, GT_PATH_SEPARATOR);
+- gt_str_append_cstr(path, scorematrixfile);
+- if (gt_file_exists(gt_str_get(path))) {
+- gt_error_unset(err);
+- had_err = 0;
+- }
+- }
+- }
++
++ had_err = gth_find_file(scorematrixfile, GTHDATAENVNAME, GTHDATADIRNAME, path,
++ err);
+ if (had_err) {
+ gt_str_delete(path);
+ return NULL;
+--- /dev/null
++++ b/src/libgenomethreader/findfile.c
+@@ -0,0 +1,74 @@
++/*
++ Copyright (c) 2020 Sascha Steinbiss <sascha at steinbiss.name>
++
++ Permission to use, copy, modify, and distribute this software for any
++ purpose with or without fee is hereby granted, provided that the above
++ copyright notice and this permission notice appear in all copies.
++
++ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
++ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
++ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
++ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
++ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
++ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
++*/
++
++#include "findfile.h"
++#include "core/fileutils_api.h"
++#include "core/compat_api.h"
++
++int gth_find_file(const char *filename, const char *envname,
++ const char *dirname, GtStr *out, GtError *err)
++{
++ int had_err = 0;
++ const char **defaultpath;
++ static const char *defaultpaths[] = {
++ "/usr/share/genomethreader",
++ "/usr/local/share/genomethreader",
++ "/usr/lib/genomethreader",
++ "/usr/local/lib/genomethreader",
++ NULL
++ };
++
++ gt_str_reset(out);
++ /* check in directory given by envname */
++ if (getenv(envname)) {
++ gt_str_append_cstr(out, getenv(envname));
++ gt_str_append_char(out, GT_PATH_SEPARATOR);
++ gt_str_append_cstr(out, filename);
++ if (gt_file_exists(gt_str_get(out))) {
++ return 0;
++ }
++ }
++
++ /* check for file relative to binary */
++ gt_str_reset(out);
++ had_err = gt_file_find_exec_in_path(out, gt_error_get_progname(err), NULL);
++ if (!had_err) {
++ gt_str_append_char(out, GT_PATH_SEPARATOR);
++ gt_str_append_cstr(out, dirname);
++ gt_str_append_char(out, GT_PATH_SEPARATOR);
++ gt_str_append_cstr(out, filename);
++ if (gt_file_exists(gt_str_get(out))) {
++ return 0;
++ }
++ }
++
++ /* check for file in set of default paths */
++ for (defaultpath = defaultpaths; *defaultpath; defaultpath++) {
++ gt_str_reset(out);
++ gt_str_append_cstr(out, *defaultpath);
++ gt_str_append_char(out, GT_PATH_SEPARATOR);
++ gt_str_append_cstr(out, dirname);
++ gt_str_append_char(out, GT_PATH_SEPARATOR);
++ gt_str_append_cstr(out, filename);
++ if (gt_file_exists(gt_str_get(out))) {
++ return 0;
++ }
++ }
++
++ gt_error_set(err, "could not find file '%s' in any of the search paths",
++ filename);
++ return -1;
++}
+--- /dev/null
++++ b/src/libgenomethreader/findfile.h
+@@ -0,0 +1,26 @@
++/*
++ Copyright (c) 2020 Sascha Steinbiss <sascha at steinbiss.name>
++
++ Permission to use, copy, modify, and distribute this software for any
++ purpose with or without fee is hereby granted, provided that the above
++ copyright notice and this permission notice appear in all copies.
++
++ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
++ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
++ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
++ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
++ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
++ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
++ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
++*/
++
++#ifndef GTH_FINDFILE_H
++#define GTH_FINDFILE_H
++
++#include "core/str_api.h"
++#include "core/error_api.h"
++
++int gth_find_file(const char *filename, const char *envname,
++ const char *dirname, GtStr *out, GtError *err);
++
++#endif
+--- a/src/libgenomethreader/gthmkvtree.c
++++ b/src/libgenomethreader/gthmkvtree.c
+@@ -6,6 +6,7 @@
+ #include "core/ma_api.h"
+ #include "gth/gthdef.h"
+ #include "gth/gthoutput.h"
++#include "libgenomethreader/findfile.h"
+ #include "libgenomethreader/gthmkvtree.h"
+ #include "types.h"
+ #include "virtualdef.h"
+@@ -52,39 +53,14 @@
+ {
+ int rval, had_err = 0;
+ gt_error_check(err);
+- if (!getenv(GTHDATAENVNAME)) {
+- gt_error_set(err, "$%s not defined. Please set correctly", GTHDATAENVNAME);
+- had_err = -1;
+- }
++
++ GtStr *path = gt_str_new();
++ had_err = gth_find_file(mapping, GTHDATAENVNAME, GTHDATADIRNAME, path, err);
+ if (!had_err) {
+- rval = snprintf(smapfile, PATH_MAX+1, "%s%c%s", getenv(GTHDATAENVNAME),
+- GT_PATH_SEPARATOR, mapping);
+- gt_assert(rval < PATH_MAX + 1);
+- if (!gt_file_exists(smapfile)) {
+- gt_error_set(err, "cannot open smap file '%s'", smapfile);
+- had_err = -1;
+- }
+- }
+- if (had_err) {
+- /* check for file relative to binary */
+- GtStr *path;
+- int new_err;
+- path = gt_str_new();
+- new_err = gt_file_find_exec_in_path(path, gt_error_get_progname(err), NULL);
+- if (!new_err) {
+- gt_str_append_char(path, GT_PATH_SEPARATOR);
+- gt_str_append_cstr(path, GTHDATADIRNAME);
+- gt_str_append_char(path, GT_PATH_SEPARATOR);
+- gt_str_append_cstr(path, mapping);
+- if (gt_file_exists(gt_str_get(path))) {
+- rval = snprintf(smapfile, PATH_MAX+1, "%s", gt_str_get(path));
+- gt_assert(rval < PATH_MAX + 1);
+- gt_error_unset(err);
+- had_err = 0;
+- }
+- }
+- gt_str_delete(path);
++ rval = snprintf(smapfile, PATH_MAX+1, "%s", gt_str_get(path));
++ gt_assert(rval < PATH_MAX + 1);
+ }
++ gt_str_delete(path);
+ return had_err;
+ }
+
+--- a/src/libgenomethreader/gthpre.c
++++ b/src/libgenomethreader/gthpre.c
+@@ -11,6 +11,7 @@
+ #include "gth/gthdef.h"
+ #include "gth/gthoutput.h"
+ #include "gth/input.h"
++#include "libgenomethreader/findfile.h"
+ #include "libgenomethreader/gthmkvtree.h"
+ #include "libgenomethreader/gthpolyafunc.h"
+ #include "libgenomethreader/gthpre.h"
+@@ -301,49 +302,22 @@
+
+ /* create masked file if necessary */
+ if (createmaskedfile) {
+- sprintf(dnafilename, "%s.%s", POLYA_FASTAFILENAME, DNASUFFIX);
+- /* check if polyatail.dna exists */
+- fp = scanpathsforfile(GTHDATAENVNAME, dnafilename); /* XXX */
+- if (!fp) {
+- gt_error_set(err, "file \"%s\" not found in $%s. Set correctly?",
+- dnafilename, GTHDATAENVNAME);
+- had_err = -1;
+- }
+- if (!had_err /* XXX */ && DELETEFILEHANDLE(fp)) {
+- fprintf(stderr,"%s\n", messagespace());
+- exit(EXIT_FAILURE);
+- }
+-
+- /* call vmatch and save masked file */
+- if (!had_err && !getenv(GTHDATAENVNAME)) {
+- gt_error_set(err, "$%s not defined. Please set correctly",
+- GTHDATAENVNAME);
+- had_err = -1;
+- }
++ int rval = 0;
++ GtStr *path = gt_str_new();
+
++ sprintf(dnafilename, "%s.%s", POLYA_FASTAFILENAME, DNASUFFIX);
++ had_err = gth_find_file(dnafilename, GTHDATAENVNAME, GTHDATADIRNAME, path,
++ err);
+ if (!had_err) {
+- sprintf(dnafilename, "%s%c%s", getenv(GTHDATAENVNAME), GT_PATH_SEPARATOR,
+- POLYA_FASTAFILENAME);
+- }
+- else {
+- /* check for file relative to binary */
+- GtStr *path;
+- int new_err;
+- path = gt_str_new();
+- new_err = gt_file_find_exec_in_path(path, gt_error_get_progname(err),
+- NULL);
+- if (!new_err) {
+- gt_str_append_char(path, GT_PATH_SEPARATOR);
+- gt_str_append_cstr(path, GTHDATADIRNAME);
+- if (gt_file_exists_and_is_dir(gt_str_get(path))) {
+- sprintf(dnafilename, "%s%c%s", gt_str_get(path), GT_PATH_SEPARATOR,
+- POLYA_FASTAFILENAME);
+- gt_error_unset(err);
+- had_err = 0;
+- }
+- }
++ rval = snprintf(dnafilename, PATH_MAX+1, "%s", gt_str_get(path));
++ gt_assert(rval < PATH_MAX + 1);
++ /* clip off DNASUFFIX */
++ gt_assert(strlen(dnafilename) > 5);
++ dnafilename[strlen(dnafilename)-4] = '\0';
+ }
++ gt_str_delete(path);
+
++ /* call vmatch and save masked file */
+ if (!had_err) {
+ /* open file pointer for masked reference file */
+ fp = gt_fa_xfopen(maskedfilename, "w");
=====================================
debian/patches/series
=====================================
@@ -1,3 +1,4 @@
debian-gt-libs.patch
gt-path-fix.patch
hardening.patch
+search-paths.patch
View it on GitLab: https://salsa.debian.org/med-team/genomethreader/commit/edbfc9c4e1d7b313974db6d5ae7d59c13476c914
--
View it on GitLab: https://salsa.debian.org/med-team/genomethreader/commit/edbfc9c4e1d7b313974db6d5ae7d59c13476c914
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/20200112/7b4e59b7/attachment-0001.html>
More information about the debian-med-commit
mailing list