diff options
-rw-r--r-- | media-tv/xbmc/Manifest | 6 | ||||
-rw-r--r-- | media-tv/xbmc/files/xbmc-11.0_beta3-libpng1.5-zenkibou-github.patch | 618 | ||||
-rw-r--r-- | media-tv/xbmc/files/xbmc-11.0_beta3-nomysql.patch | 171 | ||||
-rw-r--r-- | media-tv/xbmc/xbmc-11.0_beta2.ebuild | 1 | ||||
-rw-r--r-- | media-tv/xbmc/xbmc-11.0_beta3.ebuild | 225 |
5 files changed, 1019 insertions, 2 deletions
diff --git a/media-tv/xbmc/Manifest b/media-tv/xbmc/Manifest index 0ffb531..f6c9861 100644 --- a/media-tv/xbmc/Manifest +++ b/media-tv/xbmc/Manifest @@ -4,7 +4,11 @@ AUX xbmc-10.1-headers.patch 294 RMD160 74536be4a5e3b939c6360bbc715f30e08226af46 AUX xbmc-10.1-libpng-1.5.patch 19253 RMD160 1488504816e668fceb1c3f762738864ea81fa940 SHA1 06e90834bc665eabc3f4e587d551b93af87c1ba5 SHA256 1a0985b91ee9862a538a43689d005dc88d49bf5a70d917896fb69ee416369ff7 AUX xbmc-11.0_beta2-libpng1.5-zenkibou-github.patch 19397 RMD160 9713ef4f233a7790fe143157e1cb08f05a186433 SHA1 a82050f8bab6bcd2dc8ab9f44f39a0507dbf00d9 SHA256 ec14123fe568746b4b16f8d7dde4b4c4b4db3a07ea20273e1fea64604fd6d23c AUX xbmc-11.0_beta2-nomysql.patch 5115 RMD160 495d073a700d655990ca04376566ec4342f50892 SHA1 a2bc28817f63fde18a8dfc06c434bf109969d26a SHA256 703ddaec184c5abcc3a7c47111a3ae91955be351c2087bdca85de6fb19833b0b +AUX xbmc-11.0_beta3-libpng1.5-zenkibou-github.patch 19397 RMD160 9713ef4f233a7790fe143157e1cb08f05a186433 SHA1 a82050f8bab6bcd2dc8ab9f44f39a0507dbf00d9 SHA256 ec14123fe568746b4b16f8d7dde4b4c4b4db3a07ea20273e1fea64604fd6d23c +AUX xbmc-11.0_beta3-nomysql.patch 5115 RMD160 495d073a700d655990ca04376566ec4342f50892 SHA1 a2bc28817f63fde18a8dfc06c434bf109969d26a SHA256 703ddaec184c5abcc3a7c47111a3ae91955be351c2087bdca85de6fb19833b0b DIST xbmc-11.0-Eden_beta2.tar.gz 56577092 RMD160 4970a097a5a939bcc5d2d120b0d01ed4b95cb828 SHA1 1da6a2e1194bd4ed7e1e04ffccd0b5f92c40e734 SHA256 1f87e04b0444bb3587f055ae1b9d86e3f2fbf4284caeab8bc393e36e0e4c2ec6 -EBUILD xbmc-11.0_beta2.ebuild 5465 RMD160 e334e71e4e56096dd1dbf3bf1f71f205b819141f SHA1 160bde3cc4d11fa39fdef8e2d3cea7565e51faec SHA256 717d74046e10d29d09e2fe5a829996e8cdc3328854b20277e9f1d07740a820b8 +DIST xbmc-11.0-Eden_beta3.tar.gz 56614229 RMD160 9c689b32479a7f8c53de2df51d1cf2bb7e1a1158 SHA1 c619d785bcc995363e637c0cf0f3cd4e63efef60 SHA256 30ce58a2f4a2c08b125ce0965675a0dd94ed16c945f4861a3198552f76875024 +EBUILD xbmc-11.0_beta2.ebuild 5450 RMD160 1ba7532c92ceaa2d7ecce1a287ade6632cea545e SHA1 99ef43afe710d5b0b4799b5666e5fcba4ed1ec19 SHA256 7ab35569a661e7974dc2021f6a90c23b23087205663d3c206a23c463e891839e +EBUILD xbmc-11.0_beta3.ebuild 5630 RMD160 dab1e8587dbf42568ab78184bade06e4f4e1d221 SHA1 737ffac9627f1d266731d16ffe7fd62f7322a96c SHA256 070837218145946c79b5871c4909a0d3f106beb8751fc74cd2615b9d4252c3fd MISC ChangeLog 16667 RMD160 3b640cf19348af77f56e84b58c93ed39ee1720f2 SHA1 14f559e02386b8f2813143660a459bce3e4e7ef5 SHA256 9e508644e3a058e58f171207024340115fc8c0028a083281318df9376a9ea217 MISC metadata.xml 885 RMD160 67687f56afd352af492d990c0d1f0b35e08c16bc SHA1 6e4782708b211b5b45d039c633e14b324f0d3805 SHA256 8a5abffe9692e42653163891290a3f48c1ae68d73597b56e3fcc8ee60ee22c2b diff --git a/media-tv/xbmc/files/xbmc-11.0_beta3-libpng1.5-zenkibou-github.patch b/media-tv/xbmc/files/xbmc-11.0_beta3-libpng1.5-zenkibou-github.patch new file mode 100644 index 0000000..c065a57 --- /dev/null +++ b/media-tv/xbmc/files/xbmc-11.0_beta3-libpng1.5-zenkibou-github.patch @@ -0,0 +1,618 @@ +From 99d1031476f8ec74d42a54667023746ca4153931 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Damien=20Th=C3=A9bault?= <damien.thebault@gmail.com> +Date: Sat, 14 Jan 2012 23:33:45 +0100 +Subject: [PATCH] Commit cleaned libpng 1.5 support. + +--- + lib/cximage-6.0/CxImage/ximapng.cpp | 258 ++++++++++++++++++++++++++++++++++- + lib/cximage-6.0/CxImage/ximapng.h | 5 + + 2 files changed, 262 insertions(+), 1 deletions(-) + +diff --git a/lib/cximage-6.0/CxImage/ximapng.cpp b/lib/cximage-6.0/CxImage/ximapng.cpp +index f718269..3e0cf73 100644 +--- a/lib/cximage-6.0/CxImage/ximapng.cpp ++++ b/lib/cximage-6.0/CxImage/ximapng.cpp +@@ -15,7 +15,11 @@ + void CxImagePNG::ima_png_error(png_struct *png_ptr, char *message) + { + strcpy(info.szLastError,message); ++#if PNG_LIBPNG_VER > 10499 ++ longjmp(png_jmpbuf(png_ptr), 1); ++#else + longjmp(png_ptr->jmpbuf, 1); ++#endif + } + //////////////////////////////////////////////////////////////////////////////// + #if CXIMAGE_SUPPORT_DECODE +@@ -62,7 +66,11 @@ bool CxImagePNG::Decode(CxFile *hFile) + /* Set error handling if you are using the setjmp/longjmp method (this is + * the normal method of doing things with libpng). REQUIRED unless you + * set up your own error handlers in the png_create_read_struct() earlier. */ ++#if PNG_LIBPNG_VER > 10499 ++ if (setjmp(png_jmpbuf(png_ptr))) { ++#else + if (setjmp(png_ptr->jmpbuf)) { ++#endif + /* Free all of the memory associated with the png_ptr and info_ptr */ + delete [] row_pointers; + png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL); +@@ -76,16 +84,34 @@ bool CxImagePNG::Decode(CxFile *hFile) + /* read the file information */ + png_read_info(png_ptr, info_ptr); + ++#if PNG_LIBPNG_VER > 10499 ++ png_uint_32 _width,_height; ++ int _bit_depth,_color_type,_interlace_type,_compression_type,_filter_type; ++ png_get_IHDR(png_ptr,info_ptr,&_width,&_height,&_bit_depth,&_color_type, ++ &_interlace_type,&_compression_type,&_filter_type); ++ ++ if (info.nEscape == -1){ ++ head.biWidth = _width; ++ head.biHeight= _height; ++ info.dwType = CXIMAGE_FORMAT_PNG; ++ longjmp(png_jmpbuf(png_ptr), 1); ++ } ++#else + if (info.nEscape == -1){ + head.biWidth = info_ptr->width; + head.biHeight= info_ptr->height; + info.dwType = CXIMAGE_FORMAT_PNG; + longjmp(png_ptr->jmpbuf, 1); + } ++#endif + + /* calculate new number of channels */ + int channels=0; ++#if PNG_LIBPNG_VER > 10499 ++ switch(_color_type){ ++#else + switch(info_ptr->color_type){ ++#endif + case PNG_COLOR_TYPE_GRAY: + case PNG_COLOR_TYPE_PALETTE: + channels = 1; +@@ -101,20 +127,49 @@ bool CxImagePNG::Decode(CxFile *hFile) + break; + default: + strcpy(info.szLastError,"unknown PNG color type"); ++#if PNG_LIBPNG_VER > 10499 ++ longjmp(png_jmpbuf(png_ptr), 1); ++#else + longjmp(png_ptr->jmpbuf, 1); ++#endif + } + + //find the right pixel depth used for cximage ++#if PNG_LIBPNG_VER > 10499 ++ int pixel_depth = _bit_depth * png_get_channels(png_ptr,info_ptr); ++#else + int pixel_depth = info_ptr->pixel_depth; ++#endif + if (channels == 1 && pixel_depth>8) pixel_depth=8; + if (channels == 2) pixel_depth=8; + if (channels >= 3) pixel_depth=24; + ++#if PNG_LIBPNG_VER > 10499 ++ if (!Create(_width, _height, pixel_depth, CXIMAGE_FORMAT_PNG)){ ++ longjmp(png_jmpbuf(png_ptr), 1); ++#else + if (!Create(info_ptr->width, info_ptr->height, pixel_depth, CXIMAGE_FORMAT_PNG)){ + longjmp(png_ptr->jmpbuf, 1); ++#endif + } + + /* get metrics */ ++#if PNG_LIBPNG_VER > 10499 ++ png_uint_32 _x_pixels_per_unit,_y_pixels_per_unit; ++ int _phys_unit_type; ++ png_get_pHYs(png_ptr,info_ptr,&_x_pixels_per_unit,&_y_pixels_per_unit,&_phys_unit_type); ++ switch (_phys_unit_type) ++ { ++ case PNG_RESOLUTION_UNKNOWN: ++ SetXDPI(_x_pixels_per_unit); ++ SetYDPI(_y_pixels_per_unit); ++ break; ++ case PNG_RESOLUTION_METER: ++ SetXDPI((long)floor(_x_pixels_per_unit * 254.0 / 10000.0 + 0.5)); ++ SetYDPI((long)floor(_y_pixels_per_unit * 254.0 / 10000.0 + 0.5)); ++ break; ++ } ++#else + switch (info_ptr->phys_unit_type) + { + case PNG_RESOLUTION_UNKNOWN: +@@ -126,46 +181,94 @@ bool CxImagePNG::Decode(CxFile *hFile) + SetYDPI((long)floor(info_ptr->y_pixels_per_unit * 254.0 / 10000.0 + 0.5)); + break; + } ++#endif + ++#if PNG_LIBPNG_VER > 10499 ++ int _num_palette; ++ png_colorp _palette; ++ png_uint_32 _palette_ret; ++ _palette_ret = png_get_PLTE(png_ptr,info_ptr,&_palette,&_num_palette); ++ if (_palette_ret && _num_palette>0){ ++ SetPalette((rgb_color*)_palette,_num_palette); ++ SetClrImportant(_num_palette); ++ } else if (_bit_depth ==2) { //<DP> needed for 2 bpp grayscale PNGs ++#else + if (info_ptr->num_palette>0){ + SetPalette((rgb_color*)info_ptr->palette,info_ptr->num_palette); + SetClrImportant(info_ptr->num_palette); + } else if (info_ptr->bit_depth ==2) { //<DP> needed for 2 bpp grayscale PNGs ++#endif + SetPaletteColor(0,0,0,0); + SetPaletteColor(1,85,85,85); + SetPaletteColor(2,170,170,170); + SetPaletteColor(3,255,255,255); + } else SetGrayPalette(); //<DP> needed for grayscale PNGs + ++#if PNG_LIBPNG_VER > 10499 ++ int nshift = max(0,(_bit_depth>>3)-1)<<3; ++#else + int nshift = max(0,(info_ptr->bit_depth>>3)-1)<<3; ++#endif + ++#if PNG_LIBPNG_VER > 10499 ++ png_bytep _trans_alpha; ++ int _num_trans; ++ png_color_16p _trans_color; ++ png_uint_32 _trans_ret; ++ _trans_ret = png_get_tRNS(png_ptr,info_ptr,&_trans_alpha,&_num_trans,&_trans_color); ++ if (_trans_ret && _num_trans!=0){ //palette transparency ++ if (_num_trans==1){ ++ if (_color_type == PNG_COLOR_TYPE_PALETTE){ ++#else + if (info_ptr->num_trans!=0){ //palette transparency + if (info_ptr->num_trans==1){ + if (info_ptr->color_type == PNG_COLOR_TYPE_PALETTE){ ++#endif ++#if PNG_LIBPNG_VER > 10499 ++ info.nBkgndIndex = _trans_color->index; ++#else + #if PNG_LIBPNG_VER > 10399 + info.nBkgndIndex = info_ptr->trans_color.index; + #else + info.nBkgndIndex = info_ptr->trans_values.index; + #endif ++#endif + } else{ ++#if PNG_LIBPNG_VER > 10499 ++ info.nBkgndIndex = _trans_color->gray>>nshift; ++#else + #if PNG_LIBPNG_VER > 10399 + info.nBkgndIndex = info_ptr->trans_color.gray>>nshift; + #else + info.nBkgndIndex = info_ptr->trans_values.gray>>nshift; + #endif ++#endif + } + } ++#if PNG_LIBPNG_VER > 10499 ++ if (_num_trans>1 && _trans_alpha!=NULL){ ++#else + if (info_ptr->num_trans>1){ ++#endif + RGBQUAD* pal=GetPalette(); + if (pal){ + DWORD ip; ++#if PNG_LIBPNG_VER > 10499 ++ for (ip=0;ip<min(head.biClrUsed,(unsigned long)_num_trans);ip++) ++ pal[ip].rgbReserved=_trans_alpha[ip]; ++#else + for (ip=0;ip<min(head.biClrUsed,(unsigned long)info_ptr->num_trans);ip++) + #if PNG_LIBPNG_VER > 10399 + pal[ip].rgbReserved=info_ptr->trans_alpha[ip]; + #else + pal[ip].rgbReserved=info_ptr->trans[ip]; + #endif ++#endif ++#if PNG_LIBPNG_VER > 10499 ++ for (ip=_num_trans;ip<head.biClrUsed;ip++){ ++#else + for (ip=info_ptr->num_trans;ip<head.biClrUsed;ip++){ ++#endif + pal[ip].rgbReserved=255; + } + info.bAlphaPaletteEnabled=true; +@@ -178,6 +281,11 @@ bool CxImagePNG::Decode(CxFile *hFile) + int num_trans; + png_color_16 *image_background; + if (png_get_tRNS(png_ptr, info_ptr, &trans, &num_trans, &image_background)){ ++#if PNG_LIBPNG_VER > 10499 ++ info.nBkgndColor.rgbRed = (BYTE)(_trans_color->red>>nshift); ++ info.nBkgndColor.rgbGreen = (BYTE)(_trans_color->green>>nshift); ++ info.nBkgndColor.rgbBlue = (BYTE)(_trans_color->blue>>nshift); ++#else + #if PNG_LIBPNG_VER > 10399 + info.nBkgndColor.rgbRed = (BYTE)(info_ptr->trans_color.red>>nshift); + info.nBkgndColor.rgbGreen = (BYTE)(info_ptr->trans_color.green>>nshift); +@@ -187,6 +295,7 @@ bool CxImagePNG::Decode(CxFile *hFile) + info.nBkgndColor.rgbGreen = (BYTE)(info_ptr->trans_values.green>>nshift); + info.nBkgndColor.rgbBlue = (BYTE)(info_ptr->trans_values.blue>>nshift); + #endif ++#endif + info.nBkgndColor.rgbReserved = 0; + info.nBkgndIndex = 0; + } +@@ -202,15 +311,27 @@ bool CxImagePNG::Decode(CxFile *hFile) + } + + // <vho> - flip the RGB pixels to BGR (or RGBA to BGRA) ++#if PNG_LIBPNG_VER > 10499 ++ if (_color_type & PNG_COLOR_MASK_COLOR){ ++#else + if (info_ptr->color_type & PNG_COLOR_MASK_COLOR){ ++#endif + png_set_bgr(png_ptr); + } + + // <vho> - handle cancel ++#if PNG_LIBPNG_VER > 10499 ++ if (info.nEscape) longjmp(png_jmpbuf(png_ptr), 1); ++#else + if (info.nEscape) longjmp(png_ptr->jmpbuf, 1); ++#endif + + // row_bytes is the width x number of channels x (bit-depth / 8) ++#if PNG_LIBPNG_VER > 10499 ++ row_pointers = new BYTE[png_get_rowbytes(png_ptr,info_ptr) + 8]; ++#else + row_pointers = new BYTE[info_ptr->rowbytes + 8]; ++#endif + + // turn on interlace handling + int number_passes = png_set_interlace_handling(png_ptr); +@@ -221,8 +342,16 @@ bool CxImagePNG::Decode(CxFile *hFile) + SetCodecOption(0); + } + ++#if PNG_LIBPNG_VER > 10499 ++ int chan_offset = _bit_depth >> 3; ++#else + int chan_offset = info_ptr->bit_depth >> 3; ++#endif ++#if PNG_LIBPNG_VER > 10499 ++ int pixel_offset = (_bit_depth * png_get_channels(png_ptr,info_ptr)) >> 3; ++#else + int pixel_offset = info_ptr->pixel_depth >> 3; ++#endif + + for (int pass=0; pass < number_passes; pass++) { + iter.Upset(); +@@ -230,7 +359,11 @@ bool CxImagePNG::Decode(CxFile *hFile) + do { + + // <vho> - handle cancel ++#if PNG_LIBPNG_VER > 10499 ++ if (info.nEscape) longjmp(png_jmpbuf(png_ptr), 1); ++#else + if (info.nEscape) longjmp(png_ptr->jmpbuf, 1); ++#endif + + #if CXIMAGE_SUPPORT_ALPHA // <vho> + if (AlphaIsValid()) { +@@ -241,7 +374,11 @@ bool CxImagePNG::Decode(CxFile *hFile) + BYTE* prow= iter.GetRow(ay); + + //recover data from previous scan ++#if PNG_LIBPNG_VER > 10499 ++ if (_interlace_type && pass>0 && pass!=7){ ++#else + if (info_ptr->interlace_type && pass>0 && pass!=7){ ++#endif + for(ax=0;ax<head.biWidth;ax++){ + long px = ax * pixel_offset; + if (channels == 2){ +@@ -278,10 +415,17 @@ bool CxImagePNG::Decode(CxFile *hFile) + #endif // CXIMAGE_SUPPORT_ALPHA // vho + { + //recover data from previous scan ++#if PNG_LIBPNG_VER > 10499 ++ if (_interlace_type && pass>0){ ++ iter.GetRow(row_pointers, png_get_rowbytes(png_ptr,info_ptr)); ++ //re-expand buffer for images with bit depth > 8 ++ if (_bit_depth > 8){ ++#else + if (info_ptr->interlace_type && pass>0){ + iter.GetRow(row_pointers, info_ptr->rowbytes); + //re-expand buffer for images with bit depth > 8 + if (info_ptr->bit_depth > 8){ ++#endif + for(long ax=(head.biWidth*channels-1);ax>=0;ax--) + row_pointers[ax*chan_offset] = row_pointers[ax]; + } +@@ -291,15 +435,27 @@ bool CxImagePNG::Decode(CxFile *hFile) + png_read_row(png_ptr, row_pointers, NULL); + + //shrink 16 bit depth images down to 8 bits ++#if PNG_LIBPNG_VER > 10499 ++ if (_bit_depth > 8){ ++#else + if (info_ptr->bit_depth > 8){ ++#endif + for(long ax=0;ax<(head.biWidth*channels);ax++) + row_pointers[ax] = row_pointers[ax*chan_offset]; + } + + //copy the pixels ++#if PNG_LIBPNG_VER > 10499 ++ iter.SetRow(row_pointers, png_get_rowbytes(png_ptr,info_ptr)); ++#else + iter.SetRow(row_pointers, info_ptr->rowbytes); ++#endif + //<DP> expand 2 bpp images only in the last pass ++#if PNG_LIBPNG_VER > 10499 ++ if (_bit_depth==2 && pass==(number_passes-1)) ++#else + if (info_ptr->bit_depth==2 && pass==(number_passes-1)) ++#endif + expand2to4bpp(iter.GetRow()); + + //go on +@@ -361,9 +517,13 @@ bool CxImagePNG::Encode(CxFile *hFile) + /* Set error handling. REQUIRED if you aren't supplying your own + * error hadnling functions in the png_create_write_struct() call. + */ ++#if PNG_LIBPNG_VER > 10499 ++ if (setjmp(png_jmpbuf(png_ptr))){ ++#else + if (setjmp(png_ptr->jmpbuf)){ + /* If we get here, we had a problem reading the file */ + if (info_ptr->palette) free(info_ptr->palette); ++#endif + png_destroy_write_struct(&png_ptr, (png_infopp)&info_ptr); + cx_throw("Error saving PNG file"); + } +@@ -372,9 +532,23 @@ bool CxImagePNG::Encode(CxFile *hFile) + //png_init_io(png_ptr, hFile); + + // use custom I/O functions +- png_set_write_fn(png_ptr,hFile,/*(png_rw_ptr)*/user_write_data,/*(png_flush_ptr)*/user_flush_data); ++ png_set_write_fn(png_ptr,hFile,/*(png_rw_ptr)*/user_write_data,/*(png_flush_ptr)*/user_flush_data); + + /* set the file information here */ ++#if PNG_LIBPNG_VER > 10499 ++ /* use variables to hold the values so it isnt necessary to png_get them later */ ++ png_uint_32 _width,_height; ++ int _bit_depth,_color_type,_interlace_type,_compression_type,_filter_type; ++ png_byte _channels,_pixel_depth; ++ ++ _width = GetWidth(); ++ _height = GetHeight(); ++ _pixel_depth = (BYTE)GetBpp(); ++ _channels = (GetBpp()>8) ? (BYTE)3: (BYTE)1; ++ _bit_depth = (BYTE)(GetBpp()/_channels); ++ _compression_type = PNG_COMPRESSION_TYPE_DEFAULT; ++ _filter_type = PNG_FILTER_TYPE_DEFAULT; ++#else + info_ptr->width = GetWidth(); + info_ptr->height = GetHeight(); + info_ptr->pixel_depth = (BYTE)GetBpp(); +@@ -382,13 +556,22 @@ bool CxImagePNG::Encode(CxFile *hFile) + info_ptr->bit_depth = (BYTE)(GetBpp()/info_ptr->channels); + info_ptr->compression_type = info_ptr->filter_type = 0; + info_ptr->valid = 0; ++#endif + + switch(GetCodecOption(CXIMAGE_FORMAT_PNG)){ + case 1: ++#if PNG_LIBPNG_VER > 10499 ++ _interlace_type = PNG_INTERLACE_ADAM7; ++#else + info_ptr->interlace_type = PNG_INTERLACE_ADAM7; ++#endif + break; + default: ++#if PNG_LIBPNG_VER > 10499 ++ _interlace_type = PNG_INTERLACE_NONE; ++#else + info_ptr->interlace_type = PNG_INTERLACE_NONE; ++#endif + } + + /* set compression level */ +@@ -398,19 +581,38 @@ bool CxImagePNG::Encode(CxFile *hFile) + + if (GetNumColors()){ + if (bGrayScale){ ++#if PNG_LIBPNG_VER > 10499 ++ _color_type = PNG_COLOR_TYPE_GRAY; ++#else + info_ptr->color_type = PNG_COLOR_TYPE_GRAY; ++#endif + } else { ++#if PNG_LIBPNG_VER > 10499 ++ _color_type = PNG_COLOR_TYPE_PALETTE; ++#else + info_ptr->color_type = PNG_COLOR_TYPE_PALETTE; ++#endif + } + } else { ++#if PNG_LIBPNG_VER > 10499 ++ _color_type = PNG_COLOR_TYPE_RGB; ++#else + info_ptr->color_type = PNG_COLOR_TYPE_RGB; ++#endif + } + #if CXIMAGE_SUPPORT_ALPHA + if (AlphaIsValid()){ ++#if PNG_LIBPNG_VER > 10499 ++ _color_type |= PNG_COLOR_MASK_ALPHA; ++ _channels++; ++ _bit_depth = 8; ++ _pixel_depth += 8; ++#else + info_ptr->color_type |= PNG_COLOR_MASK_ALPHA; + info_ptr->channels++; + info_ptr->bit_depth = 8; + info_ptr->pixel_depth += 8; ++#endif + } + #endif + +@@ -427,14 +629,30 @@ bool CxImagePNG::Encode(CxFile *hFile) + /* set metrics */ + png_set_pHYs(png_ptr, info_ptr, head.biXPelsPerMeter, head.biYPelsPerMeter, PNG_RESOLUTION_METER); + ++#if PNG_LIBPNG_VER > 10499 ++ png_set_IHDR(png_ptr,info_ptr,_width,_height,_bit_depth,_color_type,_interlace_type, ++ _compression_type,_filter_type); ++#else + png_set_IHDR(png_ptr, info_ptr, info_ptr->width, info_ptr->height, info_ptr->bit_depth, + info_ptr->color_type, info_ptr->interlace_type, + PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE); ++#endif + + //<DP> simple transparency + if (info.nBkgndIndex >= 0){ ++#if PNG_LIBPNG_VER <= 10499 + info_ptr->num_trans = 1; + info_ptr->valid |= PNG_INFO_tRNS; ++#endif ++#if PNG_LIBPNG_VER > 10499 ++ png_color_16 _trans_color; ++ _trans_color.index = (BYTE)info.nBkgndIndex; ++ _trans_color.red = tc.rgbRed; ++ _trans_color.green = tc.rgbGreen; ++ _trans_color.blue = tc.rgbBlue; ++ _trans_color.gray = _trans_color.index; ++ png_set_tRNS(png_ptr,info_ptr,(png_bytep)trans,1,&_trans_color); ++#else + #if PNG_LIBPNG_VER > 10399 + info_ptr->trans_alpha = trans; + info_ptr->trans_color.index = (BYTE)info.nBkgndIndex; +@@ -450,6 +668,7 @@ bool CxImagePNG::Encode(CxFile *hFile) + info_ptr->trans_values.blue = tc.rgbBlue; + info_ptr->trans_values.gray = info_ptr->trans_values.index; + #endif ++#endif + + // the transparency indexes start from 0 for non grayscale palette + if (!bGrayScale && head.biClrUsed && info.nBkgndIndex) +@@ -457,10 +676,16 @@ bool CxImagePNG::Encode(CxFile *hFile) + } + + /* set the palette if there is one */ ++#if PNG_LIBPNG_VER > 10499 ++ png_colorp _palette = NULL; ++ if (GetPalette()){ ++ /* png_set_PLTE() will be called once the palette is ready */ ++#else + if (GetPalette()){ + if (!bGrayScale){ + info_ptr->valid |= PNG_INFO_PLTE; + } ++#endif + + int nc = GetClrImportant(); + if (nc==0) nc = GetNumColors(); +@@ -468,20 +693,34 @@ bool CxImagePNG::Encode(CxFile *hFile) + if (info.bAlphaPaletteEnabled){ + for(WORD ip=0; ip<nc;ip++) + trans[ip]=GetPaletteColor((BYTE)ip).rgbReserved; ++#if PNG_LIBPNG_VER <= 10499 + info_ptr->num_trans = (WORD)nc; + info_ptr->valid |= PNG_INFO_tRNS; ++#endif ++#if PNG_LIBPNG_VER > 10499 ++ png_set_tRNS(png_ptr,info_ptr,(png_bytep)trans,nc,NULL); ++#else + #if PNG_LIBPNG_VER > 10399 + info_ptr->trans_alpha = trans; + #else + info_ptr->trans = trans; + #endif ++#endif + } + + // copy the palette colors ++#if PNG_LIBPNG_VER > 10499 ++ _palette = new png_color[nc]; ++ for (int i=0; i<nc; i++) ++ GetPaletteColor(i, &_palette[i].red, &_palette[i].green, &_palette[i].blue); ++ ++ png_set_PLTE(png_ptr,info_ptr,_palette,nc); ++#else + info_ptr->palette = new png_color[nc]; + info_ptr->num_palette = (png_uint_16) nc; + for (int i=0; i<nc; i++) + GetPaletteColor(i, &info_ptr->palette[i].red, &info_ptr->palette[i].green, &info_ptr->palette[i].blue); ++#endif + } + + #if CXIMAGE_SUPPORT_ALPHA // <vho> +@@ -495,8 +734,12 @@ bool CxImagePNG::Encode(CxFile *hFile) + } } } + #endif // CXIMAGE_SUPPORT_ALPHA // <vho> + ++#if PNG_LIBPNG_VER > 10499 ++ int row_size = max(info.dwEffWidth, (_width * _channels * _bit_depth / 8)); ++#else + int row_size = max(info.dwEffWidth, info_ptr->width*info_ptr->channels*(info_ptr->bit_depth/8)); + info_ptr->rowbytes = row_size; ++#endif + BYTE *row_pointers = new BYTE[row_size]; + + /* write the file information */ +@@ -514,7 +757,11 @@ bool CxImagePNG::Encode(CxFile *hFile) + if (AlphaIsValid()){ + for (long ax=head.biWidth-1; ax>=0;ax--){ + c = BlindGetPixelColor(ax,ay); ++#if PNG_LIBPNG_VER > 10499 ++ int px = ax * _channels; ++#else + int px = ax * info_ptr->channels; ++#endif + if (!bGrayScale){ + row_pointers[px++]=c.rgbRed; + row_pointers[px++]=c.rgbGreen; +@@ -529,7 +776,11 @@ bool CxImagePNG::Encode(CxFile *hFile) + #endif //CXIMAGE_SUPPORT_ALPHA // <vho> + { + iter.GetRow(row_pointers, row_size); ++#if PNG_LIBPNG_VER > 10499 ++ if (_color_type == PNG_COLOR_TYPE_RGB) //HACK BY OP ++#else + if (info_ptr->color_type == PNG_COLOR_TYPE_RGB) //HACK BY OP ++#endif + RGBtoBGR(row_pointers, row_size); + png_write_row(png_ptr, row_pointers); + } +@@ -546,9 +797,14 @@ bool CxImagePNG::Encode(CxFile *hFile) + png_write_end(png_ptr, info_ptr); + + /* if you malloced the palette, free it here */ ++#if PNG_LIBPNG_VER > 10499 ++ if (_palette){ ++ delete [] (_palette); ++#else + if (info_ptr->palette){ + delete [] (info_ptr->palette); + info_ptr->palette = NULL; ++#endif + } + + /* clean up after the write, and free any memory allocated */ +diff --git a/lib/cximage-6.0/CxImage/ximapng.h b/lib/cximage-6.0/CxImage/ximapng.h +index db41935..68d8ddb 100644 +--- a/lib/cximage-6.0/CxImage/ximapng.h ++++ b/lib/cximage-6.0/CxImage/ximapng.h +@@ -69,8 +69,13 @@ class CxImagePNG: public CxImage + + static void PNGAPI user_error_fn(png_structp png_ptr,png_const_charp error_msg) + { ++#if PNG_LIBPNG_VER > 10499 ++ strncpy((char*)png_get_error_ptr(png_ptr),error_msg,255); ++ longjmp(png_jmpbuf(png_ptr), 1); ++#else + strncpy((char*)png_ptr->error_ptr,error_msg,255); + longjmp(png_ptr->jmpbuf, 1); ++#endif + } + }; + +-- +1.7.5.4 + diff --git a/media-tv/xbmc/files/xbmc-11.0_beta3-nomysql.patch b/media-tv/xbmc/files/xbmc-11.0_beta3-nomysql.patch new file mode 100644 index 0000000..2b28006 --- /dev/null +++ b/media-tv/xbmc/files/xbmc-11.0_beta3-nomysql.patch @@ -0,0 +1,171 @@ +http://trac.xbmc.org/attachment/ticket/11775 + +make mysql support optional + +--- a/Makefile.in ++++ b/Makefile.in +@@ -127,13 +127,17 @@ endif + LIB_DIRS=\ + lib/cximage-6.0 \ + lib/libexif \ +- lib/cmyth \ + lib/libhdhomerun \ + lib/libid3tag \ + lib/libapetag \ + lib/cpluff \ + lib/xbmc-dll-symbols + ++ifeq (@BUILD_MYTHTV@,1) ++LIB_DIRS+=\ ++ lib/cmyth ++endif ++ + SS_DIRS= + ifeq (@USE_OPENGL@,1) + SS_DIRS+= xbmc/screensavers/rsxs-0.9/xbmc +@@ -418,7 +422,10 @@ imagelib: dllloader + $(MAKE) -C lib/cximage-6.0 + + codecs: papcodecs dvdpcodecs +-libs: cmyth libhdhomerun libid3tag imagelib libexif system/libcpluff-@ARCH@.so ++libs: libhdhomerun libid3tag imagelib libexif system/libcpluff-@ARCH@.so ++ifeq (@BUILD_MYTHTV@,1) ++libs: cmyth ++endif + externals: codecs libs visualizations screensavers + + xcode_depends: \ + +--- a/xbmc/dbwrappers/Database.cpp ++++ b/xbmc/dbwrappers/Database.cpp +@@ -29,7 +29,9 @@ + #include "utils/AutoPtrHandle.h" + #include "utils/log.h" + #include "utils/URIUtils.h" ++#ifdef BUILD_MYTHTV + #include "mysqldataset.h" ++#endif /* BUILD_MYTHTV */ + #include "sqlitedataset.h" + + +@@ -265,6 +267,7 @@ bool CDatabase::Open(const DatabaseSettings &settings) + + m_sqlite = true; + ++#ifdef BUILD_MYTHTV + if ( dbSettings.type.Equals("mysql") ) + { + // check we have all information before we cancel the fallback +@@ -274,6 +277,7 @@ bool CDatabase::Open(const DatabaseSettings &settings) + else + CLog::Log(LOGINFO, "essential mysql database information is missing (eg. host, name, user, pass)"); + } ++#endif /* BUILD_MYTHTV */ + + // always safely fallback to sqlite3, and use separate, versioned database + if (m_sqlite) +@@ -339,10 +343,12 @@ bool CDatabase::Connect(const DatabaseSettings &dbSettings, bool create) + { + m_pDB.reset( new SqliteDatabase() ) ; + } ++#ifdef BUILD_MYTHTV + else if (dbSettings.type.Equals("mysql")) + { + m_pDB.reset( new MysqlDatabase() ) ; + } ++#endif /* BUILD_MYTHTV */ + else + { + CLog::Log(LOGERROR, "Unable to determine database type: %s", dbSettings.type.c_str()); +--- a/xbmc/dbwrappers/Makefile ++++ b/xbmc/dbwrappers/Makefile +@@ -1,9 +1,13 @@ + SRCS=Database.cpp \ + dataset.cpp \ +- mysqldataset.cpp \ + qry_dat.cpp \ + sqlitedataset.cpp \ + ++ifeq (@BUILD_MYTHTV@,1) ++SRCS+=\ ++ mysqldataset.cpp ++endif ++ + LIB=dbwrappers.a + + include ../../Makefile.include + +--- a/configure.in 2012-01-21 00:52:52.000000000 +0000 ++++ b/configure.in 2012-01-29 18:46:09.544462430 +0000 +@@ -85,6 +85,8 @@ + x11_disabled="== X11 disabled. ==" + pulse_not_found="== Could not find libpulse. PulseAudio support disabled. ==" + pulse_disabled="== PulseAudio support manually disabled. ==" ++mysql_not_found="Could not find required library libmysqlclient for MythTV." ++mythtv_disabled="== MythTV support disabled. ==" + dvdcss_enabled="== DVDCSS support enabled. ==" + dvdcss_disabled="== DVDCSS support disabled. ==" + hal_not_found="== Could not find hal. HAL support disabled. ==" +@@ -325,6 +327,12 @@ + [use_ffmpeg_libvorbis=$enableval], + [use_ffmpeg_libvorbis=no]) + ++AC_ARG_ENABLE([mythtv], ++ [AS_HELP_STRING([--enable-mythtv], ++ [enable MythTV support (default is yes)])], ++ [use_mythtv=$enableval], ++ [use_mythtv=yes]) ++ + AC_ARG_ENABLE([dvdcss], + [AS_HELP_STRING([--enable-dvdcss], + [enable DVDCSS support (default is yes)])], +@@ -675,6 +683,7 @@ + fi + + # platform common libraries ++if test "$use_mythtv" = "yes"; then + AC_CHECK_PROG(MYSQL_CONFIG, mysql_config, "yes", "no") + if test $MYSQL_CONFIG = "yes"; then + INCLUDES="$INCLUDES `mysql_config --include`" +@@ -684,6 +693,12 @@ + else + AC_MSG_ERROR($missing_program) + fi ++ AC_CHECK_LIB([mysqlclient], [main], ++ AC_DEFINE([BUILD_MYTHTV], [1], [Define to 1 to build mythtv.]), ++ AC_MSG_ERROR($mysql_not_found)) ++else ++ AC_MSG_RESULT($mythtv_disabled) ++fi + AC_CHECK_HEADER([ass/ass.h],, AC_MSG_ERROR($missing_library)) + AC_CHECK_HEADER([mpeg2dec/mpeg2.h],, AC_MSG_ERROR($missing_library)) + AC_CHECK_HEADER([mpeg2dec/mpeg2convert.h],, AC_MSG_ERROR($missing_library), +@@ -718,7 +733,6 @@ + AC_CHECK_LIB([z], [main],, AC_MSG_ERROR($missing_library)) + AC_CHECK_LIB([crypto], [main],, AC_MSG_ERROR($missing_library)) + AC_CHECK_LIB([ssl], [main],, AC_MSG_ERROR($missing_library)) +-AC_CHECK_LIB([mysqlclient], [main],, AC_MSG_ERROR($missing_library)) + AC_CHECK_LIB([ssh], [sftp_tell64],, AC_MSG_RESULT([Could not find suitable version of libssh])) + AC_CHECK_LIB([bluetooth], [hci_devid],, AC_MSG_RESULT([Could not find suitable version of libbluetooth])) + AC_CHECK_LIB([yajl], [main],, AC_MSG_ERROR($missing_library)) +@@ -1704,6 +1718,12 @@ + final_message="$final_message\n HAL Support:\tNo" + fi + ++if test "$use_mythtv" = "yes"; then ++ final_message="$final_message\n MythTV:\tYes" ++else ++ final_message="$final_message\n MythTV:\tNo" ++fi ++ + # DVDCSS + if test "$use_dvdcss" = "yes"; then + AC_MSG_NOTICE($dvdcss_enabled) +@@ -1926,6 +1946,7 @@ + AC_SUBST(PYTHON_VERSION) + AC_SUBST(OUTPUT_FILES) + AC_SUBST(HAVE_XBMC_NONFREE) ++AC_SUBST(BUILD_MYTHTV) + AC_SUBST(USE_ASAP_CODEC) + AC_SUBST(LIBCURL_BASENAME) + AC_SUBST(LIBFLAC_BASENAME) diff --git a/media-tv/xbmc/xbmc-11.0_beta2.ebuild b/media-tv/xbmc/xbmc-11.0_beta2.ebuild index 468627e..1cb8f84 100644 --- a/media-tv/xbmc/xbmc-11.0_beta2.ebuild +++ b/media-tv/xbmc/xbmc-11.0_beta2.ebuild @@ -73,7 +73,6 @@ COMMON_DEPEND="app-arch/bzip2 sys-libs/zlib virtual/jpeg virtual/opengl - virtual/mysql x11-apps/xdpyinfo x11-apps/mesa-progs x11-libs/libXinerama diff --git a/media-tv/xbmc/xbmc-11.0_beta3.ebuild b/media-tv/xbmc/xbmc-11.0_beta3.ebuild new file mode 100644 index 0000000..e53d38a --- /dev/null +++ b/media-tv/xbmc/xbmc-11.0_beta3.ebuild @@ -0,0 +1,225 @@ +# Copyright 1999-2012 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +EAPI="2" + +inherit autotools eutils python + +EGIT_REPO_URI="git://github.com/xbmc/xbmc.git" +if [[ ${PV} == "9999" ]] ; then + inherit git-2 +else + if [[ ${PV} == *beta* ]] ; then + inherit versionator + CODENAME="Eden" + MY_PV=`get_version_component_range 1-2`-${CODENAME}_`get_version_component_range 3` + + MY_P="${PN}-${MY_PV}" + else + MY_P=${P/_/-} + fi + SRC_URI="http://mirrors.xbmc.org/releases/source/${MY_P}.tar.gz" + KEYWORDS="~amd64 ~x86" + S="${WORKDIR}/${MY_P}${EXTRA_PV}" +fi + +DESCRIPTION="XBMC is a free and open source media-player and entertainment hub" +HOMEPAGE="http://xbmc.org/" + +LICENSE="GPL-2" +SLOT="0" +IUSE="airplay alsa altivec avahi bluray css debug goom joystick midi profile +projectm pulseaudio pvr +rsxs rtmp +samba sse sse2 udev vaapi vdpau webserver +xrandr" + +# TODO: Verify that media-video/ffmpeg is correct (not virtual/ffmpeg) +COMMON_DEPEND="app-arch/bzip2 + app-arch/unzip + app-arch/zip + app-i18n/enca + >=dev-lang/python-2.4 + dev-libs/boost + dev-libs/fribidi + dev-libs/libcdio[-minimal] + dev-libs/libpcre[cxx] + dev-libs/lzo + dev-libs/yajl + >=dev-python/pysqlite-2 + dev-python/simplejson + media-libs/alsa-lib + media-libs/flac + media-libs/fontconfig + media-libs/freetype + media-libs/glew + media-libs/jasper + media-libs/jbigkit + media-libs/libass + media-libs/libmad + media-libs/libmodplug + media-libs/libmpeg2 + media-libs/libogg + media-libs/libpng + media-libs/libsamplerate + media-libs/libsdl[audio,opengl,video,X] + media-libs/libvorbis + media-libs/sdl-gfx + media-libs/sdl-image[gif,jpeg,png] + media-libs/sdl-mixer + media-libs/sdl-sound + media-libs/tiff + media-sound/wavpack + media-video/ffmpeg + net-misc/curl + =net-wireless/bluez-4.96 + sys-apps/dbus + sys-libs/zlib + virtual/jpeg + virtual/opengl + x11-apps/xdpyinfo + x11-apps/mesa-progs + x11-libs/libXinerama + x11-libs/libXrender + airplay? ( app-pda/libplist ) + alsa? ( media-libs/libsdl[alsa] ) + avahi? ( net-dns/avahi ) + bluray? ( media-libs/libbluray ) + css? ( media-libs/libdvdcss ) + pulseaudio? ( media-sound/pulseaudio ) + projectm? ( media-libs/libprojectm ) + pvr? ( virtual/mysql ) + rtmp? ( media-video/rtmpdump ) + samba? ( >=net-fs/samba-3.4.6[smbclient] ) + vaapi? ( x11-libs/libva ) + vdpau? ( + || ( x11-libs/libvdpau >=x11-drivers/nvidia-drivers-180.51 ) + media-video/ffmpeg[vdpau] + ) + webserver? ( net-libs/libmicrohttpd ) + xrandr? ( x11-libs/libXrandr )" + +RDEPEND="${COMMON_DEPEND} + udev? ( sys-fs/udisks sys-power/upower )" +DEPEND="${COMMON_DEPEND} + dev-util/cmake + dev-util/gperf + x11-proto/xineramaproto + x86? ( dev-lang/nasm )" + +src_unpack() { + if [[ ${PV} == "9999" ]] ; then + git-2_src_unpack + cd "${S}" || die + rm -f configure + else + unpack ${A} || die + + # TODO: fix this + # zipfile: 11.0-Eden_beta3 has folder 11.0-Eden_beta3.1 + if ! [ -d ${S} ] && [ -d "${S}.1" ] ; then + S="${S}.1" + fi + cd "${S}" || die + fi + + # Fix case sensitivity + mv media/Fonts/{a,A}rial.ttf || die + mv media/{S,s}plash.png || die +} + +src_prepare() { + epatch "${FILESDIR}"/${P}-nomysql.patch || die + epatch "${FILESDIR}"/${P}-libpng1.5-zenkibou-github.patch || die + + # some dirs ship generated autotools, some dont + local d + for d in \ + . \ + lib/{libdvd/lib*/,cpluff,libapetag,libid3tag/libid3tag} \ + xbmc/screensavers/rsxs-* \ + xbmc/visualizations/Goom/goom2k4-0 + do + [[ -e ${d}/configure ]] && continue + pushd ${d} >/dev/null + einfo "Generating autotools in ${d}" + eautoreconf + popd >/dev/null + done + + local squish #290564 + use altivec && squish="-DSQUISH_USE_ALTIVEC=1 -maltivec" + use sse && squish="-DSQUISH_USE_SSE=1 -msse" + use sse2 && squish="-DSQUISH_USE_SSE=2 -msse2" + sed -i \ + -e '/^CXXFLAGS/{s:-D[^=]*=.::;s:-m[[:alnum:]]*::}' \ + -e "1iCXXFLAGS += ${squish}" \ + lib/libsquish/Makefile.in || die + + # Fix XBMC's final version string showing as "exported" + # instead of the SVN revision number. + export HAVE_GIT=no GIT_REV=${EGIT_VERSION:-exported} + + # Avoid lsb-release dependency + sed -i \ + -e 's:lsb_release -d:cat /etc/gentoo-release:' \ + xbmc/utils/SystemInfo.cpp || die + + # avoid long delays when powerkit isn't running #348580 + sed -i \ + -e '/dbus_connection_send_with_reply_and_block/s:-1:3000:' \ + xbmc/linux/*.cpp || die + + epatch_user #293109 + + # Tweak autotool timestamps to avoid regeneration + find . -type f -print0 | xargs -0 touch -r configure +} + +src_configure() { + # Disable documentation generation + export ac_cv_path_LATEX=no + # Avoid help2man + export HELP2MAN=$(type -P help2man || echo true) + + econf \ + --docdir=/usr/share/doc/${PF} \ + --disable-ccache \ + --disable-optimizations \ + --enable-external-libraries \ + --enable-gl \ + $(use_enable airplay) \ + $(use_enable avahi) \ + $(use_enable bluray libbluray) \ + $(use_enable css dvdcss) \ + $(use_enable debug) \ + $(use_enable goom) \ + --disable-hal \ + $(use_enable joystick) \ + $(use_enable midi mid) \ + $(use_enable profile profiling) \ + $(use_enable projectm) \ + $(use_enable pulseaudio pulse) \ + $(use_enable pvr mythtv) \ + $(use_enable rsxs) \ + $(use_enable rtmp) \ + $(use_enable samba) \ + $(use_enable vaapi) \ + $(use_enable vdpau) \ + $(use_enable webserver) \ + $(use_enable xrandr) +} + +src_install() { + emake install DESTDIR="${D}" || die + prepalldocs + + insinto /usr/share/applications + doins tools/Linux/xbmc.desktop + doicon tools/Linux/xbmc.png + + insinto "$(python_get_sitedir)" #309885 + doins tools/EventClients/lib/python/xbmcclient.py || die + newbin "tools/EventClients/Clients/XBMC Send/xbmc-send.py" xbmc-send || die +} + +pkg_postinst() { + elog "Visit http://wiki.xbmc.org/?title=XBMC_Online_Manual" +} |