From ea3d877b99c32e3a9e00ab220440d4518430e5bc Mon Sep 17 00:00:00 2001 From: root Date: Mon, 16 Apr 2012 00:01:18 +0000 Subject: Mon Apr 16 00:01:18 UTC 2012 --- testing/cairo/PKGBUILD | 9 +- testing/cairo/git_fixes.patch | 512 ++++++++ testing/calligra/PKGBUILD | 279 +++++ testing/calligra/calligra-braindump.install | 12 + testing/calligra/calligra-filters.install | 11 + testing/calligra/calligra-flow.install | 12 + testing/calligra/calligra-karbon.install | 12 + testing/calligra/calligra-kexi.install | 11 + testing/calligra/calligra-krita.install | 13 + testing/calligra/calligra-plan.install | 12 + testing/calligra/calligra-sheets.install | 12 + testing/calligra/calligra-stage.install | 12 + testing/calligra/calligra-tools.install | 12 + testing/calligra/calligra-words.install | 12 + testing/calligra/calligra.install | 11 + testing/calligra/do-not-build-hancomword.patch | 11 + testing/glib2/PKGBUILD | 15 +- .../glib2/revert-warn-glib-compile-schemas.patch | 33 + testing/gtk3/PKGBUILD | 7 +- testing/libgcrypt/PKGBUILD | 35 + testing/libgcrypt/libgcrypt.install | 20 + testing/libgpg-error/PKGBUILD | 32 + testing/networkmanager/PKGBUILD | 17 +- testing/nss/PKGBUILD | 105 ++ testing/nss/add_spi+cacert_ca_certs.patch | 568 +++++++++ testing/nss/nss-config.in | 145 +++ testing/nss/nss-no-rpath.patch | 14 + testing/nss/nss.pc.in | 11 + testing/nss/ssl-renegotiate-transitional.patch | 21 + testing/python/PKGBUILD | 29 +- testing/xf86-input-wacom/70-wacom.rules | 12 + testing/xf86-input-wacom/PKGBUILD | 35 + testing/xf86-video-ati/PKGBUILD | 39 + testing/xf86-video-ati/git_fixes.diff | 33 + testing/xf86-video-ati/solid_pictures_fixes.diff | 1238 ++++++++++++++++++++ testing/xf86-video-intel/PKGBUILD | 34 + .../Remove_broken_render_glyphs-to-dst.diff | 387 ++++++ 37 files changed, 3737 insertions(+), 46 deletions(-) create mode 100644 testing/calligra/PKGBUILD create mode 100644 testing/calligra/calligra-braindump.install create mode 100644 testing/calligra/calligra-filters.install create mode 100644 testing/calligra/calligra-flow.install create mode 100644 testing/calligra/calligra-karbon.install create mode 100644 testing/calligra/calligra-kexi.install create mode 100644 testing/calligra/calligra-krita.install create mode 100644 testing/calligra/calligra-plan.install create mode 100644 testing/calligra/calligra-sheets.install create mode 100644 testing/calligra/calligra-stage.install create mode 100644 testing/calligra/calligra-tools.install create mode 100644 testing/calligra/calligra-words.install create mode 100644 testing/calligra/calligra.install create mode 100644 testing/calligra/do-not-build-hancomword.patch create mode 100644 testing/glib2/revert-warn-glib-compile-schemas.patch create mode 100644 testing/libgcrypt/PKGBUILD create mode 100644 testing/libgcrypt/libgcrypt.install create mode 100644 testing/libgpg-error/PKGBUILD create mode 100644 testing/nss/PKGBUILD create mode 100644 testing/nss/add_spi+cacert_ca_certs.patch create mode 100644 testing/nss/nss-config.in create mode 100644 testing/nss/nss-no-rpath.patch create mode 100644 testing/nss/nss.pc.in create mode 100644 testing/nss/ssl-renegotiate-transitional.patch create mode 100644 testing/xf86-input-wacom/70-wacom.rules create mode 100644 testing/xf86-input-wacom/PKGBUILD create mode 100644 testing/xf86-video-ati/PKGBUILD create mode 100644 testing/xf86-video-ati/git_fixes.diff create mode 100644 testing/xf86-video-ati/solid_pictures_fixes.diff create mode 100644 testing/xf86-video-intel/PKGBUILD create mode 100644 testing/xf86-video-intel/Remove_broken_render_glyphs-to-dst.diff (limited to 'testing') diff --git a/testing/cairo/PKGBUILD b/testing/cairo/PKGBUILD index 4e49a4a9e..da6b8d554 100644 --- a/testing/cairo/PKGBUILD +++ b/testing/cairo/PKGBUILD @@ -1,10 +1,10 @@ -# $Id: PKGBUILD 155823 2012-04-07 06:26:52Z andyrtr $ +# $Id: PKGBUILD 156123 2012-04-14 08:59:09Z andyrtr $ # Maintainer: Jan de Groot # Contributor: Brice Carpentier pkgname=cairo pkgver=1.12.0 -pkgrel=3 +pkgrel=4 pkgdesc="Cairo vector graphics library" arch=(i686 x86_64) license=('LGPL' 'MPL') @@ -20,13 +20,14 @@ source=(http://cairographics.org/releases/$pkgname-$pkgver.tar.gz git_fixes.patch ) md5sums=('e6c85575ba7094f88b637bdfd835a751' '9b323790dab003e228c6955633cb888e' - '31aff4a4d8943ed81dce398f6421487d') + 'ce32ba4639d910bce7159c9a67ff2355') build() { cd "$srcdir/$pkgname-$pkgver" patch -Np1 -i "${srcdir}/cairo-1.10.0-buggy_gradients.patch" - # status is 2012-04-07 last commit: fix _cairo_pattern_get_ink_extents to work with snapshot recording surfaces + # status is 2012-04-14 last commit: doc: add returns statement to cairo_surface_supports_mime_type patch -Np1 -i ${srcdir}/git_fixes.patch + autoreconf -vfi ./configure --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ diff --git a/testing/cairo/git_fixes.patch b/testing/cairo/git_fixes.patch index 84ee0ba17..6ad8979eb 100644 --- a/testing/cairo/git_fixes.patch +++ b/testing/cairo/git_fixes.patch @@ -572,3 +572,515 @@ index 27ba004..5b3e177 100644 cairo_box_t box; -- cgit v0.9.0.2-2-gbebe +From 6f28f0b33cb12f3b2dd48c87da0018bd00c17107 Mon Sep 17 00:00:00 2001 +From: Chris Wilson +Date: Sun, 08 Apr 2012 10:28:59 +0000 +Subject: stroke: Fix misuse of half_line_x for vertical caps on dashes + +A typo using half_line_x instead of half_line_y when emitting dashed +segments of the rectilinear stroke. + +Signed-off-by: Chris Wilson +--- +diff --git a/src/cairo-path-stroke-boxes.c b/src/cairo-path-stroke-boxes.c +index 3e8c5a4..cc9dd19 100644 +--- a/src/cairo-path-stroke-boxes.c ++++ b/src/cairo-path-stroke-boxes.c +@@ -342,15 +342,15 @@ _cairo_rectilinear_stroker_emit_segments_dashed (cairo_rectilinear_stroker_t *st + box.p1.x = box.p2.x - half_line_x; + } + if (out_slope.dy >= 0) +- box.p1.y -= half_line_x; ++ box.p1.y -= half_line_y; + if (out_slope.dy <= 0) +- box.p2.y += half_line_x; ++ box.p2.y += half_line_y; + } else { + if (box.p1.y <= box.p2.y) { + box.p1.y = box.p2.y; +- box.p2.y += half_line_x; ++ box.p2.y += half_line_y; + } else { +- box.p1.y = box.p2.y - half_line_x; ++ box.p1.y = box.p2.y - half_line_y; + } + if (out_slope.dx >= 0) + box.p1.x -= half_line_x; +-- +cgit v0.9.0.2-2-gbebe +From 113ec6bf0c8ed1ff12293d1ed2a2de9bd5b9904b Mon Sep 17 00:00:00 2001 +From: Chris Wilson +Date: Sun, 08 Apr 2012 16:58:13 +0000 +Subject: traps: Clip the trapezoid extents against the clip extents + +Just in case the clip polygon turns out to be much larger than the +operation extents (silly us for not reducing it correctly) and lead to +catastrophe, such as: + +Program received signal SIGSEGV, Segmentation fault. +pixman_fill_sse2 (bits=, stride=4, bpp=8, x=0, y=0, +width=3, height=-34811, data=0) at pixman-sse2.c:3369 +3369 *(uint16_t *)d = data; + +Signed-off-by: Chris Wilson +--- +diff --git a/src/cairo-traps-compositor.c b/src/cairo-traps-compositor.c +index 284a0be..c49e208 100644 +--- a/src/cairo-traps-compositor.c ++++ b/src/cairo-traps-compositor.c +@@ -218,8 +218,13 @@ combine_clip_as_traps (const cairo_traps_compositor_t *compositor, + _cairo_traps_fini (&traps); + cairo_surface_destroy (src); + +- if (status == CAIRO_INT_STATUS_SUCCESS && +- (fixup.width < extents->width || fixup.height < extents->height)) { ++ if (unlikely (status)) ++ return status; ++ ++ if (! _cairo_rectangle_intersect (&fixup, extents)) ++ return CAIRO_STATUS_SUCCESS; ++ ++ if (fixup.width < extents->width || fixup.height < extents->height) { + cairo_boxes_t clear; + + _cairo_boxes_init (&clear); +-- +cgit v0.9.0.2-2-gbebe +From de61681574eb7d6e0e497ea7f25797e3d9b20ac4 Mon Sep 17 00:00:00 2001 +From: Chris Wilson +Date: Mon, 09 Apr 2012 11:47:34 +0000 +Subject: build: Disable -Wset-but-unused-variable + +This is too noisy in the current build, and masking more important +warnings. + +Signed-off-by: Chris Wilson +--- +diff --git a/build/configure.ac.warnings b/build/configure.ac.warnings +index 3eb0104..f1b17f4 100644 +--- a/build/configure.ac.warnings ++++ b/build/configure.ac.warnings +@@ -21,6 +21,9 @@ MAYBE_WARN="-Wall -Wextra \ + -Wno-missing-field-initializers -Wno-unused-parameter \ + -Wno-attributes -Wno-long-long -Winline" + ++# -Wunused-but-set-variable is too noisy at present ++NO_WARN="-Wno-unused-but-set-variable" ++ + dnl Sun Studio 12 likes to rag at us for abusing enums like + dnl having cairo_status_t variables hold cairo_int_status_t + dnl values. It's bad, we know. Now please be quiet. +@@ -34,6 +37,8 @@ MAYBE_WARN="$MAYBE_WARN -fno-strict-aliasing -fno-common -flto" + dnl Also to turn various gcc/glibc-specific preprocessor checks + MAYBE_WARN="$MAYBE_WARN -Wp,-D_FORTIFY_SOURCE=2" + ++MAYBE_WARN="$MAYBE_WARN $NO_WARN" ++ + # invalidate cached value if MAYBE_WARN has changed + if test "x$cairo_cv_warn_maybe" != "x$MAYBE_WARN"; then + unset cairo_cv_warn_cflags +-- +cgit v0.9.0.2-2-gbebe +From 7cb5053c0694992320b5f7ea3b91ea497431813b Mon Sep 17 00:00:00 2001 +From: Chris Wilson +Date: Mon, 09 Apr 2012 11:49:20 +0000 +Subject: analysis: Apply the integer translation to the bbox as well + +The bbox is used to compute the ink extents (and so the pattern extents +of a recording surface) and if given an integer translation we failed to +transform the bbox into the target space. + +Fixes mask (pdf). + +Signed-off-by: Chris Wilson +--- +diff --git a/src/cairo-analysis-surface.c b/src/cairo-analysis-surface.c +index b8abe02..8878f62 100644 +--- a/src/cairo-analysis-surface.c ++++ b/src/cairo-analysis-surface.c +@@ -220,6 +220,14 @@ _add_operation (cairo_analysis_surface_t *surface, + if (_cairo_matrix_is_integer_translation (&surface->ctm, &tx, &ty)) { + rect->x += tx; + rect->y += ty; ++ ++ tx = _cairo_fixed_from_int (tx); ++ bbox.p1.x += tx; ++ bbox.p2.x += tx; ++ ++ ty = _cairo_fixed_from_int (ty); ++ bbox.p1.y += ty; ++ bbox.p2.y += ty; + } else { + _cairo_matrix_transform_bounding_box_fixed (&surface->ctm, + &bbox, NULL); +-- +cgit v0.9.0.2-2-gbebe +From 038e4991912656a3239ca82d60056ca129016ba6 Mon Sep 17 00:00:00 2001 +From: Adrian Johnson +Date: Mon, 09 Apr 2012 08:31:44 +0000 +Subject: pdf: avoid unnecessary use of patterns in mask groups + +--- +diff --git a/src/cairo-pdf-surface.c b/src/cairo-pdf-surface.c +index 4930e72..78537ce 100644 +--- a/src/cairo-pdf-surface.c ++++ b/src/cairo-pdf-surface.c +@@ -5703,56 +5703,68 @@ _cairo_pdf_surface_write_mask_group (cairo_pdf_surface_t *surface, + if (unlikely (status)) + return status; + +- pattern_res.id = 0; +- gstate_res.id = 0; +- status = _cairo_pdf_surface_add_pdf_pattern (surface, group->mask, NULL, +- &pattern_res, &gstate_res); +- if (unlikely (status)) +- return status; +- +- if (gstate_res.id != 0) { +- smask_group = _cairo_pdf_surface_create_smask_group (surface, &group->extents); +- if (unlikely (smask_group == NULL)) +- return _cairo_error (CAIRO_STATUS_NO_MEMORY); +- +- smask_group->width = group->width; +- smask_group->height = group->height; +- smask_group->operation = PDF_PAINT; +- smask_group->source = cairo_pattern_reference (group->mask); +- smask_group->source_res = pattern_res; +- status = _cairo_pdf_surface_add_smask_group (surface, smask_group); +- if (unlikely (status)) { +- _cairo_pdf_smask_group_destroy (smask_group); +- return status; +- } +- +- status = _cairo_pdf_surface_add_smask (surface, gstate_res); +- if (unlikely (status)) +- return status; +- +- status = _cairo_pdf_surface_add_xobject (surface, smask_group->group_res); ++ if (_can_paint_pattern (group->mask)) { ++ _cairo_output_stream_printf (surface->output, "q\n"); ++ status = _cairo_pdf_surface_paint_pattern (surface, ++ group->mask, ++ &group->extents, ++ FALSE); + if (unlikely (status)) + return status; + +- _cairo_output_stream_printf (surface->output, +- "q /s%d gs /x%d Do Q\n", +- gstate_res.id, +- smask_group->group_res.id); ++ _cairo_output_stream_printf (surface->output, "Q\n"); + } else { +- status = _cairo_pdf_surface_select_pattern (surface, group->mask, pattern_res, FALSE); ++ pattern_res.id = 0; ++ gstate_res.id = 0; ++ status = _cairo_pdf_surface_add_pdf_pattern (surface, group->mask, NULL, ++ &pattern_res, &gstate_res); + if (unlikely (status)) + return status; + +- _cairo_output_stream_printf (surface->output, +- "%f %f %f %f re f\n", +- bbox.p1.x, +- bbox.p1.y, +- bbox.p2.x - bbox.p1.x, +- bbox.p2.y - bbox.p1.y); ++ if (gstate_res.id != 0) { ++ smask_group = _cairo_pdf_surface_create_smask_group (surface, &group->extents); ++ if (unlikely (smask_group == NULL)) ++ return _cairo_error (CAIRO_STATUS_NO_MEMORY); + +- status = _cairo_pdf_surface_unselect_pattern (surface); +- if (unlikely (status)) +- return status; ++ smask_group->width = group->width; ++ smask_group->height = group->height; ++ smask_group->operation = PDF_PAINT; ++ smask_group->source = cairo_pattern_reference (group->mask); ++ smask_group->source_res = pattern_res; ++ status = _cairo_pdf_surface_add_smask_group (surface, smask_group); ++ if (unlikely (status)) { ++ _cairo_pdf_smask_group_destroy (smask_group); ++ return status; ++ } ++ ++ status = _cairo_pdf_surface_add_smask (surface, gstate_res); ++ if (unlikely (status)) ++ return status; ++ ++ status = _cairo_pdf_surface_add_xobject (surface, smask_group->group_res); ++ if (unlikely (status)) ++ return status; ++ ++ _cairo_output_stream_printf (surface->output, ++ "q /s%d gs /x%d Do Q\n", ++ gstate_res.id, ++ smask_group->group_res.id); ++ } else { ++ status = _cairo_pdf_surface_select_pattern (surface, group->mask, pattern_res, FALSE); ++ if (unlikely (status)) ++ return status; ++ ++ _cairo_output_stream_printf (surface->output, ++ "%f %f %f %f re f\n", ++ bbox.p1.x, ++ bbox.p1.y, ++ bbox.p2.x - bbox.p1.x, ++ bbox.p2.y - bbox.p1.y); ++ ++ status = _cairo_pdf_surface_unselect_pattern (surface); ++ if (unlikely (status)) ++ return status; ++ } + } + + status = _cairo_pdf_surface_close_group (surface, &mask_group); +@@ -5764,54 +5776,66 @@ _cairo_pdf_surface_write_mask_group (cairo_pdf_surface_t *surface, + if (unlikely (status)) + return status; + +- pattern_res.id = 0; +- gstate_res.id = 0; +- status = _cairo_pdf_surface_add_pdf_pattern (surface, group->source, NULL, +- &pattern_res, &gstate_res); +- if (unlikely (status)) +- return status; +- +- if (gstate_res.id != 0) { +- smask_group = _cairo_pdf_surface_create_smask_group (surface, &group->extents); +- if (unlikely (smask_group == NULL)) +- return _cairo_error (CAIRO_STATUS_NO_MEMORY); +- +- smask_group->operation = PDF_PAINT; +- smask_group->source = cairo_pattern_reference (group->source); +- smask_group->source_res = pattern_res; +- status = _cairo_pdf_surface_add_smask_group (surface, smask_group); +- if (unlikely (status)) { +- _cairo_pdf_smask_group_destroy (smask_group); +- return status; +- } +- +- status = _cairo_pdf_surface_add_smask (surface, gstate_res); +- if (unlikely (status)) +- return status; +- +- status = _cairo_pdf_surface_add_xobject (surface, smask_group->group_res); ++ if (_can_paint_pattern (group->source)) { ++ _cairo_output_stream_printf (surface->output, "q\n"); ++ status = _cairo_pdf_surface_paint_pattern (surface, ++ group->source, ++ &group->extents, ++ FALSE); + if (unlikely (status)) + return status; + +- _cairo_output_stream_printf (surface->output, +- "q /s%d gs /x%d Do Q\n", +- gstate_res.id, +- smask_group->group_res.id); ++ _cairo_output_stream_printf (surface->output, "Q\n"); + } else { +- status = _cairo_pdf_surface_select_pattern (surface, group->source, pattern_res, FALSE); ++ pattern_res.id = 0; ++ gstate_res.id = 0; ++ status = _cairo_pdf_surface_add_pdf_pattern (surface, group->source, NULL, ++ &pattern_res, &gstate_res); + if (unlikely (status)) + return status; + +- _cairo_output_stream_printf (surface->output, +- "%f %f %f %f re f\n", +- bbox.p1.x, +- bbox.p1.y, +- bbox.p2.x - bbox.p1.x, +- bbox.p2.y - bbox.p1.y); ++ if (gstate_res.id != 0) { ++ smask_group = _cairo_pdf_surface_create_smask_group (surface, &group->extents); ++ if (unlikely (smask_group == NULL)) ++ return _cairo_error (CAIRO_STATUS_NO_MEMORY); + +- status = _cairo_pdf_surface_unselect_pattern (surface); +- if (unlikely (status)) +- return status; ++ smask_group->operation = PDF_PAINT; ++ smask_group->source = cairo_pattern_reference (group->source); ++ smask_group->source_res = pattern_res; ++ status = _cairo_pdf_surface_add_smask_group (surface, smask_group); ++ if (unlikely (status)) { ++ _cairo_pdf_smask_group_destroy (smask_group); ++ return status; ++ } ++ ++ status = _cairo_pdf_surface_add_smask (surface, gstate_res); ++ if (unlikely (status)) ++ return status; ++ ++ status = _cairo_pdf_surface_add_xobject (surface, smask_group->group_res); ++ if (unlikely (status)) ++ return status; ++ ++ _cairo_output_stream_printf (surface->output, ++ "q /s%d gs /x%d Do Q\n", ++ gstate_res.id, ++ smask_group->group_res.id); ++ } else { ++ status = _cairo_pdf_surface_select_pattern (surface, group->source, pattern_res, FALSE); ++ if (unlikely (status)) ++ return status; ++ ++ _cairo_output_stream_printf (surface->output, ++ "%f %f %f %f re f\n", ++ bbox.p1.x, ++ bbox.p1.y, ++ bbox.p2.x - bbox.p1.x, ++ bbox.p2.y - bbox.p1.y); ++ ++ status = _cairo_pdf_surface_unselect_pattern (surface); ++ if (unlikely (status)) ++ return status; ++ } + } + + status = _cairo_pdf_surface_close_group (surface, NULL); +-- +cgit v0.9.0.2-2-gbebe +From 9fcbe25c2dcf831783bb0fd20af9754c0b5c409b Mon Sep 17 00:00:00 2001 +From: Maarten Bosmans +Date: Mon, 09 Apr 2012 19:33:50 +0000 +Subject: Protect code using dlfcn.h with CAIRO_HAS_DLSYM + +--- +diff --git a/configure.ac b/configure.ac +index cedfebe..5d2e6ec 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -52,6 +52,7 @@ AM_CONDITIONAL(CAIRO_HAS_DL, test "x$have_dl" = "xyes") + if test "x$have_dlsym" = "xyes"; then + AC_DEFINE([CAIRO_HAS_DLSYM], 1, [Define to 1 if dlsym is available]) + fi ++AM_CONDITIONAL(CAIRO_HAS_DLSYM, test "x$have_dlsym" = "xyes") + + dnl =========================================================================== + +diff --git a/util/Makefile.am b/util/Makefile.am +index f202f35..82d0a80 100644 +--- a/util/Makefile.am ++++ b/util/Makefile.am +@@ -12,20 +12,24 @@ endif + + if CAIRO_HAS_TRACE + SUBDIRS += cairo-trace ++if CAIRO_HAS_DLSYM + if CAIRO_HAS_SCRIPT_SURFACE + if CAIRO_HAS_TEE_SURFACE + SUBDIRS += cairo-fdr + endif + endif + endif ++endif + + if BUILD_SPHINX ++if CAIRO_HAS_DLSYM + if CAIRO_HAS_SCRIPT_SURFACE + if CAIRO_HAS_TEE_SURFACE + SUBDIRS += cairo-sphinx + endif + endif + endif ++endif + + AM_CPPFLAGS = -I$(top_srcdir)/src \ + -I$(top_builddir)/src \ +-- +cgit v0.9.0.2-2-gbebe +From c7b86ab97be1d3d3ccf43b652832f148a2fcf290 Mon Sep 17 00:00:00 2001 +From: Adrian Johnson +Date: Tue, 10 Apr 2012 13:04:05 +0000 +Subject: any2ppm: fix missing enumeration warning + +--- +diff --git a/test/any2ppm.c b/test/any2ppm.c +index 6b61c47..2403347 100644 +--- a/test/any2ppm.c ++++ b/test/any2ppm.c +@@ -193,6 +193,7 @@ write_ppm (cairo_surface_t *surface, int fd) + break; + case CAIRO_FORMAT_A1: + case CAIRO_FORMAT_RGB16_565: ++ case CAIRO_FORMAT_RGB30: + case CAIRO_FORMAT_INVALID: + default: + return "unhandled image format"; +-- +cgit v0.9.0.2-2-gbebe +From 09de481ce5f6ed1c38c0d5bf3af7c60642c4c947 Mon Sep 17 00:00:00 2001 +From: Gilles Espinasse +Date: Sat, 07 Apr 2012 21:09:51 +0000 +Subject: Cosmetic configure fix + +'how to allow undefined symbols in shared libraries' test should use CAIRO_CC_TRY_FLAG_SILENT or configure display is a bit out of order like this + +checking how to allow undefined symbols in shared libraries used by test suite... checking whether gcc supports -Wl,--allow-shlib-undefined... yes +-Wl,--allow-shlib-undefined + +Signed-off-by: Gilles Espinasse +Signed-off-by: Uli Schlachter +--- +diff --git a/build/configure.ac.warnings b/build/configure.ac.warnings +index f1b17f4..3b2c6f3 100644 +--- a/build/configure.ac.warnings ++++ b/build/configure.ac.warnings +@@ -89,7 +89,7 @@ AC_DEFINE_UNQUOTED([WARN_UNUSED_RESULT], [$cairo_cv_warn_unused_result], + + dnl check linker flags + AC_CACHE_CHECK([how to allow undefined symbols in shared libraries used by test suite], cairo_cv_test_undefined_ldflags, +- [CAIRO_CC_TRY_FLAG([-Wl,--allow-shlib-undefined], [], ++ [CAIRO_CC_TRY_FLAG_SILENT([-Wl,--allow-shlib-undefined], [], + [cairo_cv_test_undefined_ldflags="-Wl,--allow-shlib-undefined]")]) + CAIRO_TEST_UNDEFINED_LDFLAGS="$cairo_cv_test_undefined_ldflags" + AC_SUBST(CAIRO_TEST_UNDEFINED_LDFLAGS) +-- +cgit v0.9.0.2-2-gbebe +From 07fc63676dfdaa57ed919ad7be8f59c97c615473 Mon Sep 17 00:00:00 2001 +From: Uli Schlachter +Date: Wed, 11 Apr 2012 19:37:55 +0000 +Subject: xlib: Disable fallback compositor with xlib-xcb + +When xlib-xcb is enabled, this is just dead code which is never used. Thus, this +shouldn't hurt. However, this does include cairo-xlib-private.h. Shouldn't be a +problem? Well, that header contains static inline functions which some compiler +on Solaris will emit even when they are unused. + +This brings us to the real problem: That static inline function refers to a +function which isn't compiled with xlib-xcb and thus linking fails with +undefined symbols. + +This can be reproduced with GCC by adding a call to +_cairo_xlib_screen_put_gc(NULL, NULL, 0, 0); to +_cairo_xlib_fallback_compositor_get. + +Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=48489 +Signed-off-by: Uli Schlachter +--- +diff --git a/src/cairo-xlib-fallback-compositor.c b/src/cairo-xlib-fallback-compositor.c +index 5391926..7d45cd1 100644 +--- a/src/cairo-xlib-fallback-compositor.c ++++ b/src/cairo-xlib-fallback-compositor.c +@@ -42,6 +42,8 @@ + + #include "cairoint.h" + ++#if !CAIRO_HAS_XLIB_XCB_FUNCTIONS ++ + #include "cairo-xlib-private.h" + + #include "cairo-compositor-private.h" +@@ -52,3 +54,5 @@ _cairo_xlib_fallback_compositor_get (void) + /* XXX Do something interesting here to mitigate fallbacks ala xcb */ + return &_cairo_fallback_compositor; + } ++ ++#endif /* !CAIRO_HAS_XLIB_XCB_FUNCTIONS */ +-- +cgit v0.9.0.2-2-gbebe diff --git a/testing/calligra/PKGBUILD b/testing/calligra/PKGBUILD new file mode 100644 index 000000000..89a5570fc --- /dev/null +++ b/testing/calligra/PKGBUILD @@ -0,0 +1,279 @@ +# $Id: PKGBUILD 156147 2012-04-14 12:49:49Z andrea $ +# Maintainer: Ronald van Haren +# Maintainer: Andrea Scarpino + +pkgbase=calligra +pkgname=('calligra-filters' + 'calligra-interfaces' + 'calligra-libs' + 'calligra-plugins' + 'calligra-pics' + 'calligra-servicetypes' + 'calligra-templates' + 'calligra-tools' + 'calligra-karbon' + 'calligra-kexi' + 'calligra-kounavail' + 'calligra-plan' + 'calligra-stage' + 'calligra-krita' + 'calligra-sheets' + 'calligra-words' + 'calligra-handbook' + 'calligra-thesaurus-doc' + 'calligra-braindump' + 'calligra-flow') +pkgver=2.4.0 +pkgrel=1 +arch=('i686' 'x86_64') +url='http://www.calligra-suite.org' +license=('FDL1.2' 'GPL2' 'LGPL') +makedepends=('kdepimlibs' 'eigen2' 'freetds' 'kdegraphics-okular' 'libgsf' + 'libwpd' 'libwpg' 'pstoedit' 'glew' 'gsl' 'cmake' 'automoc4' + 'boost' 'libkdcraw' 'libpqxx' 'fftw' 'opengtl' 'lcms2') +groups=('calligra') +source=("http://download.kde.org/stable/${pkgbase}-${pkgver}/${pkgbase}-${pkgver}.tar.bz2" + 'do-not-build-hancomword.patch') +md5sums=('a45b9141c6bb750569e8f6554197dd50' + 'cc1a5fba43426003909751035d093362') + +build() { + cd "${srcdir}"/${pkgbase}-${pkgver} + patch -p1 -i "${srcdir}"/do-not-build-hancomword.patch + + cd "${srcdir}" + mkdir build + cd build + cmake ../${pkgbase}-${pkgver} \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_SKIP_RPATH=ON \ + -DCMAKE_INSTALL_PREFIX=/usr \ + -DBUILD_active=OFF \ + -DBUILD_mobile=OFF \ + -DBUILD_mysql=OFF \ + -DKDCRAW_LOCAL_FOUND=/usr/lib/libkdcraw.so \ + -DWITH_Marble=OFF \ + -DIHAVEPATCHEDQT=1 + make +} + +package_calligra-filters() { + pkgdesc="Filters for the Calligra office suite" + optdepends=('libgsf: Microsoft Word document importer' + 'libwpd: WordPerfect document importer' + 'libwpg: Corel WordPerfect Graphics image importer' + 'pstoedit: Karbon EPS import filter' + 'libkdcraw: support for raw images') + conflicts=('koffice-filters') + replaces=('koffice-filters') + install=calligra-filters.install + + cd "${srcdir}"/build/filters + make DESTDIR="${pkgdir}" install +} + +package_calligra-interfaces() { + pkgdesc="Interfaces for the Calligra office suite" + depends=('calligra-libs') + conflicts=('koffice-interfaces') + replaces=('koffice-interfaces') + + cd "${srcdir}"/build/interfaces + make DESTDIR="${pkgdir}" install +} + +package_calligra-libs() { + pkgdesc="Libraries for the Calligra office suite" + depends=('kdepimlibs' 'lcms2' 'calligra-servicetypes') + conflicts=('koffice-libs') + replaces=('koffice-libs') + + cd "${srcdir}"/build/libs + make DESTDIR="${pkgdir}" install +} + +package_calligra-plugins() { + pkgdesc="Plugins for the Calligra office suite" + depends=('calligra-libs') + conflicts=('koffice-plugins' 'koffice-kchart') + replaces=('koffice-plugins' 'koffice-kchart') + + cd "${srcdir}"/build/plugins + make DESTDIR="${pkgdir}" install +} + +package_calligra-pics() { + pkgdesc="Icons for the Calligra office suite" + depends=('calligra-libs') + conflicts=('koffice-pics') + replaces=('koffice-pics') + install=calligra.install + + cd "${srcdir}"/build/pics + make DESTDIR="${pkgdir}" install +} + +package_calligra-servicetypes() { + pkgdesc="Servicetypes for the Calligra office suite" + conflicts=('koffice-servicetypes') + replaces=('koffice-servicetypes') + install=calligra.install + + cd "${srcdir}"/build/servicetypes + make DESTDIR="${pkgdir}" install +} + +package_calligra-templates() { + pkgdesc="Templates for the Calligra office suite" + conflicts=('koffice-templates') + replaces=('koffice-templates') + + cd "${srcdir}"/build/templates + make DESTDIR="${pkgdir}" install +} + +package_calligra-tools() { + pkgdesc="Tools for the Calligra office suite" + depends=('calligra-libs') + conflicts=('koffice-tools') + replaces=('koffice-tools') + install=calligra-tools.install + + cd "${srcdir}"/build/tools + make DESTDIR="${pkgdir}" install +} + +#### package common files done ##### + +#### package apps and their docs ##### + +package_calligra-karbon() { + pkgdesc="Create scalable vector drawings" + depends=('calligra-libs' 'calligra-templates') + conflicts=('koffice-karbon' 'koffice-karbon-doc' 'calligra-karbon-doc') + replaces=('koffice-karbon' 'koffice-karbon-doc' 'calligra-karbon-doc') + install=calligra-karbon.install + + cd "${srcdir}"/build/karbon + make DESTDIR="${pkgdir}" install +} + +package_calligra-kexi() { + pkgdesc="Develop desktop database applications" + depends=('calligra-libs' 'calligra-templates') + conflicts=('koffice-kexi' 'koffice-kexi-doc' 'calligra-kexi-doc') + replaces=('koffice-kexi' 'koffice-kexi-doc' 'calligra-kexi-doc') + install=calligra-kexi.install + + cd "${srcdir}"/build/kexi + make DESTDIR="${pkgdir}" install +} + +package_calligra-kounavail() { + pkgdesc="Unavailable Calligra Document" + depends=('calligra-libs') + conflicts=('koffice-kounavail') + replaces=('koffice-kounavail') + + cd "${srcdir}"/build/kounavail + make DESTDIR="${pkgdir}" install +} + +package_calligra-plan() { + pkgdesc="Calligra Project Management Component" + depends=('calligra-words') + conflicts=('koffice-kplato' 'calligra-kplato') + replaces=('koffice-kplato' 'calligra-kplato') + install=calligra-plan.install + + cd "${srcdir}"/build/plan + make DESTDIR="${pkgdir}" install +} + +package_calligra-stage() { + pkgdesc="Write presentation documents" + depends=('calligra-libs' 'calligra-templates') + optdepends=('calligra-filters: import/export filters') + conflicts=('koffice-kpresenter' 'koffice-kpresenter-doc' 'calligra-stage-doc') + replaces=('koffice-kpresenter' 'koffice-kpresenter-doc' 'calligra-stage-doc') + install=calligra-stage.install + + cd "${srcdir}"/build/stage + make DESTDIR="${pkgdir}" install +} + +package_calligra-krita() { + pkgdesc="Edit and paint images" + depends=('calligra-libs' 'calligra-templates' 'calligra-plugins' 'glew' + 'qimageblitz' 'poppler-qt' 'openexr' 'opengtl') + optdepends=('calligra-filters: import/export filters') + conflicts=('koffice-krita' 'calligra-krita-doc') + replaces=('koffice-krita' 'calligra-krita-doc') + install=calligra-krita.install + + cd "${srcdir}"/build/krita + make DESTDIR="${pkgdir}" install +} + +package_calligra-sheets() { + pkgdesc="Write spreadsheet documents" + depends=('calligra-libs' 'calligra-templates' 'calligra-plugins' 'gsl') + optdepends=('calligra-filters: import/export filters') + conflicts=('koffice-kspread' 'koffice-kspread-doc' 'calligra-tables-doc' 'calligra-tables') + replaces=('koffice-kspread' 'koffice-kspread-doc' 'calligra-tables-doc' 'calligra-tables') + install=calligra-sheets.install + + cd "${srcdir}"/build/sheets + make DESTDIR="${pkgdir}" install +} + +package_calligra-words() { + pkgdesc="Word Processor" + depends=('calligra-libs' 'calligra-templates' 'calligra-plugins' 'calligra-pics' + 'calligra-kounavail' 'kdegraphics-okular') + optdepends=('calligra-filters: import/export filters') + conflicts=('koffice-kword') + replaces=('koffice-kword') + install=calligra-words.install + + cd "${srcdir}"/build/words + make DESTDIR="${pkgdir}" install +} + +package_calligra-handbook() { + pkgdesc="Documentation for Calligra" + conflicts=('koffice-handbook') + replaces=('koffice-handbook') + + cd "${srcdir}"/build/doc/calligra + make DESTDIR="${pkgdir}" install +} + +package_calligra-thesaurus-doc() { + pkgdesc="Documentation for Thesaurus" + conflicts=('koffice-thesaurus-doc') + replaces=('koffice-thesaurus-doc') + + cd "${srcdir}"/build/doc/thesaurus + make DESTDIR="${pkgdir}" install +} + +package_calligra-braindump() { + pkgdesc="Notes and idea gathering" + install=calligra-braindump.install + + cd "${srcdir}"/build/braindump + make DESTDIR="${pkgdir}" install +} + +package_calligra-flow() { + pkgdesc="Flowchart & Diagram Editing" + install=calligra-flow.install + conflicts=('calligra-flow-doc') + replaces=('calligra-flow-doc') + + cd "${srcdir}"/build/flow + make DESTDIR="${pkgdir}" install +} + +##### package apps done ##### diff --git a/testing/calligra/calligra-braindump.install b/testing/calligra/calligra-braindump.install new file mode 100644 index 000000000..c2179f6e2 --- /dev/null +++ b/testing/calligra/calligra-braindump.install @@ -0,0 +1,12 @@ +post_install() { + xdg-icon-resource forceupdate --theme hicolor &> /dev/null + update-desktop-database -q +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} \ No newline at end of file diff --git a/testing/calligra/calligra-filters.install b/testing/calligra/calligra-filters.install new file mode 100644 index 000000000..7c8a8bd2b --- /dev/null +++ b/testing/calligra/calligra-filters.install @@ -0,0 +1,11 @@ +post_install() { + update-mime-database usr/share/mime &> /dev/null +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} diff --git a/testing/calligra/calligra-flow.install b/testing/calligra/calligra-flow.install new file mode 100644 index 000000000..6c87527e2 --- /dev/null +++ b/testing/calligra/calligra-flow.install @@ -0,0 +1,12 @@ +post_install() { + xdg-icon-resource forceupdate --theme hicolor &> /dev/null + update-desktop-database -q +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} diff --git a/testing/calligra/calligra-karbon.install b/testing/calligra/calligra-karbon.install new file mode 100644 index 000000000..c2179f6e2 --- /dev/null +++ b/testing/calligra/calligra-karbon.install @@ -0,0 +1,12 @@ +post_install() { + xdg-icon-resource forceupdate --theme hicolor &> /dev/null + update-desktop-database -q +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} \ No newline at end of file diff --git a/testing/calligra/calligra-kexi.install b/testing/calligra/calligra-kexi.install new file mode 100644 index 000000000..b8c7ebf27 --- /dev/null +++ b/testing/calligra/calligra-kexi.install @@ -0,0 +1,11 @@ +post_install() { + update-desktop-database -q +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} diff --git a/testing/calligra/calligra-krita.install b/testing/calligra/calligra-krita.install new file mode 100644 index 000000000..33d234a02 --- /dev/null +++ b/testing/calligra/calligra-krita.install @@ -0,0 +1,13 @@ +post_install() { + xdg-icon-resource forceupdate --theme hicolor &> /dev/null + update-mime-database usr/share/mime &> /dev/null + update-desktop-database -q +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} \ No newline at end of file diff --git a/testing/calligra/calligra-plan.install b/testing/calligra/calligra-plan.install new file mode 100644 index 000000000..c2179f6e2 --- /dev/null +++ b/testing/calligra/calligra-plan.install @@ -0,0 +1,12 @@ +post_install() { + xdg-icon-resource forceupdate --theme hicolor &> /dev/null + update-desktop-database -q +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} \ No newline at end of file diff --git a/testing/calligra/calligra-sheets.install b/testing/calligra/calligra-sheets.install new file mode 100644 index 000000000..6c87527e2 --- /dev/null +++ b/testing/calligra/calligra-sheets.install @@ -0,0 +1,12 @@ +post_install() { + xdg-icon-resource forceupdate --theme hicolor &> /dev/null + update-desktop-database -q +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} diff --git a/testing/calligra/calligra-stage.install b/testing/calligra/calligra-stage.install new file mode 100644 index 000000000..6c87527e2 --- /dev/null +++ b/testing/calligra/calligra-stage.install @@ -0,0 +1,12 @@ +post_install() { + xdg-icon-resource forceupdate --theme hicolor &> /dev/null + update-desktop-database -q +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} diff --git a/testing/calligra/calligra-tools.install b/testing/calligra/calligra-tools.install new file mode 100644 index 000000000..6c87527e2 --- /dev/null +++ b/testing/calligra/calligra-tools.install @@ -0,0 +1,12 @@ +post_install() { + xdg-icon-resource forceupdate --theme hicolor &> /dev/null + update-desktop-database -q +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} diff --git a/testing/calligra/calligra-words.install b/testing/calligra/calligra-words.install new file mode 100644 index 000000000..6c87527e2 --- /dev/null +++ b/testing/calligra/calligra-words.install @@ -0,0 +1,12 @@ +post_install() { + xdg-icon-resource forceupdate --theme hicolor &> /dev/null + update-desktop-database -q +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} diff --git a/testing/calligra/calligra.install b/testing/calligra/calligra.install new file mode 100644 index 000000000..e70c054ec --- /dev/null +++ b/testing/calligra/calligra.install @@ -0,0 +1,11 @@ +post_install() { + xdg-icon-resource forceupdate --theme hicolor &> /dev/null +} + +post_upgrade() { + post_install +} + +post_remove() { + post_install +} diff --git a/testing/calligra/do-not-build-hancomword.patch b/testing/calligra/do-not-build-hancomword.patch new file mode 100644 index 000000000..0c010b706 --- /dev/null +++ b/testing/calligra/do-not-build-hancomword.patch @@ -0,0 +1,11 @@ +--- a/filters/words/CMakeLists.txt ++++ b/filters/words/CMakeLists.txt +@@ -75,7 +75,6 @@ IF( NOT TINY ) + add_subdirectory( docbook ) + # add_subdirectory( html ) + add_subdirectory( kword1.3 ) +- add_subdirectory( hancomword ) + add_subdirectory( oowriter ) + add_subdirectory( palmdoc ) + add_subdirectory( wml ) + diff --git a/testing/glib2/PKGBUILD b/testing/glib2/PKGBUILD index 9874e6dbd..be2697245 100644 --- a/testing/glib2/PKGBUILD +++ b/testing/glib2/PKGBUILD @@ -1,9 +1,9 @@ -# $Id: PKGBUILD 155090 2012-04-01 11:32:36Z heftig $ +# $Id: PKGBUILD 156154 2012-04-14 17:18:07Z ibiru $ # Maintainer: Jan de Groot pkgname=glib2 -pkgver=2.32.0 -pkgrel=1 +pkgver=2.32.1 +pkgrel=2 pkgdesc="Common C routines used by GTK+ and other libs" url="http://www.gtk.org/" arch=(i686 x86_64) @@ -14,13 +14,16 @@ optdepends=('python2: for gdbus-codegen') options=('!libtool' '!docs' '!emptydirs') source=(http://ftp.gnome.org/pub/GNOME/sources/glib/${pkgver%.*}/glib-$pkgver.tar.xz glib2.sh - glib2.csh) -sha256sums=('cde9d9f25ed648069c547e323897ad9379974e1f936b4477fa51bcf1bb261ae4' + glib2.csh + revert-warn-glib-compile-schemas.patch) +sha256sums=('484d5b7fc09f3fa398355adaf74b369768f5859866c299f229c99721990f8398' '9456872cdedcc639fb679448d74b85b0facf81033e27157d2861b991823b5a2a' - '8d5626ffa361304ad3696493c0ef041d0ab10c857f6ef32116b3e2878ecf89e3') + '8d5626ffa361304ad3696493c0ef041d0ab10c857f6ef32116b3e2878ecf89e3' + '049240975cd2f1c88fbe7deb28af14d4ec7d2640495f7ca8980d873bb710cc97') build() { cd glib-$pkgver + patch -Rp1 -i "$srcdir/revert-warn-glib-compile-schemas.patch" PYTHON=/usr/bin/python2 ./configure --prefix=/usr \ --sysconfdir=/etc \ --with-pcre=system \ diff --git a/testing/glib2/revert-warn-glib-compile-schemas.patch b/testing/glib2/revert-warn-glib-compile-schemas.patch new file mode 100644 index 000000000..75b05103c --- /dev/null +++ b/testing/glib2/revert-warn-glib-compile-schemas.patch @@ -0,0 +1,33 @@ +From 6560b37450cd19c4a7c7b690e279fe97b7bfdcaa Mon Sep 17 00:00:00 2001 +From: Ryan Lortie +Date: Thu, 12 Apr 2012 23:55:34 +0000 +Subject: glib-compile-schemas: warn about bad dconf paths + +For quite some time the recommended usage of GSettings and dconf has +been to use paths like /org/gnome/example/. Use of /apps/ has spilled +over from GConf and is continuing to make its way into a number of +applications as they port. + +glib-compile-schemas will now warn about these types of paths being +used. This generates a lot of noise, but hopefully it will reduce the +number of ported applications making this mistake. +--- +diff --git a/gio/glib-compile-schemas.c b/gio/glib-compile-schemas.c +index cf02389..27d0181 100644 +--- a/gio/glib-compile-schemas.c ++++ b/gio/glib-compile-schemas.c +@@ -1204,6 +1204,12 @@ parse_state_start_schema (ParseState *state, + return; + } + ++ if (path && (g_str_has_prefix (path, "/apps/") || ++ g_str_has_prefix (path, "/desktop/") || ++ g_str_has_prefix (path, "/system/"))) ++ g_printerr ("warning: Schema '%s' has path '%s'. Paths starting with " ++ "'/apps/', '/desktop/' or '/system/' are deprecated.\n", id, path); ++ + state->schema_state = schema_state_new (path, gettext_domain, + extends, extends_name, list_of); + +-- +cgit v0.9.0.2 diff --git a/testing/gtk3/PKGBUILD b/testing/gtk3/PKGBUILD index 1813322b4..e7abef525 100644 --- a/testing/gtk3/PKGBUILD +++ b/testing/gtk3/PKGBUILD @@ -1,8 +1,8 @@ -# $Id: PKGBUILD 155168 2012-04-01 11:34:35Z heftig $ +# $Id: PKGBUILD 156135 2012-04-14 11:12:53Z ibiru $ # Maintainer: Ionut Biru pkgname=gtk3 -pkgver=3.4.0 +pkgver=3.4.1 pkgrel=1 pkgdesc="GObject-based multi-platform GUI toolkit (v3)" arch=('i686' 'x86_64') @@ -15,11 +15,10 @@ backup=(etc/gtk-3.0/settings.ini) license=('LGPL') source=(http://ftp.gnome.org/pub/gnome/sources/gtk+/${pkgver%.*}/gtk+-$pkgver.tar.xz settings.ini) -sha256sums=('00af8be8bc60355e08a8f57e3e7503c916cec5cd5c6acb3eaedb01330b81f3e0' +sha256sums=('0716b533de0ff2ffdec1076bb85c7a95e2b7b6ac9ece71e84625043ae3eb25f7' 'c214d3dcdcadda3d642112287524ab3e526ad592b70895c9f3e3733c23701621') build() { cd "gtk+-$pkgver" - export CFLAGS+=" -g -O0" CXX=/bin/false ./configure --prefix=/usr \ --sysconfdir=/etc \ --localstatedir=/var \ diff --git a/testing/libgcrypt/PKGBUILD b/testing/libgcrypt/PKGBUILD new file mode 100644 index 000000000..1573d1113 --- /dev/null +++ b/testing/libgcrypt/PKGBUILD @@ -0,0 +1,35 @@ +# $Id: PKGBUILD 156113 2012-04-14 08:32:06Z andyrtr $ +# Maintainer: Andreas Radke + +pkgname=libgcrypt +pkgver=1.5.0 +pkgrel=3 +pkgdesc="a general purpose crypto library based on the code used" +arch=(i686 x86_64) +url="http://www.gnupg.org" +license=('LGPL') +depends=('libgpg-error>=1.10-2') +options=('!libtool' '!emptydirs') +install=$pkgname.install +source=(ftp://ftp.gnupg.org/gcrypt/${pkgname}/${pkgname}-${pkgver}.tar.bz2 + #ftp://ftp.franken.de/pub/crypt/mirror/ftp.gnupg.org/gcrypt/libgcrypt/${pkgname}-${pkgver}.tar.bz2 +) +sha1sums=('3e776d44375dc1a710560b98ae8437d5da6e32cf') + +build() { + cd ${srcdir}/${pkgname}-${pkgver} + ./configure --prefix=/usr \ + --disable-static \ + --disable-padlock-support #$EXTRAFLAGS + make +} + +check() { + cd ${srcdir}/${pkgname}-${pkgver} + make check +} + +package() { + cd ${srcdir}/${pkgname}-${pkgver} + make DESTDIR=${pkgdir} install +} diff --git a/testing/libgcrypt/libgcrypt.install b/testing/libgcrypt/libgcrypt.install new file mode 100644 index 000000000..79b878201 --- /dev/null +++ b/testing/libgcrypt/libgcrypt.install @@ -0,0 +1,20 @@ +infodir=/usr/share/info +filelist=(gcrypt.info.gz gcrypt.info-1.gz) + +post_install() { + [ -x usr/bin/install-info ] || return 0 + for file in ${filelist[@]}; do + install-info $infodir/$file $infodir/dir 2> /dev/null + done +} + +post_upgrade() { + post_install $1 +} + +pre_remove() { + [ -x usr/bin/install-info ] || return 0 + for file in ${filelist[@]}; do + install-info --delete $infodir/$file $infodir/dir 2> /dev/null + done +} diff --git a/testing/libgpg-error/PKGBUILD b/testing/libgpg-error/PKGBUILD new file mode 100644 index 000000000..527961054 --- /dev/null +++ b/testing/libgpg-error/PKGBUILD @@ -0,0 +1,32 @@ +# $Id: PKGBUILD 156111 2012-04-14 08:27:34Z andyrtr $ +# Maintainer: judd + +pkgname=libgpg-error +pkgver=1.10 +pkgrel=2 +pkgdesc="Support library for libgcrypt" +arch=(i686 x86_64) +url="http://www.gnupg.org" +license=('LGPL') +depends=('glibc' 'sh') +options=(!libtool) +source=(ftp://ftp.gnupg.org/gcrypt/libgpg-error/${pkgname}-${pkgver}.tar.bz2) + #ftp://ftp.franken.de/pub/crypt/mirror/ftp.gnupg.org/gcrypt/libgpg-error/${pkgname}-${pkgver}.tar.bz2) +md5sums=('736a03daa9dc5873047d4eb4a9c22a16') + + +build() { + cd "${srcdir}"/${pkgname}-${pkgver} + ./configure --prefix=/usr + make +} + +check() { + cd ${srcdir}/${pkgname}-${pkgver} + make check +} + +package() { + cd "${srcdir}"/${pkgname}-${pkgver} + make DESTDIR="${pkgdir}/" install +} diff --git a/testing/networkmanager/PKGBUILD b/testing/networkmanager/PKGBUILD index 7158bca39..d049a323e 100644 --- a/testing/networkmanager/PKGBUILD +++ b/testing/networkmanager/PKGBUILD @@ -1,4 +1,4 @@ -# $Id: PKGBUILD 155234 2012-04-01 11:36:20Z heftig $ +# $Id: PKGBUILD 156160 2012-04-14 21:19:28Z heftig $ # Maintainer: Jan de Groot # Contri-butor: Wael Nasreddine # Contributor: Tor Krill @@ -8,13 +8,13 @@ pkgname=networkmanager _pkgname=NetworkManager pkgver=0.9.4.0 -pkgrel=1 +pkgrel=2 pkgdesc="Network Management daemon" arch=('i686' 'x86_64') license=('GPL') url="http://www.gnome.org/projects/$_pkgname/" depends=('dbus-glib' 'iproute2' 'libnl' 'nss' 'polkit' 'udev' 'wpa_supplicant' 'ppp' 'dhcpcd' - 'libsystemd' 'libsoup') + 'libsoup') makedepends=('intltool' 'dhclient' 'iptables' 'gobject-introspection') optdepends=('modemmanager: for modem management service' 'dhclient: alternative DHCP/DHCPv6 client' @@ -27,20 +27,17 @@ backup=('etc/NetworkManager/NetworkManager.conf') install=networkmanager.install #source=(http://cgit.freedesktop.org/$_pkgname/$_pkgname/snapshot/$_pkgname-master.tar.xz source=(http://ftp.gnome.org/pub/gnome/sources/$_pkgname/${pkgver:0:3}/$_pkgname-$pkgver.tar.xz - NetworkManager.conf disable_set_hostname.patch dnsmasq-path.patch systemd-fallback.patch) + NetworkManager.conf disable_set_hostname.patch dnsmasq-path.patch) sha256sums=('eb4f124008b3d855a37205d03ef035b7218639cd7332bdae5567095977e93e0f' '44b048804c7c0b8b3b0c29b8632b6ad613c397d0a1635ec918e10c0fbcdadf21' '25056837ea92e559f09563ed817e3e0cd9333be861b8914e45f62ceaae2e0460' - '65124505048cc8396daf0242c9f5d532fa669b4bbca305998c248ab2329490cb' - '5e9bbd8a84883037d27a71ea9969d0cb03f09ca238fa733381bcf136bbc340a5') + '65124505048cc8396daf0242c9f5d532fa669b4bbca305998c248ab2329490cb') build() { cd $_pkgname-$pkgver patch -Np1 -i ../disable_set_hostname.patch patch -Np1 -i ../dnsmasq-path.patch - patch -Np1 -i ../systemd-fallback.patch - AUTOPOINT='intltoolize --automake --copy' autoreconf -f -i ./configure \ --prefix=/usr \ @@ -52,9 +49,9 @@ build() { --with-dhclient=/usr/sbin/dhclient \ --with-dhcpcd=/sbin/dhcpcd \ --with-iptables=/usr/sbin/iptables \ - --with-systemdsystemunitdir=/lib/systemd/system \ + --with-systemdsystemunitdir=/usr/lib/systemd/system \ --with-resolvconf=/usr/sbin/resolvconf \ - --with-session-tracking=systemd \ + --with-session-tracking=ck \ --with-wext=no \ --disable-static \ --enable-more-warnings=no \ diff --git a/testing/nss/PKGBUILD b/testing/nss/PKGBUILD new file mode 100644 index 000000000..8a64db99f --- /dev/null +++ b/testing/nss/PKGBUILD @@ -0,0 +1,105 @@ +# $Id: PKGBUILD 156115 2012-04-14 08:37:37Z ibiru $ +# Maintainer: Jan de Groot + +pkgname=nss +pkgver=3.13.4 +pkgrel=1 +pkgdesc="Mozilla Network Security Services" +arch=(i686 x86_64) +url="http://www.mozilla.org/projects/security/pki/nss/" +license=('MPL' 'GPL') +_nsprver=4.9 +depends=("nspr>=${_nsprver}" 'sqlite3' 'zlib' 'sh') +makedepends=('perl') +options=('!strip') +source=(ftp://ftp.mozilla.org/pub/security/nss/releases/NSS_${pkgver//./_}_RTM/src/${pkgname}-${pkgver}.tar.gz + nss-no-rpath.patch + nss.pc.in + nss-config.in + add_spi+cacert_ca_certs.patch + ssl-renegotiate-transitional.patch) +sha1sums=('c5a829c3bd56aa743457faf21469065f87c2db75' + 'c8fcdb153af9d39689243119adb475905a657284' + 'aa5b2c0aa38d3c1066d511336cf28d1333e3aebd' + 'cb744cc3e56b604e4754bc3c7d9f25bb9a0a136c' + '3d89f29e321d7df7269b7ae6d219654543feaa6a' + '8a964a744ba098711b80c0d279a2993524e8eb92') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}/mozilla" + # Adds the SPI Inc. and CAcert.org CA certificates - patch from Debian, modified to apply on certdata.txt only + patch -Np2 -i "${srcdir}/add_spi+cacert_ca_certs.patch" + # Adds transitional SSL renegotiate support - patch from Debian + patch -Np2 -i "${srcdir}/ssl-renegotiate-transitional.patch" + # Removes rpath + patch -Np2 -i "${srcdir}/nss-no-rpath.patch" + + # Respect LDFLAGS + sed -e 's/\$(MKSHLIB) -o/\$(MKSHLIB) \$(LDFLAGS) -o/g' \ + -i security/coreconf/rules.mk + + # Generate certdata.c from certdata.txt + cd security/nss/lib/ckfw/builtins + make generate + + cd "${srcdir}/${pkgname}-${pkgver}" + export BUILD_OPT=1 + export PKG_CONFIG_ALLOW_SYSTEM_LIBS=1 + export PKG_CONFIG_ALLOW_SYSTEM_CFLAGS=1 + export NSS_USE_SYSTEM_SQLITE=1 + export NSPR_INCLUDE_DIR=`pkg-config --cflags-only-I nspr | sed 's/-I//'` + export NSPR_LIB_DIR=`pkg-config --libs-only-L nspr | sed 's/-L.//'` + export XCFLAGS="${CFLAGS}" + + [ "$CARCH" = "x86_64" ] && export USE_64=1 + + make -j 1 -C mozilla/security/coreconf + make -j 1 -C mozilla/security/dbm + make -j 1 -C mozilla/security/nss +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + install -m755 -d "${pkgdir}/usr/lib/pkgconfig" + install -m755 -d "${pkgdir}/usr/bin" + install -m755 -d "${pkgdir}/usr/include/nss" + + NSS_VMAJOR=`grep "#define.*NSS_VMAJOR" mozilla/security/nss/lib/nss/nss.h | awk '{print $3}'` + NSS_VMINOR=`grep "#define.*NSS_VMINOR" mozilla/security/nss/lib/nss/nss.h | awk '{print $3}'` + NSS_VPATCH=`grep "#define.*NSS_VPATCH" mozilla/security/nss/lib/nss/nss.h | awk '{print $3}'` + + sed "${srcdir}/nss.pc.in" -e "s,%libdir%,/usr/lib,g" \ + -e "s,%prefix%,/usr,g" \ + -e "s,%exec_prefix%,/usr/bin,g" \ + -e "s,%includedir%,/usr/include/nss,g" \ + -e "s,%NSPR_VERSION%,${pkgver},g" \ + -e "s,%NSS_VERSION%,${pkgver},g" > \ + "${pkgdir}/usr/lib/pkgconfig/nss.pc" + ln -sf nss.pc "${pkgdir}/usr/lib/pkgconfig/mozilla-nss.pc" + chmod 644 ${pkgdir}/usr/lib/pkgconfig/*.pc + + sed "${srcdir}/nss-config.in" -e "s,@libdir@,/usr/lib,g" \ + -e "s,@prefix@,/usr/bin,g" \ + -e "s,@exec_prefix@,/usr/bin,g" \ + -e "s,@includedir@,/usr/include/nss,g" \ + -e "s,@MOD_MAJOR_VERSION@,${NSS_VMAJOR},g" \ + -e "s,@MOD_MINOR_VERSION@,${NSS_VMINOR},g" \ + -e "s,@MOD_PATCH_VERSION@,${NSS_VPATCH},g" \ + > "${pkgdir}/usr/bin/nss-config" + chmod 755 "${pkgdir}/usr/bin/nss-config" + + for file in libsoftokn3.so libfreebl3.so libnss3.so libnssutil3.so \ + libssl3.so libsmime3.so libnssckbi.so libnssdbm3.so + do + install -m755 mozilla/dist/*.OBJ/lib/${file} "${pkgdir}/usr/lib/" + done + + install -m644 mozilla/dist/*.OBJ/lib/libcrmf.a "${pkgdir}/usr/lib/" + install -m644 mozilla/dist/*.OBJ/lib/*.chk "${pkgdir}/usr/lib/" + + for file in certutil cmsutil crlutil modutil pk12util shlibsign signtool signver ssltap; do + install -m755 mozilla/dist/*.OBJ/bin/${file} "${pkgdir}/usr/bin/" + done + + install -m644 mozilla/dist/public/nss/*.h "${pkgdir}/usr/include/nss/" +} diff --git a/testing/nss/add_spi+cacert_ca_certs.patch b/testing/nss/add_spi+cacert_ca_certs.patch new file mode 100644 index 000000000..bf7e2ca16 --- /dev/null +++ b/testing/nss/add_spi+cacert_ca_certs.patch @@ -0,0 +1,568 @@ +## 95_add_spi+cacert_ca_certs.patch by martin f. krafft +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Adds the SPI Inc. and CAcert.org CA certificates + +Index: nss/mozilla/security/nss/lib/ckfw/builtins/certdata.txt +=================================================================== +--- nss.orig/mozilla/security/nss/lib/ckfw/builtins/certdata.txt 2012-02-24 09:32:14.000000000 +0100 ++++ nss/mozilla/security/nss/lib/ckfw/builtins/certdata.txt 2012-02-24 09:35:07.577861466 +0100 +@@ -23475,3 +23475,558 @@ + CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NSS_NOT_TRUSTED + CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NSS_NOT_TRUSTED + CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE ++ ++# ++# Certificate "CAcert.org Class 1 Root CA" ++# ++CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE ++CKA_TOKEN CK_BBOOL CK_TRUE ++CKA_PRIVATE CK_BBOOL CK_FALSE ++CKA_MODIFIABLE CK_BBOOL CK_FALSE ++CKA_LABEL UTF8 "CAcert.org Class 1 Root CA" ++CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 ++CKA_SUBJECT MULTILINE_OCTAL ++\060\171\061\020\060\016\006\003\125\004\012\023\007\122\157\157 ++\164\040\103\101\061\036\060\034\006\003\125\004\013\023\025\150 ++\164\164\160\072\057\057\167\167\167\056\143\141\143\145\162\164 ++\056\157\162\147\061\042\060\040\006\003\125\004\003\023\031\103 ++\101\040\103\145\162\164\040\123\151\147\156\151\156\147\040\101 ++\165\164\150\157\162\151\164\171\061\041\060\037\006\011\052\206 ++\110\206\367\015\001\011\001\026\022\163\165\160\160\157\162\164 ++\100\143\141\143\145\162\164\056\157\162\147 ++END ++CKA_ID UTF8 "0" ++CKA_ISSUER MULTILINE_OCTAL ++\060\171\061\020\060\016\006\003\125\004\012\023\007\122\157\157 ++\164\040\103\101\061\036\060\034\006\003\125\004\013\023\025\150 ++\164\164\160\072\057\057\167\167\167\056\143\141\143\145\162\164 ++\056\157\162\147\061\042\060\040\006\003\125\004\003\023\031\103 ++\101\040\103\145\162\164\040\123\151\147\156\151\156\147\040\101 ++\165\164\150\157\162\151\164\171\061\041\060\037\006\011\052\206 ++\110\206\367\015\001\011\001\026\022\163\165\160\160\157\162\164 ++\100\143\141\143\145\162\164\056\157\162\147 ++END ++CKA_SERIAL_NUMBER MULTILINE_OCTAL ++\002\001\000 ++END ++CKA_VALUE MULTILINE_OCTAL ++\060\202\007\075\060\202\005\045\240\003\002\001\002\002\001\000 ++\060\015\006\011\052\206\110\206\367\015\001\001\004\005\000\060 ++\171\061\020\060\016\006\003\125\004\012\023\007\122\157\157\164 ++\040\103\101\061\036\060\034\006\003\125\004\013\023\025\150\164 ++\164\160\072\057\057\167\167\167\056\143\141\143\145\162\164\056 ++\157\162\147\061\042\060\040\006\003\125\004\003\023\031\103\101 ++\040\103\145\162\164\040\123\151\147\156\151\156\147\040\101\165 ++\164\150\157\162\151\164\171\061\041\060\037\006\011\052\206\110 ++\206\367\015\001\011\001\026\022\163\165\160\160\157\162\164\100 ++\143\141\143\145\162\164\056\157\162\147\060\036\027\015\060\063 ++\060\063\063\060\061\062\062\071\064\071\132\027\015\063\063\060 ++\063\062\071\061\062\062\071\064\071\132\060\171\061\020\060\016 ++\006\003\125\004\012\023\007\122\157\157\164\040\103\101\061\036 ++\060\034\006\003\125\004\013\023\025\150\164\164\160\072\057\057 ++\167\167\167\056\143\141\143\145\162\164\056\157\162\147\061\042 ++\060\040\006\003\125\004\003\023\031\103\101\040\103\145\162\164 ++\040\123\151\147\156\151\156\147\040\101\165\164\150\157\162\151 ++\164\171\061\041\060\037\006\011\052\206\110\206\367\015\001\011 ++\001\026\022\163\165\160\160\157\162\164\100\143\141\143\145\162 ++\164\056\157\162\147\060\202\002\042\060\015\006\011\052\206\110 ++\206\367\015\001\001\001\005\000\003\202\002\017\000\060\202\002 ++\012\002\202\002\001\000\316\042\300\342\106\175\354\066\050\007 ++\120\226\362\240\063\100\214\113\361\073\146\077\061\345\153\002 ++\066\333\326\174\366\361\210\217\116\167\066\005\101\225\371\011 ++\360\022\317\106\206\163\140\267\156\176\350\300\130\144\256\315 ++\260\255\105\027\014\143\372\147\012\350\326\322\277\076\347\230 ++\304\360\114\372\340\003\273\065\135\154\041\336\236\040\331\272 ++\315\146\062\067\162\372\367\010\365\307\315\130\311\216\347\016 ++\136\352\076\376\034\241\024\012\025\154\206\204\133\144\146\052 ++\172\251\113\123\171\365\210\242\173\356\057\012\141\053\215\262 ++\176\115\126\245\023\354\352\332\222\236\254\104\101\036\130\140 ++\145\005\146\370\300\104\275\313\224\367\102\176\013\367\145\150 ++\230\121\005\360\363\005\221\004\035\033\027\202\354\310\127\273 ++\303\153\172\210\361\260\162\314\045\133\040\221\354\026\002\022 ++\217\062\351\027\030\110\320\307\005\056\002\060\102\270\045\234 ++\005\153\077\252\072\247\353\123\110\367\350\322\266\007\230\334 ++\033\306\064\177\177\311\034\202\172\005\130\053\010\133\363\070 ++\242\253\027\135\146\311\230\327\236\020\213\242\322\335\164\232 ++\367\161\014\162\140\337\315\157\230\063\235\226\064\166\076\044 ++\172\222\260\016\225\036\157\346\240\105\070\107\252\327\101\355 ++\112\267\022\366\327\033\203\212\017\056\330\011\266\131\327\252 ++\004\377\322\223\175\150\056\335\213\113\253\130\272\057\215\352 ++\225\247\240\303\124\211\245\373\333\213\121\042\235\262\303\276 ++\021\276\054\221\206\213\226\170\255\040\323\212\057\032\077\306 ++\320\121\145\207\041\261\031\001\145\177\105\034\207\365\174\320 ++\101\114\117\051\230\041\375\063\037\165\014\004\121\372\031\167 ++\333\324\024\034\356\201\303\035\365\230\267\151\006\221\042\335 ++\000\120\314\201\061\254\022\007\173\070\332\150\133\346\053\324 ++\176\311\137\255\350\353\162\114\363\001\345\113\040\277\232\246 ++\127\312\221\000\001\213\241\165\041\067\265\143\015\147\076\106 ++\117\160\040\147\316\305\326\131\333\002\340\360\322\313\315\272 ++\142\267\220\101\350\335\040\344\051\274\144\051\102\310\042\334 ++\170\232\377\103\354\230\033\011\121\113\132\132\302\161\361\304 ++\313\163\251\345\241\013\002\003\001\000\001\243\202\001\316\060 ++\202\001\312\060\035\006\003\125\035\016\004\026\004\024\026\265 ++\062\033\324\307\363\340\346\216\363\275\322\260\072\356\262\071 ++\030\321\060\201\243\006\003\125\035\043\004\201\233\060\201\230 ++\200\024\026\265\062\033\324\307\363\340\346\216\363\275\322\260 ++\072\356\262\071\030\321\241\175\244\173\060\171\061\020\060\016 ++\006\003\125\004\012\023\007\122\157\157\164\040\103\101\061\036 ++\060\034\006\003\125\004\013\023\025\150\164\164\160\072\057\057 ++\167\167\167\056\143\141\143\145\162\164\056\157\162\147\061\042 ++\060\040\006\003\125\004\003\023\031\103\101\040\103\145\162\164 ++\040\123\151\147\156\151\156\147\040\101\165\164\150\157\162\151 ++\164\171\061\041\060\037\006\011\052\206\110\206\367\015\001\011 ++\001\026\022\163\165\160\160\157\162\164\100\143\141\143\145\162 ++\164\056\157\162\147\202\001\000\060\017\006\003\125\035\023\001 ++\001\377\004\005\060\003\001\001\377\060\062\006\003\125\035\037 ++\004\053\060\051\060\047\240\045\240\043\206\041\150\164\164\160 ++\163\072\057\057\167\167\167\056\143\141\143\145\162\164\056\157 ++\162\147\057\162\145\166\157\153\145\056\143\162\154\060\060\006 ++\011\140\206\110\001\206\370\102\001\004\004\043\026\041\150\164 ++\164\160\163\072\057\057\167\167\167\056\143\141\143\145\162\164 ++\056\157\162\147\057\162\145\166\157\153\145\056\143\162\154\060 ++\064\006\011\140\206\110\001\206\370\102\001\010\004\047\026\045 ++\150\164\164\160\072\057\057\167\167\167\056\143\141\143\145\162 ++\164\056\157\162\147\057\151\156\144\145\170\056\160\150\160\077 ++\151\144\075\061\060\060\126\006\011\140\206\110\001\206\370\102 ++\001\015\004\111\026\107\124\157\040\147\145\164\040\171\157\165 ++\162\040\157\167\156\040\143\145\162\164\151\146\151\143\141\164 ++\145\040\146\157\162\040\106\122\105\105\040\150\145\141\144\040 ++\157\166\145\162\040\164\157\040\150\164\164\160\072\057\057\167 ++\167\167\056\143\141\143\145\162\164\056\157\162\147\060\015\006 ++\011\052\206\110\206\367\015\001\001\004\005\000\003\202\002\001 ++\000\050\307\356\234\202\002\272\134\200\022\312\065\012\035\201 ++\157\211\152\231\314\362\150\017\177\247\341\215\130\225\076\275 ++\362\006\303\220\132\254\265\140\366\231\103\001\243\210\160\234 ++\235\142\235\244\207\257\147\130\015\060\066\073\346\255\110\323 ++\313\164\002\206\161\076\342\053\003\150\361\064\142\100\106\073 ++\123\352\050\364\254\373\146\225\123\212\115\135\375\073\331\140 ++\327\312\171\151\073\261\145\222\246\306\201\202\134\234\315\353 ++\115\001\212\245\337\021\125\252\025\312\037\067\300\202\230\160 ++\141\333\152\174\226\243\216\056\124\076\117\041\251\220\357\334 ++\202\277\334\350\105\255\115\220\163\010\074\224\145\260\004\231 ++\166\177\342\274\302\152\025\252\227\004\067\044\330\036\224\116 ++\155\016\121\276\326\304\217\312\226\155\367\103\337\350\060\145 ++\047\073\173\273\103\103\143\304\103\367\262\354\150\314\341\031 ++\216\042\373\230\341\173\132\076\001\067\073\213\010\260\242\363 ++\225\116\032\313\233\315\232\261\333\262\160\360\055\112\333\330 ++\260\343\157\105\110\063\022\377\376\074\062\052\124\367\304\367 ++\212\360\210\043\302\107\376\144\172\161\300\321\036\246\143\260 ++\007\176\244\057\323\001\217\334\237\053\266\306\010\251\017\223 ++\110\045\374\022\375\237\102\334\363\304\076\366\127\260\327\335 ++\151\321\006\167\064\012\113\322\312\240\377\034\306\214\311\026 ++\276\304\314\062\067\150\163\137\010\373\121\367\111\123\066\005 ++\012\225\002\114\362\171\032\020\366\330\072\165\234\363\035\361 ++\242\015\160\147\206\033\263\026\365\057\345\244\353\171\206\371 ++\075\013\302\163\013\245\231\254\157\374\147\270\345\057\013\246 ++\030\044\215\173\321\110\065\051\030\100\254\223\140\341\226\206 ++\120\264\172\131\330\217\041\013\237\317\202\221\306\073\277\153 ++\334\007\221\271\227\126\043\252\266\154\224\306\110\006\074\344 ++\316\116\252\344\366\057\011\334\123\157\056\374\164\353\072\143 ++\231\302\246\254\211\274\247\262\104\240\015\212\020\343\154\362 ++\044\313\372\233\237\160\107\056\336\024\213\324\262\040\011\226 ++\242\144\361\044\034\334\241\065\234\025\262\324\274\125\056\175 ++\006\365\234\016\125\364\132\326\223\332\166\255\045\163\114\305 ++\103 ++END ++ ++# Trust for Certificate "CAcert.org Class 1 Root CA" ++CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST ++CKA_TOKEN CK_BBOOL CK_TRUE ++CKA_PRIVATE CK_BBOOL CK_FALSE ++CKA_MODIFIABLE CK_BBOOL CK_FALSE ++CKA_LABEL UTF8 "CAcert.org Class 1 Root CA" ++CKA_CERT_SHA1_HASH MULTILINE_OCTAL ++\023\134\354\066\364\234\270\351\073\032\262\160\315\200\210\106 ++\166\316\217\063 ++END ++CKA_CERT_MD5_HASH MULTILINE_OCTAL ++\246\033\067\136\071\015\234\066\124\356\275\040\061\106\037\153 ++END ++CKA_ISSUER MULTILINE_OCTAL ++\060\171\061\020\060\016\006\003\125\004\012\023\007\122\157\157 ++\164\040\103\101\061\036\060\034\006\003\125\004\013\023\025\150 ++\164\164\160\072\057\057\167\167\167\056\143\141\143\145\162\164 ++\056\157\162\147\061\042\060\040\006\003\125\004\003\023\031\103 ++\101\040\103\145\162\164\040\123\151\147\156\151\156\147\040\101 ++\165\164\150\157\162\151\164\171\061\041\060\037\006\011\052\206 ++\110\206\367\015\001\011\001\026\022\163\165\160\160\157\162\164 ++\100\143\141\143\145\162\164\056\157\162\147 ++END ++CKA_SERIAL_NUMBER MULTILINE_OCTAL ++\002\001\000 ++END ++CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR ++CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR ++CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR ++CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE ++ ++# ++# Certificate "CAcert.org Class 3 Root CA" ++# ++CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE ++CKA_TOKEN CK_BBOOL CK_TRUE ++CKA_PRIVATE CK_BBOOL CK_FALSE ++CKA_MODIFIABLE CK_BBOOL CK_FALSE ++CKA_LABEL UTF8 "CAcert.org Class 3 Root CA" ++CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 ++CKA_SUBJECT MULTILINE_OCTAL ++\060\124\061\024\060\022\006\003\125\004\012\023\013\103\101\143 ++\145\162\164\040\111\156\143\056\061\036\060\034\006\003\125\004 ++\013\023\025\150\164\164\160\072\057\057\167\167\167\056\103\101 ++\143\145\162\164\056\157\162\147\061\034\060\032\006\003\125\004 ++\003\023\023\103\101\143\145\162\164\040\103\154\141\163\163\040 ++\063\040\122\157\157\164 ++END ++CKA_ID UTF8 "0" ++CKA_ISSUER MULTILINE_OCTAL ++\060\171\061\020\060\016\006\003\125\004\012\023\007\122\157\157 ++\164\040\103\101\061\036\060\034\006\003\125\004\013\023\025\150 ++\164\164\160\072\057\057\167\167\167\056\143\141\143\145\162\164 ++\056\157\162\147\061\042\060\040\006\003\125\004\003\023\031\103 ++\101\040\103\145\162\164\040\123\151\147\156\151\156\147\040\101 ++\165\164\150\157\162\151\164\171\061\041\060\037\006\011\052\206 ++\110\206\367\015\001\011\001\026\022\163\165\160\160\157\162\164 ++\100\143\141\143\145\162\164\056\157\162\147 ++END ++CKA_SERIAL_NUMBER MULTILINE_OCTAL ++\002\001\001 ++END ++CKA_VALUE MULTILINE_OCTAL ++\060\202\006\010\060\202\003\360\240\003\002\001\002\002\001\001 ++\060\015\006\011\052\206\110\206\367\015\001\001\004\005\000\060 ++\171\061\020\060\016\006\003\125\004\012\023\007\122\157\157\164 ++\040\103\101\061\036\060\034\006\003\125\004\013\023\025\150\164 ++\164\160\072\057\057\167\167\167\056\143\141\143\145\162\164\056 ++\157\162\147\061\042\060\040\006\003\125\004\003\023\031\103\101 ++\040\103\145\162\164\040\123\151\147\156\151\156\147\040\101\165 ++\164\150\157\162\151\164\171\061\041\060\037\006\011\052\206\110 ++\206\367\015\001\011\001\026\022\163\165\160\160\157\162\164\100 ++\143\141\143\145\162\164\056\157\162\147\060\036\027\015\060\065 ++\061\060\061\064\060\067\063\066\065\065\132\027\015\063\063\060 ++\063\062\070\060\067\063\066\065\065\132\060\124\061\024\060\022 ++\006\003\125\004\012\023\013\103\101\143\145\162\164\040\111\156 ++\143\056\061\036\060\034\006\003\125\004\013\023\025\150\164\164 ++\160\072\057\057\167\167\167\056\103\101\143\145\162\164\056\157 ++\162\147\061\034\060\032\006\003\125\004\003\023\023\103\101\143 ++\145\162\164\040\103\154\141\163\163\040\063\040\122\157\157\164 ++\060\202\002\042\060\015\006\011\052\206\110\206\367\015\001\001 ++\001\005\000\003\202\002\017\000\060\202\002\012\002\202\002\001 ++\000\253\111\065\021\110\174\322\046\176\123\224\317\103\251\335 ++\050\327\102\052\213\363\207\170\031\130\174\017\236\332\211\175 ++\341\373\353\162\220\015\164\241\226\144\253\237\240\044\231\163 ++\332\342\125\166\307\027\173\365\004\254\106\270\303\276\177\144 ++\215\020\154\044\363\141\234\300\362\220\372\121\346\365\151\001 ++\143\303\017\126\342\112\102\317\342\104\214\045\050\250\305\171 ++\011\175\106\271\212\363\351\363\064\051\010\105\344\034\237\313 ++\224\004\034\201\250\024\263\230\145\304\103\354\116\202\215\011 ++\321\275\252\133\215\222\320\354\336\220\305\177\012\302\343\353 ++\346\061\132\136\164\076\227\063\131\350\303\003\075\140\063\277 ++\367\321\157\107\304\315\356\142\203\122\156\056\010\232\244\331 ++\025\030\221\246\205\222\107\260\256\110\353\155\267\041\354\205 ++\032\150\162\065\253\377\360\020\135\300\364\224\247\152\325\073 ++\222\176\114\220\005\176\223\301\054\213\244\216\142\164\025\161 ++\156\013\161\003\352\257\025\070\232\324\322\005\162\157\214\371 ++\053\353\132\162\045\371\071\106\343\162\033\076\004\303\144\047 ++\042\020\052\212\117\130\247\003\255\276\264\056\023\355\135\252 ++\110\327\325\175\324\052\173\134\372\106\004\120\344\314\016\102 ++\133\214\355\333\362\317\374\226\223\340\333\021\066\124\142\064 ++\070\217\014\140\233\073\227\126\070\255\363\322\133\213\240\133 ++\352\116\226\270\174\327\325\240\206\160\100\323\221\051\267\242 ++\074\255\365\214\273\317\032\222\212\344\064\173\300\330\154\137 ++\351\012\302\303\247\040\232\132\337\054\135\122\134\272\107\325 ++\233\357\044\050\160\070\040\057\325\177\051\300\262\101\003\150 ++\222\314\340\234\314\227\113\105\357\072\020\012\253\160\072\230 ++\225\160\255\065\261\352\205\053\244\034\200\041\061\251\256\140 ++\172\200\046\110\000\270\001\300\223\143\125\042\221\074\126\347 ++\257\333\072\045\363\217\061\124\352\046\213\201\131\371\241\321 ++\123\021\305\173\235\003\366\164\021\340\155\261\054\077\054\206 ++\221\231\161\232\246\167\213\064\140\321\024\264\054\254\235\257 ++\214\020\323\237\304\152\370\157\023\374\163\131\367\146\102\164 ++\036\212\343\370\334\322\157\230\234\313\107\230\225\100\005\373 ++\351\002\003\001\000\001\243\201\277\060\201\274\060\017\006\003 ++\125\035\023\001\001\377\004\005\060\003\001\001\377\060\135\006 ++\010\053\006\001\005\005\007\001\001\004\121\060\117\060\043\006 ++\010\053\006\001\005\005\007\060\001\206\027\150\164\164\160\072 ++\057\057\157\143\163\160\056\103\101\143\145\162\164\056\157\162 ++\147\057\060\050\006\010\053\006\001\005\005\007\060\002\206\034 ++\150\164\164\160\072\057\057\167\167\167\056\103\101\143\145\162 ++\164\056\157\162\147\057\143\141\056\143\162\164\060\112\006\003 ++\125\035\040\004\103\060\101\060\077\006\010\053\006\001\004\001 ++\201\220\112\060\063\060\061\006\010\053\006\001\005\005\007\002 ++\001\026\045\150\164\164\160\072\057\057\167\167\167\056\103\101 ++\143\145\162\164\056\157\162\147\057\151\156\144\145\170\056\160 ++\150\160\077\151\144\075\061\060\060\015\006\011\052\206\110\206 ++\367\015\001\001\004\005\000\003\202\002\001\000\177\010\210\241 ++\332\032\120\111\332\211\373\241\010\162\363\212\367\036\304\072 ++\264\171\133\040\060\261\105\336\302\135\323\145\151\361\302\135 ++\124\124\074\205\137\271\173\102\221\302\231\375\033\121\233\253 ++\106\245\241\020\123\236\155\210\254\163\156\054\063\246\360\364 ++\236\340\165\301\076\210\105\251\341\146\103\376\126\132\321\172 ++\101\170\367\100\332\112\072\361\013\133\245\273\026\006\346\302 ++\347\223\271\205\115\227\117\261\036\070\103\200\357\233\015\214 ++\357\270\247\140\000\207\127\175\036\104\034\313\043\357\233\074 ++\231\235\257\265\051\034\105\171\026\226\115\047\155\361\034\154 ++\303\302\125\144\263\274\024\342\363\244\037\036\062\374\047\025 ++\005\317\335\056\256\076\202\141\173\360\041\020\030\366\104\352 ++\123\071\371\334\320\232\040\340\306\273\340\273\132\117\304\231 ++\310\007\275\265\275\242\333\056\142\015\102\064\101\274\377\213 ++\212\365\121\042\252\210\060\000\342\260\324\274\276\145\272\325 ++\003\127\171\233\350\334\310\115\370\120\355\221\245\122\050\242 ++\254\373\066\130\076\351\224\053\221\120\207\033\326\136\326\214 ++\314\367\017\020\014\122\116\320\026\141\345\345\012\154\277\027 ++\307\162\106\127\234\230\365\154\140\143\172\157\136\271\116\057 ++\310\271\271\273\152\205\274\230\015\355\371\076\227\204\064\224 ++\256\000\257\241\345\347\222\156\116\275\363\342\331\024\213\134 ++\322\353\001\154\240\027\245\055\020\353\234\172\112\275\275\356 ++\316\375\355\042\100\253\160\070\210\365\012\207\152\302\253\005 ++\140\311\110\005\332\123\301\336\104\167\152\263\363\074\074\355 ++\200\274\246\070\112\051\044\137\376\131\073\233\045\172\126\143 ++\000\144\271\135\244\142\175\127\066\117\255\203\357\037\222\123 ++\240\216\167\127\335\345\141\021\075\043\000\220\114\074\372\243 ++\140\223\004\243\257\065\366\016\152\217\117\112\140\247\205\005 ++\154\106\241\217\364\307\166\343\241\131\127\367\161\262\304\156 ++\024\134\155\155\101\146\337\033\223\261\324\000\303\356\313\317 ++\074\075\041\200\251\137\143\145\374\335\340\137\244\364\053\360 ++\205\161\101\324\147\045\373\032\261\227\256\326\231\202\023\101 ++\322\156\245\033\231\047\200\347\013\251\250\000 ++END ++ ++# Trust for Certificate "CAcert.org Class 3 Root CA" ++CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST ++CKA_TOKEN CK_BBOOL CK_TRUE ++CKA_PRIVATE CK_BBOOL CK_FALSE ++CKA_MODIFIABLE CK_BBOOL CK_FALSE ++CKA_LABEL UTF8 "CAcert.org Class 3 Root CA" ++CKA_CERT_SHA1_HASH MULTILINE_OCTAL ++\333\114\102\151\007\077\351\302\243\175\211\012\134\033\030\304 ++\030\116\052\055 ++END ++CKA_CERT_MD5_HASH MULTILINE_OCTAL ++\163\077\065\124\035\104\311\351\132\112\357\121\255\003\006\266 ++END ++CKA_ISSUER MULTILINE_OCTAL ++\060\171\061\020\060\016\006\003\125\004\012\023\007\122\157\157 ++\164\040\103\101\061\036\060\034\006\003\125\004\013\023\025\150 ++\164\164\160\072\057\057\167\167\167\056\143\141\143\145\162\164 ++\056\157\162\147\061\042\060\040\006\003\125\004\003\023\031\103 ++\101\040\103\145\162\164\040\123\151\147\156\151\156\147\040\101 ++\165\164\150\157\162\151\164\171\061\041\060\037\006\011\052\206 ++\110\206\367\015\001\011\001\026\022\163\165\160\160\157\162\164 ++\100\143\141\143\145\162\164\056\157\162\147 ++END ++CKA_SERIAL_NUMBER MULTILINE_OCTAL ++\002\001\001 ++END ++CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR ++CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR ++CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR ++CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE ++ ++# ++# Certificate "Software in the Public Interest, Inc. Root CA (2008)" ++# ++CKA_CLASS CK_OBJECT_CLASS CKO_CERTIFICATE ++CKA_TOKEN CK_BBOOL CK_TRUE ++CKA_PRIVATE CK_BBOOL CK_FALSE ++CKA_MODIFIABLE CK_BBOOL CK_FALSE ++CKA_LABEL UTF8 "Software in the Public Interest, Inc. Root CA (2008)" ++CKA_CERTIFICATE_TYPE CK_CERTIFICATE_TYPE CKC_X_509 ++CKA_SUBJECT MULTILINE_OCTAL ++\060\201\274\061\013\060\011\006\003\125\004\006\023\002\125\123 ++\061\020\060\016\006\003\125\004\010\023\007\111\156\144\151\141 ++\156\141\061\025\060\023\006\003\125\004\007\023\014\111\156\144 ++\151\141\156\141\160\157\154\151\163\061\050\060\046\006\003\125 ++\004\012\023\037\123\157\146\164\167\141\162\145\040\151\156\040 ++\164\150\145\040\120\165\142\154\151\143\040\111\156\164\145\162 ++\145\163\164\061\023\060\021\006\003\125\004\013\023\012\150\157 ++\163\164\155\141\163\164\145\162\061\036\060\034\006\003\125\004 ++\003\023\025\103\145\162\164\151\146\151\143\141\164\145\040\101 ++\165\164\150\157\162\151\164\171\061\045\060\043\006\011\052\206 ++\110\206\367\015\001\011\001\026\026\150\157\163\164\155\141\163 ++\164\145\162\100\163\160\151\055\151\156\143\056\157\162\147 ++END ++CKA_ID UTF8 "0" ++CKA_ISSUER MULTILINE_OCTAL ++\060\201\274\061\013\060\011\006\003\125\004\006\023\002\125\123 ++\061\020\060\016\006\003\125\004\010\023\007\111\156\144\151\141 ++\156\141\061\025\060\023\006\003\125\004\007\023\014\111\156\144 ++\151\141\156\141\160\157\154\151\163\061\050\060\046\006\003\125 ++\004\012\023\037\123\157\146\164\167\141\162\145\040\151\156\040 ++\164\150\145\040\120\165\142\154\151\143\040\111\156\164\145\162 ++\145\163\164\061\023\060\021\006\003\125\004\013\023\012\150\157 ++\163\164\155\141\163\164\145\162\061\036\060\034\006\003\125\004 ++\003\023\025\103\145\162\164\151\146\151\143\141\164\145\040\101 ++\165\164\150\157\162\151\164\171\061\045\060\043\006\011\052\206 ++\110\206\367\015\001\011\001\026\026\150\157\163\164\155\141\163 ++\164\145\162\100\163\160\151\055\151\156\143\056\157\162\147 ++END ++CKA_SERIAL_NUMBER MULTILINE_OCTAL ++\002\011\000\350\216\266\311\370\052\024\050 ++END ++CKA_VALUE MULTILINE_OCTAL ++\060\202\010\016\060\202\005\366\240\003\002\001\002\002\011\000 ++\350\216\266\311\370\052\024\050\060\015\006\011\052\206\110\206 ++\367\015\001\001\005\005\000\060\201\274\061\013\060\011\006\003 ++\125\004\006\023\002\125\123\061\020\060\016\006\003\125\004\010 ++\023\007\111\156\144\151\141\156\141\061\025\060\023\006\003\125 ++\004\007\023\014\111\156\144\151\141\156\141\160\157\154\151\163 ++\061\050\060\046\006\003\125\004\012\023\037\123\157\146\164\167 ++\141\162\145\040\151\156\040\164\150\145\040\120\165\142\154\151 ++\143\040\111\156\164\145\162\145\163\164\061\023\060\021\006\003 ++\125\004\013\023\012\150\157\163\164\155\141\163\164\145\162\061 ++\036\060\034\006\003\125\004\003\023\025\103\145\162\164\151\146 ++\151\143\141\164\145\040\101\165\164\150\157\162\151\164\171\061 ++\045\060\043\006\011\052\206\110\206\367\015\001\011\001\026\026 ++\150\157\163\164\155\141\163\164\145\162\100\163\160\151\055\151 ++\156\143\056\157\162\147\060\036\027\015\060\070\060\065\061\063 ++\060\070\060\067\065\066\132\027\015\061\070\060\065\061\061\060 ++\070\060\067\065\066\132\060\201\274\061\013\060\011\006\003\125 ++\004\006\023\002\125\123\061\020\060\016\006\003\125\004\010\023 ++\007\111\156\144\151\141\156\141\061\025\060\023\006\003\125\004 ++\007\023\014\111\156\144\151\141\156\141\160\157\154\151\163\061 ++\050\060\046\006\003\125\004\012\023\037\123\157\146\164\167\141 ++\162\145\040\151\156\040\164\150\145\040\120\165\142\154\151\143 ++\040\111\156\164\145\162\145\163\164\061\023\060\021\006\003\125 ++\004\013\023\012\150\157\163\164\155\141\163\164\145\162\061\036 ++\060\034\006\003\125\004\003\023\025\103\145\162\164\151\146\151 ++\143\141\164\145\040\101\165\164\150\157\162\151\164\171\061\045 ++\060\043\006\011\052\206\110\206\367\015\001\011\001\026\026\150 ++\157\163\164\155\141\163\164\145\162\100\163\160\151\055\151\156 ++\143\056\157\162\147\060\202\002\042\060\015\006\011\052\206\110 ++\206\367\015\001\001\001\005\000\003\202\002\017\000\060\202\002 ++\012\002\202\002\001\000\334\066\346\107\102\302\304\121\165\051 ++\207\100\303\330\216\041\006\322\030\116\353\357\040\275\220\074 ++\205\020\023\214\051\133\224\143\366\364\055\361\006\102\221\271 ++\031\304\102\151\010\277\213\066\105\352\050\005\063\111\110\240 ++\047\103\223\065\212\101\330\170\263\360\357\263\156\055\335\321 ++\313\175\352\364\165\046\323\076\220\072\356\327\347\054\004\265 ++\174\341\365\174\305\116\357\167\275\134\242\223\063\222\316\175 ++\201\110\317\153\265\042\054\010\203\375\323\325\317\073\055\375 ++\265\111\220\133\366\255\115\023\312\336\323\246\235\123\121\161 ++\143\106\370\112\026\134\230\356\055\155\232\026\241\166\220\342 ++\140\103\231\326\211\326\154\056\172\230\262\013\003\054\343\172 ++\117\307\335\343\314\343\112\152\215\171\122\372\364\301\257\056 ++\217\052\010\313\033\051\202\222\162\103\274\316\210\251\252\247 ++\212\121\103\125\205\232\067\003\170\223\310\360\275\264\101\310 ++\007\102\232\313\065\227\172\212\201\145\336\035\124\010\001\361 ++\144\134\267\027\032\121\274\036\303\131\207\166\030\026\230\356 ++\277\366\147\201\213\006\065\305\113\155\131\031\307\322\306\110 ++\276\156\024\050\203\112\020\234\033\365\157\274\251\216\365\151 ++\376\262\301\125\314\347\024\311\371\133\024\123\121\007\352\316 ++\075\344\117\050\037\074\141\011\327\063\322\156\247\156\324\307 ++\023\011\157\153\135\024\356\235\211\033\245\152\362\366\370\320 ++\162\216\352\162\037\057\064\152\051\012\305\012\354\034\100\205 ++\022\367\246\245\323\117\255\300\205\214\114\174\163\040\314\123 ++\030\361\262\130\114\001\365\277\352\144\325\134\071\305\316\154 ++\314\123\132\126\272\101\017\045\337\153\120\266\307\212\240\275 ++\002\302\305\073\125\245\262\144\042\204\121\050\126\256\061\356 ++\136\373\013\026\115\106\005\221\200\104\355\254\155\360\127\250 ++\372\353\141\110\240\313\033\263\037\216\315\305\041\167\003\204 ++\036\374\254\243\103\010\143\214\355\371\047\357\264\260\135\147 ++\326\117\355\320\213\076\135\133\311\221\275\226\002\204\075\305 ++\115\274\102\077\164\375\074\135\254\134\110\066\136\207\061\057 ++\030\154\304\150\356\241\213\311\131\320\030\343\000\200\263\124 ++\047\056\231\360\025\123\002\003\001\000\001\243\202\002\017\060 ++\202\002\013\060\035\006\003\125\035\016\004\026\004\024\064\161 ++\321\070\327\025\066\203\107\153\327\067\144\102\073\216\215\122 ++\235\253\060\201\361\006\003\125\035\043\004\201\351\060\201\346 ++\200\024\064\161\321\070\327\025\066\203\107\153\327\067\144\102 ++\073\216\215\122\235\253\241\201\302\244\201\277\060\201\274\061 ++\013\060\011\006\003\125\004\006\023\002\125\123\061\020\060\016 ++\006\003\125\004\010\023\007\111\156\144\151\141\156\141\061\025 ++\060\023\006\003\125\004\007\023\014\111\156\144\151\141\156\141 ++\160\157\154\151\163\061\050\060\046\006\003\125\004\012\023\037 ++\123\157\146\164\167\141\162\145\040\151\156\040\164\150\145\040 ++\120\165\142\154\151\143\040\111\156\164\145\162\145\163\164\061 ++\023\060\021\006\003\125\004\013\023\012\150\157\163\164\155\141 ++\163\164\145\162\061\036\060\034\006\003\125\004\003\023\025\103 ++\145\162\164\151\146\151\143\141\164\145\040\101\165\164\150\157 ++\162\151\164\171\061\045\060\043\006\011\052\206\110\206\367\015 ++\001\011\001\026\026\150\157\163\164\155\141\163\164\145\162\100 ++\163\160\151\055\151\156\143\056\157\162\147\202\011\000\350\216 ++\266\311\370\052\024\050\060\017\006\003\125\035\023\001\001\377 ++\004\005\060\003\001\001\377\060\021\006\011\140\206\110\001\206 ++\370\102\001\001\004\004\003\002\000\007\060\011\006\003\125\035 ++\022\004\002\060\000\060\056\006\011\140\206\110\001\206\370\102 ++\001\015\004\041\026\037\123\157\146\164\167\141\162\145\040\151 ++\156\040\164\150\145\040\120\165\142\154\151\143\040\111\156\164 ++\145\162\145\163\164\060\060\006\011\140\206\110\001\206\370\102 ++\001\004\004\043\026\041\150\164\164\160\163\072\057\057\143\141 ++\056\163\160\151\055\151\156\143\056\157\162\147\057\143\141\055 ++\143\162\154\056\160\145\155\060\062\006\011\140\206\110\001\206 ++\370\102\001\003\004\045\026\043\150\164\164\160\163\072\057\057 ++\143\141\056\163\160\151\055\151\156\143\056\157\162\147\057\143 ++\145\162\164\055\143\162\154\056\160\145\155\060\041\006\003\125 ++\035\021\004\032\060\030\201\026\150\157\163\164\155\141\163\164 ++\145\162\100\163\160\151\055\151\156\143\056\157\162\147\060\016 ++\006\003\125\035\017\001\001\377\004\004\003\002\001\006\060\015 ++\006\011\052\206\110\206\367\015\001\001\005\005\000\003\202\002 ++\001\000\264\315\275\340\271\352\262\003\053\176\062\351\336\162 ++\077\311\113\202\136\235\342\257\125\011\242\014\124\350\317\030 ++\074\050\040\035\251\273\003\002\057\122\071\042\371\027\317\255 ++\147\220\263\003\177\330\025\343\153\176\273\233\126\001\257\065 ++\324\332\271\307\147\027\233\324\325\016\067\263\040\101\056\014 ++\001\304\133\371\145\076\302\141\350\322\360\152\225\160\303\306 ++\157\325\065\244\254\131\162\341\211\337\241\240\235\044\275\051 ++\171\351\141\052\331\323\036\311\106\244\010\170\101\222\162\017 ++\253\024\165\355\011\360\242\360\134\357\303\012\142\040\267\302 ++\050\146\256\114\057\056\217\105\143\046\226\360\356\061\346\213 ++\125\233\252\072\371\202\071\035\210\074\342\007\165\032\341\017 ++\261\060\274\161\062\322\072\376\372\241\211\363\103\054\326\162 ++\304\171\247\025\110\005\300\330\055\162\002\343\313\075\026\152 ++\272\311\270\021\020\342\111\205\314\226\107\140\005\045\056\357 ++\165\131\063\365\107\031\026\357\332\154\137\007\310\246\120\266 ++\035\313\146\064\045\374\146\203\353\305\266\060\101\370\106\104 ++\142\250\301\014\124\346\352\114\132\050\346\256\306\267\376\177 ++\073\226\250\056\356\307\150\076\335\000\075\051\257\052\143\253 ++\137\356\111\052\055\305\334\373\321\306\323\321\227\126\122\206 ++\266\224\353\324\140\121\267\374\036\233\314\002\233\324\037\217 ++\371\112\217\266\056\050\073\027\314\305\246\005\343\322\323\265 ++\306\003\311\341\110\102\233\313\077\344\027\340\376\015\001\225 ++\011\272\270\015\161\344\011\160\167\102\330\115\341\102\251\140 ++\203\327\027\211\103\322\324\335\247\030\266\253\324\044\045\207 ++\265\324\342\374\056\042\151\275\255\150\054\377\162\265\230\252 ++\006\234\347\052\152\270\241\223\166\316\260\363\177\234\341\340 ++\117\270\330\206\106\245\063\002\054\045\141\067\052\222\310\254 ++\201\164\150\143\207\063\166\275\005\177\136\325\325\002\155\275 ++\257\377\052\132\252\111\354\230\171\107\123\221\366\016\064\132 ++\311\245\306\353\262\343\305\254\266\240\160\065\273\310\121\151 ++\320\362\265\242\062\156\274\077\240\067\071\174\161\066\246\005 ++\337\014\022\344\026\247\305\326\313\143\243\225\160\077\346\004 ++\243\140 ++END ++ ++# Trust for Certificate "Software in the Public Interest, Inc. Root CA (2008)" ++CKA_CLASS CK_OBJECT_CLASS CKO_NETSCAPE_TRUST ++CKA_TOKEN CK_BBOOL CK_TRUE ++CKA_PRIVATE CK_BBOOL CK_FALSE ++CKA_MODIFIABLE CK_BBOOL CK_FALSE ++CKA_LABEL UTF8 "Software in the Public Interest, Inc. Root CA (2008)" ++CKA_CERT_SHA1_HASH MULTILINE_OCTAL ++\257\160\210\103\203\202\002\025\315\141\306\274\354\375\067\044 ++\251\220\103\034 ++END ++CKA_CERT_MD5_HASH MULTILINE_OCTAL ++\052\107\237\140\273\203\164\157\001\003\327\013\015\366\015\170 ++END ++CKA_ISSUER MULTILINE_OCTAL ++\060\201\274\061\013\060\011\006\003\125\004\006\023\002\125\123 ++\061\020\060\016\006\003\125\004\010\023\007\111\156\144\151\141 ++\156\141\061\025\060\023\006\003\125\004\007\023\014\111\156\144 ++\151\141\156\141\160\157\154\151\163\061\050\060\046\006\003\125 ++\004\012\023\037\123\157\146\164\167\141\162\145\040\151\156\040 ++\164\150\145\040\120\165\142\154\151\143\040\111\156\164\145\162 ++\145\163\164\061\023\060\021\006\003\125\004\013\023\012\150\157 ++\163\164\155\141\163\164\145\162\061\036\060\034\006\003\125\004 ++\003\023\025\103\145\162\164\151\146\151\143\141\164\145\040\101 ++\165\164\150\157\162\151\164\171\061\045\060\043\006\011\052\206 ++\110\206\367\015\001\011\001\026\026\150\157\163\164\155\141\163 ++\164\145\162\100\163\160\151\055\151\156\143\056\157\162\147 ++END ++CKA_SERIAL_NUMBER MULTILINE_OCTAL ++\002\011\000\350\216\266\311\370\052\024\050 ++END ++CKA_TRUST_SERVER_AUTH CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR ++CKA_TRUST_EMAIL_PROTECTION CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR ++CKA_TRUST_CODE_SIGNING CK_TRUST CKT_NETSCAPE_TRUSTED_DELEGATOR ++CKA_TRUST_STEP_UP_APPROVED CK_BBOOL CK_FALSE diff --git a/testing/nss/nss-config.in b/testing/nss/nss-config.in new file mode 100644 index 000000000..f8f893e71 --- /dev/null +++ b/testing/nss/nss-config.in @@ -0,0 +1,145 @@ +#!/bin/sh + +prefix=@prefix@ + +major_version=@MOD_MAJOR_VERSION@ +minor_version=@MOD_MINOR_VERSION@ +patch_version=@MOD_PATCH_VERSION@ + +usage() +{ + cat <&2 +fi + +lib_ssl=yes +lib_smime=yes +lib_nss=yes +lib_nssutil=yes + +while test $# -gt 0; do + case "$1" in + -*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + case $1 in + --prefix=*) + prefix=$optarg + ;; + --prefix) + echo_prefix=yes + ;; + --exec-prefix=*) + exec_prefix=$optarg + ;; + --exec-prefix) + echo_exec_prefix=yes + ;; + --includedir=*) + includedir=$optarg + ;; + --includedir) + echo_includedir=yes + ;; + --libdir=*) + libdir=$optarg + ;; + --libdir) + echo_libdir=yes + ;; + --version) + echo ${major_version}.${minor_version}.${patch_version} + ;; + --cflags) + echo_cflags=yes + ;; + --libs) + echo_libs=yes + ;; + ssl) + lib_ssl=yes + ;; + smime) + lib_smime=yes + ;; + nss) + lib_nss=yes + ;; + nssutil) + lib_nssutil=yes + ;; + *) + usage 1 1>&2 + ;; + esac + shift +done + +# Set variables that may be dependent upon other variables +if test -z "$exec_prefix"; then + exec_prefix=`pkg-config --variable=exec_prefix nss` +fi +if test -z "$includedir"; then + includedir=`pkg-config --variable=includedir nss` +fi +if test -z "$libdir"; then + libdir=`pkg-config --variable=libdir nss` +fi + +if test "$echo_prefix" = "yes"; then + echo $prefix +fi + +if test "$echo_exec_prefix" = "yes"; then + echo $exec_prefix +fi + +if test "$echo_includedir" = "yes"; then + echo $includedir +fi + +if test "$echo_libdir" = "yes"; then + echo $libdir +fi + +if test "$echo_cflags" = "yes"; then + echo -I$includedir +fi + +if test "$echo_libs" = "yes"; then + libdirs="-Wl,-rpath-link,$libdir -L$libdir" + if test -n "$lib_ssl"; then + libdirs="$libdirs -lssl${major_version}" + fi + if test -n "$lib_smime"; then + libdirs="$libdirs -lsmime${major_version}" + fi + if test -n "$lib_nss"; then + libdirs="$libdirs -lnss${major_version}" + fi + if test -n "$lib_nssutil"; then + libdirs="$libdirs -lnssutil${major_version}" + fi + echo $libdirs +fi + diff --git a/testing/nss/nss-no-rpath.patch b/testing/nss/nss-no-rpath.patch new file mode 100644 index 000000000..35ea57315 --- /dev/null +++ b/testing/nss/nss-no-rpath.patch @@ -0,0 +1,14 @@ +--- ./mozilla/security/nss/cmd/platlibs.mk.withrpath 2007-02-19 07:17:06.000000000 +0100 ++++ ./mozilla/security/nss/cmd/platlibs.mk 2007-02-19 07:18:07.000000000 +0100 +@@ -52,9 +52,9 @@ + + ifeq ($(OS_ARCH), Linux) + ifeq ($(USE_64), 1) +-EXTRA_SHARED_LIBS += -Wl,-rpath,'$$ORIGIN/../lib64:$$ORIGIN/../lib' ++#EXTRA_SHARED_LIBS += -Wl,-rpath,'$$ORIGIN/../lib64:$$ORIGIN/../lib' + else +-EXTRA_SHARED_LIBS += -Wl,-rpath,'$$ORIGIN/../lib' ++#EXTRA_SHARED_LIBS += -Wl,-rpath,'$$ORIGIN/../lib' + endif + endif + diff --git a/testing/nss/nss.pc.in b/testing/nss/nss.pc.in new file mode 100644 index 000000000..d47b9e146 --- /dev/null +++ b/testing/nss/nss.pc.in @@ -0,0 +1,11 @@ +prefix=%prefix% +exec_prefix=%exec_prefix% +libdir=%libdir% +includedir=%includedir% + +Name: NSS +Description: Network Security Services +Version: %NSS_VERSION% +Requires: nspr >= %NSPR_VERSION% +Libs: -lssl3 -lsmime3 -lnss3 -lnssutil3 +Cflags: -I${includedir} diff --git a/testing/nss/ssl-renegotiate-transitional.patch b/testing/nss/ssl-renegotiate-transitional.patch new file mode 100644 index 000000000..f457c5551 --- /dev/null +++ b/testing/nss/ssl-renegotiate-transitional.patch @@ -0,0 +1,21 @@ +Enable transitional scheme for ssl renegotiation: + +(from mozilla/security/nss/lib/ssl/ssl.h) +Disallow unsafe renegotiation in server sockets only, but allow clients +to continue to renegotiate with vulnerable servers. +This value should only be used during the transition period when few +servers have been upgraded. + +diff --git a/mozilla/security/nss/lib/ssl/sslsock.c b/mozilla/security/nss/lib/ssl/sslsock.c +index f1d1921..c074360 100644 +--- a/mozilla/security/nss/lib/ssl/sslsock.c ++++ b/mozilla/security/nss/lib/ssl/sslsock.c +@@ -181,7 +181,7 @@ static sslOptions ssl_defaults = { + PR_FALSE, /* noLocks */ + PR_FALSE, /* enableSessionTickets */ + PR_FALSE, /* enableDeflate */ +- 2, /* enableRenegotiation (default: requires extension) */ ++ 3, /* enableRenegotiation (default: transitional) */ + PR_FALSE, /* requireSafeNegotiation */ + }; + diff --git a/testing/python/PKGBUILD b/testing/python/PKGBUILD index 688aaf428..8752256e3 100644 --- a/testing/python/PKGBUILD +++ b/testing/python/PKGBUILD @@ -1,11 +1,11 @@ -# $Id: PKGBUILD 155851 2012-04-07 16:56:17Z stephane $ +# $Id: PKGBUILD 156156 2012-04-14 17:31:15Z stephane $ # Maintainer: Stéphane Gaudreault # Contributor: Allan McRae # Contributor: Jason Chu pkgname=python -pkgver=3.2.2 -pkgrel=3 +pkgver=3.2.3 +pkgrel=1 _pybasever=3.2 pkgdesc="Next generation of the python high-level scripting language" arch=('i686' 'x86_64') @@ -17,14 +17,8 @@ optdepends=('tk: for tkinter' 'sqlite') provides=('python3') replaces=('python3') options=('!makeflags') -source=(http://www.python.org/ftp/python/${pkgver%rc*}/Python-${pkgver}.tar.xz - distutils-egg-utf8.patch - gdbm-magic-values.patch - pycache-bytecompilation.patch) -sha1sums=('5e654dbd48476193ccdef4d604ed4f45b48c6769' - '4697d7d737101ad3f1d9c4a0c6ff848fd7114823' - '43bfbe3e23360f412b95cb284ff29b2cbe338be9' - '3561a7278dd83a8f5f3b213169f16c3187724fba') +source=(http://www.python.org/ftp/python/${pkgver%rc*}/Python-${pkgver}.tar.xz) +sha1sums=('3d607dbcfdf100dd659978195ccf3ade9d221823') build() { cd "${srcdir}/Python-${pkgver}" @@ -32,16 +26,6 @@ build() { # FS#23997 sed -i -e "s|^#.* /usr/local/bin/python|#!/usr/bin/python|" Lib/cgi.py - # gdbm has new magic that whichdb does not recognize - # http://bugs.python.org/issue13007 - patch -Np1 -i ../gdbm-magic-values.patch - - # Distutils now reads and writes egg-info files using UTF-8 (Upstream issue #9561) - patch -Np1 -i ../distutils-egg-utf8.patch - - # Distutils doesn't byte-compile .py files to __pycache__ during installation (Upstream issue #11254) - patch -Np1 -i ../pycache-bytecompilation.patch - # Ensure that we are using the system copy of various libraries (expat, zlib and libffi), # rather than copies shipped in the tarball rm -r Modules/expat @@ -65,7 +49,8 @@ build() { check() { cd "${srcdir}/Python-${pkgver}" LD_LIBRARY_PATH="${srcdir}/Python-${pkgver}":${LD_LIBRARY_PATH} \ - "${srcdir}/Python-${pkgver}/python" -m test.regrtest -x test_distutils test_site test_uuid + "${srcdir}/Python-${pkgver}/python" -m test.regrtest -x test_distutils test_site \ + test_urllib test_uuid test_pydoc } package() { diff --git a/testing/xf86-input-wacom/70-wacom.rules b/testing/xf86-input-wacom/70-wacom.rules new file mode 100644 index 000000000..f6aa20835 --- /dev/null +++ b/testing/xf86-input-wacom/70-wacom.rules @@ -0,0 +1,12 @@ +ACTION!="add|change", GOTO="wacom_end" + +# Match all serial wacom tablets with a serial ID starting with WACf +# Notes: We assign NAME though we shouldn't, but currently the server requires it +# We assign the lot to subsystem pnp too because server reads NAME from +# the parent device. Once all that's fixed, as simple SUBSYSTEM="tty" +# will do and the ENV{NAME} can be removed. +SUBSYSTEM=="tty|pnp", SUBSYSTEMS=="pnp", ATTRS{id}=="WACf*", ENV{ID_MODEL}="Serial Wacom Tablet $attr{id}", ENV{ID_INPUT}="1", ENV{ID_INPUT_TABLET}="1", ENV{NAME}="Serial Wacom Tablet $attr{id}" +SUBSYSTEM=="tty|pnp", SUBSYSTEMS=="pnp", ATTRS{id}=="FUJ*", ENV{ID_MODEL}="Serial Wacom Tablet $attr{id}", ENV{ID_INPUT}="1", ENV{ID_INPUT_TABLET}="1", ENV{NAME}="Serial Wacom Tablet $attr{id}" + +LABEL="wacom_end" + diff --git a/testing/xf86-input-wacom/PKGBUILD b/testing/xf86-input-wacom/PKGBUILD new file mode 100644 index 000000000..8d2e52511 --- /dev/null +++ b/testing/xf86-input-wacom/PKGBUILD @@ -0,0 +1,35 @@ +# $Id: PKGBUILD 156119 2012-04-14 08:45:51Z andyrtr $ +# Maintainer: Jan Alexander Steffens (heftig) +# Contributor: Jan de Groot +# Contributor: M Rawash + +pkgname=xf86-input-wacom +pkgver=0.14.0 +pkgrel=2 +pkgdesc="X.Org Wacom tablet driver" +arch=('i686' 'x86_64') +url="http://linuxwacom.sourceforge.net/" +license=('GPL') +backup=('etc/X11/xorg.conf.d/50-wacom.conf') +depends=('libxi' 'libxrandr' 'libxinerama') +makedepends=('xorg-server-devel>=1.12.0' 'libxext') +conflicts=('xorg-server<1.12.0') +options=(!libtool) +source=(http://downloads.sourceforge.net/project/linuxwacom/${pkgname}/${pkgname}-${pkgver}.tar.bz2 + 70-wacom.rules) +md5sums=('23d19a2b50a86b848df17297c745144f' + '10db4f8272286690255c1bcc18bfdd92') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + ./configure --prefix=/usr --with-xorg-conf-dir=/etc/X11/xorg.conf.d + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make DESTDIR="${pkgdir}" install + + install -m755 -d "${pkgdir}/usr/lib/udev/rules.d" + install -m644 "${srcdir}/70-wacom.rules" "${pkgdir}/usr/lib/udev/rules.d/" +} diff --git a/testing/xf86-video-ati/PKGBUILD b/testing/xf86-video-ati/PKGBUILD new file mode 100644 index 000000000..e4214bf47 --- /dev/null +++ b/testing/xf86-video-ati/PKGBUILD @@ -0,0 +1,39 @@ +# $Id: PKGBUILD 156127 2012-04-14 09:33:09Z andyrtr $ +# Maintainer: Jan de Groot +# Contributor: Alexander Baldeck + +pkgname=xf86-video-ati +pkgver=6.14.4 +pkgrel=3 +pkgdesc="X.org ati video driver" +arch=('i686' 'x86_64') +url="http://xorg.freedesktop.org/" +license=('custom') +depends=('libpciaccess' 'libdrm>=2.4.33' 'udev' 'pixman' 'ati-dri') +makedepends=('xorg-server-devel>=1.11.99.902' 'xf86driproto' 'mesa' 'glproto') +conflicts=('xorg-server<1.11.99.902') +groups=('xorg-drivers' 'xorg') +options=('!libtool') +source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 + solid_pictures_fixes.diff + git_fixes.diff) +sha1sums=('75ad000bc00599e1797134f2d20d3094cba6af92' + '480b7360a5e22661145430f21089ef82e3cd2d25' + '8b774e2f0310075cff2b7d874b0bed38d6245769') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + patch -Np1 -i ${srcdir}/git_fixes.diff + # fix rendering issues with recent cairo - testing attemp taken from https://bugs.freedesktop.org/show_bug.cgi?id=47266 + # attachements 59943-59946 + patch -Np1 -i ${srcdir}/solid_pictures_fixes.diff + ./configure --prefix=/usr --enable-dri + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make "DESTDIR=${pkgdir}" install + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" +} diff --git a/testing/xf86-video-ati/git_fixes.diff b/testing/xf86-video-ati/git_fixes.diff new file mode 100644 index 000000000..0c4518319 --- /dev/null +++ b/testing/xf86-video-ati/git_fixes.diff @@ -0,0 +1,33 @@ +From d282719a9c2fb0ee32830aa75b8dfbb9392954ed Mon Sep 17 00:00:00 2001 +From: Jerome Glisse +Date: Wed, 04 Apr 2012 21:08:30 +0000 +Subject: r6xx-r9xx: force 1D tiling for buffer with height < 64 + +Due to some old kernel issue, height is 8 aligned insided the ddx +For buffer with height btw 57 & 63 this lead ddx to believe it can +allocate a 2D tiled surface while mesa will not align height and +will assume 1D tiled leading to disagreement and rendering issue. +This patch force buffer with height < 64 to be 1D tiled. + +Signed-off-by: Jerome Glisse +--- +diff --git a/src/radeon_exa.c b/src/radeon_exa.c +index 99a5806..270dad4 100644 +--- a/src/radeon_exa.c ++++ b/src/radeon_exa.c +@@ -511,6 +511,13 @@ void *RADEONEXACreatePixmap2(ScreenPtr pScreen, int width, int height, + surface.last_level = 0; + surface.bpe = cpp; + surface.nsamples = 1; ++ if (height < 64) { ++ /* disable 2d tiling for small surface to work around ++ * the fact that ddx align height to 8 pixel for old ++ * obscure reason i can't remember ++ */ ++ tiling &= ~RADEON_TILING_MACRO; ++ } + surface.flags = RADEON_SURF_SCANOUT; + surface.flags |= RADEON_SURF_SET(RADEON_SURF_TYPE_2D, TYPE); + surface.flags |= RADEON_SURF_SET(RADEON_SURF_MODE_LINEAR, MODE); +-- +cgit v0.9.0.2-2-gbebe diff --git a/testing/xf86-video-ati/solid_pictures_fixes.diff b/testing/xf86-video-ati/solid_pictures_fixes.diff new file mode 100644 index 000000000..7109d916d --- /dev/null +++ b/testing/xf86-video-ati/solid_pictures_fixes.diff @@ -0,0 +1,1238 @@ +From 837149c63929d7d5a8ef6f8204d396f8e6d5acd7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Michel=20D=C3=A4nzer?= +Date: Fri, 13 Apr 2012 11:12:51 +0200 +Subject: [PATCH 1/4] Poor man's acceleration of solid pictures for R3xx-R7xx + +The patch below implements basic acceleration of solid pictures via +scratch 1x1 pixmaps. It seems to at least alleviate some of the +corruption and performance issues exposed by Cairo 1.12, and should also +improve performance for other toolkits/apps using solid pictures. + +If there are no objections to this approach, maybe someone else can beat +me to extending this for Evergreen+ and R1/2xx. +--- + src/r600_exa.c | 160 ++++++++++++++++++++++++++-------------------- + src/radeon_exa_render.c | 115 ++++++++++++++++++++-------------- + src/radeon_exa_shared.c | 19 ++++++ + src/radeon_exa_shared.h | 1 + + 4 files changed, 179 insertions(+), 116 deletions(-) + +diff --git a/src/r600_exa.c b/src/r600_exa.c +index e1eb62f..c3ae553 100644 +--- a/src/r600_exa.c ++++ b/src/r600_exa.c +@@ -901,17 +901,8 @@ static Bool R600CheckCompositeTexture(PicturePtr pPict, + int op, + int unit) + { +- int w = pPict->pDrawable->width; +- int h = pPict->pDrawable->height; + unsigned int repeatType = pPict->repeat ? pPict->repeatType : RepeatNone; + unsigned int i; +- int max_tex_w, max_tex_h; +- +- max_tex_w = 8192; +- max_tex_h = 8192; +- +- if ((w > max_tex_w) || (h > max_tex_h)) +- RADEON_FALLBACK(("Picture w/h too large (%dx%d)\n", w, h)); + + for (i = 0; i < sizeof(R600TexFormats) / sizeof(R600TexFormats[0]); i++) { + if (R600TexFormats[i].fmt == pPict->format) +@@ -951,9 +942,7 @@ static Bool R600TextureSetup(PicturePtr pPict, PixmapPtr pPix, + ScrnInfoPtr pScrn = xf86Screens[pPix->drawable.pScreen->myNum]; + RADEONInfoPtr info = RADEONPTR(pScrn); + struct radeon_accel_state *accel_state = info->accel_state; +- int w = pPict->pDrawable->width; +- int h = pPict->pDrawable->height; +- unsigned int repeatType = pPict->repeat ? pPict->repeatType : RepeatNone; ++ unsigned int repeatType; + unsigned int i; + tex_resource_t tex_res; + tex_sampler_t tex_samp; +@@ -969,9 +958,16 @@ static Bool R600TextureSetup(PicturePtr pPict, PixmapPtr pPix, + } + + /* Texture */ ++ if (pPict->pDrawable) { ++ tex_res.w = pPict->pDrawable->width; ++ tex_res.h = pPict->pDrawable->height; ++ repeatType = pPict->repeat ? pPict->repeatType : RepeatNone; ++ } else { ++ tex_res.w = 1; ++ tex_res.h = 1; ++ repeatType = RepeatNormal; ++ } + tex_res.id = unit; +- tex_res.w = w; +- tex_res.h = h; + tex_res.pitch = accel_state->src_obj[unit].pitch; + tex_res.depth = 0; + tex_res.dim = SQ_TEX_DIM_2D; +@@ -1170,24 +1166,24 @@ static Bool R600TextureSetup(PicturePtr pPict, PixmapPtr pPix, + vs_alu_consts[0] = xFixedToFloat(pPict->transform->matrix[0][0]); + vs_alu_consts[1] = xFixedToFloat(pPict->transform->matrix[0][1]); + vs_alu_consts[2] = xFixedToFloat(pPict->transform->matrix[0][2]); +- vs_alu_consts[3] = 1.0 / w; ++ vs_alu_consts[3] = 1.0 / tex_res.w; + + vs_alu_consts[4] = xFixedToFloat(pPict->transform->matrix[1][0]); + vs_alu_consts[5] = xFixedToFloat(pPict->transform->matrix[1][1]); + vs_alu_consts[6] = xFixedToFloat(pPict->transform->matrix[1][2]); +- vs_alu_consts[7] = 1.0 / h; ++ vs_alu_consts[7] = 1.0 / tex_res.h; + } else { + accel_state->is_transform[unit] = FALSE; + + vs_alu_consts[0] = 1.0; + vs_alu_consts[1] = 0.0; + vs_alu_consts[2] = 0.0; +- vs_alu_consts[3] = 1.0 / w; ++ vs_alu_consts[3] = 1.0 / tex_res.w; + + vs_alu_consts[4] = 0.0; + vs_alu_consts[5] = 1.0; + vs_alu_consts[6] = 0.0; +- vs_alu_consts[7] = 1.0 / h; ++ vs_alu_consts[7] = 1.0 / tex_res.h; + } + + /* VS alu constants */ +@@ -1202,33 +1198,30 @@ static Bool R600CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP + { + uint32_t tmp1; + PixmapPtr pSrcPixmap, pDstPixmap; +- int max_tex_w, max_tex_h, max_dst_w, max_dst_h; + + /* Check for unsupported compositing operations. */ + if (op >= (int) (sizeof(R600BlendOp) / sizeof(R600BlendOp[0]))) + RADEON_FALLBACK(("Unsupported Composite op 0x%x\n", op)); + +- if (!pSrcPicture->pDrawable) +- RADEON_FALLBACK(("Solid or gradient pictures not supported yet\n")); +- +- pSrcPixmap = RADEONGetDrawablePixmap(pSrcPicture->pDrawable); ++ if (pSrcPicture->pDrawable) { ++ pSrcPixmap = RADEONGetDrawablePixmap(pSrcPicture->pDrawable); + +- max_tex_w = 8192; +- max_tex_h = 8192; +- max_dst_w = 8192; +- max_dst_h = 8192; ++ if (pSrcPixmap->drawable.width >= 8192 || ++ pSrcPixmap->drawable.height >= 8192) { ++ RADEON_FALLBACK(("Source w/h too large (%d,%d).\n", ++ pSrcPixmap->drawable.width, ++ pSrcPixmap->drawable.height)); ++ } + +- if (pSrcPixmap->drawable.width >= max_tex_w || +- pSrcPixmap->drawable.height >= max_tex_h) { +- RADEON_FALLBACK(("Source w/h too large (%d,%d).\n", +- pSrcPixmap->drawable.width, +- pSrcPixmap->drawable.height)); +- } ++ if (!R600CheckCompositeTexture(pSrcPicture, pDstPicture, op, 0)) ++ return FALSE; ++ } else if (pSrcPicture->pSourcePict->type != SourcePictTypeSolidFill) ++ RADEON_FALLBACK(("Gradient pictures not supported yet\n")); + + pDstPixmap = RADEONGetDrawablePixmap(pDstPicture->pDrawable); + +- if (pDstPixmap->drawable.width >= max_dst_w || +- pDstPixmap->drawable.height >= max_dst_h) { ++ if (pDstPixmap->drawable.width >= 8192 || ++ pDstPixmap->drawable.height >= 8192) { + RADEON_FALLBACK(("Dest w/h too large (%d,%d).\n", + pDstPixmap->drawable.width, + pDstPixmap->drawable.height)); +@@ -1237,38 +1230,35 @@ static Bool R600CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP + if (pMaskPicture) { + PixmapPtr pMaskPixmap; + +- if (!pMaskPicture->pDrawable) +- RADEON_FALLBACK(("Solid or gradient pictures not supported yet\n")); ++ if (pMaskPicture->pDrawable) { ++ pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); + +- pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); +- +- if (pMaskPixmap->drawable.width >= max_tex_w || +- pMaskPixmap->drawable.height >= max_tex_h) { +- RADEON_FALLBACK(("Mask w/h too large (%d,%d).\n", +- pMaskPixmap->drawable.width, +- pMaskPixmap->drawable.height)); +- } ++ if (pMaskPixmap->drawable.width >= 8192 || ++ pMaskPixmap->drawable.height >= 8192) { ++ RADEON_FALLBACK(("Mask w/h too large (%d,%d).\n", ++ pMaskPixmap->drawable.width, ++ pMaskPixmap->drawable.height)); ++ } + +- if (pMaskPicture->componentAlpha) { +- /* Check if it's component alpha that relies on a source alpha and +- * on the source value. We can only get one of those into the +- * single source value that we get to blend with. +- */ +- if (R600BlendOp[op].src_alpha && +- (R600BlendOp[op].blend_cntl & COLOR_SRCBLEND_mask) != +- (BLEND_ZERO << COLOR_SRCBLEND_shift)) { +- RADEON_FALLBACK(("Component alpha not supported with source " +- "alpha and source value blending.\n")); ++ if (pMaskPicture->componentAlpha) { ++ /* Check if it's component alpha that relies on a source alpha and ++ * on the source value. We can only get one of those into the ++ * single source value that we get to blend with. ++ */ ++ if (R600BlendOp[op].src_alpha && ++ (R600BlendOp[op].blend_cntl & COLOR_SRCBLEND_mask) != ++ (BLEND_ZERO << COLOR_SRCBLEND_shift)) { ++ RADEON_FALLBACK(("Component alpha not supported with source " ++ "alpha and source value blending.\n")); ++ } + } +- } + +- if (!R600CheckCompositeTexture(pMaskPicture, pDstPicture, op, 1)) +- return FALSE; ++ if (!R600CheckCompositeTexture(pMaskPicture, pDstPicture, op, 1)) ++ return FALSE; ++ } else if (pMaskPicture->pSourcePict->type != SourcePictTypeSolidFill) ++ RADEON_FALLBACK(("Gradient pictures not supported yet\n")); + } + +- if (!R600CheckCompositeTexture(pSrcPicture, pDstPicture, op, 0)) +- return FALSE; +- + if (!R600GetDestFormat(pDstPicture, &tmp1)) + return FALSE; + +@@ -1280,7 +1270,8 @@ static Bool R600PrepareComposite(int op, PicturePtr pSrcPicture, + PicturePtr pMaskPicture, PicturePtr pDstPicture, + PixmapPtr pSrc, PixmapPtr pMask, PixmapPtr pDst) + { +- ScrnInfoPtr pScrn = xf86Screens[pSrc->drawable.pScreen->myNum]; ++ ScreenPtr pScreen = pDst->drawable.pScreen; ++ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + RADEONInfoPtr info = RADEONPTR(pScrn); + struct radeon_accel_state *accel_state = info->accel_state; + uint32_t dst_format; +@@ -1288,15 +1279,21 @@ static Bool R600PrepareComposite(int op, PicturePtr pSrcPicture, + shader_config_t vs_conf, ps_conf; + struct r600_accel_object src_obj, mask_obj, dst_obj; + +- if (pDst->drawable.bitsPerPixel < 8 || pSrc->drawable.bitsPerPixel < 8) ++ if (pDst->drawable.bitsPerPixel < 8 || (pSrc && pSrc->drawable.bitsPerPixel < 8)) + return FALSE; + ++ if (!pSrc) { ++ pSrc = RADEONSolidPixmap(pScreen, pSrcPicture->pSourcePict->solidFill.color); ++ if (!pSrc) ++ RADEON_FALLBACK("Failed to create solid scratch pixmap\n"); ++ } ++ + #if defined(XF86DRM_MODE) + if (info->cs) { + src_obj.offset = 0; + dst_obj.offset = 0; +- src_obj.bo = radeon_get_pixmap_bo(pSrc); + dst_obj.bo = radeon_get_pixmap_bo(pDst); ++ src_obj.bo = radeon_get_pixmap_bo(pSrc); + dst_obj.tiling_flags = radeon_get_pixmap_tiling(pDst); + src_obj.tiling_flags = radeon_get_pixmap_tiling(pSrc); + dst_obj.surface = radeon_get_pixmap_surface(pDst); +@@ -1322,7 +1319,16 @@ static Bool R600PrepareComposite(int op, PicturePtr pSrcPicture, + dst_obj.bpp = pDst->drawable.bitsPerPixel; + dst_obj.domain = RADEON_GEM_DOMAIN_VRAM; + +- if (pMask) { ++ if (pMaskPicture) { ++ if (!pMask) { ++ pMask = RADEONSolidPixmap(pScreen, pMaskPicture->pSourcePict->solidFill.color); ++ if (!pMask) { ++ if (!pSrcPicture->pDrawable) ++ pScreen->DestroyPixmap(pSrc); ++ RADEON_FALLBACK("Failed to create solid scratch pixmap\n"); ++ } ++ } ++ + #if defined(XF86DRM_MODE) + if (info->cs) { + mask_obj.offset = 0; +@@ -1509,11 +1515,9 @@ static Bool R600PrepareComposite(int op, PicturePtr pSrcPicture, + return TRUE; + } + +-static void R600DoneComposite(PixmapPtr pDst) ++static void R600FinishComposite(ScrnInfoPtr pScrn, PixmapPtr pDst, ++ struct radeon_accel_state *accel_state) + { +- ScrnInfoPtr pScrn = xf86Screens[pDst->drawable.pScreen->myNum]; +- RADEONInfoPtr info = RADEONPTR(pScrn); +- struct radeon_accel_state *accel_state = info->accel_state; + int vtx_size; + + if (accel_state->vsync) +@@ -1527,6 +1531,22 @@ static void R600DoneComposite(PixmapPtr pDst) + r600_finish_op(pScrn, vtx_size); + } + ++static void R600DoneComposite(PixmapPtr pDst) ++{ ++ ScreenPtr pScreen = pDst->drawable.pScreen; ++ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ RADEONInfoPtr info = RADEONPTR(pScrn); ++ struct radeon_accel_state *accel_state = info->accel_state; ++ ++ R600FinishComposite(pScrn, pDst, accel_state); ++ ++ if (!accel_state->src_pic->pDrawable) ++ pScreen->DestroyPixmap(accel_state->src_pix); ++ ++ if (accel_state->msk_pic && !accel_state->msk_pic->pDrawable) ++ pScreen->DestroyPixmap(accel_state->msk_pix); ++} ++ + static void R600Composite(PixmapPtr pDst, + int srcX, int srcY, + int maskX, int maskY, +@@ -1543,7 +1563,7 @@ static void R600Composite(PixmapPtr pDst, + + #ifdef XF86DRM_MODE + if (info->cs && CS_FULL(info->cs)) { +- R600DoneComposite(info->accel_state->dst_pix); ++ R600FinishComposite(pScrn, pDst, info->accel_state); + radeon_cs_flush_indirect(pScrn); + R600PrepareComposite(info->accel_state->composite_op, + info->accel_state->src_pic, +diff --git a/src/radeon_exa_render.c b/src/radeon_exa_render.c +index e5c231f..b6cc9e4 100644 +--- a/src/radeon_exa_render.c ++++ b/src/radeon_exa_render.c +@@ -299,8 +299,8 @@ static Bool RADEONSetupSourceTile(PicturePtr pPict, + if (repeatType == RepeatNormal || repeatType == RepeatReflect) { + Bool badPitch = needMatchingPitch && !RADEONPitchMatches(pPix); + +- int w = pPict->pDrawable->width; +- int h = pPict->pDrawable->height; ++ int w = pPict->pDrawable ? pPict->pDrawable->width : 1; ++ int h = pPict->pDrawable ? pPict->pDrawable->height : 1; + + if (pPict->transform) { + if (badPitch) +@@ -1112,23 +1112,8 @@ static Bool R300CheckCompositeTexture(PicturePtr pPict, + ScreenPtr pScreen = pDstPict->pDrawable->pScreen; + ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + RADEONInfoPtr info = RADEONPTR(pScrn); +- + unsigned int repeatType = pPict->repeat ? pPict->repeatType : RepeatNone; +- int w = pPict->pDrawable->width; +- int h = pPict->pDrawable->height; + int i; +- int max_tex_w, max_tex_h; +- +- if (is_r500) { +- max_tex_w = 4096; +- max_tex_h = 4096; +- } else { +- max_tex_w = 2048; +- max_tex_h = 2048; +- } +- +- if ((w > max_tex_w) || (h > max_tex_h)) +- RADEON_FALLBACK(("Picture w/h too large (%dx%d)\n", w, h)); + + for (i = 0; i < sizeof(R300TexFormats) / sizeof(R300TexFormats[0]); i++) + { +@@ -1139,7 +1124,7 @@ static Bool R300CheckCompositeTexture(PicturePtr pPict, + RADEON_FALLBACK(("Unsupported picture format 0x%x\n", + (int)pPict->format)); + +- if (!RADEONCheckTexturePOT(pPict, unit == 0)) { ++ if (pPict->pDrawable && !RADEONCheckTexturePOT(pPict, unit == 0)) { + if (info->cs) { + struct radeon_exa_pixmap_priv *driver_priv; + PixmapPtr pPix; +@@ -1181,15 +1166,23 @@ static Bool FUNC_NAME(R300TextureSetup)(PicturePtr pPict, PixmapPtr pPix, + { + RINFO_FROM_SCREEN(pPix->drawable.pScreen); + uint32_t txfilter, txformat0, txformat1, txoffset, txpitch, us_format = 0; +- int w = pPict->pDrawable->width; +- int h = pPict->pDrawable->height; ++ int w, h; + int i, pixel_shift, out_size = 6; +- unsigned int repeatType = pPict->repeat ? pPict->repeatType : RepeatNone; ++ unsigned int repeatType; + struct radeon_exa_pixmap_priv *driver_priv; + ACCEL_PREAMBLE(); + + TRACE; + ++ if (pPict->pDrawable) { ++ w = pPict->pDrawable->width; ++ h = pPict->pDrawable->height; ++ repeatType = pPict->repeat ? pPict->repeatType : RepeatNone; ++ } else { ++ w = h = 1; ++ repeatType = RepeatNormal; ++ } ++ + txpitch = exaGetPixmapPitch(pPix); + txoffset = 0; + +@@ -1394,11 +1387,6 @@ static Bool R300CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP + if (op >= sizeof(RadeonBlendOp) / sizeof(RadeonBlendOp[0])) + RADEON_FALLBACK(("Unsupported Composite op 0x%x\n", op)); + +- if (!pSrcPicture->pDrawable) +- RADEON_FALLBACK(("Solid or gradient pictures not supported yet\n")); +- +- pSrcPixmap = RADEONGetDrawablePixmap(pSrcPicture->pDrawable); +- + if (IS_R500_3D) { + max_tex_w = 4096; + max_tex_h = 4096; +@@ -1416,13 +1404,6 @@ static Bool R300CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP + } + } + +- if (pSrcPixmap->drawable.width > max_tex_w || +- pSrcPixmap->drawable.height > max_tex_h) { +- RADEON_FALLBACK(("Source w/h too large (%d,%d).\n", +- pSrcPixmap->drawable.width, +- pSrcPixmap->drawable.height)); +- } +- + pDstPixmap = RADEONGetDrawablePixmap(pDstPicture->pDrawable); + + if (pDstPixmap->drawable.width > max_dst_w || +@@ -1432,20 +1413,32 @@ static Bool R300CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP + pDstPixmap->drawable.height)); + } + ++ if (pSrcPicture->pDrawable) { ++ pSrcPixmap = RADEONGetDrawablePixmap(pSrcPicture->pDrawable); ++ ++ if (pSrcPixmap->drawable.width > max_tex_w || ++ pSrcPixmap->drawable.height > max_tex_h) { ++ RADEON_FALLBACK(("Source w/h too large (%d,%d).\n", ++ pSrcPixmap->drawable.width, ++ pSrcPixmap->drawable.height)); ++ } ++ } else if (pSrcPicture->pSourcePict->type != SourcePictTypeSolidFill) ++ RADEON_FALLBACK(("Gradient pictures not supported yet\n")); ++ + if (pMaskPicture) { + PixmapPtr pMaskPixmap; + +- if (!pMaskPicture->pDrawable) +- RADEON_FALLBACK(("Solid or gradient pictures not supported yet\n")); ++ if (pMaskPicture->pDrawable) { ++ pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); + +- pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); +- +- if (pMaskPixmap->drawable.width > max_tex_w || +- pMaskPixmap->drawable.height > max_tex_h) { +- RADEON_FALLBACK(("Mask w/h too large (%d,%d).\n", +- pMaskPixmap->drawable.width, +- pMaskPixmap->drawable.height)); +- } ++ if (pMaskPixmap->drawable.width > max_tex_w || ++ pMaskPixmap->drawable.height > max_tex_h) { ++ RADEON_FALLBACK(("Mask w/h too large (%d,%d).\n", ++ pMaskPixmap->drawable.width, ++ pMaskPixmap->drawable.height)); ++ } ++ } else if (pMaskPicture->pSourcePict->type != SourcePictTypeSolidFill) ++ RADEON_FALLBACK(("Gradient pictures not supported yet\n")); + + if (pMaskPicture->componentAlpha) { + /* Check if it's component alpha that relies on a source alpha and +@@ -1479,7 +1472,8 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, + PicturePtr pMaskPicture, PicturePtr pDstPicture, + PixmapPtr pSrc, PixmapPtr pMask, PixmapPtr pDst) + { +- RINFO_FROM_SCREEN(pDst->drawable.pScreen); ++ ScreenPtr pScreen = pDst->drawable.pScreen; ++ RINFO_FROM_SCREEN(pScreen); + uint32_t dst_format, dst_pitch; + uint32_t txenable, colorpitch; + uint32_t blendcntl, output_fmt; +@@ -1508,9 +1502,24 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, + if (((dst_pitch >> pixel_shift) & 0x7) != 0) + RADEON_FALLBACK(("Bad destination pitch 0x%x\n", (int)dst_pitch)); + ++ if (!pSrc) { ++ pSrc = RADEONSolidPixmap(pScreen, cpu_to_le32(pSrcPicture->pSourcePict->solidFill.color)); ++ if (!pSrc) ++ RADEON_FALLBACK("Failed to create solid scratch pixmap\n"); ++ } ++ + if (!RADEONSetupSourceTile(pSrcPicture, pSrc, TRUE, FALSE)) + return FALSE; + ++ if (pMaskPicture && !pMask) { ++ pMask = RADEONSolidPixmap(pScreen, cpu_to_le32(pMaskPicture->pSourcePict->solidFill.color)); ++ if (!pMask) { ++ if (!pSrcPicture->pDrawable) ++ pScreen->DestroyPixmap(pSrc); ++ RADEON_FALLBACK("Failed to create solid scratch pixmap\n"); ++ } ++ } ++ + RADEONPrepareCompositeCS(op, pSrcPicture, pMaskPicture, pDstPicture, + pSrc, pMask, pDst); + +@@ -2132,7 +2141,7 @@ static Bool FUNC_NAME(R300PrepareComposite)(int op, PicturePtr pSrcPicture, + return TRUE; + } + +-static void FUNC_NAME(RadeonDoneComposite)(PixmapPtr pDst) ++static void FUNC_NAME(RadeonFinishComposite)(PixmapPtr pDst) + { + RINFO_FROM_SCREEN(pDst->drawable.pScreen); + ACCEL_PREAMBLE(); +@@ -2179,6 +2188,20 @@ static void FUNC_NAME(RadeonDoneComposite)(PixmapPtr pDst) + LEAVE_DRAW(0); + } + ++static void FUNC_NAME(RadeonDoneComposite)(PixmapPtr pDst) ++{ ++ ScreenPtr pScreen = pDst->drawable.pScreen; ++ RINFO_FROM_SCREEN(pScreen); ++ struct radeon_accel_state *accel_state = info->accel_state; ++ ++ FUNC_NAME(RadeonFinishComposite)(pDst); ++ ++ if (!accel_state->src_pic->pDrawable) ++ pScreen->DestroyPixmap(accel_state->src_pix); ++ ++ if (accel_state->msk_pic && !accel_state->msk_pic->pDrawable) ++ pScreen->DestroyPixmap(accel_state->msk_pix); ++} + + #ifdef ACCEL_CP + +@@ -2257,7 +2280,7 @@ static void FUNC_NAME(RadeonCompositeTile)(ScrnInfoPtr pScrn, + if ((info->cs && CS_FULL(info->cs)) || + (!info->cs && (info->cp->indirectBuffer->used + 4 * 32) > + info->cp->indirectBuffer->total)) { +- FUNC_NAME(RadeonDoneComposite)(info->accel_state->dst_pix); ++ FUNC_NAME(RadeonFinishComposite)(info->accel_state->dst_pix); + if (info->cs) + radeon_cs_flush_indirect(pScrn); + else +diff --git a/src/radeon_exa_shared.c b/src/radeon_exa_shared.c +index be1d2fa..28dc335 100644 +--- a/src/radeon_exa_shared.c ++++ b/src/radeon_exa_shared.c +@@ -126,6 +126,25 @@ Bool RADEONCheckBPP(int bpp) + return FALSE; + } + ++PixmapPtr RADEONSolidPixmap(ScreenPtr pScreen, uint32_t solid) ++{ ++ PixmapPtr pPix = pScreen->CreatePixmap(pScreen, 1, 1, 32, 0); ++ struct radeon_bo *bo; ++ ++ exaMoveInPixmap(pPix); ++ bo = radeon_get_pixmap_bo(pPix); ++ ++ if (radeon_bo_map(bo, 1)) { ++ pScreen->DestroyPixmap(pPix); ++ return NULL; ++ } ++ ++ memcpy(bo->ptr, &solid, 4); ++ radeon_bo_unmap(bo); ++ ++ return pPix; ++} ++ + static Bool radeon_vb_get(ScrnInfoPtr pScrn) + { + RADEONInfoPtr info = RADEONPTR(pScrn); +diff --git a/src/radeon_exa_shared.h b/src/radeon_exa_shared.h +index 7b8b5ca..60a1045 100644 +--- a/src/radeon_exa_shared.h ++++ b/src/radeon_exa_shared.h +@@ -40,6 +40,7 @@ extern void RADEONVlineHelperClear(ScrnInfoPtr pScrn); + extern void RADEONVlineHelperSet(ScrnInfoPtr pScrn, int x1, int y1, int x2, int y2); + extern Bool RADEONValidPM(uint32_t pm, int bpp); + extern Bool RADEONCheckBPP(int bpp); ++extern PixmapPtr RADEONSolidPixmap(ScreenPtr pScreen, uint32_t solid); + + #define RADEON_TRACE_FALL 0 + #define RADEON_TRACE_DRAW 0 +-- +1.7.7.5 +From 94bda0dc42b56207418b543c5c997486b10912cd Mon Sep 17 00:00:00 2001 +From: Alex Deucher +Date: Fri, 13 Apr 2012 12:57:52 -0400 +Subject: [PATCH 2/4] poor man's solid picture support for evergreen + +Signed-off-by: Alex Deucher +--- + src/evergreen_exa.c | 162 ++++++++++++++++++++++++++++----------------------- + 1 files changed, 90 insertions(+), 72 deletions(-) + +diff --git a/src/evergreen_exa.c b/src/evergreen_exa.c +index cee3ec2..354f1a4 100644 +--- a/src/evergreen_exa.c ++++ b/src/evergreen_exa.c +@@ -748,17 +748,8 @@ static Bool EVERGREENCheckCompositeTexture(PicturePtr pPict, + int op, + int unit) + { +- int w = pPict->pDrawable->width; +- int h = pPict->pDrawable->height; + unsigned int repeatType = pPict->repeat ? pPict->repeatType : RepeatNone; + unsigned int i; +- int max_tex_w, max_tex_h; +- +- max_tex_w = 16384; +- max_tex_h = 16384; +- +- if ((w > max_tex_w) || (h > max_tex_h)) +- RADEON_FALLBACK(("Picture w/h too large (%dx%d)\n", w, h)); + + for (i = 0; i < sizeof(EVERGREENTexFormats) / sizeof(EVERGREENTexFormats[0]); i++) { + if (EVERGREENTexFormats[i].fmt == pPict->format) +@@ -798,8 +789,6 @@ static void EVERGREENXFormSetup(PicturePtr pPict, PixmapPtr pPix, + ScrnInfoPtr pScrn = xf86Screens[pPix->drawable.pScreen->myNum]; + RADEONInfoPtr info = RADEONPTR(pScrn); + struct radeon_accel_state *accel_state = info->accel_state; +- int w = pPict->pDrawable->width; +- int h = pPict->pDrawable->height; + int const_offset = unit * 8; + + if (pPict->transform != 0) { +@@ -809,24 +798,24 @@ static void EVERGREENXFormSetup(PicturePtr pPict, PixmapPtr pPix, + vs_alu_consts[0 + const_offset] = xFixedToFloat(pPict->transform->matrix[0][0]); + vs_alu_consts[1 + const_offset] = xFixedToFloat(pPict->transform->matrix[0][1]); + vs_alu_consts[2 + const_offset] = xFixedToFloat(pPict->transform->matrix[0][2]); +- vs_alu_consts[3 + const_offset] = 1.0 / w; ++ vs_alu_consts[3 + const_offset] = 1.0 / pPict->pDrawable->width; + + vs_alu_consts[4 + const_offset] = xFixedToFloat(pPict->transform->matrix[1][0]); + vs_alu_consts[5 + const_offset] = xFixedToFloat(pPict->transform->matrix[1][1]); + vs_alu_consts[6 + const_offset] = xFixedToFloat(pPict->transform->matrix[1][2]); +- vs_alu_consts[7 + const_offset] = 1.0 / h; ++ vs_alu_consts[7 + const_offset] = 1.0 / pPict->pDrawable->height; + } else { + accel_state->is_transform[unit] = FALSE; + + vs_alu_consts[0 + const_offset] = 1.0; + vs_alu_consts[1 + const_offset] = 0.0; + vs_alu_consts[2 + const_offset] = 0.0; +- vs_alu_consts[3 + const_offset] = 1.0 / w; ++ vs_alu_consts[3 + const_offset] = 1.0 / pPict->pDrawable->width; + + vs_alu_consts[4 + const_offset] = 0.0; + vs_alu_consts[5 + const_offset] = 1.0; + vs_alu_consts[6 + const_offset] = 0.0; +- vs_alu_consts[7 + const_offset] = 1.0 / h; ++ vs_alu_consts[7 + const_offset] = 1.0 / pPict->pDrawable->height; + } + + } +@@ -837,9 +826,7 @@ static Bool EVERGREENTextureSetup(PicturePtr pPict, PixmapPtr pPix, + ScrnInfoPtr pScrn = xf86Screens[pPix->drawable.pScreen->myNum]; + RADEONInfoPtr info = RADEONPTR(pScrn); + struct radeon_accel_state *accel_state = info->accel_state; +- int w = pPict->pDrawable->width; +- int h = pPict->pDrawable->height; +- unsigned int repeatType = pPict->repeat ? pPict->repeatType : RepeatNone; ++ unsigned int repeatType; + unsigned int i; + tex_resource_t tex_res; + tex_sampler_t tex_samp; +@@ -854,9 +841,17 @@ static Bool EVERGREENTextureSetup(PicturePtr pPict, PixmapPtr pPix, + } + + /* Texture */ ++ if (pPict->pDrawable) { ++ tex_res.w = pPict->pDrawable->width; ++ tex_res.h = pPict->pDrawable->height; ++ repeatType = pPict->repeat ? pPict->repeatType : RepeatNone; ++ } else { ++ tex_res.w = 1; ++ tex_res.h = 1; ++ repeatType = RepeatNormal; ++ } ++ + tex_res.id = unit; +- tex_res.w = w; +- tex_res.h = h; + tex_res.pitch = accel_state->src_obj[unit].pitch; + tex_res.depth = 0; + tex_res.dim = SQ_TEX_DIM_2D; +@@ -1054,33 +1049,30 @@ static Bool EVERGREENCheckComposite(int op, PicturePtr pSrcPicture, + { + uint32_t tmp1; + PixmapPtr pSrcPixmap, pDstPixmap; +- int max_tex_w, max_tex_h, max_dst_w, max_dst_h; + + /* Check for unsupported compositing operations. */ + if (op >= (int) (sizeof(EVERGREENBlendOp) / sizeof(EVERGREENBlendOp[0]))) + RADEON_FALLBACK(("Unsupported Composite op 0x%x\n", op)); + +- if (!pSrcPicture->pDrawable) +- RADEON_FALLBACK(("Solid or gradient pictures not supported yet\n")); ++ if (pSrcPicture->pDrawable) { ++ pSrcPixmap = RADEONGetDrawablePixmap(pSrcPicture->pDrawable); + +- pSrcPixmap = RADEONGetDrawablePixmap(pSrcPicture->pDrawable); +- +- max_tex_w = 8192; +- max_tex_h = 8192; +- max_dst_w = 8192; +- max_dst_h = 8192; ++ if (pSrcPixmap->drawable.width >= 16384 || ++ pSrcPixmap->drawable.height >= 16384) { ++ RADEON_FALLBACK(("Source w/h too large (%d,%d).\n", ++ pSrcPixmap->drawable.width, ++ pSrcPixmap->drawable.height)); ++ } + +- if (pSrcPixmap->drawable.width >= max_tex_w || +- pSrcPixmap->drawable.height >= max_tex_h) { +- RADEON_FALLBACK(("Source w/h too large (%d,%d).\n", +- pSrcPixmap->drawable.width, +- pSrcPixmap->drawable.height)); +- } ++ if (!EVERGREENCheckCompositeTexture(pSrcPicture, pDstPicture, op, 0)) ++ return FALSE; ++ } else if (pSrcPicture->pSourcePict->type != SourcePictTypeSolidFill) ++ RADEON_FALLBACK(("Gradient pictures not supported yet\n")); + + pDstPixmap = RADEONGetDrawablePixmap(pDstPicture->pDrawable); + +- if (pDstPixmap->drawable.width >= max_dst_w || +- pDstPixmap->drawable.height >= max_dst_h) { ++ if (pDstPixmap->drawable.width >= 16384 || ++ pDstPixmap->drawable.height >= 16384) { + RADEON_FALLBACK(("Dest w/h too large (%d,%d).\n", + pDstPixmap->drawable.width, + pDstPixmap->drawable.height)); +@@ -1089,38 +1081,35 @@ static Bool EVERGREENCheckComposite(int op, PicturePtr pSrcPicture, + if (pMaskPicture) { + PixmapPtr pMaskPixmap; + +- if (!pMaskPicture->pDrawable) +- RADEON_FALLBACK(("Solid or gradient pictures not supported yet\n")); +- +- pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); ++ if (pMaskPicture->pDrawable) { ++ pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); + +- if (pMaskPixmap->drawable.width >= max_tex_w || +- pMaskPixmap->drawable.height >= max_tex_h) { +- RADEON_FALLBACK(("Mask w/h too large (%d,%d).\n", +- pMaskPixmap->drawable.width, +- pMaskPixmap->drawable.height)); +- } ++ if (pMaskPixmap->drawable.width >= 16384 || ++ pMaskPixmap->drawable.height >= 16384) { ++ RADEON_FALLBACK(("Mask w/h too large (%d,%d).\n", ++ pMaskPixmap->drawable.width, ++ pMaskPixmap->drawable.height)); ++ } + +- if (pMaskPicture->componentAlpha) { +- /* Check if it's component alpha that relies on a source alpha and +- * on the source value. We can only get one of those into the +- * single source value that we get to blend with. +- */ +- if (EVERGREENBlendOp[op].src_alpha && +- (EVERGREENBlendOp[op].blend_cntl & COLOR_SRCBLEND_mask) != +- (BLEND_ZERO << COLOR_SRCBLEND_shift)) { +- RADEON_FALLBACK(("Component alpha not supported with source " +- "alpha and source value blending.\n")); ++ if (pMaskPicture->componentAlpha) { ++ /* Check if it's component alpha that relies on a source alpha and ++ * on the source value. We can only get one of those into the ++ * single source value that we get to blend with. ++ */ ++ if (EVERGREENBlendOp[op].src_alpha && ++ (EVERGREENBlendOp[op].blend_cntl & COLOR_SRCBLEND_mask) != ++ (BLEND_ZERO << COLOR_SRCBLEND_shift)) { ++ RADEON_FALLBACK(("Component alpha not supported with source " ++ "alpha and source value blending.\n")); ++ } + } +- } + +- if (!EVERGREENCheckCompositeTexture(pMaskPicture, pDstPicture, op, 1)) +- return FALSE; ++ if (!EVERGREENCheckCompositeTexture(pMaskPicture, pDstPicture, op, 1)) ++ return FALSE; ++ } else if (pMaskPicture->pSourcePict->type != SourcePictTypeSolidFill) ++ RADEON_FALLBACK(("Gradient pictures not supported yet\n")); + } + +- if (!EVERGREENCheckCompositeTexture(pSrcPicture, pDstPicture, op, 0)) +- return FALSE; +- + if (!EVERGREENGetDestFormat(pDstPicture, &tmp1)) + return FALSE; + +@@ -1132,7 +1121,8 @@ static Bool EVERGREENPrepareComposite(int op, PicturePtr pSrcPicture, + PicturePtr pMaskPicture, PicturePtr pDstPicture, + PixmapPtr pSrc, PixmapPtr pMask, PixmapPtr pDst) + { +- ScrnInfoPtr pScrn = xf86Screens[pSrc->drawable.pScreen->myNum]; ++ ScreenPtr pScreen = pDst->drawable.pScreen; ++ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; + RADEONInfoPtr info = RADEONPTR(pScrn); + struct radeon_accel_state *accel_state = info->accel_state; + uint32_t dst_format; +@@ -1142,13 +1132,19 @@ static Bool EVERGREENPrepareComposite(int op, PicturePtr pSrcPicture, + struct r600_accel_object src_obj, mask_obj, dst_obj; + float *cbuf; + +- if (pDst->drawable.bitsPerPixel < 8 || pSrc->drawable.bitsPerPixel < 8) ++ if (pDst->drawable.bitsPerPixel < 8 || (pSrc && pSrc->drawable.bitsPerPixel < 8)) + return FALSE; + ++ if (!pSrc) { ++ pSrc = RADEONSolidPixmap(pScreen, pSrcPicture->pSourcePict->solidFill.color); ++ if (!pSrc) ++ RADEON_FALLBACK("Failed to create solid scratch pixmap\n"); ++ } ++ + src_obj.offset = 0; + dst_obj.offset = 0; +- src_obj.bo = radeon_get_pixmap_bo(pSrc); + dst_obj.bo = radeon_get_pixmap_bo(pDst); ++ src_obj.bo = radeon_get_pixmap_bo(pSrc); + dst_obj.surface = radeon_get_pixmap_surface(pDst); + src_obj.surface = radeon_get_pixmap_surface(pSrc); + dst_obj.tiling_flags = radeon_get_pixmap_tiling(pDst); +@@ -1166,7 +1162,15 @@ static Bool EVERGREENPrepareComposite(int op, PicturePtr pSrcPicture, + dst_obj.bpp = pDst->drawable.bitsPerPixel; + dst_obj.domain = RADEON_GEM_DOMAIN_VRAM; + +- if (pMask) { ++ if (pMaskPicture) { ++ if (!pMask) { ++ pMask = RADEONSolidPixmap(pScreen, pMaskPicture->pSourcePict->solidFill.color); ++ if (!pMask) { ++ if (!pSrcPicture->pDrawable) ++ pScreen->DestroyPixmap(pSrc); ++ RADEON_FALLBACK("Failed to create solid scratch pixmap\n"); ++ } ++ } + mask_obj.offset = 0; + mask_obj.bo = radeon_get_pixmap_bo(pMask); + mask_obj.tiling_flags = radeon_get_pixmap_tiling(pMask); +@@ -1363,11 +1367,9 @@ static Bool EVERGREENPrepareComposite(int op, PicturePtr pSrcPicture, + return TRUE; + } + +-static void EVERGREENDoneComposite(PixmapPtr pDst) ++static void EVERGREENFinishComposite(ScrnInfoPtr pScrn, PixmapPtr pDst, ++ struct radeon_accel_state *accel_state) + { +- ScrnInfoPtr pScrn = xf86Screens[pDst->drawable.pScreen->myNum]; +- RADEONInfoPtr info = RADEONPTR(pScrn); +- struct radeon_accel_state *accel_state = info->accel_state; + int vtx_size; + + if (accel_state->vsync) +@@ -1381,6 +1383,22 @@ static void EVERGREENDoneComposite(PixmapPtr pDst) + evergreen_finish_op(pScrn, vtx_size); + } + ++static void EVERGREENDoneComposite(PixmapPtr pDst) ++{ ++ ScreenPtr pScreen = pDst->drawable.pScreen; ++ ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; ++ RADEONInfoPtr info = RADEONPTR(pScrn); ++ struct radeon_accel_state *accel_state = info->accel_state; ++ ++ EVERGREENFinishComposite(pScrn, pDst, accel_state); ++ ++ if (!accel_state->src_pic->pDrawable) ++ pScreen->DestroyPixmap(accel_state->src_pix); ++ ++ if (accel_state->msk_pic && !accel_state->msk_pic->pDrawable) ++ pScreen->DestroyPixmap(accel_state->msk_pix); ++} ++ + static void EVERGREENComposite(PixmapPtr pDst, + int srcX, int srcY, + int maskX, int maskY, +@@ -1393,7 +1411,7 @@ static void EVERGREENComposite(PixmapPtr pDst, + float *vb; + + if (CS_FULL(info->cs)) { +- EVERGREENDoneComposite(info->accel_state->dst_pix); ++ EVERGREENFinishComposite(pScrn, pDst, info->accel_state); + radeon_cs_flush_indirect(pScrn); + EVERGREENPrepareComposite(info->accel_state->composite_op, + info->accel_state->src_pic, +-- +1.7.7.5 +From f36b911ecc31f689ddceeeb11d10eb7cb4a3428d Mon Sep 17 00:00:00 2001 +From: Alex Deucher +Date: Fri, 13 Apr 2012 13:24:46 -0400 +Subject: [PATCH 3/4] poor man's solid picture support for r100 + +Signed-off-by: Alex Deucher +--- + src/radeon_exa_render.c | 101 +++++++++++++++++++++++++++-------------------- + 1 files changed, 58 insertions(+), 43 deletions(-) + +diff --git a/src/radeon_exa_render.c b/src/radeon_exa_render.c +index b6cc9e4..451a625 100644 +--- a/src/radeon_exa_render.c ++++ b/src/radeon_exa_render.c +@@ -338,17 +338,8 @@ static Bool R100CheckCompositeTexture(PicturePtr pPict, + int unit) + { + unsigned int repeatType = pPict->repeat ? pPict->repeatType : RepeatNone; +- int w = pPict->pDrawable->width; +- int h = pPict->pDrawable->height; + int i; + +- /* r100 limit should be 2048, there are issues with 2048 +- * see 197a62704742a4a19736c2637ac92d1dc5ab34ed +- */ +- +- if ((w > 2047) || (h > 2047)) +- RADEON_FALLBACK(("Picture w/h too large (%dx%d)\n", w, h)); +- + for (i = 0; i < sizeof(R100TexFormats) / sizeof(R100TexFormats[0]); i++) { + if (R100TexFormats[i].fmt == pPict->format) + break; +@@ -357,7 +348,7 @@ static Bool R100CheckCompositeTexture(PicturePtr pPict, + RADEON_FALLBACK(("Unsupported picture format 0x%x\n", + (int)pPict->format)); + +- if (!RADEONCheckTexturePOT(pPict, unit == 0)) ++ if (pPict->pDrawable && !RADEONCheckTexturePOT(pPict, unit == 0)) + return FALSE; + + if (pPict->filter != PictFilterNearest && +@@ -392,15 +383,24 @@ static Bool FUNC_NAME(R100TextureSetup)(PicturePtr pPict, PixmapPtr pPix, + { + RINFO_FROM_SCREEN(pPix->drawable.pScreen); + uint32_t txfilter, txformat, txoffset, txpitch; +- int w = pPict->pDrawable->width; +- int h = pPict->pDrawable->height; +- unsigned int repeatType = pPict->repeat ? pPict->repeatType : RepeatNone; +- Bool repeat = (repeatType == RepeatNormal || repeatType == RepeatReflect) && +- !(unit == 0 && (info->accel_state->need_src_tile_x || info->accel_state->need_src_tile_y)); +- int i; ++ unsigned int repeatType; ++ Bool repeat; ++ int i, w, h; + struct radeon_exa_pixmap_priv *driver_priv; + ACCEL_PREAMBLE(); + ++ if (pPict->pDrawable) { ++ w = pPict->pDrawable->width; ++ h = pPict->pDrawable->height; ++ repeatType = pPict->repeat ? pPict->repeatType : RepeatNone; ++ } else { ++ w = h = 1; ++ repeatType = RepeatNormal; ++ } ++ ++ repeat = (repeatType == RepeatNormal || repeatType == RepeatReflect) && ++ !(unit == 0 && (info->accel_state->need_src_tile_x || info->accel_state->need_src_tile_y)); ++ + txpitch = exaGetPixmapPitch(pPix); + txoffset = 0; + +@@ -510,22 +510,6 @@ static Bool R100CheckComposite(int op, PicturePtr pSrcPicture, + if (op >= sizeof(RadeonBlendOp) / sizeof(RadeonBlendOp[0])) + RADEON_FALLBACK(("Unsupported Composite op 0x%x\n", op)); + +- if (!pSrcPicture->pDrawable) +- RADEON_FALLBACK(("Solid or gradient pictures not supported yet\n")); +- +- /* r100 limit should be 2048, there are issues with 2048 +- * see 197a62704742a4a19736c2637ac92d1dc5ab34ed +- */ +- +- pSrcPixmap = RADEONGetDrawablePixmap(pSrcPicture->pDrawable); +- +- if (pSrcPixmap->drawable.width > 2047 || +- pSrcPixmap->drawable.height > 2047) { +- RADEON_FALLBACK(("Source w/h too large (%d,%d).\n", +- pSrcPixmap->drawable.width, +- pSrcPixmap->drawable.height)); +- } +- + pDstPixmap = RADEONGetDrawablePixmap(pDstPicture->pDrawable); + + if (pDstPixmap->drawable.width > 2047 || +@@ -535,20 +519,35 @@ static Bool R100CheckComposite(int op, PicturePtr pSrcPicture, + pDstPixmap->drawable.height)); + } + ++ if (pSrcPicture->pDrawable) { ++ /* r100 limit should be 2048, there are issues with 2048 ++ * see 197a62704742a4a19736c2637ac92d1dc5ab34ed ++ */ ++ pSrcPixmap = RADEONGetDrawablePixmap(pSrcPicture->pDrawable); ++ ++ if (pSrcPixmap->drawable.width > 2047 || ++ pSrcPixmap->drawable.height > 2047) { ++ RADEON_FALLBACK(("Source w/h too large (%d,%d).\n", ++ pSrcPixmap->drawable.width, ++ pSrcPixmap->drawable.height)); ++ } ++ } else if (pSrcPicture->pSourcePict->type != SourcePictTypeSolidFill) ++ RADEON_FALLBACK(("Gradient pictures not supported yet\n")); ++ + if (pMaskPicture) { + PixmapPtr pMaskPixmap; + +- if (!pMaskPicture->pDrawable) +- RADEON_FALLBACK(("Solid or gradient pictures not supported yet\n")); +- +- pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); ++ if (pMaskPicture->pDrawable) { ++ pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); + +- if (pMaskPixmap->drawable.width > 2047 || +- pMaskPixmap->drawable.height > 2047) { +- RADEON_FALLBACK(("Mask w/h too large (%d,%d).\n", +- pMaskPixmap->drawable.width, +- pMaskPixmap->drawable.height)); +- } ++ if (pMaskPixmap->drawable.width > 2047 || ++ pMaskPixmap->drawable.height > 2047) { ++ RADEON_FALLBACK(("Mask w/h too large (%d,%d).\n", ++ pMaskPixmap->drawable.width, ++ pMaskPixmap->drawable.height)); ++ } ++ } else if (pMaskPicture->pSourcePict->type != SourcePictTypeSolidFill) ++ RADEON_FALLBACK(("Gradient pictures not supported yet\n")); + + if (pMaskPicture->componentAlpha) { + /* Check if it's component alpha that relies on a source alpha and +@@ -624,7 +623,8 @@ static Bool FUNC_NAME(R100PrepareComposite)(int op, + PixmapPtr pMask, + PixmapPtr pDst) + { +- RINFO_FROM_SCREEN(pDst->drawable.pScreen); ++ ScreenPtr pScreen = pDst->drawable.pScreen; ++ RINFO_FROM_SCREEN(pScreen); + uint32_t dst_format, dst_pitch, colorpitch; + uint32_t pp_cntl, blendcntl, cblend, ablend; + int pixel_shift; +@@ -648,12 +648,27 @@ static Bool FUNC_NAME(R100PrepareComposite)(int op, + + CHECK_OFFSET(pDst, 0x0f, "destination"); + ++ if (!pSrc) { ++ pSrc = RADEONSolidPixmap(pScreen, cpu_to_le32(pSrcPicture->pSourcePict->solidFill.color)); ++ if (!pSrc) ++ RADEON_FALLBACK("Failed to create solid scratch pixmap\n"); ++ } ++ + if (((dst_pitch >> pixel_shift) & 0x7) != 0) + RADEON_FALLBACK(("Bad destination pitch 0x%x\n", (int)dst_pitch)); + + if (!RADEONSetupSourceTile(pSrcPicture, pSrc, FALSE, TRUE)) + return FALSE; + ++ if (pMaskPicture && !pMask) { ++ pMask = RADEONSolidPixmap(pScreen, cpu_to_le32(pMaskPicture->pSourcePict->solidFill.color)); ++ if (!pMask) { ++ if (!pSrcPicture->pDrawable) ++ pScreen->DestroyPixmap(pSrc); ++ RADEON_FALLBACK("Failed to create solid scratch pixmap\n"); ++ } ++ } ++ + RADEONPrepareCompositeCS(op, pSrcPicture, pMaskPicture, pDstPicture, + pSrc, pMask, pDst); + +-- +1.7.7.5 +From c5c8310858f8018a1754f2457d7b102dc7d62b23 Mon Sep 17 00:00:00 2001 +From: Alex Deucher +Date: Fri, 13 Apr 2012 13:28:10 -0400 +Subject: [PATCH 4/4] poor man's solid picture support for r200 + +Signed-off-by: Alex Deucher +--- + src/radeon_exa_render.c | 101 +++++++++++++++++++++++++++-------------------- + 1 files changed, 58 insertions(+), 43 deletions(-) + +diff --git a/src/radeon_exa_render.c b/src/radeon_exa_render.c +index 451a625..7f1a3ff 100644 +--- a/src/radeon_exa_render.c ++++ b/src/radeon_exa_render.c +@@ -756,17 +756,8 @@ static Bool R200CheckCompositeTexture(PicturePtr pPict, + int unit) + { + unsigned int repeatType = pPict->repeat ? pPict->repeatType : RepeatNone; +- int w = pPict->pDrawable->width; +- int h = pPict->pDrawable->height; + int i; + +- /* r200 limit should be 2048, there are issues with 2048 +- * see bug 19269 +- */ +- +- if ((w > 2047) || (h > 2047)) +- RADEON_FALLBACK(("Picture w/h too large (%dx%d)\n", w, h)); +- + for (i = 0; i < sizeof(R200TexFormats) / sizeof(R200TexFormats[0]); i++) + { + if (R200TexFormats[i].fmt == pPict->format) +@@ -776,7 +767,7 @@ static Bool R200CheckCompositeTexture(PicturePtr pPict, + RADEON_FALLBACK(("Unsupported picture format 0x%x\n", + (int)pPict->format)); + +- if (!RADEONCheckTexturePOT(pPict, unit == 0)) ++ if (pPict->pDrawable && !RADEONCheckTexturePOT(pPict, unit == 0)) + return FALSE; + + if (pPict->filter != PictFilterNearest && +@@ -809,15 +800,24 @@ static Bool FUNC_NAME(R200TextureSetup)(PicturePtr pPict, PixmapPtr pPix, + { + RINFO_FROM_SCREEN(pPix->drawable.pScreen); + uint32_t txfilter, txformat, txoffset, txpitch; +- int w = pPict->pDrawable->width; +- int h = pPict->pDrawable->height; +- unsigned int repeatType = pPict->repeat ? pPict->repeatType : RepeatNone; +- Bool repeat = (repeatType == RepeatNormal || repeatType == RepeatReflect) && +- !(unit == 0 && (info->accel_state->need_src_tile_x || info->accel_state->need_src_tile_y)); +- int i; ++ unsigned int repeatType; ++ Bool repeat; ++ int i, w, h; + struct radeon_exa_pixmap_priv *driver_priv; + ACCEL_PREAMBLE(); + ++ if (pPict->pDrawable) { ++ w = pPict->pDrawable->width; ++ h = pPict->pDrawable->height; ++ repeatType = pPict->repeat ? pPict->repeatType : RepeatNone; ++ } else { ++ w = h = 1; ++ repeatType = RepeatNormal; ++ } ++ ++ repeat = (repeatType == RepeatNormal || repeatType == RepeatReflect) && ++ !(unit == 0 && (info->accel_state->need_src_tile_x || info->accel_state->need_src_tile_y)); ++ + txpitch = exaGetPixmapPitch(pPix); + + txoffset = 0; +@@ -926,22 +926,6 @@ static Bool R200CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP + if (op >= sizeof(RadeonBlendOp) / sizeof(RadeonBlendOp[0])) + RADEON_FALLBACK(("Unsupported Composite op 0x%x\n", op)); + +- if (!pSrcPicture->pDrawable) +- RADEON_FALLBACK(("Solid or gradient pictures not supported yet\n")); +- +- /* r200 limit should be 2048, there are issues with 2048 +- * see bug 19269 +- */ +- +- pSrcPixmap = RADEONGetDrawablePixmap(pSrcPicture->pDrawable); +- +- if (pSrcPixmap->drawable.width > 2047 || +- pSrcPixmap->drawable.height > 2047) { +- RADEON_FALLBACK(("Source w/h too large (%d,%d).\n", +- pSrcPixmap->drawable.width, +- pSrcPixmap->drawable.height)); +- } +- + pDstPixmap = RADEONGetDrawablePixmap(pDstPicture->pDrawable); + + if (pDstPixmap->drawable.width > 2047 || +@@ -951,20 +935,35 @@ static Bool R200CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP + pDstPixmap->drawable.height)); + } + ++ if (pSrcPicture->pDrawable) { ++ /* r200 limit should be 2048, there are issues with 2048 ++ * see 197a62704742a4a19736c2637ac92d1dc5ab34ed ++ */ ++ pSrcPixmap = RADEONGetDrawablePixmap(pSrcPicture->pDrawable); ++ ++ if (pSrcPixmap->drawable.width > 2047 || ++ pSrcPixmap->drawable.height > 2047) { ++ RADEON_FALLBACK(("Source w/h too large (%d,%d).\n", ++ pSrcPixmap->drawable.width, ++ pSrcPixmap->drawable.height)); ++ } ++ } else if (pSrcPicture->pSourcePict->type != SourcePictTypeSolidFill) ++ RADEON_FALLBACK(("Gradient pictures not supported yet\n")); ++ + if (pMaskPicture) { + PixmapPtr pMaskPixmap; + +- if (!pMaskPicture->pDrawable) +- RADEON_FALLBACK(("Solid or gradient pictures not supported yet\n")); +- +- pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); ++ if (pMaskPicture->pDrawable) { ++ pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); + +- if (pMaskPixmap->drawable.width > 2047 || +- pMaskPixmap->drawable.height > 2047) { +- RADEON_FALLBACK(("Mask w/h too large (%d,%d).\n", +- pMaskPixmap->drawable.width, +- pMaskPixmap->drawable.height)); +- } ++ if (pMaskPixmap->drawable.width > 2047 || ++ pMaskPixmap->drawable.height > 2047) { ++ RADEON_FALLBACK(("Mask w/h too large (%d,%d).\n", ++ pMaskPixmap->drawable.width, ++ pMaskPixmap->drawable.height)); ++ } ++ } else if (pMaskPicture->pSourcePict->type != SourcePictTypeSolidFill) ++ RADEON_FALLBACK(("Gradient pictures not supported yet\n")); + + if (pMaskPicture->componentAlpha) { + /* Check if it's component alpha that relies on a source alpha and +@@ -997,7 +996,8 @@ static Bool FUNC_NAME(R200PrepareComposite)(int op, PicturePtr pSrcPicture, + PicturePtr pMaskPicture, PicturePtr pDstPicture, + PixmapPtr pSrc, PixmapPtr pMask, PixmapPtr pDst) + { +- RINFO_FROM_SCREEN(pDst->drawable.pScreen); ++ ScreenPtr pScreen = pDst->drawable.pScreen; ++ RINFO_FROM_SCREEN(pScreen); + uint32_t dst_format, dst_pitch; + uint32_t pp_cntl, blendcntl, cblend, ablend, colorpitch; + int pixel_shift; +@@ -1024,9 +1024,24 @@ static Bool FUNC_NAME(R200PrepareComposite)(int op, PicturePtr pSrcPicture, + if (((dst_pitch >> pixel_shift) & 0x7) != 0) + RADEON_FALLBACK(("Bad destination pitch 0x%x\n", (int)dst_pitch)); + ++ if (!pSrc) { ++ pSrc = RADEONSolidPixmap(pScreen, cpu_to_le32(pSrcPicture->pSourcePict->solidFill.color)); ++ if (!pSrc) ++ RADEON_FALLBACK("Failed to create solid scratch pixmap\n"); ++ } ++ + if (!RADEONSetupSourceTile(pSrcPicture, pSrc, FALSE, TRUE)) + return FALSE; + ++ if (pMaskPicture && !pMask) { ++ pMask = RADEONSolidPixmap(pScreen, cpu_to_le32(pMaskPicture->pSourcePict->solidFill.color)); ++ if (!pMask) { ++ if (!pSrcPicture->pDrawable) ++ pScreen->DestroyPixmap(pSrc); ++ RADEON_FALLBACK("Failed to create solid scratch pixmap\n"); ++ } ++ } ++ + RADEONPrepareCompositeCS(op, pSrcPicture, pMaskPicture, pDstPicture, + pSrc, pMask, pDst); + +-- +1.7.7.5 + diff --git a/testing/xf86-video-intel/PKGBUILD b/testing/xf86-video-intel/PKGBUILD new file mode 100644 index 000000000..02bea04fd --- /dev/null +++ b/testing/xf86-video-intel/PKGBUILD @@ -0,0 +1,34 @@ +# $Id: PKGBUILD 156125 2012-04-14 09:15:47Z andyrtr $ +# Maintainer: Jan de Groot + +pkgname=xf86-video-intel +pkgver=2.18.0 +pkgrel=2 +pkgdesc="X.org Intel i810/i830/i915/945G/G965+ video drivers" +arch=(i686 x86_64) +url="http://xorg.freedesktop.org/" +license=('custom') +depends=('intel-dri' 'libxvmc' 'libpciaccess' 'libdrm' 'xcb-util>=0.3.8' 'libxfixes' 'udev') +makedepends=('xorg-server-devel>=1.11.99.903' 'libx11' 'libdrm' 'xf86driproto' 'glproto' 'mesa' 'libxvmc' 'libxrender') +conflicts=('xorg-server<1.11.99.903' 'xf86-video-i810' 'xf86-video-intel-legacy') +options=('!libtool') +groups=('xorg-drivers' 'xorg') +source=(${url}/releases/individual/driver/${pkgname}-${pkgver}.tar.bz2 + Remove_broken_render_glyphs-to-dst.diff) +sha1sums=('77fae98e73414140bf214dca5da32bcf079c4463' + '80e02d9b9ebc5119ba8f03675b9ed0327a62f836') + +build() { + cd "${srcdir}/${pkgname}-${pkgver}" + # fix a rendering bug with recent cairo 1.12 + patch -Np1 -i ${srcdir}/Remove_broken_render_glyphs-to-dst.diff + ./configure --prefix=/usr --enable-dri + make +} + +package() { + cd "${srcdir}/${pkgname}-${pkgver}" + make DESTDIR="${pkgdir}" install + install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}" + install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/" +} diff --git a/testing/xf86-video-intel/Remove_broken_render_glyphs-to-dst.diff b/testing/xf86-video-intel/Remove_broken_render_glyphs-to-dst.diff new file mode 100644 index 000000000..fe462d47d --- /dev/null +++ b/testing/xf86-video-intel/Remove_broken_render_glyphs-to-dst.diff @@ -0,0 +1,387 @@ +From fde8a010b3d9406c2f65ee99978360a6ca54e006 Mon Sep 17 00:00:00 2001 +From: Chris Wilson +Date: Fri, 30 Mar 2012 11:47:21 +0000 +Subject: uxa: Remove broken render glyphs-to-dst + +Reported-by: Vincent Untz +Reported-by: Robert Bradford +Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=48045 +Signed-off-by: Chris Wilson +--- +diff --git a/uxa/uxa-glyphs.c b/uxa/uxa-glyphs.c +index 6172f2f..b754f4e 100644 +--- a/uxa/uxa-glyphs.c ++++ b/uxa/uxa-glyphs.c +@@ -663,190 +663,6 @@ uxa_glyph_cache(ScreenPtr screen, GlyphPtr glyph, int *out_x, int *out_y) + return cache->picture; + } + +-static int +-uxa_glyphs_to_dst(CARD8 op, +- PicturePtr pSrc, +- PicturePtr pDst, +- INT16 src_x, INT16 src_y, +- INT16 xDst, INT16 yDst, +- int nlist, GlyphListPtr list, GlyphPtr * glyphs, +- BoxPtr extents) +-{ +- ScreenPtr screen = pDst->pDrawable->pScreen; +- uxa_screen_t *uxa_screen = uxa_get_screen(screen); +- PixmapPtr src_pixmap, dst_pixmap; +- PicturePtr localSrc, glyph_atlas; +- int x, y, n; +- BoxRec box; +- +- if (uxa_screen->info->check_composite_texture && +- uxa_screen->info->check_composite_texture(screen, pSrc)) { +- if (pSrc->pDrawable) { +- int src_off_x, src_off_y; +- +- src_pixmap = uxa_get_offscreen_pixmap(pSrc->pDrawable, &src_off_x, &src_off_y); +- if (src_pixmap == NULL) +- return -1; +- +- src_x += pSrc->pDrawable->x + src_off_x; +- src_y += pSrc->pDrawable->y + src_off_y; +- } else { +- src_pixmap = NULL; +- } +- localSrc = pSrc; +- } else { +- int width, height; +- +- if (extents == NULL) { +- uxa_glyph_extents(nlist, list, glyphs, &box); +- extents = &box; +- } +- +- width = extents->x2 - extents->x1; +- height = extents->y2 - extents->y1; +- if (width == 0 || height == 0) +- return 0; +- +- if (pSrc->pDrawable) { +- int src_off_x, src_off_y; +- +- src_off_x = extents->x1 - xDst; +- src_off_y = extents->y1 - yDst; +- localSrc = uxa_acquire_drawable(screen, pSrc, +- src_x + src_off_x, src_y + src_off_y, +- width, height, +- &src_x, &src_y); +- if (uxa_screen->info->check_composite_texture && +- !uxa_screen->info->check_composite_texture(screen, localSrc)) { +- if (localSrc != pSrc) +- FreePicture(localSrc, 0); +- return -1; +- } +- +- src_pixmap = uxa_get_offscreen_pixmap(localSrc->pDrawable, &src_off_x, &src_off_y); +- if (src_pixmap == NULL) { +- if (localSrc != pSrc) +- FreePicture(localSrc, 0); +- return -1; +- } +- +- src_x += localSrc->pDrawable->x + src_off_x; +- src_y += localSrc->pDrawable->y + src_off_y; +- } else { +- localSrc = uxa_acquire_pattern(screen, pSrc, +- PICT_a8r8g8b8, x, y, width, height); +- if (!localSrc) +- return 1; +- +- src_pixmap = uxa_get_drawable_pixmap(localSrc->pDrawable); +- if (src_pixmap == NULL) { +- FreePicture(localSrc, 0); +- return -1; +- } +- +- src_x = src_y = 0; +- } +- } +- +- dst_pixmap = uxa_get_offscreen_pixmap(pDst->pDrawable, &x, &y); +- x += xDst + pDst->pDrawable->x - list->xOff; +- y += yDst + pDst->pDrawable->y - list->yOff; +- +- glyph_atlas = NULL; +- while (nlist--) { +- x += list->xOff; +- y += list->yOff; +- n = list->len; +- while (n--) { +- GlyphPtr glyph = *glyphs++; +- PicturePtr this_atlas; +- int mask_x, mask_y, nrect; +- struct uxa_glyph *priv; +- BoxPtr rects; +- +- if (glyph->info.width == 0 || glyph->info.height == 0) +- goto next_glyph; +- +- priv = uxa_glyph_get_private(glyph); +- if (priv != NULL) { +- mask_x = priv->x; +- mask_y = priv->y; +- this_atlas = priv->cache->picture; +- } else { +- if (glyph_atlas) { +- uxa_screen->info->done_composite(dst_pixmap); +- glyph_atlas = NULL; +- } +- this_atlas = uxa_glyph_cache(screen, glyph, &mask_x, &mask_y); +- if (this_atlas == NULL) { +- /* no cache for this glyph */ +- this_atlas = GlyphPicture(glyph)[screen->myNum]; +- mask_x = mask_y = 0; +- } +- } +- +- if (this_atlas != glyph_atlas) { +- PixmapPtr mask_pixmap; +- +- if (glyph_atlas) +- uxa_screen->info->done_composite(dst_pixmap); +- +- mask_pixmap = +- uxa_get_drawable_pixmap(this_atlas->pDrawable); +- if (!uxa_pixmap_is_offscreen(mask_pixmap) || +- !uxa_screen->info->prepare_composite(op, +- localSrc, this_atlas, pDst, +- src_pixmap, mask_pixmap, dst_pixmap)) +- return -1; +- +- glyph_atlas = this_atlas; +- } +- +- rects = REGION_RECTS(pDst->pCompositeClip); +- nrect = REGION_NUM_RECTS(pDst->pCompositeClip); +- while (nrect--) { +- int x1 = x - glyph->info.x, dx = 0; +- int y1 = y - glyph->info.y, dy = 0; +- int x2 = x1 + glyph->info.width; +- int y2 = y1 + glyph->info.height; +- +- if (rects->y1 >= y2) +- break; +- +- if (x1 < rects->x1) +- dx = rects->x1 - x1, x1 = rects->x1; +- if (x2 > rects->x2) +- x2 = rects->x2; +- if (y1 < rects->y1) +- dy = rects->y1 - y1, y1 = rects->y1; +- if (y2 > rects->y2) +- y2 = rects->y2; +- +- if (x1 < x2 && y1 < y2) { +- uxa_screen->info->composite(dst_pixmap, +- x1 + src_x, y1 + src_y, +- dx + mask_x, dy + mask_y, +- x1, y1, +- x2 - x1, y2 - y1); +- } +- rects++; +- } +- +-next_glyph: +- x += glyph->info.xOff; +- y += glyph->info.yOff; +- } +- list++; +- } +- if (glyph_atlas) +- uxa_screen->info->done_composite(dst_pixmap); +- +- if (localSrc != pSrc) +- FreePicture(localSrc, 0); +- +- return 0; +-} +- + static void + uxa_clear_pixmap(ScreenPtr screen, + uxa_screen_t *uxa_screen, +@@ -894,37 +710,30 @@ uxa_glyphs_via_mask(CARD8 op, + PicturePtr pDst, + PictFormatPtr maskFormat, + INT16 xSrc, INT16 ySrc, +- INT16 xDst, INT16 yDst, +- int nlist, GlyphListPtr list, GlyphPtr * glyphs, +- BoxPtr extents) ++ int nlist, GlyphListPtr list, GlyphPtr * glyphs) + { + ScreenPtr screen = pDst->pDrawable->pScreen; + uxa_screen_t *uxa_screen = uxa_get_screen(screen); + CARD32 component_alpha; + PixmapPtr pixmap; + PicturePtr glyph_atlas, mask; ++ int xDst = list->xOff, yDst = list->yOff; + int x, y, width, height; + int dst_off_x, dst_off_y; + int n, error; + BoxRec box; + +- if (!extents) { +- uxa_glyph_extents(nlist, list, glyphs, &box); ++ uxa_glyph_extents(nlist, list, glyphs, &box); ++ if (box.x2 <= box.x1 || box.y2 <= box.y1) ++ return 0; + +- if (box.x2 <= box.x1 || box.y2 <= box.y1) +- return 0; ++ dst_off_x = box.x1; ++ dst_off_y = box.y1; + +- extents = &box; +- dst_off_x = box.x1; +- dst_off_y = box.y1; +- } else { +- dst_off_x = dst_off_y = 0; +- } +- +- width = extents->x2 - extents->x1; +- height = extents->y2 - extents->y1; +- x = -extents->x1; +- y = -extents->y1; ++ width = box.x2 - box.x1; ++ height = box.y2 - box.y1; ++ x = -box.x1; ++ y = -box.y1; + + if (maskFormat->depth == 1) { + PictFormatPtr a8Format = +@@ -1061,11 +870,6 @@ uxa_glyphs(CARD8 op, + { + ScreenPtr screen = pDst->pDrawable->pScreen; + uxa_screen_t *uxa_screen = uxa_get_screen(screen); +- int xDst = list->xOff, yDst = list->yOff; +- BoxRec extents = { 0, 0, 0, 0 }; +- Bool have_extents = FALSE; +- int width, height, ret; +- PicturePtr localDst = pDst; + + if (uxa_screen->info->flags & UXA_USE_GLAMOR) { + int ok; +@@ -1128,112 +932,12 @@ fallback: + } + } + +- if (!maskFormat && +- uxa_screen->info->check_composite_target && +- !uxa_screen->info->check_composite_target(uxa_get_drawable_pixmap(pDst->pDrawable))) { +- int depth = pDst->pDrawable->depth; +- PixmapPtr pixmap; +- int x, y, error; +- GCPtr gc; +- +- pixmap = uxa_get_drawable_pixmap(pDst->pDrawable); +- if (uxa_screen->info->check_copy && +- !uxa_screen->info->check_copy(pixmap, pixmap, GXcopy, FB_ALLONES)) +- goto fallback; +- +- uxa_glyph_extents(nlist, list, glyphs, &extents); +- +- /* clip against dst bounds */ +- if (extents.x1 < 0) +- extents.x1 = 0; +- if (extents.y1 < 0) +- extents.y1 = 0; +- if (extents.x2 > pDst->pDrawable->width) +- extents.x2 = pDst->pDrawable->width; +- if (extents.y2 > pDst->pDrawable->height) +- extents.y2 = pDst->pDrawable->height; +- +- if (extents.x2 <= extents.x1 || extents.y2 <= extents.y1) +- return; +- width = extents.x2 - extents.x1; +- height = extents.y2 - extents.y1; +- x = -extents.x1; +- y = -extents.y1; +- have_extents = TRUE; +- +- xDst += x; +- yDst += y; +- +- pixmap = screen->CreatePixmap(screen, +- width, height, depth, +- CREATE_PIXMAP_USAGE_SCRATCH); +- if (!pixmap) +- return; +- +- if (!uxa_pixmap_is_offscreen(pixmap)) { +- screen->DestroyPixmap(pixmap); +- goto fallback; +- } +- +- gc = GetScratchGC(depth, screen); +- if (!gc) { +- screen->DestroyPixmap(pixmap); +- return; +- } +- +- ValidateGC(&pixmap->drawable, gc); +- gc->ops->CopyArea(pDst->pDrawable, &pixmap->drawable, gc, +- extents.x1, extents.y1, +- width, height, +- 0, 0); +- FreeScratchGC(gc); +- +- localDst = CreatePicture(0, &pixmap->drawable, +- PictureMatchFormat(screen, depth, pDst->format), +- 0, 0, serverClient, &error); +- screen->DestroyPixmap(pixmap); +- +- if (!localDst) +- return; +- +- ValidatePicture(localDst); +- } +- +- if (maskFormat) { +- ret = uxa_glyphs_via_mask(op, +- pSrc, localDst, maskFormat, +- xSrc, ySrc, +- xDst, yDst, +- nlist, list, glyphs, +- have_extents ? &extents : NULL); +- } else { +- ret = uxa_glyphs_to_dst(op, +- pSrc, localDst, +- xSrc, ySrc, +- xDst, yDst, +- nlist, list, glyphs, +- have_extents ? &extents : NULL); +- } +- if (ret) { +- if (localDst != pDst) +- FreePicture(localDst, 0); +- ++ if (!maskFormat) + goto fallback; +- } + +- if (localDst != pDst) { +- GCPtr gc; +- +- gc = GetScratchGC(pDst->pDrawable->depth, screen); +- if (gc) { +- ValidateGC(pDst->pDrawable, gc); +- gc->ops->CopyArea(localDst->pDrawable, pDst->pDrawable, gc, +- 0, 0, +- width, height, +- extents.x1, extents.y1); +- FreeScratchGC(gc); +- } +- +- FreePicture(localDst, 0); +- } ++ if (uxa_glyphs_via_mask(op, ++ pSrc, pDst, maskFormat, ++ xSrc, ySrc, ++ nlist, list, glyphs)) ++ goto fallback; + } +-- +cgit v0.9.0.2-2-gbebe -- cgit v1.2.3-54-g00ecf