about summary refs log tree commit diff
diff options
context:
space:
mode:
authorEvgeny Egorochkin <phreedom.stdin@gmail.com>2010-10-14 11:54:06 +0000
committerEvgeny Egorochkin <phreedom.stdin@gmail.com>2010-10-14 11:54:06 +0000
commit5a4bc5b072abb4cea584b144c535c4e6fa851dcc (patch)
tree42c36ea2c846d21f72dc9972bee30377aade7370
parent0dfc76901b23d6261c01567c61d9448ef7bd5e13 (diff)
downloadnixlib-5a4bc5b072abb4cea584b144c535c4e6fa851dcc.tar
nixlib-5a4bc5b072abb4cea584b144c535c4e6fa851dcc.tar.gz
nixlib-5a4bc5b072abb4cea584b144c535c4e6fa851dcc.tar.bz2
nixlib-5a4bc5b072abb4cea584b144c535c4e6fa851dcc.tar.lz
nixlib-5a4bc5b072abb4cea584b144c535c4e6fa851dcc.tar.xz
nixlib-5a4bc5b072abb4cea584b144c535c4e6fa851dcc.tar.zst
nixlib-5a4bc5b072abb4cea584b144c535c4e6fa851dcc.zip
URT library: packaged
svn path=/nixpkgs/trunk/; revision=24278
-rw-r--r--pkgs/development/libraries/urt/default.nix61
-rw-r--r--pkgs/development/libraries/urt/gentoo-config52
-rw-r--r--pkgs/development/libraries/urt/urt-3.1b-build-fixes.patch151
-rw-r--r--pkgs/development/libraries/urt/urt-3.1b-compile-updates.patch141
-rw-r--r--pkgs/development/libraries/urt/urt-3.1b-make.patch75
-rw-r--r--pkgs/development/libraries/urt/urt-3.1b-rle-fixes.patch203
-rw-r--r--pkgs/development/libraries/urt/urt-3.1b-tempfile.patch19
-rw-r--r--pkgs/top-level/all-packages.nix2
8 files changed, 704 insertions, 0 deletions
diff --git a/pkgs/development/libraries/urt/default.nix b/pkgs/development/libraries/urt/default.nix
new file mode 100644
index 000000000000..8570af2b2834
--- /dev/null
+++ b/pkgs/development/libraries/urt/default.nix
@@ -0,0 +1,61 @@
+{stdenv, fetchurl, ncompress}:
+
+stdenv.mkDerivation rec {
+  name = "urt-${version}";
+  version = "3.1b";
+  
+  src = fetchurl {
+    url = ftp://ftp.iastate.edu/pub/utah-raster/urt-3.1b.tar.Z;
+    sha256 = "0hbb3avgvkfb2cksqn6cmmgcr0278nb2qd1srayqx0876pq6g2vd";
+  };
+
+  buildInputs = [ ncompress ];
+
+  unpackPhase = ''
+      mkdir urt
+      tar xvf "$src" -C urt
+  '';
+  patchFlags = "-p0 -d urt";
+  patches = [ ./urt-3.1b-build-fixes.patch ./urt-3.1b-compile-updates.patch
+              ./urt-3.1b-make.patch ./urt-3.1b-rle-fixes.patch ./urt-3.1b-tempfile.patch ];
+  postPatch = ''
+      cd urt
+
+      rm bin/README
+      rm man/man1/template.1
+
+      # stupid OS X declares a stack_t type already 
+      sed -i -e 's:stack_t:_urt_stack:g' tools/clock/rleClock.c
+
+      sed -i -e '/^CFLAGS/s: -O : :' makefile.hdr
+
+      cp "${./gentoo-config}" config/gentoo
+  '';
+  configurePhase = ''
+      ./Configure config/gentoo
+  '';
+  postInstall = ''
+      mkdir -p $out/bin
+      cp bin/* $out/bin
+
+      mkdir -p $out/lib
+      cp lib/librle.a $out/lib
+
+      mkdir -p $out/include
+      cp include/rle*.h $out/include
+
+      mkdir -p $out/share/man/man1
+      cp man/man1/*.1 $out/share/man/man1
+
+      mkdir -p $out/share/man/man3
+      cp man/man3/*.3 $out/share/man/man3
+
+      mkdir -p $out/share/man/man5
+      cp man/man5/*.5 $out/share/man/man5
+  '';
+
+  meta = {
+    homepage = http://www.cs.utah.edu/gdc/projects/urt/;
+    description = "The Utah Raster Toolkit is a library for dealing with raster images";
+  };
+}
\ No newline at end of file
diff --git a/pkgs/development/libraries/urt/gentoo-config b/pkgs/development/libraries/urt/gentoo-config
new file mode 100644
index 000000000000..a2d9ec3faf2f
--- /dev/null
+++ b/pkgs/development/libraries/urt/gentoo-config
@@ -0,0 +1,52 @@
+#define ABEKASA60
+#define ABEKASA62
+#define ALIAS
+##define CGM
+#define CUBICOMP
+##define DVIRLE
+#define GRAYFILES
+#define MACPAINT
+##define PBMPLUS
+##define SUNRASTER
+#define TARGA
+#define VICAR
+#define WASATCH
+#define WAVEFRONT
+
+#define GCC
+
+#define CONST_DECL
+#define NO_MAKE_MAKEFILE
+#define USE_TIME_H
+#define SYS_V_SETPGRP
+#define USE_PROTOTYPES
+#define USE_RANDOM
+#define USE_STDARG
+#define USE_STDLIB_H
+#define USE_UNISTD_H
+#define USE_STRING_H
+#define VOID_STAR
+#define USE_XLIBINT_H
+#define X_SHARED_MEMORY
+
+#defpath DEST bin
+#defpath RI include
+#defpath RL lib
+
+ROFF = nroff
+ROFFOPT = -man
+ROFFPIPE = | lpr
+
+INCTIFF = 
+LIBTIFF = -ltiff
+INCX11 =
+LIBX11 = -lX11
+
+# Most people have migrated X11 to /usr/lib, but just in case ...
+check_x11=$(shell \
+	echo 'int main(){}' > test.c ; \
+	if ! $(CC) test.c -lX11 -o .urt-x11-test 2>/dev/null ; then \
+		echo "-L/usr/X11R6/lib" ; \
+	fi ; \
+	rm -f .urt-x11-test test.c)
+LIBX11 += $(call check_x11)
diff --git a/pkgs/development/libraries/urt/urt-3.1b-build-fixes.patch b/pkgs/development/libraries/urt/urt-3.1b-build-fixes.patch
new file mode 100644
index 000000000000..fc2bacddb30c
--- /dev/null
+++ b/pkgs/development/libraries/urt/urt-3.1b-build-fixes.patch
@@ -0,0 +1,151 @@
+some hosts are more anal about ar usage than others
+http://bugs.gentoo.org/107428
+
+respect user LDFLAGS
+http://bugs.gentoo.org/126872
+
+--- lib/makefile.src
++++ lib/makefile.src
+@@ -181,8 +181,7 @@
+ # Rebuild the library from all the .o files.
+ buildlib: $(OBJS)
+ 	-rm -f $(LIBNAME)
+-	ar rc $(LIBNAME)
+-	ar q $(LIBNAME) $(OBJS)
++	ar rc $(LIBNAME) $(OBJS)
+ #ifndef NO_RANLIB
+ 	ranlib $(LIBNAME)
+ #endif
+--- tools/clock/makefile.src
++++ tools/clock/makefile.src
+@@ -6,7 +6,7 @@ install: rleClock
+ 	mv rleClock ../rleClock.out
+ 
+ rleClock:rleClock.o font.o
+-	${CC} ${CFLAGS} rleClock.o font.o -lm ${LIBS} -o rleClock
++	${CC} ${CFLAGS} ${LDFLAGS} rleClock.o font.o ${LIBS} -o rleClock -lm
+ 
+ font.c:font.src makeFont
+ 	chmod +x makeFont
+--- tools/makefile.src
++++ tools/makefile.src
+@@ -62,21 +62,21 @@ applymap.out rlebg.out: $(RI)/rle_raw.h
+ pyrlib.o: pyrlib.c $(RI)/pyramid.h $(RI)/rle.h $(RI)/rle_config.h
+ 	$(CC) $(CFLAGS) pyrlib.c -c
+ pyrmask.out: pyrlib.o pyrmask.c $(RI)/pyramid.h
+-	$(CC) $(CFLAGS) -I$(RI) pyrmask.c pyrlib.o $(LIBS) -lm -o pyrmask.new
++	$(CC) $(LDFLAGS) $(CFLAGS) -I$(RI) pyrmask.c pyrlib.o $(LIBS) -lm -o pyrmask.new
+ 	mv pyrmask.new pyrmask.out
+ 
+ fant.out: fant.o mallocNd.o
+-	$(CC) $(CFLAGS) -I$(RI) fant.o mallocNd.o $(LIBS) -lm -o fant.new
++	$(CC) $(LDFLAGS) $(CFLAGS) -I$(RI) fant.o mallocNd.o $(LIBS) -lm -o fant.new
+ 	mv fant.new fant.out
+ 	
+ # rlebox and crop use some common code.
+ rle_box.o: $(RI)/rle.h $(RI)/rle_config.h $(RI)/rle_raw.h
+ 
+ crop.out: crop.c rle_box.o
+-	${CC} ${CFLAGS} crop.c rle_box.o ${LIBS} -o crop.new
++	${CC} ${LDFLAGS} ${CFLAGS} crop.c rle_box.o ${LIBS} -o crop.new
+ 	mv crop.new crop.out
+ rlebox.out: rlebox.c rle_box.o
+-	${CC} ${CFLAGS} rlebox.c rle_box.o ${LIBS} -o rlebox.new
++	${CC} ${LDFLAGS} ${CFLAGS} rlebox.c rle_box.o ${LIBS} -o rlebox.new
+ 	mv rlebox.new rlebox.out
+ 
+ # rleClock has it's own directory, must be built special
+@@ -100,7 +100,7 @@ clean:	clean-pgm
+ .SUFFIXES:
+ .SUFFIXES: .out .c .o
+ .c.out:
+-	$(CC) $(CFLAGS) $< $(LIBS) -lm -o $*.new
++	$(CC) $(LDFLAGS) $(CFLAGS) $< $(LIBS) -lm -o $*.new
+ 	mv $*.new $@
+ 
+ .c.o:
+--- cnv/makefile.src
++++ cnv/makefile.src
+@@ -76,13 +76,13 @@ PBMDIR = 
+ # ppmtorle - ppm format to RLE
+ # rletoppm - RLE to ppm format
+ pgmtorle.out: pgmtorle.c
+-	$(CC) $(CFLAGS) $(INCPBMPLUS) $*.c $(LIBS) $(LIBPBMPLUS) -o $*.new
++	$(CC) $(CFLAGS) $(LDFLAGS) $(INCPBMPLUS) $*.c $(LIBS) $(LIBPBMPLUS) -o $*.new
+ 	mv $*.new $@
+ ppmtorle.out: ppmtorle.c
+-	$(CC) $(CFLAGS) $(INCPBMPLUS) $*.c $(LIBS) $(LIBPBMPLUS) -o $*.new
++	$(CC) $(CFLAGS) $(LDFLAGS) $(INCPBMPLUS) $*.c $(LIBS) $(LIBPBMPLUS) -o $*.new
+ 	mv $*.new $@
+ rletoppm.out: rletoppm.c
+-	$(CC) $(CFLAGS) $(INCPBMPLUS) $*.c $(LIBS) $(LIBPBMPLUS) -o $*.new
++	$(CC) $(CFLAGS) $(LDFLAGS) $(INCPBMPLUS) $*.c $(LIBS) $(LIBPBMPLUS) -o $*.new
+ 	mv $*.new $@
+ #endif
+ 
+@@ -95,10 +95,10 @@ rletoppm.out: rletoppm.c
+ # iristorle/rletoiris - Convert between RLE and SGI image format.
+ #
+ iristorle.out: iristorle.c
+-	$(CC) $(CFLAGS) -I/usr/include/gl $*.c $(LIBS) -limage -o $*.new
++	$(CC) $(CFLAGS) $(LDFLAGS) -I/usr/include/gl $*.c $(LIBS) -limage -o $*.new
+ 	mv $*.new $@
+ rletoiris.out: rletoiris.c
+-	$(CC) $(CFLAGS) -I/usr/include/gl $*.c $(LIBS) -limage -o $*.new
++	$(CC) $(CFLAGS) $(LDFLAGS) -I/usr/include/gl $*.c $(LIBS) -limage -o $*.new
+ 	mv $*.new $@
+ #endif
+ 
+@@ -108,10 +108,10 @@ TIFFDIR =
+ # tifftorle - Convert TIFF images to RLE
+ # rletotiff - Convert RLE images to TIFF
+ rletotiff.out: rletotiff.c
+-	$(CC) $(CFLAGS) $(INCTIFF) $*.c $(LIBS) $(LIBTIFF) -lm -o $*.new
++	$(CC) $(CFLAGS) $(LDFLAGS) $(INCTIFF) $*.c $(LIBS) $(LIBTIFF) -lm -o $*.new
+ 	mv $*.new $@
+ tifftorle.out: tifftorle.c
+-	$(CC) $(CFLAGS) $(INCTIFF) $*.c $(LIBS) $(LIBTIFF) -lm -o $*.new
++	$(CC) $(CFLAGS) $(LDFLAGS) $(INCTIFF) $*.c $(LIBS) $(LIBTIFF) -lm -o $*.new
+ 	mv $*.new $@
+ #endif
+ 
+@@ -125,7 +125,7 @@ tifftorle.out: tifftorle.c
+ # Will build with the default rule.
+ # rletorla - RLE to Wavefront RLA
+ rletorla.out: rletorla.c
+-	$(CC) $(CFLAGS) $*.c $(LIBS) $(LIBWAVEFRONT) -lm -o $*.new
++	$(CC) $(CFLAGS) $(LDFLAGS) $*.c $(LIBS) $(LIBWAVEFRONT) -lm -o $*.new
+ 	mv $*.new $@
+ #endif WAVEFRONT
+ 
+@@ -144,7 +144,7 @@ pristine: pristine-pgm
+ .SUFFIXES:
+ .SUFFIXES: .out .c
+ .c.out:
+-	$(CC) $(CFLAGS) $*.c $(LIBS) -lm -o $*.new
++	$(CC) $(CFLAGS) $(LDFLAGS) $*.c $(LIBS) -lm -o $*.new
+ 	mv $*.new $@
+ 
+ # Dependency lines.  Make sure to #ifdef them.
+--- cnv/rletoabA62/makefile.src
++++ cnv/rletoabA62/makefile.src
+@@ -15,7 +15,7 @@ all		:	$(PGMS)
+ # Executables.  The .out will be stripped off in the install action.
+ 
+ rletoabA62.out	:	rletoabA62.o rle.o
+-			$(CC) $(CFLAGS) -o rletoabA62.new \
++			$(CC) $(CFLAGS) $(LDFLAGS) -o rletoabA62.new \
+ 			  rletoabA62.o rle.o $(LIBS)
+ 			mv rletoabA62.new rletoabA62.out
+ 
+--- cnv/rletogif/makefile.src
++++ cnv/rletogif/makefile.src
+@@ -15,7 +15,7 @@ all:	$(PGMS)
+ # The executable.  The ".out" will be stripped off in the install action.
+ 
+ rletogif.out: ${OBJ}
+-	${CC} ${CFLAGS} ${OBJ} ${LIBS} -o rletogif.new
++	${CC} ${CFLAGS} ${LDFLAGS} ${OBJ} ${LIBS} -o rletogif.new
+ 	mv rletogif.new rletogif.out
+ 
+ # Incremental install, copies executable to DEST dir.
diff --git a/pkgs/development/libraries/urt/urt-3.1b-compile-updates.patch b/pkgs/development/libraries/urt/urt-3.1b-compile-updates.patch
new file mode 100644
index 000000000000..105f7c41f6a7
--- /dev/null
+++ b/pkgs/development/libraries/urt/urt-3.1b-compile-updates.patch
@@ -0,0 +1,141 @@
+--- get/getx11/XGetHClrs.c
++++ get/getx11/XGetHClrs.c
+@@ -1,5 +1,4 @@
+ #ifndef XLIBINT_H_NOT_AVAILABLE
+-#include <X11/copyright.h>
+ 
+ /* $XConsortium: XGetHClrs.c,v 11.10 88/09/06 16:07:50 martin Exp $ */
+ /* Copyright    Massachusetts Institute of Technology    1986	*/
+--- tools/mallocNd.c
++++ tools/mallocNd.c
+@@ -67,7 +67,7 @@
+ 
+ /* Imports */
+ #include <stdio.h>
+-extern char *malloc();
++#include <string.h>
+ 
+ /* Forward declarations */
+ char *BuildIndirectionTable();
+--- tools/into.c
++++ tools/into.c
+@@ -40,8 +40,8 @@
+ static char buf[MAXPATHLEN+1];
+ short forceflg;				/* overwrite an unwritable file? */
+ 
+-extern int errno;
+-extern char *sys_errlist[];
++#include <errno.h>
++#include <string.h>
+ 
+ void
+ main(argc, argv)
+@@ -103,7 +103,7 @@
+     if (ferror(outf))
+     {
+ 	fprintf(stderr, "into: %s, \"%s\" not modified\n",
+-	    sys_errlist[errno], argv[1]);
++	    strerror(errno), argv[1]);
+ 	unlink(buf);
+ 	exit(1);
+     }
+--- cnv/tex/dvirle2.c
++++ cnv/tex/dvirle2.c
+@@ -55,7 +55,6 @@
+ void DumpTopOfBand(), MoveDown(), WriteBuf(), WriteBlanks();
+ 
+ char	*ProgName;
+-extern int errno;
+ extern char *optarg;
+ extern int optind;
+ 
+--- cnv/wasatchrle.c
++++ cnv/wasatchrle.c
+@@ -32,7 +32,6 @@
+ #include <errno.h>
+ #include "rle.h"
+ 
+-extern int errno;
+ 
+ /* "short" in our world is 16 bits.  Beware of swyte-bopping. */
+ 
+--- get/getx11/x11_stuff.c
++++ get/getx11/x11_stuff.c
+@@ -155,7 +155,6 @@
+ 			IPC_CREAT|0777 );
+ 	    if ( img->shm_img.shmid < 0 )
+ 	    {
+-		extern int errno;
+ 		if ( errno == ENOSPC )
+ 		{
+ 		    if ( !no_shared_space )
+@@ -361,7 +360,6 @@ Boolean reallocate;
+ 	    XDestroyImage( image );
+ 	    if ( img->shm_pix.shmid < 0 )
+ 	    {
+-		extern int errno;
+ 		if ( errno == ENOSPC )
+ 		{
+ 		    if ( !no_shared_space )
+--- get/qcr/qcr.h
++++ get/qcr/qcr.h
+@@ -6,8 +6,6 @@
+ #define GREEN 1
+ #define BLUE 2
+ 
+-extern int errno;
+-
+ /* Command defs for QCR-Z Film Recorder */
+ 
+ /* These are for 8 bit Look Up Tables */
+--- get/gettaac.c
++++ get/gettaac.c
+@@ -24,6 +24,7 @@
+  * Send bug fixes and improvements to:  ksp@maxwell.nde.swri.edu
+  */
+ 
++#include <errno.h>
+ #include <stdio.h>
+ #include <strings.h>
+ #include <signal.h>
+@@ -459,7 +460,6 @@ char    *template;
+      char    nonUnique;
+      char    twiddleUserCompletion;
+ 
+-     extern  int         errno;
+      struct  direct     *nameEntry;
+      DIR                *dirChan;
+      struct  passwd     *pwdEntry;
+--- tools/clock/rleClock.c
++++ tools/clock/rleClock.c
+@@ -598,7 +598,7 @@
+     { TRUE,  "-tf", STRING, "Text area format string", 	          (char *)&FormatString }, 
+     { FALSE, "-Xm", BOOL,   "Output the alpha channel on RGB",    (char *)&DebugAlpha },
+     { FALSE, "-D",  BOOL,   "Turn on debugging",	          (char *)&Debug },
+-    NULL
++    { FALSE, NULL }
+ };
+ 
+ void
+--- tools/to8.c
++++ tools/to8.c
+@@ -175,7 +175,7 @@
+ 	 * Give it a background color of black, since the real background
+ 	 * will be dithered anyway.
+ 	 */
+-	if ( in_hdr.background != NULL )
++	if ( in_hdr.background != 0 )
+ 	{
+ 	    out_hdr.bg_color = (int *)malloc( sizeof( int ) );
+ 	    RLE_CHECK_ALLOC( cmd_name( argv ), out_hdr.bg_color, 0 );
+--- cnv/rletoabA62/rletoabA62.c
++++ cnv/rletoabA62/rletoabA62.c
+@@ -157,7 +157,7 @@
+ 	exit(1);
+     }
+     if (optind < argc) {
+-	if ((file = open(argv[optind], 0)) == NULL) {
++	if ((file = open(argv[optind], 0)) == -1) {
+ 	    perror(argv[optind]);
+ 	    exit(1);
+ 	}
diff --git a/pkgs/development/libraries/urt/urt-3.1b-make.patch b/pkgs/development/libraries/urt/urt-3.1b-make.patch
new file mode 100644
index 000000000000..310675dd395d
--- /dev/null
+++ b/pkgs/development/libraries/urt/urt-3.1b-make.patch
@@ -0,0 +1,75 @@
+Index: makefile.src
+===================================================================
+--- makefile.src
++++ makefile.src
+@@ -17,7 +17,7 @@ all: default
+ # clean deletes all but source, pristine (below) deletes installed stuff, too
+ default clean: doit
+ 	@for d in $(DIRS) ; do \
+-		( cd $$d ; echo make $@ on $$d ; make $(MFLAGS) $@ ) ; \
++		( cd $$d ; echo $(MAKE) $@ on $$d ; $(MAKE) $(MFLAGS) $@ ) ; \
+ 	done
+ 
+ # install puts library, binaries and documentation into global location
+@@ -29,7 +29,7 @@ MAKE_TARGET =
+ 
+ install $(MAKE_TARGET) pristine depend:: doit
+ 	@for d in $(ALLDIRS) ; do \
+-		( cd $$d ; echo make $@ on $$d ; make $(MFLAGS) $@ ) ; \
++		( cd $$d ; echo $(MAKE) $@ on $$d ; $(MAKE) $(MFLAGS) $@ ) ; \
+ 	done
+ 
+ 
+Index: tools/makefile.src
+===================================================================
+--- tools/makefile.src
++++ tools/makefile.src
+@@ -82,7 +82,7 @@ rlebox.out: rlebox.c rle_box.o
+ # rleClock has it's own directory, must be built special
+ 
+ rleClock.out: clock/font.c clock/font.h clock/font.src clock/rleClock.c
+-	(cd clock ; make)
++	(cd clock ; $(MAKE))
+ 
+ # Incremental install, copies everything ("$?") since last install to DEST dir.
+ install: $(PGMS) install-pgm
+Index: makefile.tlr
+===================================================================
+--- makefile.tlr
++++ makefile.tlr
+@@ -7,7 +7,7 @@ subdirs:
+ 	@sh -c "if test 'x$(DIRS)' != x ; then eval \
+ 		'set -e ; for dir in $(DIRS) ; do \
+ 			(cd \$$dir ; echo Make ${HERE}\$$dir ; \
+-			 	make $(MFLAGS) $(DIRMFLAGS) ) ; \
++			 	$(MAKE) $(MFLAGS) $(DIRMFLAGS) ) ; \
+ 		done' ; \
+ 	  else \
+ 		true ; \
+@@ -46,7 +46,7 @@ install-subdirs: subdirs
+ 	@sh -c "if test 'x$(DIRS)' != x  ; then eval \
+ 		'for dir in $(DIRS) ; do \
+ 			(cd \$$dir ; echo Install ${HERE}\$$dir ; \
+-			 make $(MFLAGS) $(DIRMFLAGS) install) ; \
++			 $(MAKE) $(MFLAGS) $(DIRMFLAGS) install) ; \
+ 		done' ; \
+ 	  else \
+ 		true ; \
+@@ -105,7 +105,7 @@ pristine-pgm: clean-pgm
+ 	    'for dir in $(ALLDIRS); do \
+ 		if test -d $$dir ; then \
+ 			(cd $$dir; echo Make ${HERE}$$dir pristine ; \
+-			 make $(MFLAGS) pristine); \
++			 $(MAKE) $(MFLAGS) pristine); \
+ 		else \
+ 			true; \
+ 		fi; \
+@@ -124,7 +124,7 @@ clean-pgm:
+ 	    'for dir in $(ALLDIRS); do \
+ 		if test -d $$dir ; then \
+ 			(cd $$dir; echo Clean ${HERE}$$dir ; \
+-			 make $(MFLAGS) clean); \
++			 $(MAKE) $(MFLAGS) clean); \
+ 		else \
+ 			true; \
+ 		fi; \
diff --git a/pkgs/development/libraries/urt/urt-3.1b-rle-fixes.patch b/pkgs/development/libraries/urt/urt-3.1b-rle-fixes.patch
new file mode 100644
index 000000000000..3720806960fe
--- /dev/null
+++ b/pkgs/development/libraries/urt/urt-3.1b-rle-fixes.patch
@@ -0,0 +1,203 @@
+Fixes taken from netpbm
+
+--- lib/rle_global.c
++++ lib/rle_global.c
+@@ -76,7 +76,7 @@ rle_hdr rle_dflt_hdr = {
+     8,				/* cmaplen (log2 of length of color map) */
+     NULL,			/* pointer to color map */
+     NULL,			/* pointer to comment strings */
+-    stdout,			/* output file */
++    NULL,			/* output file -- must be set dynamically */
+     { 7 },			/* RGB channels only */
+     0L,				/* Can't free name and file fields. */
+     "Urt",			/* Default "program name". */
+--- lib/rle_hdr.c
++++ lib/rle_hdr.c
+@@ -269,6 +273,9 @@
+ {
+     rle_hdr *ret_hdr;
+ 
++    rle_dflt_hdr.rle_file = stdout;
++    /* The rest of rle_dflt_hdr is set by the loader's data initialization */
++
+     if ( the_hdr == &rle_dflt_hdr )
+ 	return the_hdr;
+ 
+--- lib/dither.c
++++ lib/dither.c
+@@ -38,10 +38,10 @@ void	make_square();
+ #endif
+ 
+ static int magic4x4[4][4] =  {
+- 	 0, 14,  3, 13,
+-	11,  5,  8,  6,
+-	12,  2, 15,  1,
+-	 7,  9,  4, 10
++{	 0, 14,  3, 13},
++{	11,  5,  8,  6},
++{	12,  2, 15,  1},
++{	 7,  9,  4, 10}
+ };
+ 
+ /* basic dithering macro */
+--- lib/rle_open_f.c
++++ lib/rle_open_f.c
+@@ -9,7 +9,11 @@
+  */
+ 
+ #include "rle_config.h"
++#define _XOPEN_SOURCE  /* Make sure fdopen() is in stdio.h */
++
+ #include <stdio.h>
++#include <unistd.h>
++#include <fcntl.h>
+ 
+ #ifndef NO_OPEN_PIPES
+ /* Need to have a SIGCLD signal catcher. */
+@@ -260,7 +260,6 @@
+     int pipefd[2];
+     int i;
+     char *argv[4];
+-    extern int errno;
+ 
+     /* Check args. */
+     if ( *mode != 'r' && *mode != 'w' )
+--- lib/rle_getcom.c
++++ lib/rle_getcom.c
+@@ -53,11 +53,12 @@
+ {
+     for ( ; *n != '\0' && *n != '=' && *n == *v; n++, v++ )
+ 	;
+-    if (*n == '\0' || *n == '=')
++    if (*n == '\0' || *n == '=') {
+ 	if ( *v == '\0' )
+ 	    return v;
+ 	else if ( *v == '=' )
+ 	    return ++v;
++    }
+ 
+     return NULL;
+ }
+--- lib/scanargs.c
++++ lib/scanargs.c
+@@ -128,10 +130,10 @@
+ va_list argl;
+ {
+ 
+-    register    check;			/* check counter to be sure all argvs
++    int    check;			/* check counter to be sure all argvs
+ 					   are processed */
+     register CONST_DECL char  *cp;
+-    register    cnt;
++    int    cnt;
+     int	    optarg = 0;			/* where optional args start */
+     int	    nopt = 0;
+     char    tmpflg,			/* temp flag */
+@@ -375,11 +377,12 @@
+ 				if ( optarg > 0 ) /* end optional args? */
+ 				{
+ 				    /* Eat the arg, too, if necessary */
+-				    if ( list_cnt == 0 )
++				    if ( list_cnt == 0 ) {
+ 					if ( typchr == 's' )
+ 					    (void)va_arg( argl, char * );
+ 					else
+ 					    (void)va_arg( argl, ptr );
++                    }
+ 				    break;
+ 				}
+ 				else
+@@ -567,7 +570,7 @@
+ 				     * Do conversion for n and N types
+ 				     */
+ 				    tmpflg = typchr;
+-				    if (typchr == 'n' || typchr == 'N' )
++				    if (typchr == 'n' || typchr == 'N' ) {
+ 					if (*argp != '0')
+ 					    tmpflg = 'd';
+ 					else if (*(argp+1) == 'x' ||
+@@ -578,6 +581,7 @@
+ 					}
+ 					else
+ 					    tmpflg = 'o';
++                    }
+ 				    if (typchr == 'N')
+ 					tmpflg = toupper( tmpflg );
+ 
+--- lib/inv_cmap.c
++++ lib/inv_cmap.c
+@@ -42,7 +42,7 @@
+ static long cbinc, cginc, crinc;
+ static unsigned long *gdp, *rdp, *cdp;
+ static unsigned char *grgbp, *rrgbp, *crgbp;
+-static gstride, rstride;
++static long gstride, rstride;
+ static long x, xsqr, colormax;
+ static int cindex;
+ #ifdef INSTRUMENT_IT
+--- lib/rle_getrow.c
++++ lib/rle_getrow.c
+@@ -351,7 +351,7 @@
+ 	    bzero( (char *)scanline[-1] + the_hdr->xmin,
+ 		   the_hdr->xmax - the_hdr->xmin + 1 );
+ 	for ( nc = 0; nc < the_hdr->ncolors; nc++ )
+-	    if ( RLE_BIT( *the_hdr, nc ) )
++	    if ( RLE_BIT( *the_hdr, nc ) ) {
+ 		/* Unless bg color given explicitly, use 0. */
+ 		if ( the_hdr->background != 2 || the_hdr->bg_color[nc] == 0 )
+ 		    bzero( (char *)scanline[nc] + the_hdr->xmin,
+@@ -360,6 +360,7 @@
+ 		    bfill( (char *)scanline[nc] + the_hdr->xmin,
+ 			   the_hdr->xmax - the_hdr->xmin + 1,
+ 			   the_hdr->bg_color[nc] );
++	    }
+     }
+ 
+     /* If skipping, then just return */
+@@ -367,7 +368,7 @@
+     {
+ 	the_hdr->priv.get.vert_skip--;
+ 	the_hdr->priv.get.scan_y++;
+-	if ( the_hdr->priv.get.vert_skip > 0 )
++	if ( the_hdr->priv.get.vert_skip > 0 ) {
+ 	    if ( the_hdr->priv.get.scan_y >= the_hdr->ymax )
+ 	    {
+ 		int y = the_hdr->priv.get.scan_y;
+@@ -377,6 +378,7 @@
+ 	    }
+ 	    else
+ 		return the_hdr->priv.get.scan_y;
++	}
+     }
+ 
+     /* If EOF has been encountered, return also */
+@@ -457,11 +459,12 @@
+ 	    else
+ 		nc = DATUM(inst);
+ 	    nc++;
+-	    if ( debug_f )
++	    if ( debug_f ) {
+ 		if ( RLE_BIT( *the_hdr, channel ) )
+ 		    fprintf( stderr, "Pixel data %d (to %d):", nc, scan_x+nc );
+ 		else
+ 		    fprintf( stderr, "Pixel data %d (to %d)\n", nc, scan_x+nc);
++	    }
+ 	    if ( RLE_BIT( *the_hdr, channel ) )
+ 	    {
+ 		/* Don't fill past end of scanline! */
+--- lib/rle_putcom.c
++++ lib/rle_putcom.c
+@@ -53,11 +53,12 @@
+ {
+     for ( ; *n != '\0' && *n != '=' && *n == *v; n++, v++ )
+ 	;
+-    if (*n == '\0' || *n == '=')
++    if (*n == '\0' || *n == '=') {
+ 	if ( *v == '\0' )
+ 	    return v;
+ 	else if ( *v == '=' )
+ 	    return ++v;
++    }
+ 
+     return NULL;
+ }
diff --git a/pkgs/development/libraries/urt/urt-3.1b-tempfile.patch b/pkgs/development/libraries/urt/urt-3.1b-tempfile.patch
new file mode 100644
index 000000000000..12acce151b5d
--- /dev/null
+++ b/pkgs/development/libraries/urt/urt-3.1b-tempfile.patch
@@ -0,0 +1,19 @@
+--- tools/rlecat.c
++++ tools/rlecat.c
+@@ -110,8 +110,14 @@
+ 	    nflag = 0;		/* Not really repeating! */
+ 	else
+ 	{
+-	    mktemp( temp );	/* Make a temporary file name */
+-	    tmpfile = rle_open_f( cmd_name( argv ), temp, "w+" );
++	    /* we dont have to use rle_open_f() because all it does in
++	     * this case is run fopen() ... we're creating a file so all
++	     * the checks for opening an existing file aren't needed */
++	    int fd = mkstemp(temp);
++	    if (fd == -1 || (tmpfile = fdopen(fd, "w+")) == NULL) {
++		perror("Unable to open tempfile");
++		exit(-1);
++	    }
+ 	}
+     }
+ 
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index c2294748f22d..69beaad6cd03 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -3845,6 +3845,8 @@ let
     inherit postgresql mysql sqlite;
   });
 
+  urt = callPackage ../development/libraries/urt { };
+
   vamp = callPackage ../development/libraries/audio/vamp { };
 
   vigra = callPackage ../development/libraries/vigra { };