Gentoo Archives: gentoo-commits

From: Andrew Savchenko <bircoph@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: media-libs/libafterimage/, media-libs/libafterimage/files/
Date: Mon, 02 May 2016 15:52:27
Message-Id: 1462204303.3d5b16d3365e80c281e9131e011a6d88ddf61167.bircoph@gentoo
1 commit: 3d5b16d3365e80c281e9131e011a6d88ddf61167
2 Author: Andrew Savchenko <bircoph <AT> gentoo <DOT> org>
3 AuthorDate: Mon May 2 15:51:22 2016 +0000
4 Commit: Andrew Savchenko <bircoph <AT> gentoo <DOT> org>
5 CommitDate: Mon May 2 15:51:43 2016 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=3d5b16d3
7
8 media-libs/libafterimage-1.20-r1: fix bug 571654
9
10 - port to giflib-5 API;
11 - update ebuild to EAPI 6;
12 - add new USE flags and deps for previously ignored dependencies.
13
14 Package-Manager: portage-2.2.28
15 Signed-off-by: Andrew Savchenko <bircoph <AT> gentoo.org>
16
17 .../files/libafterimage-giflib5.patch | 382 +++++++++++++++++++++
18 .../libafterimage/libafterimage-1.20-r1.ebuild | 108 ++++++
19 media-libs/libafterimage/metadata.xml | 4 +
20 3 files changed, 494 insertions(+)
21
22 diff --git a/media-libs/libafterimage/files/libafterimage-giflib5.patch b/media-libs/libafterimage/files/libafterimage-giflib5.patch
23 new file mode 100644
24 index 0000000..32037d9
25 --- /dev/null
26 +++ b/media-libs/libafterimage/files/libafterimage-giflib5.patch
27 @@ -0,0 +1,382 @@
28 +diff -Naurd libAfterImage-1.20.orig/export.c libAfterImage-1.20/export.c
29 +--- libAfterImage-1.20.orig/export.c 2016-05-01 11:44:19.000000000 +0300
30 ++++ libAfterImage-1.20/export.c 2016-05-02 10:57:59.688984491 +0300
31 +@@ -1048,6 +1048,9 @@
32 + Bool new_image = True ;
33 + START_TIME(started);
34 + int cmap_size = 1;
35 ++#if (GIFLIB_MAJOR>=5)
36 ++ int errcode;
37 ++#endif
38 + #define GIF_NETSCAPE_EXT_BYTES 3
39 + unsigned char netscape_ext_bytes[GIF_NETSCAPE_EXT_BYTES] = { 0x1, 0x0, 0x0};
40 + #define GIF_GCE_BYTES 4
41 +@@ -1086,10 +1089,18 @@
42 +
43 + while( cmap_size < 256 && cmap_size < (int)cmap.count+(gce_bytes[0]&0x01) )
44 + cmap_size = cmap_size<<1 ;
45 ++#if (GIFLIB_MAJOR>=5)
46 ++ if( (gif_cmap = GifMakeMapObject(cmap_size, NULL )) == NULL )
47 ++#else
48 + if( (gif_cmap = MakeMapObject(cmap_size, NULL )) == NULL )
49 ++#endif
50 + {
51 + free( mapped_im );
52 ++#if (GIFLIB_MAJOR>=5)
53 ++ ASIM_PrintGifError(E_GIF_ERR_NOT_ENOUGH_MEM);
54 ++#else
55 + ASIM_PrintGifError();
56 ++#endif
57 + return False;
58 + }
59 + memcpy( &(gif_cmap->Colors[0]), &(cmap.entries[0]), MIN(cmap.count,(unsigned int)cmap_size)*3 );
60 +@@ -1101,13 +1112,25 @@
61 + SavedImage *images = NULL ;
62 + int count = 0 ;
63 + /* TODO: do something about multiimage files !!! */
64 ++#if (GIFLIB_MAJOR>=5)
65 ++ gif = open_gif_read(infile, &errcode);
66 ++#else
67 + gif = open_gif_read(infile);
68 ++#endif
69 + if( gif == NULL || get_gif_saved_images(gif, -1, &images, &count) == GIF_ERROR)
70 + {
71 ++#if (GIFLIB_MAJOR>=5)
72 ++ ASIM_PrintGifError(errcode);
73 ++#else
74 + ASIM_PrintGifError();
75 ++#endif
76 + if( gif )
77 + {
78 ++#if (GIFLIB_MAJOR>=5)
79 ++ DGifCloseFile(gif, &errcode);
80 ++#else
81 + DGifCloseFile(gif);
82 ++#endif
83 + gif = NULL ;
84 + }
85 + if (infile)
86 +@@ -1123,14 +1146,22 @@
87 + gif_src = *gif ;
88 + gif->SColorMap = NULL ;
89 + gif->Image.ColorMap = NULL ;
90 ++#if (GIFLIB_MAJOR>=5)
91 ++ DGifCloseFile(gif, &errcode);
92 ++#else
93 + DGifCloseFile(gif);
94 ++#endif
95 + gif = NULL;
96 + fclose (infile);
97 + infile = NULL;
98 + outfile = open_writeable_image_file( path );
99 +
100 + if (outfile)
101 ++#if (GIFLIB_MAJOR>=5)
102 ++ gif = EGifOpenFileHandle(fileno(outfile), &errcode);
103 ++#else
104 + gif = EGifOpenFileHandle(fileno(outfile));
105 ++#endif
106 +
107 + if (gif)
108 + {
109 +@@ -1141,26 +1172,46 @@
110 + gif_src.SColorMap )) == GIF_OK )
111 + status = write_gif_saved_images( gif, images, count );
112 + if( status != GIF_OK )
113 ++#if (GIFLIB_MAJOR>=5)
114 ++ ASIM_PrintGifError(status);
115 ++#else
116 + ASIM_PrintGifError();
117 ++#endif
118 + }
119 + if (gif_src.SColorMap)
120 + { /* we only want to save private colormap if it is any different from
121 + * screen colormap ( saves us 768 bytes per image ) */
122 + if( gif_cmap->ColorCount == gif_src.SColorMap->ColorCount )
123 + dont_save_cmap = ( memcmp( gif_cmap->Colors, gif_src.SColorMap->Colors, gif_cmap->ColorCount*sizeof(GifColorType)) == 0 );
124 ++#if (GIFLIB_MAJOR>=5)
125 ++ GifFreeMapObject(gif_src.SColorMap);
126 ++#else
127 + FreeMapObject(gif_src.SColorMap);
128 ++#endif
129 + }
130 + if (gif)
131 + {
132 + EGifPutExtension(gif, GRAPHICS_EXT_FUNC_CODE, GIF_GCE_BYTES, &(gce_bytes[0]));
133 + if( get_flags( params->gif.flags, EXPORT_ANIMATION_REPEATS ) )
134 + {
135 ++#if (GIFLIB_MAJOR>=5)
136 ++ EGifPutExtensionLeader(gif, APPLICATION_EXT_FUNC_CODE);
137 ++ EGifPutExtensionBlock(gif, 11, "NETSCAPE2.0");
138 ++ EGifPutExtensionBlock(gif, GIF_NETSCAPE_EXT_BYTES, &(netscape_ext_bytes[0]));
139 ++ EGifPutExtensionTrailer(gif);
140 ++#else
141 + EGifPutExtensionFirst(gif, APPLICATION_EXT_FUNC_CODE, 11, "NETSCAPE2.0");
142 + EGifPutExtensionLast(gif, 0, GIF_NETSCAPE_EXT_BYTES, &(netscape_ext_bytes[0]));
143 ++#endif
144 + }
145 +
146 ++#if (GIFLIB_MAJOR>=5)
147 ++ if( (errcode = EGifPutImageDesc(gif, 0, 0, im->width, im->height, FALSE, (dont_save_cmap)?NULL:gif_cmap )) == GIF_ERROR )
148 ++ ASIM_PrintGifError(errcode);
149 ++#else
150 + if( EGifPutImageDesc(gif, 0, 0, im->width, im->height, FALSE, (dont_save_cmap)?NULL:gif_cmap ) == GIF_ERROR )
151 + ASIM_PrintGifError();
152 ++#endif
153 + }
154 + }
155 + free_gif_saved_images( images, count );
156 +@@ -1172,24 +1223,46 @@
157 + outfile = open_writeable_image_file(path);
158 +
159 + if (outfile)
160 ++ {
161 ++#if (GIFLIB_MAJOR>=5)
162 ++ gif = EGifOpenFileHandle(fileno(outfile), &errcode);
163 ++ if (errcode != E_GIF_SUCCEEDED)
164 ++ ASIM_PrintGifError(errcode);
165 ++#else
166 + if ((gif = EGifOpenFileHandle(fileno(outfile))) == NULL)
167 + ASIM_PrintGifError();
168 ++#endif
169 ++ }
170 + }
171 +
172 + if( new_image && gif )
173 + {
174 ++#if (GIFLIB_MAJOR>=5)
175 ++ if( (errcode = EGifPutScreenDesc(gif, im->width, im->height, cmap_size, 0, gif_cmap )) == GIF_ERROR )
176 ++ ASIM_PrintGifError(errcode);
177 ++#else
178 + if( EGifPutScreenDesc(gif, im->width, im->height, cmap_size, 0, gif_cmap ) == GIF_ERROR )
179 + ASIM_PrintGifError();
180 ++#endif
181 +
182 + EGifPutExtension(gif, 0xf9, GIF_GCE_BYTES, &(gce_bytes[0]));
183 +
184 ++#if (GIFLIB_MAJOR>=5)
185 ++ if( (errcode = EGifPutImageDesc(gif, 0, 0, im->width, im->height, FALSE, NULL )) == GIF_ERROR )
186 ++ ASIM_PrintGifError(errcode);
187 ++#else
188 + if( EGifPutImageDesc(gif, 0, 0, im->width, im->height, FALSE, NULL ) == GIF_ERROR )
189 + ASIM_PrintGifError();
190 ++#endif
191 + }
192 +
193 + if( gif_cmap )
194 + {
195 ++#if (GIFLIB_MAJOR>=5)
196 ++ GifFreeMapObject(gif_cmap);
197 ++#else
198 + FreeMapObject(gif_cmap);
199 ++#endif
200 + gif_cmap = NULL ;
201 + }
202 + if( gif )
203 +@@ -1203,12 +1276,23 @@
204 + register int *src = mapped_im + x*y;
205 + while( --x >= 0 )
206 + row_pointer[x] = src[x] ;
207 ++#if (GIFLIB_MAJOR>=5)
208 ++ if( (errcode = EGifPutLine(gif, row_pointer, im->width)) == GIF_ERROR)
209 ++ ASIM_PrintGifError(errcode);
210 ++#else
211 + if( EGifPutLine(gif, row_pointer, im->width) == GIF_ERROR)
212 + ASIM_PrintGifError();
213 ++#endif
214 + }
215 + free( row_pointer );
216 ++#if (GIFLIB_MAJOR>=5)
217 ++ EGifCloseFile(gif, &errcode);
218 ++ if (errcode != E_GIF_SUCCEEDED)
219 ++ ASIM_PrintGifError(errcode);
220 ++#else
221 + if (EGifCloseFile(gif) == GIF_ERROR)
222 + ASIM_PrintGifError();
223 ++#endif
224 + gif = NULL;
225 + }
226 + free( mapped_im );
227 +diff -Naurd libAfterImage-1.20.orig/import.c libAfterImage-1.20/import.c
228 +--- libAfterImage-1.20.orig/import.c 2016-05-01 11:44:19.000000000 +0300
229 ++++ libAfterImage-1.20/import.c 2016-05-02 11:01:58.979496755 +0300
230 +@@ -2178,6 +2178,9 @@
231 + int transparent = -1 ;
232 + unsigned int y;
233 + unsigned int width = 0, height = 0;
234 ++#if (GIFLIB_MAJOR>=5)
235 ++ int errcode;
236 ++#endif
237 + ColorMapObject *cmap = NULL ;
238 +
239 + START_TIME(started);
240 +@@ -2186,7 +2189,11 @@
241 +
242 + if ((fp = open_image_file(path)) == NULL)
243 + return NULL;
244 ++#if (GIFLIB_MAJOR>=5)
245 ++ if( (gif = open_gif_read(fp, &errcode)) != NULL )
246 ++#else
247 + if( (gif = open_gif_read(fp)) != NULL )
248 ++#endif
249 + {
250 + SavedImage *sp = NULL ;
251 + int count = 0 ;
252 +@@ -2289,13 +2296,21 @@
253 + }
254 + free_gif_saved_images( sp, count );
255 + }else if( status != GIF_OK )
256 ++#if (GIFLIB_MAJOR>=5)
257 ++ ASIM_PrintGifError(status);
258 ++#else
259 + ASIM_PrintGifError();
260 ++#endif
261 + else if( params->subimage == -1 )
262 + show_error( "Image file \"%s\" does not have any valid image information.", path );
263 + else
264 + show_error( "Image file \"%s\" does not have subimage %d.", path, params->subimage );
265 +
266 ++#if (GIFLIB_MAJOR>=5)
267 ++ DGifCloseFile(gif, &errcode);
268 ++#else
269 + DGifCloseFile(gif);
270 ++#endif
271 + fclose( fp );
272 + }
273 + SHOW_TIME("image loading",started);
274 +diff -Naurd libAfterImage-1.20.orig/ungif.c libAfterImage-1.20/ungif.c
275 +--- libAfterImage-1.20.orig/ungif.c 2011-01-15 08:52:22.000000000 +0300
276 ++++ libAfterImage-1.20/ungif.c 2016-05-02 16:03:57.590148737 +0300
277 +@@ -75,13 +75,21 @@
278 + if( sp )
279 + {
280 + if (sp->ImageDesc.ColorMap)
281 ++#if (GIFLIB_MAJOR>=5)
282 ++ GifFreeMapObject(sp->ImageDesc.ColorMap);
283 ++#else
284 + FreeMapObject(sp->ImageDesc.ColorMap);
285 ++#endif
286 +
287 + if (sp->RasterBits)
288 + free((char *)sp->RasterBits);
289 +
290 + if (sp->ExtensionBlocks)
291 ++#if (GIFLIB_MAJOR>=5)
292 ++ GifFreeExtensions(sp->ExtensionBlockCount, sp->ExtensionBlocks);
293 ++#else
294 + FreeExtension(sp);
295 ++#endif
296 +
297 + if( !reusable )
298 + free( sp );
299 +@@ -119,11 +127,19 @@
300 + return ret;
301 + }
302 +
303 ++#if (GIFLIB_MAJOR>=5)
304 ++GifFileType*
305 ++open_gif_read( FILE *in_stream, int *errcode )
306 ++{
307 ++ return DGifOpen(in_stream, fread_gif, errcode);
308 ++}
309 ++#else
310 + GifFileType*
311 + open_gif_read( FILE *in_stream )
312 + {
313 + return DGifOpen(in_stream, fread_gif);
314 + }
315 ++#endif
316 +
317 + int
318 + get_gif_image_desc( GifFileType *gif, SavedImage *im )
319 +@@ -151,7 +167,11 @@
320 + memcpy( &(im->ImageDesc), &(gif->Image), sizeof(GifImageDesc));
321 + if( gif->Image.ColorMap )
322 + {
323 ++#if (GIFLIB_MAJOR>=5)
324 ++ im->ImageDesc.ColorMap = GifMakeMapObject(gif->Image.ColorMap->ColorCount, NULL);
325 ++#else
326 + im->ImageDesc.ColorMap = MakeMapObject(gif->Image.ColorMap->ColorCount, NULL);
327 ++#endif
328 + fseek( gif->UserData, start_pos+9, SEEK_SET );
329 + fread( im->ImageDesc.ColorMap->Colors, 1, gif->Image.ColorMap->ColorCount*3, gif->UserData);
330 + fseek( gif->UserData, end_pos, SEEK_SET );
331 +@@ -166,6 +186,9 @@
332 + {
333 + GifRecordType RecordType;
334 + GifByteType *ExtData;
335 ++#if (GIFLIB_MAJOR>=5)
336 ++ int ExtCode;
337 ++#endif
338 + SavedImage temp_save;
339 + int curr_image = 0, ret_count = *ret_images ;
340 + int status = GIF_OK;
341 +@@ -197,13 +220,23 @@
342 + break;
343 +
344 + case EXTENSION_RECORD_TYPE:
345 ++#if (GIFLIB_MAJOR>=5)
346 ++ status = DGifGetExtension(gif,&ExtCode,&ExtData);
347 ++#else
348 + status = DGifGetExtension(gif,&temp_save.Function,&ExtData);
349 ++#endif
350 + while (ExtData != NULL && status == GIF_OK )
351 + {
352 + /* Create an extension block with our data */
353 ++#if (GIFLIB_MAJOR>=5)
354 ++ if ((status = GifAddExtensionBlock(&temp_save.ExtensionBlockCount, &temp_save.ExtensionBlocks,
355 ++ ExtCode, sizeof(ExtData), ExtData)) == GIF_OK)
356 ++ status = DGifGetExtension(gif,&ExtCode,&ExtData);
357 ++#else
358 + if ((status = AddExtensionBlock(&temp_save, ExtData[0], (char*)&(ExtData[1]))) == GIF_OK)
359 + status = DGifGetExtensionNext(gif, &ExtData);
360 + temp_save.Function = 0;
361 ++#endif
362 + }
363 + break;
364 +
365 +diff -Naurd libAfterImage-1.20.orig/ungif.h libAfterImage-1.20/ungif.h
366 +--- libAfterImage-1.20.orig/ungif.h 2011-01-15 08:52:22.000000000 +0300
367 ++++ libAfterImage-1.20/ungif.h 2016-05-02 10:57:59.715983533 +0300
368 +@@ -7,11 +7,29 @@
369 + extern "C" {
370 + #endif
371 +
372 ++#if ((GIFLIB_MAJOR==4) && (GIFLIB_MINOR>=2))
373 ++static inline void PrintGifError(void) {
374 ++ fprintf(stderr, "%s\n", GifErrorString());
375 ++}
376 ++#elif (GIFLIB_MAJOR>=5)
377 ++static inline void PrintGifError(int code) {
378 ++ fprintf(stderr, "%s\n", GifErrorString(code));
379 ++}
380 ++#endif
381 ++
382 ++#if (GIFLIB_MAJOR>=5)
383 ++#ifdef __GNUC__
384 ++#define ASIM_PrintGifError(code) do{ fprintf( stderr, "%s():%d:<%s> ",__FUNCTION__, __LINE__, path?path:"null" ); PrintGifError(code); }while(0)
385 ++#else
386 ++#define ASIM_PrintGifError(code) do{ PrintGifError(code); }while(0)
387 ++#endif
388 ++#else // (GIFLIB_MAJOR>=5)
389 + #ifdef __GNUC__
390 + #define ASIM_PrintGifError() do{ fprintf( stderr, "%s():%d:<%s> ",__FUNCTION__, __LINE__, path?path:"null" ); PrintGifError(); }while(0)
391 + #else
392 + #define ASIM_PrintGifError() do{ PrintGifError(); }while(0)
393 + #endif
394 ++#endif // (GIFLIB_MAJOR>=5)
395 +
396 + #define GIF_GCE_DELAY_BYTE_LOW 1
397 + #define GIF_GCE_DELAY_BYTE_HIGH 2
398 +@@ -24,7 +42,11 @@
399 +
400 +
401 + int fread_gif( GifFileType *gif, GifByteType* buf, int len );
402 ++#if (GIFLIB_MAJOR>=5)
403 ++GifFileType* open_gif_read( FILE *in_stream, int *errcode );
404 ++#else
405 + GifFileType* open_gif_read( FILE *in_stream );
406 ++#endif
407 +
408 + int get_gif_image_desc( GifFileType *gif, SavedImage *im );
409 +
410
411 diff --git a/media-libs/libafterimage/libafterimage-1.20-r1.ebuild b/media-libs/libafterimage/libafterimage-1.20-r1.ebuild
412 new file mode 100644
413 index 0000000..8d289c3
414 --- /dev/null
415 +++ b/media-libs/libafterimage/libafterimage-1.20-r1.ebuild
416 @@ -0,0 +1,108 @@
417 +# Copyright 1999-2016 Gentoo Foundation
418 +# Distributed under the terms of the GNU General Public License v2
419 +# $Id$
420 +
421 +EAPI=6
422 +inherit autotools
423 +
424 +MY_PN=libAfterImage
425 +
426 +DESCRIPTION="Afterstep's standalone generic image manipulation library"
427 +HOMEPAGE="http://www.afterstep.org/afterimage/index.php"
428 +SRC_URI="ftp://ftp.afterstep.org/stable/${MY_PN}/${MY_PN}-${PV}.tar.bz2"
429 +
430 +LICENSE="LGPL-2.1"
431 +SLOT="0"
432 +KEYWORDS="~alpha ~amd64 ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd ~amd64-linux ~x86-linux"
433 +IUSE="+X cpu_flags_x86_mmx examples gif jpeg nls opengl png static-libs shm +shaping svg tiff truetype"
434 +
435 +RDEPEND="
436 + X? ( x11-libs/libSM
437 + x11-libs/libXext
438 + x11-libs/libXrender )
439 + gif? ( media-libs/giflib )
440 + jpeg? ( virtual/jpeg:= )
441 + opengl? ( virtual/opengl )
442 + png? ( >=media-libs/libpng-1.4:0 )
443 + svg? ( gnome-base/librsvg )
444 + tiff? ( media-libs/tiff:0 )
445 + truetype? ( media-libs/freetype )"
446 +DEPEND="${RDEPEND}
447 + X? ( x11-proto/xextproto )
448 + virtual/pkgconfig
449 + !!x11-wm/afterstep"
450 +REQUIRED_USE="
451 + opengl? ( X )
452 + shaping? ( X )
453 + shm? ( X )"
454 +
455 +S="${WORKDIR}/${MY_PN}-${PV}"
456 +
457 +src_prepare() {
458 + default
459 +
460 + # fix some ldconfig problem in makefile.in
461 + eapply -p0 "${FILESDIR}"/${PN}-makefile.in.patch
462 + # fix lib paths in afterimage-config
463 + eapply -p0 "${FILESDIR}"/${PN}-config.patch
464 + # fix gif unbundle
465 + eapply -p0 "${FILESDIR}"/${PN}-gif.patch
466 + # fix for libpng15 compability
467 + eapply -p0 "${FILESDIR}"/${PN}-libpng15.patch
468 + # add giflib-5 API support, bug 571654
469 + eapply "${FILESDIR}"/${PN}-giflib5.patch
470 + # do not build examples
471 + use examples || sed -i \
472 + -e '/^all:/s/apps//' \
473 + -e '/^install:/s/install.apps//' \
474 + Makefile.in || die "sed failed"
475 + # remove forced flags
476 + sed -i \
477 + -e 's/CFLAGS="-O3"//' \
478 + -e 's/ -rdynamic//' \
479 + configure.in || die "sed failed"
480 +
481 + mv configure.in configure.ac || die
482 + eautoreconf
483 +}
484 +
485 +src_configure() {
486 + econf \
487 + $(use_enable cpu_flags_x86_mmx mmx-optimization) \
488 + $(use_enable opengl glx) \
489 + $(use_enable nls i18n) \
490 + $(use_enable shaping) \
491 + $(use_enable shm shmimage ) \
492 + $(use_enable static-libs staticlibs) \
493 + $(use_with X x) \
494 + $(use_with gif) \
495 + $(use_with jpeg) \
496 + $(use_with png) \
497 + $(use_with svg) \
498 + $(use_with tiff) \
499 + $(use_with truetype ttf) \
500 + --enable-sharedlibs \
501 + --with-xpm \
502 + --without-builtin-gif \
503 + --without-builtin-jpeg \
504 + --without-builtin-png \
505 + --without-builtin-zlib \
506 + --without-afterbase
507 +}
508 +
509 +src_install() {
510 + emake \
511 + DESTDIR="${D}" \
512 + AFTER_DOC_DIR="${ED}/usr/share/doc/${PF}" \
513 + install
514 + dodoc ChangeLog README
515 + if use examples; then
516 + cd apps || die
517 + mv ascompose.man ascompose.1 || die
518 + doman ascompose.1
519 + emake clean
520 + rm Makefile* ascompose.1 || die
521 + insinto /usr/share/doc/${PF}/examples
522 + doins *
523 + fi
524 +}
525
526 diff --git a/media-libs/libafterimage/metadata.xml b/media-libs/libafterimage/metadata.xml
527 index 8f9405d..2366dac 100644
528 --- a/media-libs/libafterimage/metadata.xml
529 +++ b/media-libs/libafterimage/metadata.xml
530 @@ -16,4 +16,8 @@
531 included, providing support for TrueType fonts using FreeType library,
532 and anti-aliasing of standard fonts from X window system.
533 </longdescription>
534 +<use>
535 + <flag name="shaping">Use MIT shaped X windows extention.</flag>
536 + <flag name="shm">Use MIT shared memory extention for X image transfer.</flag>
537 +</use>
538 </pkgmetadata>