public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] repo/gentoo:master commit in: media-gfx/xv/, media-gfx/xv/files/
@ 2015-11-08 11:04 Pacho Ramos
  0 siblings, 0 replies; 3+ messages in thread
From: Pacho Ramos @ 2015-11-08 11:04 UTC (permalink / raw
  To: gentoo-commits

commit:     a0036cb21b2b3543f50c3964039dc96c54e47f6f
Author:     Pacho Ramos <pacho <AT> gentoo <DOT> org>
AuthorDate: Sun Nov  8 11:02:16 2015 +0000
Commit:     Pacho Ramos <pacho <AT> gentoo <DOT> org>
CommitDate: Sun Nov  8 11:04:11 2015 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a0036cb2

media-gfx/xv: Fix png crashes (#521142 by Ian Schram)

Package-Manager: portage-2.2.24

 media-gfx/xv/files/xv-3.10a-libpng15-r1.patch | 520 ++++++++++++++++++++++++++
 media-gfx/xv/xv-3.10a-r17.ebuild              |  92 +++++
 2 files changed, 612 insertions(+)

diff --git a/media-gfx/xv/files/xv-3.10a-libpng15-r1.patch b/media-gfx/xv/files/xv-3.10a-libpng15-r1.patch
new file mode 100644
index 0000000..b3eaeef
--- /dev/null
+++ b/media-gfx/xv/files/xv-3.10a-libpng15-r1.patch
@@ -0,0 +1,520 @@
+--- xvinfo.c
++++ xvinfo.c
+@@ -26,7 +26,7 @@
+ #define INFOHIGH 270
+ 
+ /* max length of an Info String */
+-#define ISTRLEN 80
++#define ISTRLEN 256
+ 
+ /* baseline of top line of text */
+ #define TOPBASE (36 + penn_height/2 + 4 + 8 + ASCENT)
+--- xvpng.c
++++ xvpng.c
+@@ -31,6 +31,7 @@
+ 
+ #ifdef HAVE_PNG
+ 
++#include "zlib.h"
+ #include "png.h"
+ 
+ /*** Stuff for PNG Dialog box ***/
+@@ -41,7 +42,9 @@
+ #define COMPRESSION   6     /* default zlib compression level, not max
+                                (Z_BEST_COMPRESSION) */
+ 
+-#define HAVE_tRNS  (info_ptr->valid & PNG_INFO_tRNS)
++/* old
++#define HAVE_tRNS  (info_ptr->valid & PNG_INFO_tRNS) */
++#define HAVE_tRNS  png_get_valid(png_ptr,info_ptr,PNG_INFO_tRNS)
+ 
+ #define DWIDE    86
+ #define DHIGH    104
+@@ -444,6 +447,10 @@
+   byte       *p, *png_line;
+   char        software[256];
+   char       *savecmnt;
++  /* for storing values until all are accumulated, so that the image header can be set in full */
++  int         _bit_depth,_color_type,_interlace_type,_compression_type,_filter_type;
++  png_uint_32 _width,_height;
++  png_time    _mod_time;
+ 
+   if ((png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL,
+        png_xv_error, png_xv_warning)) == NULL) {
+@@ -458,7 +465,7 @@
+     FatalError(software);
+   }
+ 
+-  if (setjmp(png_ptr->jmpbuf)) {
++  if (setjmp(png_jmpbuf(png_ptr))) {
+     png_destroy_write_struct(&png_ptr, &info_ptr);
+     return -1;
+   }
+@@ -489,8 +496,8 @@
+     png_set_filter(png_ptr, 0, filter);
+   }
+ 
+-  info_ptr->width = w;
+-  info_ptr->height = h;
++  _width = w;
++  _height = h;
+   if (w <= 0 || h <= 0) {
+     SetISTR(ISTR_WARNING, "%s:  image dimensions out of range (%dx%d)",
+       fbasename, w, h);
+@@ -498,7 +505,7 @@
+     return -1;
+   }
+ 
+-  info_ptr->interlace_type = interCB.val ? 1 : 0;
++  _interlace_type = interCB.val ? PNG_INTERLACE_ADAM7 : PNG_INTERLACE_NONE;
+ 
+   linesize = 0;   /* quiet a compiler warning */
+ 
+@@ -542,40 +549,44 @@
+         png_destroy_write_struct(&png_ptr, &info_ptr);
+         return -1;
+       }
+-      info_ptr->color_type = PNG_COLOR_TYPE_RGB;
+-      info_ptr->bit_depth = 8;
++      _color_type = PNG_COLOR_TYPE_RGB;
++      _bit_depth = 8;
+     } else /* ptype == PIC8 */ {
+       linesize = w;
+-      info_ptr->color_type = PNG_COLOR_TYPE_PALETTE;
++      _color_type = PNG_COLOR_TYPE_PALETTE;
+       if (numuniqcols <= 2)
+-        info_ptr->bit_depth = 1;
++        _bit_depth = 1;
+       else
+       if (numuniqcols <= 4)
+-        info_ptr->bit_depth = 2;
++        _bit_depth = 2;
+       else
+       if (numuniqcols <= 16)
+-        info_ptr->bit_depth = 4;
++        _bit_depth = 4;
+       else
+-        info_ptr->bit_depth = 8;
++        _bit_depth = 8;
+ 
+       for (i = 0; i < numuniqcols; i++) {
+         palette[i].red   = r1[i];
+         palette[i].green = g1[i];
+         palette[i].blue  = b1[i];
+       }
+-      info_ptr->num_palette = numuniqcols;
+-      info_ptr->palette = palette;
++/* cannot find a setter for this, unsure if it is necessary anymore...
+       info_ptr->valid |= PNG_INFO_PLTE;
++*/
++      /* set the header just in case it's needed */
++      png_set_IHDR(png_ptr,info_ptr,_width,_height,_bit_depth,_color_type,
++        _interlace_type,PNG_COMPRESSION_TYPE_DEFAULT,PNG_FILTER_TYPE_DEFAULT);
++      png_set_PLTE(png_ptr,info_ptr,palette,numuniqcols);
+     }
+   }
+ 
+   else if (colorType == F_GREYSCALE || colorType == F_BWDITHER) {
+-    info_ptr->color_type = PNG_COLOR_TYPE_GRAY;
++    _color_type = PNG_COLOR_TYPE_GRAY;
+     if (colorType == F_BWDITHER) {
+       /* shouldn't happen */
+       if (ptype == PIC24) FatalError("PIC24 and B/W Stipple in WritePNG()");
+ 
+-      info_ptr->bit_depth = 1;
++      _bit_depth = 1;
+       if (MONO(r1[0], g1[0], b1[0]) > MONO(r1[1], g1[1], b1[1])) {
+         remap[0] = 1;
+         remap[1] = 0;
+@@ -595,7 +606,7 @@
+           png_destroy_write_struct(&png_ptr, &info_ptr);
+           return -1;
+         }
+-        info_ptr->bit_depth = 8;
++        _bit_depth = 8;
+       }
+       else /* ptype == PIC8 */ {
+         int low_precision;
+@@ -617,7 +628,7 @@
+         for (; i < 256; i++)
+           remap[i]=0;  /* shouldn't be necessary, but... */
+ 
+-        info_ptr->bit_depth = 8;
++        _bit_depth = 8;
+ 
+         /* Note that this fails most of the time because of gamma */
+            /* (and that would be a bug:  GRR FIXME) */
+@@ -636,7 +647,7 @@
+           for (i = 0; i < numuniqcols; i++) {
+             remap[i] &= 0xf;
+           }
+-          info_ptr->bit_depth = 4;
++          _bit_depth = 4;
+ 
+           /* try to adjust to 2-bit precision grayscale */
+ 
+@@ -652,7 +663,7 @@
+           for (i = 0; i < numuniqcols; i++) {
+             remap[i] &= 3;
+           }
+-          info_ptr->bit_depth = 2;
++          _bit_depth = 2;
+ 
+           /* try to adjust to 1-bit precision grayscale */
+ 
+@@ -668,7 +679,7 @@
+           for (i = 0; i < numuniqcols; i++) {
+             remap[i] &= 1;
+           }
+-          info_ptr->bit_depth = 1;
++          _bit_depth = 1;
+         }
+       }
+     }
+@@ -677,6 +688,9 @@
+   else
+     png_error(png_ptr, "Unknown colorstyle in WritePNG");
+ 
++  png_set_IHDR(png_ptr,info_ptr,_width,_height,_bit_depth,_color_type,
++    _interlace_type,PNG_COMPRESSION_TYPE_DEFAULT,PNG_FILTER_TYPE_DEFAULT);
++
+   if ((text = (png_textp)malloc(sizeof(png_text)))) {
+     sprintf(software, "XV %s", REVDATE);
+ 
+@@ -685,20 +699,22 @@
+     text->text = software;
+     text->text_length = strlen(text->text);
+ 
+-    info_ptr->max_text = 1;
+-    info_ptr->num_text = 1;
+-    info_ptr->text = text;
++/* max_text seems to be internal only now, do not set
++    info_ptr->max_text = 1; */
++    png_set_text(png_ptr,info_ptr,text,1);
+   }
+ 
+   Display_Gamma = gDial.val;  /* Save the current gamma for loading */
+ 
+ // GRR FIXME:  add .Xdefaults option to omit writing gamma (size, cumulative errors when editing)--alternatively, modify save box to include "omit" checkbox
+-  info_ptr->gamma = 1.0/gDial.val;
+-  info_ptr->valid |= PNG_INFO_gAMA;
++  png_set_gAMA(png_ptr,info_ptr,1.0/gDial.val);
++/* doesn't seem to be a way to set valid directly anymore, unnecessary maybe.. 
++  info_ptr->valid |= PNG_INFO_gAMA; */
+ 
++/* might need to be png_write_info_before_PLTE() ... */
+   png_write_info(png_ptr, info_ptr);
+ 
+-  if (info_ptr->bit_depth < 8)
++  if (_bit_depth < 8)
+     png_set_packing(png_ptr);
+ 
+   pass=png_set_interlace_handling(png_ptr);
+@@ -711,13 +727,13 @@
+     int j;
+     p = pic;
+     for (j = 0; j < h; ++j) {
+-      if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY) {
++      if (_color_type == PNG_COLOR_TYPE_GRAY) {
+         int k;
+         for (k = 0; k < w; ++k)
+           png_line[k] = ptype==PIC24 ? MONO(p[k*3], p[k*3+1], p[k*3+2]) :
+                                        remap[pc2nc[p[k]]];
+         png_write_row(png_ptr, png_line);
+-      } else if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE) {
++      } else if (_color_type == PNG_COLOR_TYPE_PALETTE) {
+         int k;
+         for (k = 0; k < w; ++k)
+           png_line[k] = pc2nc[p[k]];
+@@ -739,28 +755,31 @@
+         (savecmnt = (char *)malloc((strlen(picComments) + 1)*sizeof(char)))) {
+       png_textp tp;
+       char *comment, *key;
++      int nt;
++      int mt;
+ 
+       strcpy(savecmnt, picComments);
+       key = savecmnt;
++      png_get_text(png_ptr,info_ptr,&tp,&mt); /* to get 'max_text' */
+       tp = text;
+-      info_ptr->num_text = 0;
++      nt = 0;      
+ 
+       comment = strchr(key, ':');
+ 
+       do  {
+         /* Allocate a larger structure for comments if necessary */
+-        if (info_ptr->num_text >= info_ptr->max_text)
++        if (nt >= mt)
+         {
+           if ((tp =
+-              realloc(text, (info_ptr->num_text + 2)*sizeof(png_text))) == NULL)
++              realloc(text, (nt + 2)*sizeof(png_text))) == NULL)
+           {
+             break;
+           }
+           else
+           {
+             text = tp;
+-            tp = &text[info_ptr->num_text];
+-            info_ptr->max_text += 2;
++            tp = &text[nt];
++            mt += 2;
+           }
+         }
+ 
+@@ -810,7 +829,7 @@
+             }
+ 
+             tp->compression = tp->text_length > 640 ? 0 : -1;
+-            info_ptr->num_text++;
++            nt++;
+             tp++;
+           }
+         }
+@@ -834,27 +853,29 @@
+           tp->text = key;
+           tp->text_length = q - key;
+           tp->compression = tp->text_length > 750 ? 0 : -1;
+-          info_ptr->num_text++;
++          nt++;
+           key = NULL;
+         }
+       } while (key && *key);
++      png_set_text(png_ptr,info_ptr,text,nt);
+     }
+     else {
+-      info_ptr->num_text = 0;
++      png_set_text(png_ptr,info_ptr,text,0);
+     }
+   }
+-  info_ptr->text = text;
+ 
+-  png_convert_from_time_t(&(info_ptr->mod_time), time(NULL));
+-  info_ptr->valid |= PNG_INFO_tIME;
++  png_convert_from_time_t(&_mod_time, time(NULL));
++  png_set_tIME(png_ptr,info_ptr,&_mod_time);
++/* dunno how to set validity
++  info_ptr->valid |= PNG_INFO_tIME; */
+ 
+   png_write_end(png_ptr, info_ptr);
+   fflush(fp);   /* just in case we core-dump before finishing... */
+ 
+   if (text) {
+     free(text);
+-    /* must do this or png_destroy_write_struct() 0.97+ will free text again: */
+-    info_ptr->text = (png_textp)NULL;
++    /* must do this or png_destroy_write_struct() 0.97+ will free text again: 
++    info_ptr->text = (png_textp)NULL; */
+     if (savecmnt)
+     {
+       free(savecmnt);
+@@ -886,6 +907,14 @@
+   int pass;
+   int gray_to_rgb;
+   size_t commentsize;
++  /* temp storage vars for libpng15 migration */
++  int         _bit_depth,_color_type,_interlace_type,_compression_type,_filter_type,_num_text,_num_palette;
++  png_uint_32 _width,_height;
++  png_timep   _mod_time;
++  double      _gamma;
++  png_textp   _text;
++  png_colorp  _palette;
++  png_color_16p _background;
+ 
+   fbasename = BaseName(fname);
+ 
+@@ -921,7 +950,7 @@
+     FatalError("malloc failure in LoadPNG");
+   }
+ 
+-  if (setjmp(png_ptr->jmpbuf)) {
++  if (setjmp(png_jmpbuf(png_ptr))) {
+     fclose(fp);
+     png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL);
+     if (!read_anything) {
+@@ -945,8 +974,10 @@
+ #endif
+   png_read_info(png_ptr, info_ptr);
+ 
+-  pinfo->w = pinfo->normw = info_ptr->width;
+-  pinfo->h = pinfo->normh = info_ptr->height;
++  png_get_IHDR(png_ptr,info_ptr,&_width,&_height,&_bit_depth,&_color_type,&_interlace_type,NULL,NULL);
++
++  pinfo->w = pinfo->normw = _width;
++  pinfo->h = pinfo->normh = _height;
+   if (pinfo->w <= 0 || pinfo->h <= 0) {
+     SetISTR(ISTR_WARNING, "%s:  image dimensions out of range (%dx%d)",
+       fbasename, pinfo->w, pinfo->h);
+@@ -957,9 +988,9 @@
+   pinfo->frmType = F_PNG;
+ 
+   sprintf(pinfo->fullInfo, "PNG, %d bit ",
+-          info_ptr->bit_depth * info_ptr->channels);
++          _bit_depth * png_get_channels(png_ptr,info_ptr));
+ 
+-  switch(info_ptr->color_type) {
++  switch(_color_type) {
+     case PNG_COLOR_TYPE_PALETTE:
+       strcat(pinfo->fullInfo, "palette color");
+       break;
+@@ -983,15 +1014,17 @@
+ 
+   sprintf(pinfo->fullInfo + strlen(pinfo->fullInfo),
+ 	  ", %sinterlaced. (%d bytes)",
+-	  info_ptr->interlace_type ? "" : "non-", filesize);
++	  _interlace_type ? "" : "non-", filesize);
+ 
+-  sprintf(pinfo->shrtInfo, "%lux%lu PNG", info_ptr->width, info_ptr->height);
++  sprintf(pinfo->shrtInfo, "%lux%lu PNG", _width, _height);
+ 
+-  if (info_ptr->bit_depth < 8)
++  if (_bit_depth < 8)
+       png_set_packing(png_ptr);
+ 
+-  if (info_ptr->valid & PNG_INFO_gAMA)
+-    png_set_gamma(png_ptr, Display_Gamma, info_ptr->gamma);
++  if (png_get_valid(png_ptr,info_ptr,PNG_INFO_gAMA)) {
++    png_get_gAMA(png_ptr,info_ptr,&_gamma);
++    png_set_gamma(png_ptr, Display_Gamma, _gamma);
++  }
+ /*
+  *else
+  *  png_set_gamma(png_ptr, Display_Gamma, 0.45);
+@@ -1000,7 +1033,7 @@
+   gray_to_rgb = 0;   /* quiet a compiler warning */
+ 
+   if (have_imagebg) {
+-    if (info_ptr->bit_depth == 16) {
++    if (_bit_depth == 16) {
+       my_background.red   = imagebgR;
+       my_background.green = imagebgG;
+       my_background.blue  = imagebgB;
+@@ -1013,8 +1046,8 @@
+     }
+     png_set_background(png_ptr, &my_background, PNG_BACKGROUND_GAMMA_SCREEN,
+                        0, Display_Gamma);
+-    if ((info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA ||
+-         (info_ptr->color_type == PNG_COLOR_TYPE_GRAY && HAVE_tRNS)) &&
++    if ((_color_type == PNG_COLOR_TYPE_GRAY_ALPHA ||
++         (_color_type == PNG_COLOR_TYPE_GRAY && HAVE_tRNS)) &&
+         (imagebgR != imagebgG || imagebgR != imagebgB))  /* i.e., colored bg */
+     {
+       png_set_gray_to_rgb(png_ptr);
+@@ -1022,8 +1055,9 @@
+       gray_to_rgb = 1;
+     }
+   } else {
+-    if (info_ptr->valid & PNG_INFO_bKGD) {
+-      png_set_background(png_ptr, &info_ptr->background,
++    if (png_get_valid(png_ptr,info_ptr,PNG_INFO_bKGD)) {
++      png_get_bKGD(png_ptr,info_ptr,&_background);
++      png_set_background(png_ptr, _background,
+                          PNG_BACKGROUND_GAMMA_FILE, 1, 1.0);
+     } else {
+       my_background.red = my_background.green = my_background.blue =
+@@ -1033,13 +1067,13 @@
+     }
+   }
+ 
+-  if (info_ptr->bit_depth == 16)
++  if (_bit_depth == 16)
+     png_set_strip_16(png_ptr);
+ 
+-  if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY ||
+-      info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
++  if (_color_type == PNG_COLOR_TYPE_GRAY ||
++      _color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
+   {
+-    if (info_ptr->bit_depth == 1)
++    if (_bit_depth == 1)
+       pinfo->colType = F_BWDITHER;
+     else
+       pinfo->colType = F_GREYSCALE;
+@@ -1049,9 +1083,11 @@
+   pass=png_set_interlace_handling(png_ptr);
+ 
+   png_read_update_info(png_ptr, info_ptr);
++  /* get HIDR again just in case the info_ptr changed */
++  png_get_IHDR(png_ptr,info_ptr,&_width,&_height,&_bit_depth,&_color_type,&_interlace_type,NULL,NULL);
+ 
+-  if (info_ptr->color_type == PNG_COLOR_TYPE_RGB ||
+-     info_ptr->color_type == PNG_COLOR_TYPE_RGB_ALPHA || gray_to_rgb)
++  if (_color_type == PNG_COLOR_TYPE_RGB ||
++     _color_type == PNG_COLOR_TYPE_RGB_ALPHA || gray_to_rgb)
+   {
+     linesize = 3 * pinfo->w;
+     if (linesize/3 < pinfo->w) {   /* know pinfo->w > 0 (see above) */
+@@ -1065,16 +1101,17 @@
+   } else {
+     linesize = pinfo->w;
+     pinfo->type = PIC8;
+-    if (info_ptr->color_type == PNG_COLOR_TYPE_GRAY ||
+-       info_ptr->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) {
++    if (_color_type == PNG_COLOR_TYPE_GRAY ||
++       _color_type == PNG_COLOR_TYPE_GRAY_ALPHA) {
+       for (i = 0; i < 256; i++)
+         pinfo->r[i] = pinfo->g[i] = pinfo->b[i] = i;
+     } else {
+       pinfo->colType = F_FULLCOLOR;
+-      for (i = 0; i < info_ptr->num_palette; i++) {
+-        pinfo->r[i] = info_ptr->palette[i].red;
+-        pinfo->g[i] = info_ptr->palette[i].green;
+-        pinfo->b[i] = info_ptr->palette[i].blue;
++      png_get_PLTE(png_ptr,info_ptr,&_palette,&_num_palette);
++      for (i = 0; i < _num_palette; i++) {
++        pinfo->r[i] = _palette[i].red;
++        pinfo->g[i] = _palette[i].green;
++        pinfo->b[i] = _palette[i].blue;
+       }
+     }
+   }
+@@ -1092,7 +1129,7 @@
+     png_error(png_ptr, "can't allocate space for PNG image");
+   }
+ 
+-  png_start_read_image(png_ptr);
++  /*png_start_read_image(png_ptr); -- causes a warning and seems to be unnecessary */
+ 
+   for (i = 0; i < pass; i++) {
+     byte *p = pinfo->pic;
+@@ -1106,22 +1143,23 @@
+ 
+   png_read_end(png_ptr, info_ptr);
+ 
+-  if (info_ptr->num_text > 0) {
++  png_get_text(png_ptr,info_ptr,&_text,&_num_text);
++  if (_num_text > 0) {
+     commentsize = 1;
+ 
+-    for (i = 0; i < info_ptr->num_text; i++)
+-      commentsize += strlen(info_ptr->text[i].key) + 1 +
+-                     info_ptr->text[i].text_length + 2;
++    for (i = 0; i < _num_text; i++)
++      commentsize += strlen(_text[i].key) + 1 +
++                     _text[i].text_length + 2;
+ 
+     if ((pinfo->comment = malloc(commentsize)) == NULL) {
+       png_warning(png_ptr,"can't allocate comment string");
+     }
+     else {
+       pinfo->comment[0] = '\0';
+-      for (i = 0; i < info_ptr->num_text; i++) {
+-        strcat(pinfo->comment, info_ptr->text[i].key);
++      for (i = 0; i < _num_text; i++) {
++        strcat(pinfo->comment, _text[i].key);
+         strcat(pinfo->comment, "::");
+-        strcat(pinfo->comment, info_ptr->text[i].text);
++        strncat(pinfo->comment, _text[i].text, _text[i].text_length);
+         strcat(pinfo->comment, "\n");
+       }
+     }
+@@ -1143,7 +1181,7 @@
+ {
+   SetISTR(ISTR_WARNING,"%s:  libpng error: %s", fbasename, message);
+ 
+-  longjmp(png_ptr->jmpbuf, 1);
++  longjmp(png_jmpbuf(png_ptr), 1);
+ }
+ 
+ 

diff --git a/media-gfx/xv/xv-3.10a-r17.ebuild b/media-gfx/xv/xv-3.10a-r17.ebuild
new file mode 100644
index 0000000..62b9afb
--- /dev/null
+++ b/media-gfx/xv/xv-3.10a-r17.ebuild
@@ -0,0 +1,92 @@
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+inherit eutils flag-o-matic
+
+JUMBOV=20070520
+DESCRIPTION="An interactive image manipulation program that supports a wide variety of image formats"
+HOMEPAGE="http://www.trilon.com/xv/index.html http://www.sonic.net/~roelofs/greg_xv.html"
+SRC_URI="mirror://sourceforge/png-mng/${P}-jumbo-patches-${JUMBOV}.tar.gz
+	ftp://ftp.cis.upenn.edu/pub/xv/${P}.tar.gz
+	mirror://gentoo/${P}.png.bz2"
+
+LICENSE="xv"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd ~x86-freebsd ~amd64-linux ~x86-linux ~ppc-macos"
+IUSE="jpeg tiff png"
+
+DEPEND="x11-libs/libXt
+	jpeg? ( virtual/jpeg )
+	tiff? ( media-libs/tiff:0 )
+	png? ( >=media-libs/libpng-1.2:0= sys-libs/zlib )"
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+	# Apply the jumbo patch
+	epatch "${WORKDIR}"/${P}-jumbo-fix-enh-patch-${JUMBOV}.txt
+
+	# OSX and BSD xv.h define patches
+	epatch "${FILESDIR}"/${P}-osx-bsd-${JUMBOV}.patch
+
+	# OSX malloc patch
+	epatch "${FILESDIR}"/${P}-vdcomp-osx-${JUMBOV}.patch
+
+	# Disable JP2K (i.e. use system JPEG libs)
+	epatch "${FILESDIR}"/${P}-disable-jp2k-${JUMBOV}.patch
+
+	# Fix -wait option (do not rely on obsolete CLK_TCK)
+	epatch "${FILESDIR}"/${P}-fix-wait-${JUMBOV}.patch
+
+	# Use LDFLAGS on link lines
+	epatch "${FILESDIR}"/${P}-add-ldflags-${JUMBOV}.patch
+
+	epatch "${FILESDIR}"/${P}-libpng15-r1.patch
+
+	# Link with various image libraries depending on use flags
+	IMAGE_LIBS=""
+	use jpeg && IMAGE_LIBS="${IMAGE_LIBS} -ljpeg"
+	use png && IMAGE_LIBS="${IMAGE_LIBS} -lz -lpng"
+	use tiff && IMAGE_LIBS="${IMAGE_LIBS} -ltiff"
+
+	sed -i \
+		-e 's/\(^JPEG.*\)/#\1/g' \
+		-e 's/\(^PNG.*\)/#\1/g' \
+		-e 's/\(^TIFF.*\)/#\1/g' \
+		-e "s/\(^LIBS = .*\)/\1${IMAGE_LIBS}/g" Makefile
+
+	# /usr/bin/gzip => /bin/gzip
+	sed -i -e 's#/usr\(/bin/gzip\)#'"${EPREFIX}"'\1#g' config.h
+
+	# Fix installation of ps docs
+	sed -i -e 's#$(DESTDIR)$(LIBDIR)#$(LIBDIR)#g' Makefile
+}
+
+src_compile() {
+	append-flags -DUSE_GETCWD -DLINUX -DUSLEEP
+	use jpeg && append-flags -DDOJPEG
+	use png && append-flags -DDOPNG
+	use tiff && append-flags -DDOTIFF -DUSE_TILED_TIFF_BOTLEFT_FIX
+
+	emake \
+		CC="$(tc-getCC)" CCOPTS="${CFLAGS}" LDFLAGS="${LDFLAGS}" \
+		PREFIX="${EPREFIX}"/usr \
+		DOCDIR="${EPREFIX}/usr/share/doc/${PF}" \
+		LIBDIR="${T}"
+}
+
+src_install() {
+	dodir /usr/bin
+	dodir /usr/share/man/man1
+
+	emake \
+		DESTDIR="${D}" \
+		PREFIX="${EPREFIX}"/usr \
+		DOCDIR="${EPREFIX}/usr/share/doc/${PF}" \
+		LIBDIR="${T}" install
+
+	dodoc CHANGELOG BUGS IDEAS
+	newicon "${WORKDIR}"/${P}.png ${PN}.png
+	make_desktop_entry xv "" "" "Graphics;Viewer"
+}


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: media-gfx/xv/, media-gfx/xv/files/
@ 2016-01-25 10:57 David Seifert
  0 siblings, 0 replies; 3+ messages in thread
From: David Seifert @ 2016-01-25 10:57 UTC (permalink / raw
  To: gentoo-commits

commit:     f9a6f7546f212a395c157b35926e8a1dc4556c4a
Author:     David Seifert <soap <AT> gentoo <DOT> org>
AuthorDate: Mon Jan 25 10:57:17 2016 +0000
Commit:     David Seifert <soap <AT> gentoo <DOT> org>
CommitDate: Mon Jan 25 10:57:31 2016 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f9a6f754

media-gfx/xv: Fix -Werror=format-security errors

Gentoo-Bug: 542134
* EAPI=6
* Amended all patches to be compatible with -p1

Package-Manager: portage-2.2.27

 .../xv/files/xv-3.10a-disable-jp2k-20070520.patch  |  4 +-
 media-gfx/xv/files/xv-3.10a-libpng15-r1.patch      |  8 +-
 media-gfx/xv/files/xv-3.10a-osx-bsd-20070520.patch |  4 +-
 .../xv/files/xv-3.10a-vdcomp-osx-20070520.patch    |  4 +-
 media-gfx/xv/files/xv-3.10a-wformat-security.patch | 19 +++++
 media-gfx/xv/xv-3.10a-r18.ebuild                   | 86 ++++++++++++++++++++++
 6 files changed, 115 insertions(+), 10 deletions(-)

diff --git a/media-gfx/xv/files/xv-3.10a-disable-jp2k-20070520.patch b/media-gfx/xv/files/xv-3.10a-disable-jp2k-20070520.patch
index 41d3023..7e42484 100644
--- a/media-gfx/xv/files/xv-3.10a-disable-jp2k-20070520.patch
+++ b/media-gfx/xv/files/xv-3.10a-disable-jp2k-20070520.patch
@@ -1,5 +1,5 @@
---- Makefile~	2007-06-24 15:41:58 -0600
-+++ Makefile	2007-06-24 15:42:43 -0600
+--- xv-3.10a/Makefile~	2007-06-24 15:41:58 -0600
++++ xv-3.10a/Makefile	2007-06-24 15:42:43 -0600
 @@ -176,16 +176,16 @@
  ### if, for whatever reason, you're unable to get the JasPer JPEG-2000 library
  ### to compile on your machine, *COMMENT OUT* the following lines

diff --git a/media-gfx/xv/files/xv-3.10a-libpng15-r1.patch b/media-gfx/xv/files/xv-3.10a-libpng15-r1.patch
index b3eaeef..9905c4b 100644
--- a/media-gfx/xv/files/xv-3.10a-libpng15-r1.patch
+++ b/media-gfx/xv/files/xv-3.10a-libpng15-r1.patch
@@ -1,5 +1,5 @@
---- xvinfo.c
-+++ xvinfo.c
+--- xv-3.10a/xvinfo.c
++++ xv-3.10a/xvinfo.c
 @@ -26,7 +26,7 @@
  #define INFOHIGH 270
  
@@ -9,8 +9,8 @@
  
  /* baseline of top line of text */
  #define TOPBASE (36 + penn_height/2 + 4 + 8 + ASCENT)
---- xvpng.c
-+++ xvpng.c
+--- xv-3.10a/xvpng.c
++++ xv-3.10a/xvpng.c
 @@ -31,6 +31,7 @@
  
  #ifdef HAVE_PNG

diff --git a/media-gfx/xv/files/xv-3.10a-osx-bsd-20070520.patch b/media-gfx/xv/files/xv-3.10a-osx-bsd-20070520.patch
index 59a768e..ecafd1d 100644
--- a/media-gfx/xv/files/xv-3.10a-osx-bsd-20070520.patch
+++ b/media-gfx/xv/files/xv-3.10a-osx-bsd-20070520.patch
@@ -1,5 +1,5 @@
---- xv.h~	2007-06-24 14:30:42 -0600
-+++ xv.h	2007-06-24 14:42:04 -0600
+--- xv-3.10a/xv.h~	2007-06-24 14:30:42 -0600
++++ xv-3.10a/xv.h	2007-06-24 14:42:04 -0600
 @@ -158,7 +158,7 @@
  
  #ifndef VMS

diff --git a/media-gfx/xv/files/xv-3.10a-vdcomp-osx-20070520.patch b/media-gfx/xv/files/xv-3.10a-vdcomp-osx-20070520.patch
index 06e9f8a..2c82b1a 100644
--- a/media-gfx/xv/files/xv-3.10a-vdcomp-osx-20070520.patch
+++ b/media-gfx/xv/files/xv-3.10a-vdcomp-osx-20070520.patch
@@ -1,5 +1,5 @@
---- vdcomp.c~	2007-06-24 14:30:42 -0600
-+++ vdcomp.c	2007-06-24 14:48:12 -0600
+--- xv-3.10a/vdcomp.c~	2007-06-24 14:30:42 -0600
++++ xv-3.10a/vdcomp.c	2007-06-24 14:48:12 -0600
 @@ -123,6 +123,8 @@
  
  #    if defined(hp300) || defined(hp800) || defined(NeXT)

diff --git a/media-gfx/xv/files/xv-3.10a-wformat-security.patch b/media-gfx/xv/files/xv-3.10a-wformat-security.patch
new file mode 100644
index 0000000..34d2c19
--- /dev/null
+++ b/media-gfx/xv/files/xv-3.10a-wformat-security.patch
@@ -0,0 +1,19 @@
+Fix errors caused by -Wformat -Werror=format-security
+https://bugs.gentoo.org/show_bug.cgi?id=542134
+
+* xvpbm.c:888:4: error: format not a string literal and no format arguments [-Werror=format-security]
+*     if (*pix) fprintf(fp,str1);
+
+--- xv-3.10a/xvpbm.c
++++ xv-3.10a/xvpbm.c
+@@ -885,8 +885,8 @@
+ 	  }
+ 	}
+ 	else {
+-	  if (*pix) fprintf(fp,str1);
+-	       else fprintf(fp,str0);
++	  if (*pix) fprintf(fp,"%s",str1);
++	       else fprintf(fp,"%s",str0);
+ 	  len+=2;
+ 	  if (len>68) { fprintf(fp,"\n"); len=0; }
+ 	}

diff --git a/media-gfx/xv/xv-3.10a-r18.ebuild b/media-gfx/xv/xv-3.10a-r18.ebuild
new file mode 100644
index 0000000..795224b
--- /dev/null
+++ b/media-gfx/xv/xv-3.10a-r18.ebuild
@@ -0,0 +1,86 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+inherit eutils flag-o-matic
+
+JUMBOV=20070520
+DESCRIPTION="Interactive image manipulation program supporting a wide variety of formats"
+HOMEPAGE="http://www.trilon.com/xv/index.html http://www.sonic.net/~roelofs/greg_xv.html"
+SRC_URI="mirror://sourceforge/png-mng/${P}-jumbo-patches-${JUMBOV}.tar.gz
+	ftp://ftp.cis.upenn.edu/pub/xv/${P}.tar.gz
+	mirror://gentoo/${P}.png.bz2"
+
+LICENSE="xv"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd ~x86-freebsd ~amd64-linux ~x86-linux ~ppc-macos"
+IUSE="jpeg tiff png"
+
+DEPEND="x11-libs/libXt
+	jpeg? ( virtual/jpeg:0 )
+	tiff? ( media-libs/tiff:0 )
+	png? ( >=media-libs/libpng-1.2:0= sys-libs/zlib )"
+RDEPEND="${DEPEND}"
+
+PATCHES=(
+	"${WORKDIR}/${P}-jumbo-fix-enh-patch-${JUMBOV}.txt"
+	"${FILESDIR}/${P}-osx-bsd-${JUMBOV}.patch"
+	"${FILESDIR}/${P}-vdcomp-osx-${JUMBOV}.patch"
+	"${FILESDIR}/${P}-disable-jp2k-${JUMBOV}.patch"
+	"${FILESDIR}/${P}-fix-wait-${JUMBOV}.patch"
+	"${FILESDIR}/${P}-add-ldflags-${JUMBOV}.patch"
+	"${FILESDIR}/${P}-libpng15-r1.patch"
+	"${FILESDIR}/${P}-wformat-security.patch"
+)
+
+src_prepare() {
+	default
+
+	append-cppflags -DUSE_GETCWD -DLINUX -DUSLEEP
+	use jpeg && append-cppflags -DDOJPEG
+	use png && append-cppflags -DDOPNG
+	use tiff && append-cppflags -DDOTIFF -DUSE_TILED_TIFF_BOTLEFT_FIX
+
+	# Link with various image libraries depending on use flags
+	IMAGE_LIBS=""
+	use jpeg && IMAGE_LIBS="${IMAGE_LIBS} -ljpeg"
+	use png && IMAGE_LIBS="${IMAGE_LIBS} -lz -lpng"
+	use tiff && IMAGE_LIBS="${IMAGE_LIBS} -ltiff"
+
+	sed -i \
+		-e 's/\(^JPEG.*\)/#\1/g' \
+		-e 's/\(^PNG.*\)/#\1/g' \
+		-e 's/\(^TIFF.*\)/#\1/g' \
+		-e "s/\(^LIBS = .*\)/\1${IMAGE_LIBS}/g" Makefile || die
+
+	# /usr/bin/gzip => /bin/gzip
+	sed -i -e 's#/usr\(/bin/gzip\)#'"${EPREFIX}"'\1#g' config.h || die
+
+	# Fix installation of ps docs
+	sed -i -e 's#$(DESTDIR)$(LIBDIR)#$(LIBDIR)#g' Makefile || die
+}
+
+src_compile() {
+	emake \
+		CC="$(tc-getCC)" CCOPTS="${CFLAGS}" LDFLAGS="${LDFLAGS}" \
+		PREFIX="${EPREFIX}"/usr \
+		DOCDIR="${EPREFIX}/usr/share/doc/${PF}" \
+		LIBDIR="${T}"
+}
+
+src_install() {
+	dodir /usr/bin
+	dodir /usr/share/man/man1
+
+	emake \
+		DESTDIR="${D}" \
+		PREFIX="${EPREFIX}"/usr \
+		DOCDIR="${EPREFIX}/usr/share/doc/${PF}" \
+		LIBDIR="${T}" install
+
+	dodoc CHANGELOG BUGS IDEAS
+	newicon "${WORKDIR}"/${P}.png ${PN}.png
+	make_desktop_entry xv "" "" "Graphics;Viewer"
+}


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [gentoo-commits] repo/gentoo:master commit in: media-gfx/xv/, media-gfx/xv/files/
@ 2024-07-17 17:07 Ben Kohler
  0 siblings, 0 replies; 3+ messages in thread
From: Ben Kohler @ 2024-07-17 17:07 UTC (permalink / raw
  To: gentoo-commits

commit:     bb7020062ff46921ea42b2bae4dca18992ba4849
Author:     Ben Kohler <bkohler <AT> gentoo <DOT> org>
AuthorDate: Wed Jul 17 17:07:00 2024 +0000
Commit:     Ben Kohler <bkohler <AT> gentoo <DOT> org>
CommitDate: Wed Jul 17 17:07:46 2024 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=bb702006

media-gfx/xv: add 5.2.0

Closes: https://bugs.gentoo.org/936218
Signed-off-by: Ben Kohler <bkohler <AT> gentoo.org>

 media-gfx/xv/Manifest                     |  1 +
 media-gfx/xv/files/xv-5.2.0-osx-bsd.patch | 51 +++++++++++++++++++++++++++++
 media-gfx/xv/xv-5.2.0.ebuild              | 53 +++++++++++++++++++++++++++++++
 3 files changed, 105 insertions(+)

diff --git a/media-gfx/xv/Manifest b/media-gfx/xv/Manifest
index 0dba1fc6c996..2b0fc9216a39 100644
--- a/media-gfx/xv/Manifest
+++ b/media-gfx/xv/Manifest
@@ -1,3 +1,4 @@
 DIST xv-3.10a-jumbo-patches-20070520.tar.gz 1363802 BLAKE2B 1a9f77b950dfa817aa861d9b2b6898d6e378b4a61a57c746a8822793a8e11e54165faf859e073ef99c9fbea5aa0c4c8caa4608ef03f553003b779a4bf59c3ab6 SHA512 e2ac5a3b4d743bf142c162b00815dd9d8dcaf345d0649016b2c6441fe2329879471b19453808e677c1a0b8eeb3468295dba160b1f30eacb2a7a9d8524ce03e75
 DIST xv-3.10a.png.bz2 3082 BLAKE2B 05f56053fc0a77bba155db306ae181f5404bced3b2c22a33b3a0a0750b84461ffec98934d3dbabd764fbb6ec95ce2851f4cf3959682a315fe6e6653cbaaa5ae4 SHA512 41e81c34e74a034292c2a8f525d1452614a2b42e980a1a2c93e3fcf990db528853d633496815e5fb2c897a780a2da171af590f436e2c7ef181eea00eb6922e9b
 DIST xv-3.10a.tar.gz 2259124 BLAKE2B 42cea578a879c819be8f42ffb1d247643904d8b462a4d6faa208185e49566798605c89006cbc190725fa6356b87da3375cf04d2ba86b559419cf8f7471c867e5 SHA512 5b8c5890503e2796638921cabae8967e458c73e332acea8561b1025ed13c771bc44c0e309b4592852e33726eeaa9784f933d1312073b0ba2e0b8c0cedabcaa3f
+DIST xv-5.2.0.tar.gz 4785784 BLAKE2B 46dc637cbbeabfe1c034c34e73040de6efebbf5f423fe429028ebfeefd2fce5af0fdaff1c52db4807b8eb88de89dae6b7f0e2c8a3522a3d9b103d5777783a52d SHA512 0af7ff6db152be849c27be9fba116513595deeca9e3eb42ec6fd74a4756d0c525b55a40de49aa37dd5d2ea4a29e6d644c8c4c709f0e1ec0a98cbc0ae7221b110

diff --git a/media-gfx/xv/files/xv-5.2.0-osx-bsd.patch b/media-gfx/xv/files/xv-5.2.0-osx-bsd.patch
new file mode 100644
index 000000000000..27059386446d
--- /dev/null
+++ b/media-gfx/xv/files/xv-5.2.0-osx-bsd.patch
@@ -0,0 +1,51 @@
+diff '--color=auto' -ur a/src/vdcomp.c b/src/vdcomp.c
+--- a/src/vdcomp.c	2024-07-17 09:37:04.957769272 -0500
++++ b/src/vdcomp.c	2024-07-17 09:44:30.582594953 -0500
+@@ -130,6 +130,8 @@
+ 
+ #    if defined(hp300) || defined(hp800) || defined(NeXT)
+ #      include <sys/malloc.h>    /* it's in "sys" on HPs and NeXT */
++#    elif defined(__APPLE__)
++#      include <malloc/malloc.h>
+ #    else
+ #      include <malloc.h>        /* FIXME: should explicitly list systems that NEED this, not everyone that doesn't */
+ #    endif
+diff '--color=auto' -ur a/src/xv.h b/src/xv.h
+--- a/src/xv.h	2024-07-17 09:37:04.957769272 -0500
++++ b/src/xv.h	2024-07-17 09:41:42.912041683 -0500
+@@ -183,7 +183,7 @@
+ 
+ #ifndef VMS
+ #  include <errno.h>
+-#  ifndef __NetBSD__
++#  if !defined(__NetBSD__) && !defined(__FreeBSD__) && !defined(__APPLE__)
+ #    if !(defined(__GLIBC__) && __GLIBC__ >= 2) && !defined(__OpenBSD__)
+        extern int   errno;         /* SHOULD be in errno.h, but often isn't */
+ #      ifndef XV_HAVE_SYSERRLISTDECL
+@@ -199,7 +199,7 @@
+ #  ifdef VMS
+ #    define ERRSTR(x) strerror(x, vaxc$errno)
+ #  else
+-#    if defined(__BEOS__) || defined(__linux__) /* or all modern/glibc systems? */
++#    if defined(__BEOS__) || defined(__linux__) || defined(__APPLE__) /* or all modern/glibc systems? */
+ #      define ERRSTR(x) strerror(x)
+ #    else
+ #      define ERRSTR(x) sys_errlist[x]
+@@ -236,6 +236,8 @@
+ #ifdef NEED_MALLOC_H
+ #  if defined(hp300) || defined(hp800) || defined(NeXT)
+ #    include <sys/malloc.h>    /* it's in "sys" on HPs and NeXT */
++#  elif defined(__APPLE__)
++#   include <malloc/malloc.h>
+ #  else
+ #    include <malloc.h>
+ #  endif
+@@ -399,7 +401,7 @@
+  *                them later. */
+ #ifndef VMS       /* VMS hates multi-line definitions */
+ #  if defined(__linux__) || defined(__OpenBSD__) || defined(__NetBSD__) || \
+-      defined(__bsdi__)
++      defined(__FreeBSD__) || defined(__bsdi__) || defined(__APPLE__)
+ #    ifndef USE_MKSTEMP
+ #      define USE_MKSTEMP       /* use 'mkstemp()' instead of 'mktemp()' */
+ #    endif                      /* >> SECURITY ISSUE << */

diff --git a/media-gfx/xv/xv-5.2.0.ebuild b/media-gfx/xv/xv-5.2.0.ebuild
new file mode 100644
index 000000000000..80ce9689509c
--- /dev/null
+++ b/media-gfx/xv/xv-5.2.0.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake desktop
+
+JUMBOV=20070520
+DESCRIPTION="Interactive image manipulation program supporting a wide variety of formats"
+HOMEPAGE="http://www.trilon.com/xv/index.html http://www.sonic.net/~roelofs/greg_xv.html"
+SRC_URI="https://github.com/jasper-software/xv/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz
+	mirror://gentoo/xv-3.10a.png.bz2"
+
+LICENSE="xv"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos"
+IUSE="jpeg tiff png webp"
+
+DEPEND="
+	x11-libs/libXt
+	jpeg? ( media-libs/libjpeg-turbo:= )
+	tiff? ( media-libs/tiff:= )
+	png? (
+		>=media-libs/libpng-1.2:=
+		sys-libs/zlib
+	)
+	webp? ( media-libs/libwebp:= )
+"
+RDEPEND="${DEPEND}"
+
+PATCHES=(
+	"${FILESDIR}/xv-5.2.0-osx-bsd.patch"
+)
+
+src_configure() {
+	local mycmakeargs=(
+		-DCMAKE_INSTALL_SYSCONFDIR="${EPREFIX}/etc"
+		-DXV_ENABLE_JPEG=$(usex jpeg)
+		-DXV_ENABLE_JP2K=OFF
+		-DXV_ENABLE_PNG=$(usex png)
+		-DXV_ENABLE_TIFF=$(usex tiff)
+		-DXV_ENABLE_WEBP=$(usex webp)
+		)
+
+	cmake_src_configure
+}
+
+src_install() {
+	cmake_src_install
+
+	newicon "${WORKDIR}"/xv-3.10a.png ${PN}.png
+	make_desktop_entry xv "" "" "Graphics;Viewer"
+}


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2024-07-17 17:07 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-01-25 10:57 [gentoo-commits] repo/gentoo:master commit in: media-gfx/xv/, media-gfx/xv/files/ David Seifert
  -- strict thread matches above, loose matches on Subject: below --
2024-07-17 17:07 Ben Kohler
2015-11-08 11:04 Pacho Ramos

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox