diff options
author | 2024-04-22 19:46:04 +0200 | |
---|---|---|
committer | 2024-04-22 19:51:45 +0200 | |
commit | 65f38f29b1d319f64a4c37d3c55ce487d654049a (patch) | |
tree | 8d4aef93f7c44e55f6c3bd76ec3f742aef45bd4b /sci-libs/stellarsolver | |
parent | media-gfx/digikam: Drop IUSE marble metadata (diff) | |
download | gentoo-65f38f29b1d319f64a4c37d3c55ce487d654049a.tar.gz gentoo-65f38f29b1d319f64a4c37d3c55ce487d654049a.tar.bz2 gentoo-65f38f29b1d319f64a4c37d3c55ce487d654049a.zip |
sci-libs/stellarsolver: Fix QA warnings
Closes: https://bugs.gentoo.org/873595
Closes: https://bugs.gentoo.org/886465
Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
Diffstat (limited to 'sci-libs/stellarsolver')
3 files changed, 354 insertions, 0 deletions
diff --git a/sci-libs/stellarsolver/files/stellarsolver-2.5-compiler-warning.patch b/sci-libs/stellarsolver/files/stellarsolver-2.5-compiler-warning.patch new file mode 100644 index 000000000000..eaae908db774 --- /dev/null +++ b/sci-libs/stellarsolver/files/stellarsolver-2.5-compiler-warning.patch @@ -0,0 +1,26 @@ +From 475193d28c0b33b14cecf9492a7c3cd06abcc9f5 Mon Sep 17 00:00:00 2001 +From: Tim Surber <me@timsurber.de> +Date: Wed, 10 Apr 2024 23:36:49 +0200 +Subject: [PATCH] fix another compiler warning + +--- + stellarsolver/astrometry/util/fitstable.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/stellarsolver/astrometry/util/fitstable.c b/stellarsolver/astrometry/util/fitstable.c +index 10e1bc2..5885040 100644 +--- a/stellarsolver/astrometry/util/fitstable.c ++++ b/stellarsolver/astrometry/util/fitstable.c +@@ -1227,7 +1227,11 @@ static fitstable_t* open_for_writing(const char* fn, const char* mode, FILE* fid + else { + tab->fid = fopen(fn, mode); + if (!tab->fid) { +- SYSERROR("Couldn't open output file %s for writing", fn); ++ if (fn != NULL) { ++ SYSERROR("Couldn't open output file %s for writing", fn); ++ } else { ++ SYSERROR("Couldn't open output file because the filename is null"); ++ } + goto bailout; + } + } diff --git a/sci-libs/stellarsolver/files/stellarsolver-2.5-qsort-warning.patch b/sci-libs/stellarsolver/files/stellarsolver-2.5-qsort-warning.patch new file mode 100644 index 000000000000..72acd2adc9c6 --- /dev/null +++ b/sci-libs/stellarsolver/files/stellarsolver-2.5-qsort-warning.patch @@ -0,0 +1,291 @@ +From efd820a1655f808107a1984d55124ea142c66fa6 Mon Sep 17 00:00:00 2001 +From: Tim Surber <me@timsurber.de> +Date: Wed, 10 Apr 2024 23:31:58 +0200 +Subject: [PATCH] backport qsort warning fix + +--- + .../astrometry/include/astrometry/ioutils.h | 9 +++ + .../include/astrometry/os-features-config.h | 4 +- + .../include/astrometry/permutedsort.h | 2 +- + stellarsolver/astrometry/os-features.h | 16 ------ + stellarsolver/astrometry/util/bl-sort.c | 3 +- + stellarsolver/astrometry/util/ioutils.c | 2 +- + .../astrometry/util/os-features-test.c | 57 ------------------- + stellarsolver/astrometry/util/os-features.c | 6 +- + stellarsolver/astrometry/util/permutedsort.c | 3 +- + .../astrometry/util/qsort_reentrant.c | 37 +++--------- + 10 files changed, 27 insertions(+), 112 deletions(-) + +diff --git a/stellarsolver/astrometry/include/astrometry/ioutils.h b/stellarsolver/astrometry/include/astrometry/ioutils.h +index 07f7eecf..e5cf63c8 100644 +--- a/stellarsolver/astrometry/include/astrometry/ioutils.h ++++ b/stellarsolver/astrometry/include/astrometry/ioutils.h +@@ -31,6 +31,15 @@ char* dirname(const char* path); + + extern uint32_t ENDIAN_DETECTOR; + ++void QSORT_R(void* base, size_t nmembers, size_t member_size, ++ void* token, int (*compar)(void *, const void *, const void *)); ++ ++/** ++ You should define the "comparison" function like this: ++ static int QSORT_COMPARISON_FUNCTION(my_comparison, void* token, const void* v1, const void* v2) { ++ */ ++#define QSORT_COMPARISON_FUNCTION(func, thunk, v1, v2) func(thunk, v1, v2) ++ + int copy_file(const char* infn, const char* outfn); + + int pad_fid(FILE* fid, size_t len, char pad); +diff --git a/stellarsolver/astrometry/include/astrometry/os-features-config.h b/stellarsolver/astrometry/include/astrometry/os-features-config.h +index a246d428..bcc336e9 100644 +--- a/stellarsolver/astrometry/include/astrometry/os-features-config.h ++++ b/stellarsolver/astrometry/include/astrometry/os-features-config.h +@@ -1,4 +1,4 @@ +-#define NEED_DECLARE_QSORT_R 0 +-#define NEED_QSORT_R 1 ++#define NEED_DECLARE_QSORT_R 1 ++#define NEED_QSORT_R 0 + #define NEED_SWAP_QSORT_R 0 + #define HAVE_NETPBM 0 +\ No newline at end of file +diff --git a/stellarsolver/astrometry/include/astrometry/permutedsort.h b/stellarsolver/astrometry/include/astrometry/permutedsort.h +index 23c1a7e9..d3590160 100644 +--- a/stellarsolver/astrometry/include/astrometry/permutedsort.h ++++ b/stellarsolver/astrometry/include/astrometry/permutedsort.h +@@ -7,7 +7,7 @@ + #define PERMUTED_SORT_H + + // for QSORT_COMPARISON_FUNCTION +-#include "os-features.h" ++#include "ioutils.h" + + /* + Computes the permutation array that will cause the "realarray" to be +diff --git a/stellarsolver/astrometry/os-features.h b/stellarsolver/astrometry/os-features.h +index 2c2a9d19..90dd375f 100644 +--- a/stellarsolver/astrometry/os-features.h ++++ b/stellarsolver/astrometry/os-features.h +@@ -108,22 +108,6 @@ + -Ubuntu 8.10 + */ + +-#if NEED_DECLARE_QSORT_R +-//// NOTE: this declaration must match os-features-test.c . +-void qsort_r(void *base, size_t nmemb, size_t sz, +- void *userdata, +- int (*compar)(void *, const void *, const void *)); +-#endif +- +-#if NEED_SWAP_QSORT_R +-#define QSORT_R(a,b,c,d,e) qsort_r(a,b,c,e,d) +-#define QSORT_COMPARISON_FUNCTION(func, thunk, v1, v2) func(v1, v2, thunk) +- +-#else +-#define QSORT_R qsort_r +-#define QSORT_COMPARISON_FUNCTION(func, thunk, v1, v2) func(thunk, v1, v2) +- +-#endif + + // As suggested in http://gcc.gnu.org/onlinedocs/gcc-4.3.0/gcc/Function-Names.html + #if __STDC_VERSION__ < 199901L +diff --git a/stellarsolver/astrometry/util/bl-sort.c b/stellarsolver/astrometry/util/bl-sort.c +index 70123660..a024d271 100644 +--- a/stellarsolver/astrometry/util/bl-sort.c ++++ b/stellarsolver/astrometry/util/bl-sort.c +@@ -3,6 +3,8 @@ + # Licensed under a 3-clause BSD style license - see LICENSE + */ + ++#include "ioutils.h" // for QSORT_R ++ + #include "bl-sort.h" + // for qsort_r + #include "os-features.h" +@@ -166,4 +168,3 @@ static int sort_helper_pl(const void* v1, const void* v2, void* userdata) { + void pl_sort(pl* list, int (*compare)(const void* v1, const void* v2)) { + bl_sort_with_userdata(list, sort_helper_pl, compare); + } +- +diff --git a/stellarsolver/astrometry/util/ioutils.c b/stellarsolver/astrometry/util/ioutils.c +index c490fb8c..b4ecba0b 100644 +--- a/stellarsolver/astrometry/util/ioutils.c ++++ b/stellarsolver/astrometry/util/ioutils.c +@@ -43,7 +43,7 @@ + + #include "os-features.h" + #include "ioutils.h" +-//#include "os-features.h" ++#include "qsort_reentrant.c" + #include "errors.h" + #include "log.h" + +diff --git a/stellarsolver/astrometry/util/os-features-test.c b/stellarsolver/astrometry/util/os-features-test.c +index 445ac1cd..a274c16b 100644 +--- a/stellarsolver/astrometry/util/os-features-test.c ++++ b/stellarsolver/astrometry/util/os-features-test.c +@@ -14,63 +14,6 @@ int main() { + } + #endif + +-#ifdef TEST_QSORT_R +-static int cmp(void* u, const void* a, const void* b) { +- return 0; +-} +-int main() { +- int array; +- int baton; +- qsort_r(&array, 1, sizeof(int), &baton, cmp); +- //printf("#define NEED_QSORT_R 0\n"); +- return 0; +-} +-#endif +- +-#ifdef TEST_DECLARE_QSORT_R +-// Test whether just declaring qsort_r as we do causes a compile failure. +- +-void qsort_r(void *base, size_t nmemb, size_t sz, +- void *userdata, +- int (*compar)(void *, const void *, const void *)); +- +-int main() { +- //printf("#define NEED_DECLARE_QSORT_R 1\n"); +- return 0; +-} +-#endif +- +-#ifdef TEST_SWAP_QSORT_R +-// Use the result of TEST_DECLARE_QSORT_R and TEST_NEED_QSORT_R, or else +-// this test will fail with a warning about undefined qsort_r +-// Include .c rather than .h because we test with: +-// gcc -o (exec) os-features-test.c +-// and if NEED_QSORT_R, os-features.c includes qsort_reentrant.c +-#include "os-features-config.h.tmp" +-#define DONT_INCLUDE_OS_FEATURES_CONFIG_H 1 +-#include "os-features.c" +-#undef DONT_INCLUDE_OS_FEATURES_CONFIG_H +-// Test whether qsort_r works unswapped. (ie, qsort_r matches the definition of +-// QSORT_R defined in the os-features.h documentation.) +-static int sortfunc(void* thunk, const void* v1, const void* v2) { +- const int* i1 = v1; +- const int* i2 = v2; +- if (*i1 < *i2) +- return -1; +- if (*i1 > *i2) +- return 1; +- return 0; +-} +-int main() { +- int array[] = { 4, 17, 88, 34, 12, 12, 17 }; +- int N = sizeof(array)/sizeof(int); +- int mythunk = 42; +- qsort_r(array, N, sizeof(int), &mythunk, sortfunc); +- //printf("#define NEED_SWAP_QSORT_R 0\n"); +- return 0; +-} +-#endif +- + #if defined(TEST_NETPBM) || defined(TEST_NETPBM_MAKE) + #include <pam.h> + int main(int argc, char** args) { +diff --git a/stellarsolver/astrometry/util/os-features.c b/stellarsolver/astrometry/util/os-features.c +index 0c7d2b95..e95d463b 100644 +--- a/stellarsolver/astrometry/util/os-features.c ++++ b/stellarsolver/astrometry/util/os-features.c +@@ -37,8 +37,4 @@ + //int fdatasync(int fd) { + // return fsync(fd); + //} +-//#endif +- +-#if NEED_QSORT_R +-#include "qsort_reentrant.c" +-#endif ++//#endif +\ No newline at end of file +diff --git a/stellarsolver/astrometry/util/permutedsort.c b/stellarsolver/astrometry/util/permutedsort.c +index 0bc42298..e37b7e19 100644 +--- a/stellarsolver/astrometry/util/permutedsort.c ++++ b/stellarsolver/astrometry/util/permutedsort.c +@@ -17,7 +17,8 @@ + #endif + + #include "permutedsort.h" +-#include "os-features.h" // for qsort_r ++#include "os-features.h" ++#include "ioutils.h" + + int* permutation_init(int* perm, int N) { + int i; +diff --git a/stellarsolver/astrometry/util/qsort_reentrant.c b/stellarsolver/astrometry/util/qsort_reentrant.c +index 982aa3e1..bce9147a 100644 +--- a/stellarsolver/astrometry/util/qsort_reentrant.c ++++ b/stellarsolver/astrometry/util/qsort_reentrant.c +@@ -35,14 +35,14 @@ + #endif + //__FBSDID("$FreeBSD: src/sys/libkern/qsort.c,v 1.15 2004/07/15 23:58:23 glebius Exp $"); + +-// Astrometry: We want reentrant! +-#define I_AM_QSORT_R + +-#ifdef I_AM_QSORT_R ++// Astrometry.net: we lightly modified this file: ++// - renamed qsort_r to QSORT_R to avoid clashes with system version ++// - removed the preprocessor magic that support re-entrant and non- ++// functions in the same source code. ++ + typedef int cmp_t(void *, const void *, const void *); +-#else +-typedef int cmp_t(const void *, const void *); +-#endif ++ + static __inline char *med3(char *, char *, char *, cmp_t *, void *); + static __inline void swapfunc(char *, char *, int, int); + +@@ -84,32 +84,17 @@ swapfunc(char *a, char *b, int n, int swaptype) + + #define vecswap(a, b, n) if ((n) > 0) swapfunc(a, b, n, swaptype) + +-#ifdef I_AM_QSORT_R + #define CMP(t, x, y) (cmp((t), (x), (y))) +-#else +-#define CMP(t, x, y) (cmp((x), (y))) +-#endif + + static __inline char * +-med3(char *a, char *b, char *c, cmp_t *cmp, void *thunk +-#ifndef I_AM_QSORT_R +-__unused +-#endif +-) ++med3(char *a, char *b, char *c, cmp_t *cmp, void *thunk) + { + return CMP(thunk, a, b) < 0 ? + (CMP(thunk, b, c) < 0 ? b : (CMP(thunk, a, c) < 0 ? c : a )) + :(CMP(thunk, b, c) > 0 ? b : (CMP(thunk, a, c) < 0 ? a : c )); + } + +-#ifdef I_AM_QSORT_R +-void +-qsort_r(void *a, size_t n, size_t es, void *thunk, cmp_t *cmp) +-#else +-#define thunk NULL +-void +-qsort(void *a, size_t n, size_t es, cmp_t *cmp) +-#endif ++void QSORT_R(void *a, size_t n, size_t es, void *thunk, cmp_t *cmp) + { + char *pa, *pb, *pc, *pd, *pl, *pm, *pn; + int d, r, swaptype, swap_cnt; +@@ -177,11 +162,7 @@ loop: SWAPINIT(a, es); + r = min(pd - pc, pn - pd - es); + vecswap(pb, pn - r, r); + if ((r = pb - pa) > es) +-#ifdef I_AM_QSORT_R +- qsort_r(a, r / es, es, thunk, cmp); +-#else +- qsort(a, r / es, es, cmp); +-#endif ++ QSORT_R(a, r / es, es, thunk, cmp); + if ((r = pd - pc) > es) { + /* Iterate rather than recurse to save stack space */ + a = pn - r; diff --git a/sci-libs/stellarsolver/stellarsolver-2.5-r1.ebuild b/sci-libs/stellarsolver/stellarsolver-2.5-r1.ebuild new file mode 100644 index 000000000000..f60a2a9b7daf --- /dev/null +++ b/sci-libs/stellarsolver/stellarsolver-2.5-r1.ebuild @@ -0,0 +1,37 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +inherit cmake flag-o-matic + +DESCRIPTION="Cross-platform Sextractor and Astrometry.net-Based internal astrometric solver" +HOMEPAGE="https://github.com/rlancaste/stellarsolver" +SRC_URI="https://github.com/rlancaste/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz" + +LICENSE="BSD GPL-3" +SLOT="0" +KEYWORDS="~amd64 ~x86" +IUSE="" + +RDEPEND=" + dev-qt/qtconcurrent:5 + dev-qt/qtcore:5 + dev-qt/qtgui:5 + dev-qt/qtnetwork:5 + dev-qt/qtwidgets:5 + sci-libs/cfitsio:= + sci-libs/gsl:= + sci-astronomy/wcslib:= +" +DEPEND="${RDEPEND}" + +# https://github.com/rlancaste/stellarsolver/issues/108 +PATCHES=( "${FILESDIR}"/${P}-{qsort,compiler}-warning.patch ) # git master + +src_configure() { + # bug #862930 + filter-lto + + cmake_src_configure +} |