Hello community, here is the log from the commit of package kst for openSUSE:Factory checked in at 2016-08-11 18:53:34 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/kst (Old) and /work/SRC/openSUSE:Factory/.kst.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "kst" Changes: -------- --- /work/SRC/openSUSE:Factory/kst/kst.changes 2015-08-28 08:26:32.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.kst.new/kst.changes 2016-08-11 18:53:36.000000000 +0200 @@ -1,0 +2,5 @@ +Thu Aug 4 21:46:34 UTC 2016 - [email protected] + +- Add gsl2-support.patch to fix build with GSL-2.x + +------------------------------------------------------------------- New: ---- gsl2-support.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ kst.spec ++++++ --- /var/tmp/diff_new_pack.kIQdQl/_old 2016-08-11 18:53:37.000000000 +0200 +++ /var/tmp/diff_new_pack.kIQdQl/_new 2016-08-11 18:53:37.000000000 +0200 @@ -25,6 +25,8 @@ Group: Productivity/Graphics/Visualization/Graph Url: http://kst-plot.kde.org/ Source: Kst-%{version}.tar.gz +# PATCH-FIX-UPSTREAM gsl2-support.patch -- fixes build with GSL-2.0 +Patch: gsl2-support.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: Mesa-devel BuildRequires: cmake @@ -68,6 +70,7 @@ %prep %setup -q -n=Kst-2.0.8 +%patch -p1 %build EXTRA_FLAGS="-Dkst_install_prefix=/usr \ ++++++ gsl2-support.patch ++++++ >From a9d24f91057441bbd2e3ed9e7536b071121526cb Mon Sep 17 00:00:00 2001 From: "D. V. Wiebe" <[email protected]> Date: Thu, 10 Mar 2016 14:09:26 -0800 Subject: [PATCH] GSL-2.x support. --- src/plugins/fits/non_linear.h | 67 +++++++++++++++++++++------------- src/plugins/fits/non_linear_weighted.h | 66 ++++++++++++++++++++------------- 2 files changed, 82 insertions(+), 51 deletions(-) diff --git a/src/plugins/fits/non_linear.h b/src/plugins/fits/non_linear.h index 4506704..74e82e7 100644 --- a/src/plugins/fits/non_linear.h +++ b/src/plugins/fits/non_linear.h @@ -18,6 +18,7 @@ #include <gsl/gsl_blas.h> #include <gsl/gsl_multifit_nlin.h> #include <gsl/gsl_statistics.h> +#include <gsl/gsl_version.h> #include "common.h" struct data { @@ -100,6 +101,7 @@ bool kstfit_nonlinear( gsl_multifit_function_fdf function; gsl_vector_view vectorViewInitial; gsl_matrix* pMatrixCovariance; + gsl_matrix *pMatrixJacobian; struct data d; double dXInitial[NUM_PARAMS]; double* pInputX; @@ -177,37 +179,50 @@ bool kstfit_nonlinear( } iIterations++; } while( iStatus == GSL_CONTINUE && iIterations < MAX_NUM_ITERATIONS ); - gsl_multifit_covar( pSolver->J, 0.0, pMatrixCovariance ); - - // - // determine the fitted values... - // - for( i=0; i<NUM_PARAMS; i++ ) { - dXInitial[i] = gsl_vector_get( pSolver->x, i ); - } - - for( i=0; i<iLength; i++ ) { - vectorOutYFitted->value()[i] = function_calculate( pInputX[i], dXInitial ); - vectorOutYResiduals->value()[i] = pInputY[i] - vectorOutYFitted->value()[i]; - } +#if GSL_MAJOR_VERSION >= 2 + pMatrixJacobian = gsl_matrix_alloc( iLength, NUM_PARAMS ); +#else + pMatrixJacobian = pSolver->J; +#endif + if ( pMatrixJacobian != NULL) { +#if GSL_MAJOR_VERSION >= 2 + gsl_multifit_fdfsolver_jac( pSolver, pMatrixJacobian ); +#endif + gsl_multifit_covar( pMatrixJacobian, 0.0, pMatrixCovariance ); + + // + // determine the fitted values... + // + for( i=0; i<NUM_PARAMS; i++ ) { + dXInitial[i] = gsl_vector_get( pSolver->x, i ); + } - // - // fill in the parameter values and covariance matrix... - // - for( i=0; i<NUM_PARAMS; i++ ) { - vectorOutYParameters->value()[i] = gsl_vector_get( pSolver->x, i ); - for( j=0; j<NUM_PARAMS; j++ ) { - vectorOutYCovariance->value()[(i*NUM_PARAMS)+j] = gsl_matrix_get( pMatrixCovariance, i, j ); + for( i=0; i<iLength; i++ ) { + vectorOutYFitted->value()[i] = function_calculate( pInputX[i], dXInitial ); + vectorOutYResiduals->value()[i] = pInputY[i] - vectorOutYFitted->value()[i]; } - } - // - // determine the value of chi^2/nu - // - scalarOutChi->setValue(gsl_blas_dnrm2( pSolver->f )); + // + // fill in the parameter values and covariance matrix... + // + for( i=0; i<NUM_PARAMS; i++ ) { + vectorOutYParameters->value()[i] = gsl_vector_get( pSolver->x, i ); + for( j=0; j<NUM_PARAMS; j++ ) { + vectorOutYCovariance->value()[(i*NUM_PARAMS)+j] = gsl_matrix_get( pMatrixCovariance, i, j ); + } + } - bReturn = true; + // + // determine the value of chi^2/nu + // + scalarOutChi->setValue(gsl_blas_dnrm2( pSolver->f )); + bReturn = true; + +#if GSL_MAJOR_VERSION >= 2 + gsl_matrix_free( pMatrixJacobian ); +#endif + } gsl_matrix_free( pMatrixCovariance ); } gsl_multifit_fdfsolver_free( pSolver ); diff --git a/src/plugins/fits/non_linear_weighted.h b/src/plugins/fits/non_linear_weighted.h index 6ca7d6f..347ae9d 100644 --- a/src/plugins/fits/non_linear_weighted.h +++ b/src/plugins/fits/non_linear_weighted.h @@ -18,6 +18,7 @@ #include <gsl/gsl_blas.h> #include <gsl/gsl_multifit_nlin.h> #include <gsl/gsl_statistics.h> +#include <gsl/gsl_version.h> #include "common.h" struct data { @@ -101,6 +102,7 @@ bool kstfit_nonlinear_weighted( gsl_multifit_function_fdf function; gsl_vector_view vectorViewInitial; gsl_matrix* pMatrixCovariance; + gsl_matrix *pMatrixJacobian; struct data d; double dXInitial[NUM_PARAMS]; double* pInputs[3]; @@ -193,37 +195,51 @@ bool kstfit_nonlinear_weighted( } while( iStatus == GSL_CONTINUE && iIterations < MAX_NUM_ITERATIONS ); - gsl_multifit_covar( pSolver->J, 0.0, pMatrixCovariance ); - - // - // determine the fitted values... - // - for( i=0; i<NUM_PARAMS; i++ ) { - dXInitial[i] = gsl_vector_get( pSolver->x, i ); - } +#if GSL_MAJOR_VERSION >= 2 + pMatrixJacobian = gsl_matrix_alloc( iLength, NUM_PARAMS ); +#else + pMatrixJacobian = pSolver->J; +#endif + + if ( pMatrixJacobian != NULL) { +#if GSL_MAJOR_VERSION >= 2 + gsl_multifit_fdfsolver_jac( pSolver, pMatrixJacobian ); +#endif + gsl_multifit_covar( pMatrixJacobian, 0.0, pMatrixCovariance ); + + // + // determine the fitted values... + // + for( i=0; i<NUM_PARAMS; i++ ) { + dXInitial[i] = gsl_vector_get( pSolver->x, i ); + } - for( i=0; i<iLength; i++ ) { - vectorOutYFitted->value()[i] = function_calculate( pInputs[XVALUES][i], dXInitial ); - vectorOutYResiduals->value()[i] = pInputs[YVALUES][i] - vectorOutYFitted->value()[i]; - } + for( i=0; i<iLength; i++ ) { + vectorOutYFitted->value()[i] = function_calculate( pInputs[XVALUES][i], dXInitial ); + vectorOutYResiduals->value()[i] = pInputs[YVALUES][i] - vectorOutYFitted->value()[i]; + } - // - // fill in the parameter values and covariance matrix... - // - for( i=0; i<NUM_PARAMS; i++ ) { - vectorOutYParameters->value()[i] = gsl_vector_get( pSolver->x, i ); - for( j=0; j<NUM_PARAMS; j++ ) { - vectorOutYCovariance->value()[(i*NUM_PARAMS)+j] = gsl_matrix_get( pMatrixCovariance, i, j ); + // + // fill in the parameter values and covariance matrix... + // + for( i=0; i<NUM_PARAMS; i++ ) { + vectorOutYParameters->value()[i] = gsl_vector_get( pSolver->x, i ); + for( j=0; j<NUM_PARAMS; j++ ) { + vectorOutYCovariance->value()[(i*NUM_PARAMS)+j] = gsl_matrix_get( pMatrixCovariance, i, j ); + } } - } - // - // determine the value of chi^2/nu - // - scalarOutChi->setValue(gsl_blas_dnrm2( pSolver->f )); + // + // determine the value of chi^2/nu + // + scalarOutChi->setValue(gsl_blas_dnrm2( pSolver->f )); - bReturn = true; + bReturn = true; +#if GSL_MAJOR_VERSION >= 2 + gsl_matrix_free( pMatrixJacobian ); +#endif + } gsl_matrix_free( pMatrixCovariance ); } gsl_multifit_fdfsolver_free( pSolver );
