diff options
Diffstat (limited to 'academic/scidavis')
-rw-r--r-- | academic/scidavis/Fix_FFT_generated_from_graphs.patch | 221 | ||||
-rw-r--r-- | academic/scidavis/desktop_integration.txt | 36 | ||||
-rw-r--r-- | academic/scidavis/fix_translations.patch | 11 | ||||
-rw-r--r-- | academic/scidavis/scidavis.SlackBuild | 12 | ||||
-rw-r--r-- | academic/scidavis/scidavis.info | 6 |
5 files changed, 243 insertions, 43 deletions
diff --git a/academic/scidavis/Fix_FFT_generated_from_graphs.patch b/academic/scidavis/Fix_FFT_generated_from_graphs.patch new file mode 100644 index 0000000000..ec83ce31eb --- /dev/null +++ b/academic/scidavis/Fix_FFT_generated_from_graphs.patch @@ -0,0 +1,221 @@ +--- libscidavis/src/FFT.cpp 2017-07-14 04:54:53.000000000 -0300 ++++ /home/fellype/compilando/scidavis-github/libscidavis/src/FFT.cpp 2017-07-19 09:36:40.000000000 -0300 +@@ -50,6 +50,12 @@ + { + init(); + setDataFromCurve(curveTitle); ++ // intersperse 0 imaginary components ++ double* tmp=new double[2*d_n]; ++ memset(tmp,0,2*d_n*sizeof(double)); ++ for (size_t i=0; i<d_n; ++i) tmp[2*i]=d_y[i]; ++ delete [] d_y; ++ d_y=tmp; + } + + void FFT::init () +@@ -63,133 +69,13 @@ + d_sampling = 1.0; + } + +-QList<Column *> FFT::fftCurve() ++QList<Column *> FFT::fftTable() + { +- int i2; +- int n2 = d_n/2; + double *amp = new double[d_n]; +- double *result = new double[2*d_n]; +- +- if(!amp || !result) +- { +- QMessageBox::critical((ApplicationWindow *)parent(), tr("SciDAVis") + " - " + tr("Error"), +- tr("Could not allocate memory, operation aborted!")); +- d_init_err = true; +- return QList<Column *>(); +- } +- +- double df = 1.0/(double)(d_n*d_sampling);//frequency sampling +- double aMax = 0.0;//max amplitude +- QList<Column *> columns; +- if(!d_inverse) +- { +- d_explanation = tr("Forward") + " " + tr("FFT") + " " + tr("of") + " " + d_curve->title().text(); +- columns << new Column(tr("Frequency"), SciDAVis::Numeric); +- +- gsl_fft_real_workspace *work=gsl_fft_real_workspace_alloc(d_n); +- gsl_fft_real_wavetable *real=gsl_fft_real_wavetable_alloc(d_n); +- +- if(!work || !real) +- { +- QMessageBox::critical((ApplicationWindow *)parent(), tr("SciDAVis") + " - " + tr("Error"), +- tr("Could not allocate memory, operation aborted!")); +- d_init_err = true; +- return QList<Column *>(); +- } +- +- gsl_fft_real_transform(d_y, 1, d_n, real,work); +- gsl_fft_halfcomplex_unpack (d_y, result, 1, d_n); + +- gsl_fft_real_wavetable_free(real); +- gsl_fft_real_workspace_free(work); +- } +- else +- { +- d_explanation = tr("Inverse") + " " + tr("FFT") + " " + tr("of") + " " + d_curve->title().text(); +- columns << new Column(tr("Time"), SciDAVis::Numeric); +- +- gsl_fft_real_unpack (d_y, result, 1, d_n); + gsl_fft_complex_wavetable *wavetable = gsl_fft_complex_wavetable_alloc (d_n); + gsl_fft_complex_workspace *workspace = gsl_fft_complex_workspace_alloc (d_n); + +- if(!workspace || !wavetable) +- { +- QMessageBox::critical((ApplicationWindow *)parent(), tr("SciDAVis") + " - " + tr("Error"), +- tr("Could not allocate memory, operation aborted!")); +- d_init_err = true; +- return QList<Column *>(); +- } +- +- gsl_fft_complex_inverse (result, 1, d_n, wavetable, workspace); +- gsl_fft_complex_wavetable_free (wavetable); +- gsl_fft_complex_workspace_free (workspace); +- } +- +- if (d_shift_order) +- { +- for(unsigned i=0; i<d_n; i++) +- { +- d_x[i] = (i-n2)*df; +- int j = i + d_n; +- double aux = result[i]; +- result[i] = result[j]; +- result[j] = aux; +- } +- } +- else +- { +- for(unsigned i=0; i<d_n; i++) +- d_x[i] = i*df; +- } +- +- for(unsigned i=0;i<d_n;i++) +- { +- i2 = 2*i; +- double real_part = result[i2]; +- double im_part = result[i2+1]; +- double a = sqrt(real_part*real_part + im_part*im_part); +- amp[i]= a; +- if (a > aMax) +- aMax = a; +- } +- +- // ApplicationWindow *app = (ApplicationWindow *)parent(); +- +- columns << new Column(tr("Real"), SciDAVis::Numeric); +- columns << new Column(tr("Imaginary"), SciDAVis::Numeric); +- columns << new Column(tr("Amplitude"), SciDAVis::Numeric); +- columns << new Column(tr("Angle"), SciDAVis::Numeric); +- for (unsigned i=0;i<d_n;i++) +- { +- i2 = 2*i; +- columns.at(0)->setValueAt(i, d_x[i]); +- columns.at(1)->setValueAt(i, result[i2]); +- columns.at(2)->setValueAt(i, result[i2+1]); +- if (d_normalize) +- columns.at(3)->setValueAt(i, amp[i]/aMax); +- else +- columns.at(3)->setValueAt(i, amp[i]); +- columns.at(4)->setValueAt(i, atan(result[i2+1]/result[i2])); +- } +- delete[] amp; +- delete[] result; +- columns.at(0)->setPlotDesignation(SciDAVis::X); +- columns.at(1)->setPlotDesignation(SciDAVis::Y); +- columns.at(2)->setPlotDesignation(SciDAVis::Y); +- columns.at(3)->setPlotDesignation(SciDAVis::Y); +- columns.at(4)->setPlotDesignation(SciDAVis::Y); +- return columns; +-} +- +-QList<Column *> FFT::fftTable() +-{ +- int i; +- int rows = d_table->numRows(); +- double *amp = new double[rows]; +- +- gsl_fft_complex_wavetable *wavetable = gsl_fft_complex_wavetable_alloc (rows); +- gsl_fft_complex_workspace *workspace = gsl_fft_complex_workspace_alloc (rows); +- + if(!amp || !wavetable || !workspace) + { + QMessageBox::critical((ApplicationWindow *)parent(), tr("SciDAVis") + " - " + tr("Error"), +@@ -198,18 +84,18 @@ + return QList<Column *>(); + } + +- double df = 1.0/(double)(rows*d_sampling);//frequency sampling ++ double df = 1.0/(double)(d_n*d_sampling);//frequency sampling + double aMax = 0.0;//max amplitude + QList<Column *> columns; + if(!d_inverse) + { + columns << new Column(tr("Frequency"), SciDAVis::Numeric); +- gsl_fft_complex_forward (d_y, 1, rows, wavetable, workspace); ++ gsl_fft_complex_forward (d_y, 1, d_n, wavetable, workspace); + } + else + { + columns << new Column(tr("Time"), SciDAVis::Numeric); +- gsl_fft_complex_inverse (d_y, 1, rows, wavetable, workspace); ++ gsl_fft_complex_inverse (d_y, 1, d_n, wavetable, workspace); + } + + gsl_fft_complex_wavetable_free (wavetable); +@@ -217,11 +103,11 @@ + + if (d_shift_order) + { +- int n2 = rows/2; +- for(i=0; i<rows; i++) ++ int n2 = d_n/2; ++ for(int i=0; i<int(d_n); i++) + { + d_x[i] = (i-n2)*df; +- int j = i + rows; ++ int j = i + d_n; + double aux = d_y[i]; + d_y[i] = d_y[j]; + d_y[j] = aux; +@@ -229,11 +115,11 @@ + } + else + { +- for(i=0; i<rows; i++) ++ for(size_t i=0; i<d_n; i++) + d_x[i] = i*df; + } + +- for(i=0; i<rows; i++) ++ for(size_t i=0; i<d_n; i++) + { + int i2 = 2*i; + double a = sqrt(d_y[i2]*d_y[i2] + d_y[i2+1]*d_y[i2+1]); +@@ -246,7 +132,7 @@ + columns << new Column(tr("Imaginary"), SciDAVis::Numeric); + columns << new Column(tr("Amplitude"), SciDAVis::Numeric); + columns << new Column(tr("Angle"), SciDAVis::Numeric); +- for (i=0; i<rows; i++) ++ for (size_t i=0; i<d_n; i++) + { + int i2 = 2*i; + columns.at(0)->setValueAt(i, d_x[i]); +@@ -270,9 +156,7 @@ + void FFT::output() + { + QList<Column *> columns; +- if (d_graph && d_curve) +- columns = fftCurve(); +- else if (d_table) ++ if (d_y) + columns = fftTable(); + + if (!columns.isEmpty()) diff --git a/academic/scidavis/desktop_integration.txt b/academic/scidavis/desktop_integration.txt deleted file mode 100644 index 029fc66f83..0000000000 --- a/academic/scidavis/desktop_integration.txt +++ /dev/null @@ -1,36 +0,0 @@ -###################### DESKTOP INTEGRATION ################################## - -unix { - desktop_entry.files = scidavis.desktop - desktop_entry.path = "$$INSTALLBASE/share/applications" - - mime_package.files = scidavis.xml - mime_package.path = "$$INSTALLBASE/share/mime/packages" - - #deprecated - mime_link.files = x-sciprj.desktop - mime_link.path = "$$INSTALLBASE/share/mimelnk/application" - - contains(INSTALLS, icons) { - # scalable icon - icons.files = icons/scidavis.svg - icons.path = "$$INSTALLBASE/share/icons/hicolor/scalable/apps" - - # hicolor icons for different resolutions - resolutions = 16 22 32 48 64 128 - for(res, resolutions) { - eval(icon_hicolor_$${res}.files = icons/hicolor-$${res}/scidavis.png) - eval(icon_hicolor_$${res}.path = "$$INSTALLBASE/share/icons/hicolor/$${res}x$${res}/apps") - INSTALLS += icon_hicolor_$${res} - } - - # locolor icons for different resolutions - resolutions = 16 22 32 - for(res, resolutions) { - eval(icon_locolor_$${res}.files = icons/locolor-$${res}/scidavis.png) - eval(icon_locolor_$${res}.path = "$$INSTALLBASE/share/icons/locolor/$${res}x$${res}/apps") - - INSTALLS += icon_locolor_$${res} - } - } -} diff --git a/academic/scidavis/fix_translations.patch b/academic/scidavis/fix_translations.patch new file mode 100644 index 0000000000..7269e8ddc5 --- /dev/null +++ b/academic/scidavis/fix_translations.patch @@ -0,0 +1,11 @@ +--- scidavis/basic.pri 2017-07-14 04:54:53.000000000 -0300 ++++ /home/fellype/compilando/scidavis-github/scidavis/basic.pri 2017-07-19 09:36:40.000000000 -0300 +@@ -67,7 +67,7 @@ + # note the translation files are not writable during AEGIS + # integration, so we don't want to perform an update then + tstarget.commands = (! test -w translations/scidavis_de.ts || \ +-$$LUPDATE_BIN src/*.cpp ../libscidavis/src/*.cpp -ts translations/*.ts) && $$LRELEASE_BIN translations/*.ts ++$$LUPDATE_BIN src ../libscidavis/src -ts translations/*.ts) && $$LRELEASE_BIN translations/*.ts + + QMAKE_EXTRA_TARGETS += tstarget + QMAKE_CLEAN += $$translationfiles.files diff --git a/academic/scidavis/scidavis.SlackBuild b/academic/scidavis/scidavis.SlackBuild index 890e30e531..ae0ddc94c9 100644 --- a/academic/scidavis/scidavis.SlackBuild +++ b/academic/scidavis/scidavis.SlackBuild @@ -24,7 +24,7 @@ # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. PRGNAM=scidavis -VERSION=${VERSION:-1.18} +VERSION=${VERSION:-1.19} BUILD=${BUILD:-1} TAG=${TAG:-_SBo} @@ -68,8 +68,12 @@ find -L . \ # Correction needed in order to find qwtplot3d in its default path grep -rl "qwtplot3d/" libscidavis/src/ | xargs sed -i "s:<qwtplot3d/:<:" -# Correction needed in order to install system icons and desktop integration rightly -cat $CWD/desktop_integration.txt >> scidavis/basic.pri +## Applying some upstream patches: +## 1: Fix translations - see https://sourceforge.net/p/scidavis/scidavis-bugs/301/ +patch -p1 < $CWD/fix_translations.patch scidavis/basic.pri + +## 2: Fix FFT generated from graphs - see https://sourceforge.net/p/scidavis/scidavis-bugs/305/ +patch -p1 < $CWD/Fix_FFT_generated_from_graphs.patch libscidavis/src/FFT.cpp ## For some unknown reason, to build in Slackware we need to run qmake twice in order to get the app icons working properly ## See https://sourceforge.net/p/scidavis/scidavis-bugs/259/ @@ -89,7 +93,7 @@ find $PKG -print0 | xargs -0 file | grep -e "executable" -e "shared object" | gr ## Sometimes 'make install' fails to install the translation files mkdir -p $PKG/usr/share/scidavis/translations -cp scidavis/translations/*.qm $PKG/usr/share/scidavis/translations +install -m 0644 scidavis/translations/*.qm $PKG/usr/share/scidavis/translations mkdir -p $PKG/usr/man/man1 docbook2man man/manpage.sgml -o $PKG/usr/man/man1/ diff --git a/academic/scidavis/scidavis.info b/academic/scidavis/scidavis.info index 0822ae6523..6ab1485605 100644 --- a/academic/scidavis/scidavis.info +++ b/academic/scidavis/scidavis.info @@ -1,8 +1,8 @@ PRGNAM="scidavis" -VERSION="1.18" +VERSION="1.19" HOMEPAGE="http://scidavis.sourceforge.net/" -DOWNLOAD="https://downloads.sourceforge.net/project/scidavis/SciDAVis/1.18/scidavis-1.18.tar.gz" -MD5SUM="3479b7805517630a9b5aeb6254adb9ed" +DOWNLOAD="https://ufpr.dl.sourceforge.net/project/scidavis/SciDAVis/scidavis-1.19.tar.gz" +MD5SUM="5c4af1e3bb1e1b9adaf1c839892c5382" DOWNLOAD_x86_64="" MD5SUM_x86_64="" REQUIRES="muParser qwt5 qwtplot3d" |