Hello community, here is the log from the commit of package libimagequant for openSUSE:Factory checked in at 2019-05-25 13:15:20 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libimagequant (Old) and /work/SRC/openSUSE:Factory/.libimagequant.new.5148 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libimagequant" Sat May 25 13:15:20 2019 rev:4 rq:704133 version:2.12.2 Changes: -------- --- /work/SRC/openSUSE:Factory/libimagequant/libimagequant.changes 2019-03-22 14:54:18.094062869 +0100 +++ /work/SRC/openSUSE:Factory/.libimagequant.new.5148/libimagequant.changes 2019-05-25 13:15:22.448445003 +0200 @@ -1,0 +2,6 @@ +Tue May 14 08:55:03 UTC 2019 - Martin Liška <[email protected]> + +- Add gcc9-Update-const-var-openmp-const-var-handling.patch in order + to handle boo#1134979. + +------------------------------------------------------------------- New: ---- gcc9-Update-const-var-openmp-const-var-handling.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libimagequant.spec ++++++ --- /var/tmp/diff_new_pack.dzDBiq/_old 2019-05-25 13:15:24.236444338 +0200 +++ /var/tmp/diff_new_pack.dzDBiq/_new 2019-05-25 13:15:24.244444335 +0200 @@ -12,7 +12,7 @@ # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. -# Please submit bugfixes or comments via http://bugs.opensuse.org/ +# Please submit bugfixes or comments via https://bugs.opensuse.org/ # @@ -26,6 +26,7 @@ Group: Development/Languages/C and C++ Url: https://pngquant.org/lib/ Source: https://github.com/ImageOptim/libimagequant/archive/%{version}/%{name}-%{version}.tar.gz +Patch0: gcc9-Update-const-var-openmp-const-var-handling.patch BuildRequires: pkgconfig BuildRequires: pkgconfig(lcms2) @@ -52,6 +53,7 @@ %prep %setup -q +%patch0 -p1 %build # This is not an autoconf configure, but the script simply ignores parameters it does not know ++++++ gcc9-Update-const-var-openmp-const-var-handling.patch ++++++ >From 62c4bf1dc8bda1e53fbb65e596a141c5a15a4f00 Mon Sep 17 00:00:00 2001 From: Nicholas Vinson <[email protected]> Date: Sat, 4 May 2019 14:03:48 -0700 Subject: [PATCH] Update const-var openmp const-var handling OpenMP 4.0 dropped the data-sharing rule that predetermined const-vars as "shared". GCC implemented this rule change with GCC-9. Because of the rule change, libimagequant fails to build with gcc-9.1.0. This patch updates the code so that it is conformant with OpenMP 4.0 rules. --- kmeans.c | 5 +++++ libimagequant.c | 5 +++++ mediancut.c | 5 +++++ 3 files changed, 15 insertions(+) diff --git a/kmeans.c b/kmeans.c index 7ee273d..c8630ae 100644 --- a/kmeans.c +++ b/kmeans.c @@ -73,8 +73,13 @@ LIQ_PRIVATE double kmeans_do_iteration(histogram *hist, colormap *const map, kme const int hist_size = hist->size; double total_diff=0; +#if __GNUC__ >= 9 + #pragma omp parallel for if (hist_size > 2000) \ + schedule(static) default(none) shared(achv,average_color,callback,hist_size,map,n) reduction(+:total_diff) +#else #pragma omp parallel for if (hist_size > 2000) \ schedule(static) default(none) shared(average_color,callback) reduction(+:total_diff) +#endif for(int j=0; j < hist_size; j++) { float diff; unsigned int match = nearest_search(n, &achv[j].acolor, achv[j].tmp.likely_colormap_index, &diff); diff --git a/libimagequant.c b/libimagequant.c index 3506564..114e5f1 100644 --- a/libimagequant.c +++ b/libimagequant.c @@ -1276,8 +1276,13 @@ LIQ_NONNULL static float remap_to_palette(liq_image *const input_image, unsigned LIQ_ARRAY(kmeans_state, average_color, (KMEANS_CACHE_LINE_GAP+map->colors) * max_threads); kmeans_init(map, max_threads, average_color); +#if __GNUC__ >= 9 + #pragma omp parallel for if (rows*cols > 3000) \ + schedule(static) default(none) shared(acolormap,average_color,cols,input_image,map,n,output_pixels,rows,transparent_index) reduction(+:remapping_error) +#else #pragma omp parallel for if (rows*cols > 3000) \ schedule(static) default(none) shared(acolormap) shared(average_color) reduction(+:remapping_error) +#endif for(int row = 0; row < rows; ++row) { const f_pixel *const row_pixels = liq_image_get_row_f(input_image, row); const f_pixel *const bg_pixels = input_image->background && acolormap[transparent_index].acolor.a < 1.f/256.f ? liq_image_get_row_f(input_image->background, row) : NULL; diff --git a/mediancut.c b/mediancut.c index 447a4af..4421cb4 100644 --- a/mediancut.c +++ b/mediancut.c @@ -195,8 +195,13 @@ static double prepare_sort(struct box *b, hist_item achv[]) const unsigned int ind1 = b->ind; const unsigned int colors = b->colors; +#if __GNUC__ >= 9 + #pragma omp parallel for if (colors > 25000) \ + schedule(static) default(none) shared(achv, channels, colors, ind1) +#else #pragma omp parallel for if (colors > 25000) \ schedule(static) default(none) shared(achv, channels) +#endif for(unsigned int i=0; i < colors; i++) { const float *chans = (const float *)&achv[ind1 + i].acolor; // Only the first channel really matters. When trying median cut many times -- 2.21.0
