summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libre/lib32-mesa-demos-libre/PKGBUILD45
-rwxr-xr-xlibre/lib32-mesa-demos-libre/mesa-demos-libre.patch1192
-rw-r--r--libre/lib32-sdl-libre/PKGBUILD60
-rw-r--r--libre/lib32-sdl-libre/fix_joystick_misc_axes.diff13
-rw-r--r--libre/lib32-sdl-libre/libre.patch578
-rw-r--r--libre/lib32-sdl-libre/libsdl-1.2.15-resizing.patch63
-rw-r--r--libre/lib32-sdl-libre/sdl-1.2.14-disable-mmx.patch13
-rw-r--r--libre/lib32-sdl-libre/sdl-1.2.14-fix-mouse-clicking.patch23
-rwxr-xr-xlibre/sdl-libre/PKGBUILD11
-rw-r--r--libre/sdl-libre/libsdl-1.2.15-resizing.patch63
-rw-r--r--libre/virtualbox-libre/60-vboxguest.rules2
-rwxr-xr-xlibre/virtualbox-libre/PKGBUILD141
-rw-r--r--[-rwxr-xr-x]libre/virtualbox-libre/vboxdrv-reference.patch4
-rwxr-xr-xlibre/virtualbox-libre/virtualbox-libre-guest-source.install1
-rwxr-xr-xlibre/virtualbox-libre/virtualbox-libre-guest-utils.install (renamed from libre/virtualbox-libre/virtualbox-libre-guest-additions.install)0
-rwxr-xr-xlibre/virtualbox-libre/virtualbox-libre-host-source.install1
-rw-r--r--pcr/ffmpeg-static/PKGBUILD61
-rw-r--r--pcr/perl-expect/PKGBUILD52
-rw-r--r--pcr/perl-php-serialization/PKGBUILD50
-rw-r--r--pcr/zoneminder/PKGBUILD183
-rw-r--r--pcr/zoneminder/httpd-zm.conf18
-rw-r--r--pcr/zoneminder/patch-ffmpeg-0.11.patch12
-rw-r--r--pcr/zoneminder/zm.rc.d221
-rw-r--r--pcr/zoneminder/zoneminder-1.25.0-kernel35.patch4
-rw-r--r--pcr/zoneminder/zoneminder.install121
-rw-r--r--pcr/zoneminder/zoneminder.service14
26 files changed, 2584 insertions, 362 deletions
diff --git a/libre/lib32-mesa-demos-libre/PKGBUILD b/libre/lib32-mesa-demos-libre/PKGBUILD
new file mode 100644
index 000000000..1719f138d
--- /dev/null
+++ b/libre/lib32-mesa-demos-libre/PKGBUILD
@@ -0,0 +1,45 @@
+# $Id: PKGBUILD 94667 2010-10-09 11:21:35Z andyrtr $
+# Maintainer: Jan de Groot <jgc@archlinux.org>
+# Maintainer: Andreas Radke <andyrtr@archlinux.org>
+# Maintainer (Parabola): André Silva <emulatorman@lavabit.com>
+
+_pkgbasename=mesa-demos-libre
+pkgname=lib32-$_pkgbasename
+pkgver=8.0.1
+pkgrel=2
+arch=(x86_64)
+pkgdesc="Mesa demos and tools (32-bit), libre"
+url="http://mesa3d.sourceforge.net"
+license=('custom')
+depends=('lib32-glew>=1.5.6' mesa-demos-libre)
+provides=("lib32-mesa-demos=$pkgver")
+replaces=('lib32-mesa-demos')
+conflicts=('lib32-mesa-demos')
+makedepends=(gcc-multilib)
+source=(ftp://ftp.freedesktop.org/pub/mesa/demos/${pkgver}/mesa-demos-${pkgver}.tar.bz2
+ mesa-demos-libre.patch)
+md5sums=('320c2a4b6edc6faba35d9cb1e2a30bf4'
+ '1858e95d40ac9e5e0b59753ce9e673e3')
+
+build() {
+ export CC="gcc -m32"
+ export CXX="g++ -m32"
+ export PKG_CONFIG_PATH="/usr/lib32/pkgconfig"
+
+ cd "${srcdir}/mesa-demos-${pkgver}"
+ patch -Np1 -i "${srcdir}/mesa-demos-libre.patch"
+ ./configure --prefix=/usr
+ make
+}
+
+package() {
+ cd "${srcdir}/mesa-demos-${pkgver}"
+ make DESTDIR="${pkgdir}" install
+
+ for i in "$pkgdir/usr/bin/"*; do
+ mv "$i" "$i"32
+ done
+
+ mkdir -p "$pkgdir/usr/share/licenses"
+ ln -s mesa-demos "$pkgdir/usr/share/licenses/lib32-mesa-demos"
+}
diff --git a/libre/lib32-mesa-demos-libre/mesa-demos-libre.patch b/libre/lib32-mesa-demos-libre/mesa-demos-libre.patch
new file mode 100755
index 000000000..c5261f8e9
--- /dev/null
+++ b/libre/lib32-mesa-demos-libre/mesa-demos-libre.patch
@@ -0,0 +1,1192 @@
+diff -rauNp Desktop/mesa-demos-8.0.1//src/demos/Makefile.am mesa-demos-8.0.1//src/demos/Makefile.am
+--- Desktop/mesa-demos-8.0.1//src/demos/Makefile.am 2010-07-13 14:46:40.000000000 -0400
++++ mesa-demos-8.0.1/src/demos/Makefile.am 2011-06-04 15:34:18.000000000 -0400
+@@ -62,7 +62,6 @@ bin_PROGRAMS = \
+ morph3d \
+ multiarb \
+ paltex \
+- pointblast \
+ projtex \
+ ray \
+ readpix \
+@@ -71,7 +70,6 @@ bin_PROGRAMS = \
+ shadowtex \
+ singlebuffer \
+ spectex \
+- spriteblast \
+ stex3d \
+ teapot \
+ terrain \
+diff -rauNp Desktop/mesa-demos-8.0.1//src/demos/Makefile.in mesa-demos-8.0.1//src/demos/Makefile.in
+--- Desktop/mesa-demos-8.0.1//src/demos/Makefile.in 2010-07-13 14:53:23.000000000 -0400
++++ mesa-demos-8.0.1/src/demos/Makefile.in 2011-06-04 15:35:32.000000000 -0400
+@@ -73,11 +73,10 @@ host_triplet = @host@
+ @HAVE_GLUT_TRUE@ ipers$(EXEEXT) isosurf$(EXEEXT) \
+ @HAVE_GLUT_TRUE@ lodbias$(EXEEXT) morph3d$(EXEEXT) \
+ @HAVE_GLUT_TRUE@ multiarb$(EXEEXT) paltex$(EXEEXT) \
+-@HAVE_GLUT_TRUE@ pointblast$(EXEEXT) projtex$(EXEEXT) \
+-@HAVE_GLUT_TRUE@ ray$(EXEEXT) readpix$(EXEEXT) reflect$(EXEEXT) \
+-@HAVE_GLUT_TRUE@ renormal$(EXEEXT) shadowtex$(EXEEXT) \
+-@HAVE_GLUT_TRUE@ singlebuffer$(EXEEXT) spectex$(EXEEXT) \
+-@HAVE_GLUT_TRUE@ spriteblast$(EXEEXT) stex3d$(EXEEXT) \
++@HAVE_GLUT_TRUE@ projtex$(EXEEXT) ray$(EXEEXT) readpix$(EXEEXT) \
++@HAVE_GLUT_TRUE@ reflect$(EXEEXT) renormal$(EXEEXT) \
++@HAVE_GLUT_TRUE@ shadowtex$(EXEEXT) singlebuffer$(EXEEXT) \
++@HAVE_GLUT_TRUE@ spectex$(EXEEXT) stex3d$(EXEEXT) \
+ @HAVE_GLUT_TRUE@ teapot$(EXEEXT) terrain$(EXEEXT) \
+ @HAVE_GLUT_TRUE@ tessdemo$(EXEEXT) texcyl$(EXEEXT) \
+ @HAVE_GLUT_TRUE@ texenv$(EXEEXT) textures$(EXEEXT) \
+@@ -188,9 +187,6 @@ multiarb_DEPENDENCIES = ../util/libutil.
+ paltex_SOURCES = paltex.c
+ paltex_OBJECTS = paltex.$(OBJEXT)
+ paltex_LDADD = $(LDADD)
+-pointblast_SOURCES = pointblast.c
+-pointblast_OBJECTS = pointblast.$(OBJEXT)
+-pointblast_LDADD = $(LDADD)
+ projtex_SOURCES = projtex.c
+ projtex_OBJECTS = projtex.$(OBJEXT)
+ projtex_DEPENDENCIES = ../util/libutil.la
+@@ -215,9 +211,6 @@ singlebuffer_LDADD = $(LDADD)
+ spectex_SOURCES = spectex.c
+ spectex_OBJECTS = spectex.$(OBJEXT)
+ spectex_LDADD = $(LDADD)
+-spriteblast_SOURCES = spriteblast.c
+-spriteblast_OBJECTS = spriteblast.$(OBJEXT)
+-spriteblast_LDADD = $(LDADD)
+ stex3d_SOURCES = stex3d.c
+ stex3d_OBJECTS = stex3d.$(OBJEXT)
+ stex3d_LDADD = $(LDADD)
+@@ -285,21 +278,20 @@ SOURCES = arbfplight.c arbfslight.c arbo
+ fbo_firecube.c fbotexture.c fire.c fogcoord.c fplight.c \
+ fslight.c gamma.c gearbox.c gears.c geartrain.c glinfo.c \
+ gloss.c gltestperf.c ipers.c isosurf.c lodbias.c morph3d.c \
+- multiarb.c paltex.c pointblast.c projtex.c ray.c readpix.c \
+- reflect.c renormal.c shadowtex.c singlebuffer.c spectex.c \
+- spriteblast.c stex3d.c teapot.c terrain.c tessdemo.c texcyl.c \
+- texenv.c textures.c trispd.c $(tunnel_SOURCES) tunnel2.c \
+- vao_demo.c winpos.c
++ multiarb.c paltex.c projtex.c ray.c readpix.c reflect.c \
++ renormal.c shadowtex.c singlebuffer.c spectex.c stex3d.c \
++ teapot.c terrain.c tessdemo.c texcyl.c texenv.c textures.c \
++ trispd.c $(tunnel_SOURCES) tunnel2.c vao_demo.c winpos.c
+ DIST_SOURCES = arbfplight.c arbfslight.c arbocclude.c bounce.c \
+ clearspd.c copypix.c cubemap.c dinoshade.c dissolve.c \
+ drawpix.c engine.c fbo_firecube.c fbotexture.c fire.c \
+ fogcoord.c fplight.c fslight.c gamma.c gearbox.c gears.c \
+ geartrain.c glinfo.c gloss.c gltestperf.c ipers.c isosurf.c \
+- lodbias.c morph3d.c multiarb.c paltex.c pointblast.c projtex.c \
+- ray.c readpix.c reflect.c renormal.c shadowtex.c \
+- singlebuffer.c spectex.c spriteblast.c stex3d.c teapot.c \
+- terrain.c tessdemo.c texcyl.c texenv.c textures.c trispd.c \
+- $(tunnel_SOURCES) tunnel2.c vao_demo.c winpos.c
++ lodbias.c morph3d.c multiarb.c paltex.c projtex.c ray.c \
++ readpix.c reflect.c renormal.c shadowtex.c singlebuffer.c \
++ spectex.c stex3d.c teapot.c terrain.c tessdemo.c texcyl.c \
++ texenv.c textures.c trispd.c $(tunnel_SOURCES) tunnel2.c \
++ vao_demo.c winpos.c
+ ETAGS = etags
+ CTAGS = ctags
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+@@ -653,9 +645,6 @@ multiarb$(EXEEXT): $(multiarb_OBJECTS) $
+ paltex$(EXEEXT): $(paltex_OBJECTS) $(paltex_DEPENDENCIES)
+ @rm -f paltex$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(paltex_OBJECTS) $(paltex_LDADD) $(LIBS)
+-pointblast$(EXEEXT): $(pointblast_OBJECTS) $(pointblast_DEPENDENCIES)
+- @rm -f pointblast$(EXEEXT)
+- $(AM_V_CCLD)$(LINK) $(pointblast_OBJECTS) $(pointblast_LDADD) $(LIBS)
+ projtex$(EXEEXT): $(projtex_OBJECTS) $(projtex_DEPENDENCIES)
+ @rm -f projtex$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(projtex_OBJECTS) $(projtex_LDADD) $(LIBS)
+@@ -680,9 +669,6 @@ singlebuffer$(EXEEXT): $(singlebuffer_OB
+ spectex$(EXEEXT): $(spectex_OBJECTS) $(spectex_DEPENDENCIES)
+ @rm -f spectex$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(spectex_OBJECTS) $(spectex_LDADD) $(LIBS)
+-spriteblast$(EXEEXT): $(spriteblast_OBJECTS) $(spriteblast_DEPENDENCIES)
+- @rm -f spriteblast$(EXEEXT)
+- $(AM_V_CCLD)$(LINK) $(spriteblast_OBJECTS) $(spriteblast_LDADD) $(LIBS)
+ stex3d$(EXEEXT): $(stex3d_OBJECTS) $(stex3d_DEPENDENCIES)
+ @rm -f stex3d$(EXEEXT)
+ $(AM_V_CCLD)$(LINK) $(stex3d_OBJECTS) $(stex3d_LDADD) $(LIBS)
+@@ -756,7 +742,6 @@ distclean-compile:
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/morph3d.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multiarb.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/paltex.Po@am__quote@
+-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pointblast.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/projtex.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ray.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readpix.Po@am__quote@
+@@ -765,7 +750,6 @@ distclean-compile:
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shadowtex.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/singlebuffer.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spectex.Po@am__quote@
+-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/spriteblast.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stex3d.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/teapot.Po@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/terrain.Po@am__quote@
+diff -rauNp Desktop/mesa-demos-8.0.1//src/demos/pointblast.c mesa-demos-8.0.1//src/demos/pointblast.c
+--- Desktop/mesa-demos-8.0.1//src/demos/pointblast.c 2010-07-07 13:57:15.000000000 -0400
++++ mesa-demos-8.0.1/src/demos/pointblast.c 1969-12-31 19:00:00.000000000 -0500
+@@ -1,504 +0,0 @@
+-
+-/* Copyright (c) Mark J. Kilgard, 1997. */
+-
+-/* This program is freely distributable without licensing fees
+- and is provided without guarantee or warrantee expressed or
+- implied. This program is -not- in the public domain. */
+-
+-/* This example demonstrates how to render particle effects
+- with OpenGL. A cloud of pinkish/orange particles explodes with the
+- particles bouncing off the ground. When the EXT_point_parameters
+- is present , the particle size is attenuated based on eye distance. */
+-
+-
+-#include <stdio.h>
+-#include <stdlib.h>
+-#include <string.h>
+-#include <math.h> /* for cos(), sin(), and sqrt() */
+-#ifdef _WIN32
+-#include <windows.h>
+-#endif
+-#include <GL/glew.h>
+-#include <GL/glut.h>
+-
+-/* Some <math.h> files do not define M_PI... */
+-#ifndef M_PI
+-#define M_PI 3.14159265
+-#endif
+-
+-#if 0 /* For debugging. */
+-#undef GL_EXT_point_parameters
+-#endif
+-
+-static GLfloat angle = -150; /* in degrees */
+-static int spin = 0;
+-static int moving, begin;
+-static int newModel = 1;
+-static float theTime;
+-static int repeat = 1;
+-static int blend = 1;
+-int useMipmaps = 1;
+-int linearFiltering = 1;
+-
+-static GLfloat constant[3] = { 1/5.0, 0.0, 0.0 };
+-static GLfloat linear[3] = { 0.0, 1/5.0, 0.0 };
+-static GLfloat theQuad[3] = { 0.25, 0.0, 1/60.0 };
+-
+-#define MAX_POINTS 2000
+-
+-static int numPoints = 200;
+-
+-static GLfloat pointList[MAX_POINTS][3];
+-static GLfloat pointTime[MAX_POINTS];
+-static GLfloat pointVelocity[MAX_POINTS][2];
+-static GLfloat pointDirection[MAX_POINTS][2];
+-static int colorList[MAX_POINTS];
+-static int animate = 1, motion = 0;
+-
+-static GLfloat colorSet[][4] = {
+- /* Shades of red. */
+- { 0.7, 0.2, 0.4, 0.5 },
+- { 0.8, 0.0, 0.7, 0.5 },
+- { 1.0, 0.0, 0.0, 0.5 },
+- { 0.9, 0.3, 0.6, 0.5 },
+- { 1.0, 0.4, 0.0, 0.5 },
+- { 1.0, 0.0, 0.5, 0.5 },
+-};
+-
+-#define NUM_COLORS (sizeof(colorSet)/sizeof(colorSet[0]))
+-
+-#define DEAD (NUM_COLORS+1)
+-
+-
+-#if 0 /* drand48 might be better on Unix machines */
+-#define RANDOM_RANGE(lo, hi) ((lo) + (hi - lo) * drand48())
+-#else
+-static float float_rand(void) { return rand() / (float) RAND_MAX; }
+-#define RANDOM_RANGE(lo, hi) ((lo) + (hi - lo) * float_rand())
+-#endif
+-
+-#define MEAN_VELOCITY 3.0
+-#define GRAVITY 2.0
+-
+-/* Modeling units of ground extent in each X and Z direction. */
+-#define EDGE 12
+-
+-static void
+-makePointList(void)
+-{
+- float angle, velocity, direction;
+- int i;
+-
+- motion = 1;
+- for (i=0; i<numPoints; i++) {
+- pointList[i][0] = 0.0;
+- pointList[i][1] = 0.0;
+- pointList[i][2] = 0.0;
+- pointTime[i] = 0.0;
+- angle = (RANDOM_RANGE(60.0, 70.0)) * M_PI/180.0;
+- direction = RANDOM_RANGE(0.0, 360.0) * M_PI/180.0;
+- pointDirection[i][0] = cos(direction);
+- pointDirection[i][1] = sin(direction);
+- velocity = MEAN_VELOCITY + RANDOM_RANGE(-0.8, 1.0);
+- pointVelocity[i][0] = velocity * cos(angle);
+- pointVelocity[i][1] = velocity * sin(angle);
+- colorList[i] = rand() % NUM_COLORS;
+- }
+- theTime = 0.0;
+-}
+-
+-static void
+-updatePointList(void)
+-{
+- float distance;
+- int i;
+-
+- static double t0 = -1.;
+- double dt, t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
+- if (t0 < 0.0)
+- t0 = t;
+- dt = t - t0;
+- t0 = t;
+-
+- motion = 0;
+- for (i=0; i<numPoints; i++) {
+- distance = pointVelocity[i][0] * theTime;
+-
+- /* X and Z */
+- pointList[i][0] = pointDirection[i][0] * distance;
+- pointList[i][2] = pointDirection[i][1] * distance;
+-
+- /* Z */
+- pointList[i][1] =
+- (pointVelocity[i][1] - 0.5 * GRAVITY * pointTime[i])*pointTime[i];
+-
+- /* If we hit the ground, bounce the point upward again. */
+- if (pointList[i][1] <= 0.0) {
+- if (distance > EDGE) {
+- /* Particle has hit ground past the distance duration of
+- the particles. Mark particle as dead. */
+- colorList[i] = NUM_COLORS; /* Not moving. */
+- continue;
+- }
+-
+- pointVelocity[i][1] *= 0.8; /* 80% of previous up velocity. */
+- pointTime[i] = 0.0; /* Reset the particles sense of up time. */
+- }
+- motion = 1;
+- pointTime[i] += dt;
+- }
+- theTime += dt;
+- if (!motion && !spin) {
+- if (repeat) {
+- makePointList();
+- } else {
+- glutIdleFunc(NULL);
+- }
+- }
+-}
+-
+-static void
+-idle(void)
+-{
+- updatePointList();
+- if (spin) {
+- angle += 0.3;
+- newModel = 1;
+- }
+- glutPostRedisplay();
+-}
+-
+-static void
+-visible(int vis)
+-{
+- if (vis == GLUT_VISIBLE) {
+- if (animate && (motion || spin)) {
+- glutIdleFunc(idle);
+- }
+- } else {
+- glutIdleFunc(NULL);
+- }
+-}
+-
+-static void
+-recalcModelView(void)
+-{
+- glPopMatrix();
+- glPushMatrix();
+- glRotatef(angle, 0.0, 1.0, 0.0);
+- newModel = 0;
+-}
+-
+-static void
+-redraw(void)
+-{
+- int i;
+-
+- glDepthMask(GL_TRUE);
+- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+- if (newModel)
+- recalcModelView();
+-
+-
+- /* Draw the floor. */
+-/* glEnable(GL_TEXTURE_2D);*/
+- glColor3f(0.5, 1.0, 0.5);
+- glBegin(GL_QUADS);
+- glTexCoord2f(0.0, 0.0);
+- glVertex3f(-EDGE, -0.05, -EDGE);
+- glTexCoord2f(20.0, 0.0);
+- glVertex3f(EDGE, -0.05, -EDGE);
+- glTexCoord2f(20.0, 20.0);
+- glVertex3f(EDGE, -0.05, EDGE);
+- glTexCoord2f(0.0, 20.0);
+- glVertex3f(-EDGE, -0.05, EDGE);
+- glEnd();
+-
+- /* Allow particles to blend with each other. */
+- glDepthMask(GL_FALSE);
+-
+- if (blend)
+- glEnable(GL_BLEND);
+-
+- glDisable(GL_TEXTURE_2D);
+- glBegin(GL_POINTS);
+- for (i=0; i<numPoints; i++) {
+- /* Draw alive particles. */
+- if (colorList[i] != DEAD) {
+- glColor4fv(colorSet[colorList[i]]);
+- glVertex3fv(pointList[i]);
+- }
+- }
+- glEnd();
+-
+- glDisable(GL_BLEND);
+-
+- glutSwapBuffers();
+-}
+-
+-/* ARGSUSED2 */
+-static void
+-mouse(int button, int state, int x, int y)
+-{
+- /* Scene can be spun around Y axis using left
+- mouse button movement. */
+- if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) {
+- moving = 1;
+- begin = x;
+- }
+- if (button == GLUT_LEFT_BUTTON && state == GLUT_UP) {
+- moving = 0;
+- }
+-}
+-
+-/* ARGSUSED1 */
+-static void
+-mouseMotion(int x, int y)
+-{
+- if (moving) {
+- angle = angle + (x - begin);
+- begin = x;
+- newModel = 1;
+- glutPostRedisplay();
+- }
+-}
+-
+-static void
+-menu(int option)
+-{
+- switch (option) {
+- case 0:
+- makePointList();
+- break;
+-#ifdef GL_ARB_point_parameters
+- case 1:
+- glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, constant);
+- break;
+- case 2:
+- glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, linear);
+- break;
+- case 3:
+- glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, theQuad);
+- break;
+-#endif
+- case 4:
+- blend = 1;
+- break;
+- case 5:
+- blend = 0;
+- break;
+-#ifdef GL_ARB_point_parameters
+- case 6:
+- glPointParameterfARB(GL_POINT_FADE_THRESHOLD_SIZE_ARB, 1.0);
+- break;
+- case 7:
+- glPointParameterfARB(GL_POINT_FADE_THRESHOLD_SIZE_ARB, 10.0);
+- break;
+-#endif
+- case 8:
+- glEnable(GL_POINT_SMOOTH);
+- break;
+- case 9:
+- glDisable(GL_POINT_SMOOTH);
+- break;
+- case 10:
+- glPointSize(2.0);
+- break;
+- case 11:
+- glPointSize(4.0);
+- break;
+- case 12:
+- glPointSize(8.0);
+- break;
+- case 13:
+- spin = 1 - spin;
+- if (animate && (spin || motion)) {
+- glutIdleFunc(idle);
+- } else {
+- glutIdleFunc(NULL);
+- }
+- break;
+- case 14:
+- numPoints = 200;
+- break;
+- case 15:
+- numPoints = 500;
+- break;
+- case 16:
+- numPoints = 1000;
+- break;
+- case 17:
+- numPoints = 2000;
+- break;
+- case 666:
+- exit(0);
+- }
+- glutPostRedisplay();
+-}
+-
+-/* ARGSUSED1 */
+-static void
+-key(unsigned char c, int x, int y)
+-{
+- switch (c) {
+- case 13:
+- animate = 1 - animate; /* toggle. */
+- if (animate && (motion || spin)) {
+- glutIdleFunc(idle);
+- } else {
+- glutIdleFunc(NULL);
+- }
+- break;
+- case ' ':
+- animate = 1;
+- makePointList();
+- glutIdleFunc(idle);
+- break;
+- case 27:
+- exit(0);
+- }
+-}
+-
+-/* Nice floor texture tiling pattern. */
+-static char *circles[] = {
+- "....xxxx........",
+- "..xxxxxxxx......",
+- ".xxxxxxxxxx.....",
+- ".xxx....xxx.....",
+- "xxx......xxx....",
+- "xxx......xxx....",
+- "xxx......xxx....",
+- "xxx......xxx....",
+- ".xxx....xxx.....",
+- ".xxxxxxxxxx.....",
+- "..xxxxxxxx......",
+- "....xxxx........",
+- "................",
+- "................",
+- "................",
+- "................",
+-};
+-
+-static void
+-makeFloorTexture(void)
+-{
+- GLubyte floorTexture[16][16][3];
+- GLubyte *loc;
+- int s, t;
+-
+- /* Setup RGB image for the texture. */
+- loc = (GLubyte*) floorTexture;
+- for (t = 0; t < 16; t++) {
+- for (s = 0; s < 16; s++) {
+- if (circles[t][s] == 'x') {
+- /* Nice blue. */
+- loc[0] = 0x1f;
+- loc[1] = 0x1f;
+- loc[2] = 0x8f;
+- } else {
+- /* Light gray. */
+- loc[0] = 0xca;
+- loc[1] = 0xca;
+- loc[2] = 0xca;
+- }
+- loc += 3;
+- }
+- }
+-
+- glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
+-
+- if (useMipmaps) {
+- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,
+- GL_LINEAR_MIPMAP_LINEAR);
+- gluBuild2DMipmaps(GL_TEXTURE_2D, 3, 16, 16,
+- GL_RGB, GL_UNSIGNED_BYTE, floorTexture);
+- } else {
+- if (linearFiltering) {
+- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+- } else {
+- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+- }
+- glTexImage2D(GL_TEXTURE_2D, 0, 3, 16, 16, 0,
+- GL_RGB, GL_UNSIGNED_BYTE, floorTexture);
+- }
+-}
+-
+-int
+-main(int argc, char **argv)
+-{
+- int i;
+-
+- glutInitWindowSize(300, 300);
+- glutInit(&argc, argv);
+- glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_MULTISAMPLE);
+-
+- for (i=1; i<argc; i++) {
+- if(!strcmp("-noms", argv[i])) {
+- glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
+- printf("forcing no multisampling\n");
+- } else if(!strcmp("-nomipmaps", argv[i])) {
+- useMipmaps = 0;
+- } else if(!strcmp("-nearest", argv[i])) {
+- linearFiltering = 0;
+- }
+- }
+-
+- glutCreateWindow("point burst");
+- glewInit();
+- glutDisplayFunc(redraw);
+- glutMouseFunc(mouse);
+- glutMotionFunc(mouseMotion);
+- glutVisibilityFunc(visible);
+- glutKeyboardFunc(key);
+- glutCreateMenu(menu);
+- glutAddMenuEntry("Reset time", 0);
+- glutAddMenuEntry("Constant", 1);
+- glutAddMenuEntry("Linear", 2);
+- glutAddMenuEntry("Quadratic", 3);
+- glutAddMenuEntry("Blend on", 4);
+- glutAddMenuEntry("Blend off", 5);
+- glutAddMenuEntry("Threshold 1", 6);
+- glutAddMenuEntry("Threshold 10", 7);
+- glutAddMenuEntry("Point smooth on", 8);
+- glutAddMenuEntry("Point smooth off", 9);
+- glutAddMenuEntry("Point size 2", 10);
+- glutAddMenuEntry("Point size 4", 11);
+- glutAddMenuEntry("Point size 8", 12);
+- glutAddMenuEntry("Toggle spin", 13);
+- glutAddMenuEntry("200 points ", 14);
+- glutAddMenuEntry("500 points ", 15);
+- glutAddMenuEntry("1000 points ", 16);
+- glutAddMenuEntry("2000 points ", 17);
+- glutAddMenuEntry("Quit", 666);
+- glutAttachMenu(GLUT_RIGHT_BUTTON);
+-
+- if (!glutExtensionSupported("GL_ARB_point_parameters")) {
+- fprintf(stderr, "Sorry, GL_ARB_point_parameters is not supported.\n");
+- return -1;
+- }
+-
+- glShadeModel(GL_FLAT);
+- glEnable(GL_DEPTH_TEST);
+- glEnable(GL_POINT_SMOOTH);
+- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+- glPointSize(8.0);
+-#if GL_ARB_point_parameters
+- glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, theQuad);
+-#endif
+- glMatrixMode(GL_PROJECTION);
+- gluPerspective( /* field of view in degree */ 40.0,
+- /* aspect ratio */ 1.0,
+- /* Z near */ 0.5, /* Z far */ 40.0);
+- glMatrixMode(GL_MODELVIEW);
+- gluLookAt(0.0, 1.0, 8.0, /* eye location */
+- 0.0, 1.0, 0.0, /* center is at (0,0,0) */
+- 0.0, 1.0, 0.); /* up is in postivie Y direction */
+- glPushMatrix(); /* dummy push so we can pop on model
+- recalc */
+-
+- makePointList();
+- makeFloorTexture();
+-
+- glutMainLoop();
+- return 0; /* ANSI C requires main to return int. */
+-}
+diff -rauNp Desktop/mesa-demos-8.0.1//src/demos/spriteblast.c mesa-demos-8.0.1//src/demos/spriteblast.c
+--- Desktop/mesa-demos-8.0.1//src/demos/spriteblast.c 2010-07-07 13:57:15.000000000 -0400
++++ mesa-demos-8.0.1/src/demos/spriteblast.c 1969-12-31 19:00:00.000000000 -0500
+@@ -1,555 +0,0 @@
+-
+-/* Copyright (c) Mark J. Kilgard, 1997. */
+-
+-/* This program is freely distributable without licensing fees
+- and is provided without guarantee or warrantee expressed or
+- implied. This program is -not- in the public domain. */
+-
+-/* This example demonstrates how to render particle effects
+- with OpenGL. A cloud of pinkish/orange particles explodes with the
+- particles bouncing off the ground. When the EXT_point_parameters
+- is present , the particle size is attenuated based on eye distance. */
+-
+-
+-/* Modified by Brian Paul to test GL_ARB_point_sprite */
+-
+-
+-#include <stdio.h>
+-#include <stdlib.h>
+-#include <string.h>
+-#include <math.h> /* for cos(), sin(), and sqrt() */
+-#ifdef _WIN32
+-#include <windows.h>
+-#endif
+-#include <GL/glew.h>
+-#include <GL/glut.h>
+-
+-/* Some <math.h> files do not define M_PI... */
+-#ifndef M_PI
+-#define M_PI 3.14159265
+-#endif
+-
+-#if 0 /* For debugging. */
+-#undef GL_EXT_point_parameters
+-#endif
+-
+-static GLfloat angle = -150; /* in degrees */
+-static int spin = 0;
+-static int moving, begin;
+-static float theTime;
+-static int repeat = 1;
+-static int blend = 1;
+-int useMipmaps = 1;
+-int linearFiltering = 1;
+-
+-static GLfloat constant[3] = { .2, 0.0, 0.0 };
+-static GLfloat linear[3] = { .0, .1, 0.0 };
+-static GLfloat theQuad[3] = { .005, 0.1, 1/600.0 };
+-
+-#define MAX_POINTS 2000
+-
+-static int numPoints = 200;
+-
+-static GLfloat pointList[MAX_POINTS][3];
+-static GLfloat pointTime[MAX_POINTS];
+-static GLfloat pointVelocity[MAX_POINTS][2];
+-static GLfloat pointDirection[MAX_POINTS][2];
+-static int colorList[MAX_POINTS];
+-static int animate = 1, motion = 0, org = 0, sprite = 1, smooth = 1;
+-
+-static GLfloat colorSet[][4] = {
+- /* Shades of red. */
+- { 0.7, 0.2, 0.4, 0.5 },
+- { 0.8, 0.0, 0.7, 0.5 },
+- { 1.0, 0.0, 0.0, 0.5 },
+- { 0.9, 0.3, 0.6, 0.5 },
+- { 1.0, 0.4, 0.0, 0.5 },
+- { 1.0, 0.0, 0.5, 0.5 },
+-};
+-
+-#define NUM_COLORS (sizeof(colorSet)/sizeof(colorSet[0]))
+-
+-#define DEAD (NUM_COLORS+1)
+-
+-
+-/* GL */
+-static GLint spritePattern[16][16] = {
+- { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+- { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+- { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+- { 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0 },
+- { 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0 },
+- { 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0 },
+- { 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0 },
+- { 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0 },
+- { 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0 },
+- { 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0 },
+- { 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0 },
+- { 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0 },
+- { 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0 },
+- { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+- { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
+- { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }
+-};
+-
+-
+-
+-
+-#if 0 /* drand48 might be better on Unix machines */
+-#define RANDOM_RANGE(lo, hi) ((lo) + (hi - lo) * drand48())
+-#else
+-static float float_rand(void) { return rand() / (float) RAND_MAX; }
+-#define RANDOM_RANGE(lo, hi) ((lo) + (hi - lo) * float_rand())
+-#endif
+-
+-#define MEAN_VELOCITY 3.0
+-#define GRAVITY 2.0
+-
+-/* Modeling units of ground extent in each X and Z direction. */
+-#define EDGE 12
+-
+-static void
+-makePointList(void)
+-{
+- float angle, velocity, direction;
+- int i;
+-
+- motion = 1;
+- for (i=0; i<numPoints; i++) {
+- pointList[i][0] = 0.0;
+- pointList[i][1] = 0.0;
+- pointList[i][2] = 0.0;
+- pointTime[i] = 0.0;
+- angle = (RANDOM_RANGE(60.0, 70.0)) * M_PI/180.0;
+- direction = RANDOM_RANGE(0.0, 360.0) * M_PI/180.0;
+- pointDirection[i][0] = cos(direction);
+- pointDirection[i][1] = sin(direction);
+- velocity = MEAN_VELOCITY + RANDOM_RANGE(-0.8, 1.0);
+- pointVelocity[i][0] = velocity * cos(angle);
+- pointVelocity[i][1] = velocity * sin(angle);
+- colorList[i] = rand() % NUM_COLORS;
+- }
+- theTime = 0.0;
+-}
+-
+-static void
+-updatePointList(void)
+-{
+- float distance;
+- int i;
+-
+- static double t0 = -1.;
+- double dt, t = glutGet(GLUT_ELAPSED_TIME) / 1000.0;
+- if (t0 < 0.0)
+- t0 = t;
+- dt = t - t0;
+- t0 = t;
+-
+- motion = 0;
+- for (i=0; i<numPoints; i++) {
+- distance = pointVelocity[i][0] * theTime;
+-
+- /* X and Z */
+- pointList[i][0] = pointDirection[i][0] * distance;
+- pointList[i][2] = pointDirection[i][1] * distance;
+-
+- /* Z */
+- pointList[i][1] =
+- (pointVelocity[i][1] - 0.5 * GRAVITY * pointTime[i])*pointTime[i];
+-
+- /* If we hit the ground, bounce the point upward again. */
+- if (pointList[i][1] <= 0.0) {
+- if (distance > EDGE) {
+- /* Particle has hit ground past the distance duration of
+- the particles. Mark particle as dead. */
+- colorList[i] = NUM_COLORS; /* Not moving. */
+- continue;
+- }
+-
+- pointVelocity[i][1] *= 0.8; /* 80% of previous up velocity. */
+- pointTime[i] = 0.0; /* Reset the particles sense of up time. */
+- }
+- motion = 1;
+- pointTime[i] += dt;
+- }
+- theTime += dt;
+- if (!motion && !spin) {
+- if (repeat) {
+- makePointList();
+- } else {
+- glutIdleFunc(NULL);
+- }
+- }
+-}
+-
+-static void
+-idle(void)
+-{
+- updatePointList();
+- if (spin) {
+- angle += 0.3;
+- }
+- glutPostRedisplay();
+-}
+-
+-static void
+-visible(int vis)
+-{
+- if (vis == GLUT_VISIBLE) {
+- if (animate && (motion || spin)) {
+- glutIdleFunc(idle);
+- }
+- } else {
+- glutIdleFunc(NULL);
+- }
+-}
+-
+-static void
+-redraw(void)
+-{
+- int i;
+-
+- glDepthMask(GL_TRUE);
+- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+-
+- glPushMatrix();
+- glRotatef(15.0, 1.0, 0.0, 0.0);
+- glRotatef(angle, 0.0, 1.0, 0.0);
+-
+-
+- /* Draw the floor. */
+-/* glEnable(GL_TEXTURE_2D);*/
+- glColor3f(0.1, 0.5, 1.0);
+- glBegin(GL_QUADS);
+- glTexCoord2f(0.0, 0.0);
+- glVertex3f(-EDGE, -0.05, -EDGE);
+- glTexCoord2f(20.0, 0.0);
+- glVertex3f(EDGE, -0.05, -EDGE);
+- glTexCoord2f(20.0, 20.0);
+- glVertex3f(EDGE, -0.05, EDGE);
+- glTexCoord2f(0.0, 20.0);
+- glVertex3f(-EDGE, -0.05, EDGE);
+- glEnd();
+-
+- /* Allow particles to blend with each other. */
+- glDepthMask(GL_FALSE);
+-
+- if (blend)
+- glEnable(GL_BLEND);
+-
+- if (sprite) {
+- glEnable(GL_TEXTURE_2D);
+-#ifdef GL_ARB_point_sprite
+- glEnable(GL_POINT_SPRITE_ARB);
+-#endif
+- }
+-
+- glColor3f(1,1,1);
+- glBegin(GL_POINTS);
+- for (i=0; i<numPoints; i++) {
+- /* Draw alive particles. */
+- if (colorList[i] != DEAD) {
+- if (!sprite) glColor4fv(colorSet[colorList[i]]);
+- glVertex3fv(pointList[i]);
+- }
+- }
+- glEnd();
+-
+- glDisable(GL_TEXTURE_2D);
+-#ifdef GL_ARB_point_sprite
+- glDisable(GL_POINT_SPRITE_ARB);
+-#endif
+- glDisable(GL_BLEND);
+-
+- glPopMatrix();
+-
+- glutSwapBuffers();
+-}
+-
+-/* ARGSUSED2 */
+-static void
+-mouse(int button, int state, int x, int y)
+-{
+- /* Scene can be spun around Y axis using left
+- mouse button movement. */
+- if (button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) {
+- moving = 1;
+- begin = x;
+- }
+- if (button == GLUT_LEFT_BUTTON && state == GLUT_UP) {
+- moving = 0;
+- }
+-}
+-
+-/* ARGSUSED1 */
+-static void
+-mouseMotion(int x, int y)
+-{
+- if (moving) {
+- angle = angle + (x - begin);
+- begin = x;
+- glutPostRedisplay();
+- }
+-}
+-
+-static void
+-menu(int option)
+-{
+- switch (option) {
+- case 0:
+- makePointList();
+- break;
+-#ifdef GL_ARB_point_parameters
+- case 1:
+- glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, constant);
+- break;
+- case 2:
+- glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, linear);
+- break;
+- case 3:
+- glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, theQuad);
+- break;
+-#endif
+- case 4:
+- blend = 1;
+- break;
+- case 5:
+- blend = 0;
+- break;
+-#ifdef GL_ARB_point_parameters
+- case 6:
+- glPointParameterfARB(GL_POINT_FADE_THRESHOLD_SIZE_ARB, 1.0);
+- break;
+- case 7:
+- glPointParameterfARB(GL_POINT_FADE_THRESHOLD_SIZE_ARB, 10.0);
+- break;
+-#endif
+- case 8:
+- glEnable(GL_POINT_SMOOTH);
+- smooth = 1;
+- break;
+- case 9:
+- glDisable(GL_POINT_SMOOTH);
+- smooth = 0;
+- break;
+- case 10:
+- glPointSize(16.0);
+- break;
+- case 11:
+- glPointSize(32.0);
+- break;
+- case 12:
+- glPointSize(64.0);
+- break;
+- case 13:
+- spin = 1 - spin;
+- if (animate && (spin || motion)) {
+- glutIdleFunc(idle);
+- } else {
+- glutIdleFunc(NULL);
+- }
+- break;
+- case 14:
+- numPoints = 200;
+- break;
+- case 15:
+- numPoints = 500;
+- break;
+- case 16:
+- numPoints = 1000;
+- break;
+- case 17:
+- numPoints = 2000;
+- break;
+- case 666:
+- exit(0);
+- }
+- glutPostRedisplay();
+-}
+-
+-/* ARGSUSED1 */
+-static void
+-key(unsigned char c, int x, int y)
+-{
+- switch (c) {
+- case 13:
+- animate = 1 - animate; /* toggle. */
+- if (animate && (motion || spin)) {
+- glutIdleFunc(idle);
+- } else {
+- glutIdleFunc(NULL);
+- }
+- break;
+- case ' ':
+- animate = 1;
+- makePointList();
+- glutIdleFunc(idle);
+- break;
+- case 'o':
+- case 'O':
+- org ^= 1;
+-#ifdef GL_VERSION_2_0
+-#ifdef GL_ARB_point_parameters
+- glPointParameteri(GL_POINT_SPRITE_COORD_ORIGIN,
+- org ? GL_LOWER_LEFT : GL_UPPER_LEFT);
+-#endif
+-#endif
+- glutPostRedisplay();
+- break;
+- case 't':
+- case 'T':
+- sprite ^= 1;
+- glutPostRedisplay();
+- break;
+- case 's':
+- case 'S':
+- (smooth ^= 1) ? glEnable(GL_POINT_SMOOTH) : glDisable(GL_POINT_SMOOTH);
+- glutPostRedisplay();
+- break;
+- case '0':
+- glPointSize(1.0);
+- glutPostRedisplay();
+- break;
+- case '1':
+- glPointSize(16.0);
+- glutPostRedisplay();
+- break;
+- case '2':
+- glPointSize(32.0);
+- glutPostRedisplay();
+- break;
+- case '3':
+- glPointSize(64.0);
+- glutPostRedisplay();
+- break;
+- case '4':
+- glPointSize(128.0);
+- glutPostRedisplay();
+- break;
+- case 27:
+- exit(0);
+- }
+-}
+-
+-
+-
+-static void
+-makeSprite(void)
+-{
+- GLubyte texture[16][16][4];
+- int i, j;
+-
+- if (!glutExtensionSupported("GL_ARB_point_sprite")) {
+- printf("Sorry, this demo requires GL_ARB_point_sprite.\n");
+- exit(0);
+- }
+- if (!glutExtensionSupported("GL_ARB_point_parameters")) {
+- printf("Sorry, this demo requires GL_ARB_point_parameters.\n");
+- exit(0);
+- }
+-
+- for (i = 0; i < 16; i++) {
+- for (j = 0; j < 16; j++) {
+- if (spritePattern[i][j]) {
+- texture[i][j][0] = 255;
+- texture[i][j][1] = 255;
+- texture[i][j][2] = 255;
+- texture[i][j][3] = 255;
+- }
+- else {
+- texture[i][j][0] = 255;
+- texture[i][j][1] = 0;
+- texture[i][j][2] = 0;
+- texture[i][j][3] = 0;
+- }
+- }
+- }
+-
+- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE,
+- texture);
+- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+-#ifdef GL_ARB_point_sprite
+- glTexEnvi(GL_POINT_SPRITE_ARB, GL_COORD_REPLACE_ARB, GL_TRUE);
+-#endif
+-}
+-
+-
+-static void
+-reshape(int width, int height)
+-{
+- GLfloat h = (GLfloat) height / (GLfloat) width;
+-
+- glViewport(0, 0, (GLint) width, (GLint) height);
+- glMatrixMode(GL_PROJECTION);
+- glLoadIdentity();
+- glFrustum(-1.0, 1.0, -h, h, 2.0, 30.0);
+- glMatrixMode(GL_MODELVIEW);
+- glLoadIdentity();
+- glTranslatef(0.0, 0.0, -10.0);
+-}
+-
+-int
+-main(int argc, char **argv)
+-{
+- int i;
+-
+- glutInitWindowSize(600,300);
+- glutInit(&argc, argv);
+- glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH | GLUT_MULTISAMPLE);
+-
+- for (i=1; i<argc; i++) {
+- if(!strcmp("-noms", argv[i])) {
+- glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
+- printf("forcing no multisampling\n");
+- } else if(!strcmp("-nomipmaps", argv[i])) {
+- useMipmaps = 0;
+- } else if(!strcmp("-nearest", argv[i])) {
+- linearFiltering = 0;
+- }
+- }
+- glutCreateWindow("sprite blast");
+- glewInit();
+- glutReshapeFunc(reshape);
+- glutDisplayFunc(redraw);
+- glutMouseFunc(mouse);
+- glutMotionFunc(mouseMotion);
+- glutVisibilityFunc(visible);
+- glutKeyboardFunc(key);
+- glutCreateMenu(menu);
+- glutAddMenuEntry("Reset time", 0);
+- glutAddMenuEntry("Constant", 1);
+- glutAddMenuEntry("Linear", 2);
+- glutAddMenuEntry("Quadratic", 3);
+- glutAddMenuEntry("Blend on", 4);
+- glutAddMenuEntry("Blend off", 5);
+- glutAddMenuEntry("Threshold 1", 6);
+- glutAddMenuEntry("Threshold 10", 7);
+- glutAddMenuEntry("Point smooth on", 8);
+- glutAddMenuEntry("Point smooth off", 9);
+- glutAddMenuEntry("Point size 16", 10);
+- glutAddMenuEntry("Point size 32", 11);
+- glutAddMenuEntry("Point size 64", 12);
+- glutAddMenuEntry("Toggle spin", 13);
+- glutAddMenuEntry("200 points ", 14);
+- glutAddMenuEntry("500 points ", 15);
+- glutAddMenuEntry("1000 points ", 16);
+- glutAddMenuEntry("2000 points ", 17);
+- glutAddMenuEntry("Quit", 666);
+- glutAttachMenu(GLUT_RIGHT_BUTTON);
+-
+- makePointList();
+- makeSprite();
+-
+- glShadeModel(GL_FLAT);
+- glEnable(GL_DEPTH_TEST);
+- glEnable(GL_POINT_SMOOTH);
+- glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+- glPointSize(32.0);
+-#ifdef GL_ARB_point_parameters
+- glPointParameterfvARB(GL_POINT_DISTANCE_ATTENUATION_ARB, theQuad);
+-#endif
+-
+- glutMainLoop();
+- return 0; /* ANSI C requires main to return int. */
+-}
diff --git a/libre/lib32-sdl-libre/PKGBUILD b/libre/lib32-sdl-libre/PKGBUILD
new file mode 100644
index 000000000..a1fa02a0a
--- /dev/null
+++ b/libre/lib32-sdl-libre/PKGBUILD
@@ -0,0 +1,60 @@
+# $Id$
+# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
+# Contributor: Allan McRae <allan@archlinux.org>
+# Contributor: dorphell <dorphell@archlinux.org>
+# Maintainer (Parabola): André Silva <emulatorman@lavabit.com>
+
+_pkgbasename=sdl-libre
+pkgname=lib32-$_pkgbasename
+pkgver=1.2.15
+pkgrel=3
+pkgdesc="A library for portable low-level access to a video framebuffer, audio output, mouse, and keyboard (32-bit)"
+arch=('x86_64')
+url="http://www.libsdl.org"
+license=('LGPL')
+provides=("lib32-sdl=${pkgver}")
+conflicts=('lib32-sdl')
+replaces=('lib32-sdl')
+depends=('lib32-libxext' 'lib32-libxrender' 'lib32-libx11' $_pkgbasename)
+makedepends=('lib32-alsa-lib' 'lib32-mesa' 'lib32-libpulse' gcc-multilib)
+optdepends=('lib32-alsa-lib: ALSA audio driver'
+ 'lib32-libpulse: PulseAudio audio driver')
+options=('!libtool')
+source=(http://www.libsdl.org/release/SDL-${pkgver}.tar.gz
+ sdl-1.2.14-fix-mouse-clicking.patch
+ sdl-1.2.14-disable-mmx.patch
+ fix_joystick_misc_axes.diff
+ libsdl-1.2.15-resizing.patch
+ libre.patch)
+md5sums=('9d96df8417572a2afb781a7c4c811a85'
+ '04d8c179f125e04bcd4c9d60e013c2d7'
+ 'e5c16b7611f62c7cb25f0534eff68852'
+ '687586a108b597a2a6b73070c1d37e51'
+ '3dd50347d8856160a9cbd7f80383a1f8'
+ '5c665f72b8a2adc97a91f6db6f2da79a')
+
+build() {
+ export CC="gcc -m32"
+ export CXX="g++ -m32"
+ export PKG_CONFIG_PATH="/usr/lib32/pkgconfig"
+
+ cd SDL-$pkgver
+ patch -Np1 -i ../sdl-1.2.14-fix-mouse-clicking.patch
+ patch -Np1 -i ../sdl-1.2.14-disable-mmx.patch
+ patch -Np1 -i ../fix_joystick_misc_axes.diff
+ patch -Np1 -i ../libsdl-1.2.15-resizing.patch
+ patch -Np0 -i ../libre.patch
+ ./configure --prefix=/usr --disable-nasm --enable-alsa \
+ --with-x --disable-rpath --disable-static --libdir=/usr/lib32
+ make
+}
+
+package() {
+ cd SDL-$pkgver
+ make DESTDIR="$pkgdir" install
+
+ rm -rf "$pkgdir"/usr/{include,share}
+
+ cd "$pkgdir/usr/bin"
+ mv sdl-config sdl-config-32
+}
diff --git a/libre/lib32-sdl-libre/fix_joystick_misc_axes.diff b/libre/lib32-sdl-libre/fix_joystick_misc_axes.diff
new file mode 100644
index 000000000..75e3755c9
--- /dev/null
+++ b/libre/lib32-sdl-libre/fix_joystick_misc_axes.diff
@@ -0,0 +1,13 @@
+diff --git a/src/joystick/linux/SDL_sysjoystick.c b/src/joystick/linux/SDL_sysjoystick.c
+index ee43974..80e46e4 100644
+--- a/src/joystick/linux/SDL_sysjoystick.c
++++ b/src/joystick/linux/SDL_sysjoystick.c
+@@ -702,7 +702,7 @@ static SDL_bool EV_ConfigJoystick(SDL_Joystick *joystick, int fd)
+ ++joystick->nbuttons;
+ }
+ }
+- for ( i=0; i<ABS_MISC; ++i ) {
++ for ( i=0; i<ABS_MAX; ++i ) {
+ /* Skip hats */
+ if ( i == ABS_HAT0X ) {
+ i = ABS_HAT3Y;
diff --git a/libre/lib32-sdl-libre/libre.patch b/libre/lib32-sdl-libre/libre.patch
new file mode 100644
index 000000000..72f7da56a
--- /dev/null
+++ b/libre/lib32-sdl-libre/libre.patch
@@ -0,0 +1,578 @@
+--- src/video/fbcon/riva_mmio.h 2012-01-19 04:30:06.000000000 -0200
++++ /dev/null 2012-04-01 13:58:27.776718756 -0300
+@@ -1,449 +0,0 @@
+-/***************************************************************************\
+-|* *|
+-|* Copyright 1993-1999 NVIDIA, Corporation. All rights reserved. *|
+-|* *|
+-|* NOTICE TO USER: The source code is copyrighted under U.S. and *|
+-|* international laws. Users and possessors of this source code are *|
+-|* hereby granted a nonexclusive, royalty-free copyright license to *|
+-|* use this code in individual and commercial software. *|
+-|* *|
+-|* Any use of this source code must include, in the user documenta- *|
+-|* tion and internal comments to the code, notices to the end user *|
+-|* as follows: *|
+-|* *|
+-|* Copyright 1993-1999 NVIDIA, Corporation. All rights reserved. *|
+-|* *|
+-|* NVIDIA, CORPORATION MAKES NO REPRESENTATION ABOUT THE SUITABILITY *|
+-|* OF THIS SOURCE CODE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" *|
+-|* WITHOUT EXPRESS OR IMPLIED WARRANTY OF ANY KIND. NVIDIA, CORPOR- *|
+-|* ATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOURCE CODE, *|
+-|* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGE- *|
+-|* MENT, AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL *|
+-|* NVIDIA, CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT, INCI- *|
+-|* DENTAL, OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RE- *|
+-|* SULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION *|
+-|* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF *|
+-|* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOURCE CODE. *|
+-|* *|
+-|* U.S. Government End Users. This source code is a "commercial *|
+-|* item," as that term is defined at 48 C.F.R. 2.101 (OCT 1995), *|
+-|* consisting of "commercial computer software" and "commercial *|
+-|* computer software documentation," as such terms are used in *|
+-|* 48 C.F.R. 12.212 (SEPT 1995) and is provided to the U.S. Govern- *|
+-|* ment only as a commercial end item. Consistent with 48 C.F.R. *|
+-|* 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (JUNE 1995), *|
+-|* all U.S. Government End Users acquire the source code with only *|
+-|* those rights set forth herein. *|
+-|* *|
+-\***************************************************************************/
+-
+-#ifndef __RIVA_HW_H__
+-#define __RIVA_HW_H__
+-#define RIVA_SW_VERSION 0x00010003
+-
+-/*
+- * Typedefs to force certain sized values.
+- */
+-typedef Uint8 U008;
+-typedef Uint16 U016;
+-typedef Uint32 U032;
+-
+-/*
+- * HW access macros.
+- */
+-#define NV_WR08(p,i,d) (((U008 *)(p))[i]=(d))
+-#define NV_RD08(p,i) (((U008 *)(p))[i])
+-#define NV_WR16(p,i,d) (((U016 *)(p))[(i)/2]=(d))
+-#define NV_RD16(p,i) (((U016 *)(p))[(i)/2])
+-#define NV_WR32(p,i,d) (((U032 *)(p))[(i)/4]=(d))
+-#define NV_RD32(p,i) (((U032 *)(p))[(i)/4])
+-#define VGA_WR08(p,i,d) NV_WR08(p,i,d)
+-#define VGA_RD08(p,i) NV_RD08(p,i)
+-
+-/*
+- * Define supported architectures.
+- */
+-#define NV_ARCH_03 0x03
+-#define NV_ARCH_04 0x04
+-#define NV_ARCH_10 0x10
+-/***************************************************************************\
+-* *
+-* FIFO registers. *
+-* *
+-\***************************************************************************/
+-
+-/*
+- * Raster OPeration. Windows style ROP3.
+- */
+-typedef volatile struct
+-{
+- U032 reserved00[4];
+- U016 FifoFree;
+- U016 Nop;
+- U032 reserved01[0x0BB];
+- U032 Rop3;
+-} RivaRop;
+-/*
+- * 8X8 Monochrome pattern.
+- */
+-typedef volatile struct
+-{
+- U032 reserved00[4];
+- U016 FifoFree;
+- U016 Nop;
+- U032 reserved01[0x0BD];
+- U032 Shape;
+- U032 reserved03[0x001];
+- U032 Color0;
+- U032 Color1;
+- U032 Monochrome[2];
+-} RivaPattern;
+-/*
+- * Scissor clip rectangle.
+- */
+-typedef volatile struct
+-{
+- U032 reserved00[4];
+- U016 FifoFree;
+- U016 Nop;
+- U032 reserved01[0x0BB];
+- U032 TopLeft;
+- U032 WidthHeight;
+-} RivaClip;
+-/*
+- * 2D filled rectangle.
+- */
+-typedef volatile struct
+-{
+- U032 reserved00[4];
+- U016 FifoFree;
+- U016 Nop[1];
+- U032 reserved01[0x0BC];
+- U032 Color;
+- U032 reserved03[0x03E];
+- U032 TopLeft;
+- U032 WidthHeight;
+-} RivaRectangle;
+-/*
+- * 2D screen-screen BLT.
+- */
+-typedef volatile struct
+-{
+- U032 reserved00[4];
+- U016 FifoFree;
+- U016 Nop;
+- U032 reserved01[0x0BB];
+- U032 TopLeftSrc;
+- U032 TopLeftDst;
+- U032 WidthHeight;
+-} RivaScreenBlt;
+-/*
+- * 2D pixel BLT.
+- */
+-typedef volatile struct
+-{
+- U032 reserved00[4];
+- U016 FifoFree;
+- U016 Nop[1];
+- U032 reserved01[0x0BC];
+- U032 TopLeft;
+- U032 WidthHeight;
+- U032 WidthHeightIn;
+- U032 reserved02[0x03C];
+- U032 Pixels;
+-} RivaPixmap;
+-/*
+- * Filled rectangle combined with monochrome expand. Useful for glyphs.
+- */
+-typedef volatile struct
+-{
+- U032 reserved00[4];
+- U016 FifoFree;
+- U016 Nop;
+- U032 reserved01[0x0BB];
+- U032 reserved03[(0x040)-1];
+- U032 Color1A;
+- struct
+- {
+- U032 TopLeft;
+- U032 WidthHeight;
+- } UnclippedRectangle[64];
+- U032 reserved04[(0x080)-3];
+- struct
+- {
+- U032 TopLeft;
+- U032 BottomRight;
+- } ClipB;
+- U032 Color1B;
+- struct
+- {
+- U032 TopLeft;
+- U032 BottomRight;
+- } ClippedRectangle[64];
+- U032 reserved05[(0x080)-5];
+- struct
+- {
+- U032 TopLeft;
+- U032 BottomRight;
+- } ClipC;
+- U032 Color1C;
+- U032 WidthHeightC;
+- U032 PointC;
+- U032 MonochromeData1C;
+- U032 reserved06[(0x080)+121];
+- struct
+- {
+- U032 TopLeft;
+- U032 BottomRight;
+- } ClipD;
+- U032 Color1D;
+- U032 WidthHeightInD;
+- U032 WidthHeightOutD;
+- U032 PointD;
+- U032 MonochromeData1D;
+- U032 reserved07[(0x080)+120];
+- struct
+- {
+- U032 TopLeft;
+- U032 BottomRight;
+- } ClipE;
+- U032 Color0E;
+- U032 Color1E;
+- U032 WidthHeightInE;
+- U032 WidthHeightOutE;
+- U032 PointE;
+- U032 MonochromeData01E;
+-} RivaBitmap;
+-/*
+- * 3D textured, Z buffered triangle.
+- */
+-typedef volatile struct
+-{
+- U032 reserved00[4];
+- U016 FifoFree;
+- U016 Nop;
+- U032 reserved01[0x0BC];
+- U032 TextureOffset;
+- U032 TextureFormat;
+- U032 TextureFilter;
+- U032 FogColor;
+-/* This is a problem on LynxOS */
+-#ifdef Control
+-#undef Control
+-#endif
+- U032 Control;
+- U032 AlphaTest;
+- U032 reserved02[0x339];
+- U032 FogAndIndex;
+- U032 Color;
+- float ScreenX;
+- float ScreenY;
+- float ScreenZ;
+- float EyeM;
+- float TextureS;
+- float TextureT;
+-} RivaTexturedTriangle03;
+-typedef volatile struct
+-{
+- U032 reserved00[4];
+- U016 FifoFree;
+- U016 Nop;
+- U032 reserved01[0x0BB];
+- U032 ColorKey;
+- U032 TextureOffset;
+- U032 TextureFormat;
+- U032 TextureFilter;
+- U032 Blend;
+-/* This is a problem on LynxOS */
+-#ifdef Control
+-#undef Control
+-#endif
+- U032 Control;
+- U032 FogColor;
+- U032 reserved02[0x39];
+- struct
+- {
+- float ScreenX;
+- float ScreenY;
+- float ScreenZ;
+- float EyeM;
+- U032 Color;
+- U032 Specular;
+- float TextureS;
+- float TextureT;
+- } Vertex[16];
+- U032 DrawTriangle3D;
+-} RivaTexturedTriangle05;
+-/*
+- * 2D line.
+- */
+-typedef volatile struct
+-{
+- U032 reserved00[4];
+- U016 FifoFree;
+- U016 Nop[1];
+- U032 reserved01[0x0BC];
+- U032 Color; /* source color 0304-0307*/
+- U032 Reserved02[0x03e];
+- struct { /* start aliased methods in array 0400- */
+- U032 point0; /* y_x S16_S16 in pixels 0- 3*/
+- U032 point1; /* y_x S16_S16 in pixels 4- 7*/
+- } Lin[16]; /* end of aliased methods in array -047f*/
+- struct { /* start aliased methods in array 0480- */
+- U032 point0X; /* in pixels, 0 at left 0- 3*/
+- U032 point0Y; /* in pixels, 0 at top 4- 7*/
+- U032 point1X; /* in pixels, 0 at left 8- b*/
+- U032 point1Y; /* in pixels, 0 at top c- f*/
+- } Lin32[8]; /* end of aliased methods in array -04ff*/
+- U032 PolyLin[32]; /* y_x S16_S16 in pixels 0500-057f*/
+- struct { /* start aliased methods in array 0580- */
+- U032 x; /* in pixels, 0 at left 0- 3*/
+- U032 y; /* in pixels, 0 at top 4- 7*/
+- } PolyLin32[16]; /* end of aliased methods in array -05ff*/
+- struct { /* start aliased methods in array 0600- */
+- U032 color; /* source color 0- 3*/
+- U032 point; /* y_x S16_S16 in pixels 4- 7*/
+- } ColorPolyLin[16]; /* end of aliased methods in array -067f*/
+-} RivaLine;
+-/*
+- * 2D/3D surfaces
+- */
+-typedef volatile struct
+-{
+- U032 reserved00[4];
+- U016 FifoFree;
+- U016 Nop;
+- U032 reserved01[0x0BE];
+- U032 Offset;
+-} RivaSurface;
+-typedef volatile struct
+-{
+- U032 reserved00[4];
+- U016 FifoFree;
+- U016 Nop;
+- U032 reserved01[0x0BD];
+- U032 Pitch;
+- U032 RenderBufferOffset;
+- U032 ZBufferOffset;
+-} RivaSurface3D;
+-
+-/***************************************************************************\
+-* *
+-* Virtualized RIVA H/W interface. *
+-* *
+-\***************************************************************************/
+-
+-struct _riva_hw_inst;
+-struct _riva_hw_state;
+-/*
+- * Virtialized chip interface. Makes RIVA 128 and TNT look alike.
+- */
+-typedef struct _riva_hw_inst
+-{
+- /*
+- * Chip specific settings.
+- */
+- U032 Architecture;
+- U032 Version;
+- U032 CrystalFreqKHz;
+- U032 RamAmountKBytes;
+- U032 MaxVClockFreqKHz;
+- U032 RamBandwidthKBytesPerSec;
+- U032 EnableIRQ;
+- U032 IO;
+- U032 VBlankBit;
+- U032 FifoFreeCount;
+- U032 FifoEmptyCount;
+- /*
+- * Non-FIFO registers.
+- */
+- volatile U032 *PCRTC;
+- volatile U032 *PRAMDAC;
+- volatile U032 *PFB;
+- volatile U032 *PFIFO;
+- volatile U032 *PGRAPH;
+- volatile U032 *PEXTDEV;
+- volatile U032 *PTIMER;
+- volatile U032 *PMC;
+- volatile U032 *PRAMIN;
+- volatile U032 *FIFO;
+- volatile U032 *CURSOR;
+- volatile U032 *CURSORPOS;
+- volatile U032 *VBLANKENABLE;
+- volatile U032 *VBLANK;
+- volatile U008 *PCIO;
+- volatile U008 *PVIO;
+- volatile U008 *PDIO;
+- /*
+- * Common chip functions.
+- */
+- int (*Busy)(struct _riva_hw_inst *);
+- void (*CalcStateExt)(struct _riva_hw_inst *,struct _riva_hw_state *,int,int,int,int,int,int,int,int,int,int,int,int,int);
+- void (*LoadStateExt)(struct _riva_hw_inst *,struct _riva_hw_state *);
+- void (*UnloadStateExt)(struct _riva_hw_inst *,struct _riva_hw_state *);
+- void (*SetStartAddress)(struct _riva_hw_inst *,U032);
+- void (*SetSurfaces2D)(struct _riva_hw_inst *,U032,U032);
+- void (*SetSurfaces3D)(struct _riva_hw_inst *,U032,U032);
+- int (*ShowHideCursor)(struct _riva_hw_inst *,int);
+- void (*LockUnlock)(struct _riva_hw_inst *, int);
+- /*
+- * Current extended mode settings.
+- */
+- struct _riva_hw_state *CurrentState;
+- /*
+- * FIFO registers.
+- */
+- RivaRop *Rop;
+- RivaPattern *Patt;
+- RivaClip *Clip;
+- RivaPixmap *Pixmap;
+- RivaScreenBlt *Blt;
+- RivaBitmap *Bitmap;
+- RivaLine *Line;
+- RivaTexturedTriangle03 *Tri03;
+- RivaTexturedTriangle05 *Tri05;
+-} RIVA_HW_INST;
+-/*
+- * Extended mode state information.
+- */
+-typedef struct _riva_hw_state
+-{
+- U032 bpp;
+- U032 width;
+- U032 height;
+- U032 repaint0;
+- U032 repaint1;
+- U032 screen;
+- U032 pixel;
+- U032 horiz;
+- U032 arbitration0;
+- U032 arbitration1;
+- U032 vpll;
+- U032 pllsel;
+- U032 general;
+- U032 config;
+- U032 cursor0;
+- U032 cursor1;
+- U032 cursor2;
+- U032 offset0;
+- U032 offset1;
+- U032 offset2;
+- U032 offset3;
+- U032 pitch0;
+- U032 pitch1;
+- U032 pitch2;
+- U032 pitch3;
+-} RIVA_HW_STATE;
+-
+-/*
+- * FIFO Free Count. Should attempt to yield processor if RIVA is busy.
+- */
+-
+-#define RIVA_FIFO_FREE(hwptr,cnt) \
+-{ \
+- while (FifoFreeCount < (cnt)) \
+- FifoFreeCount = hwptr->FifoFree >> 2; \
+- FifoFreeCount -= (cnt); \
+-}
+-#endif /* __RIVA_HW_H__ */
+-
+--- src/video/fbcon/SDL_fbriva.c 2012-01-19 04:30:06.000000000 -0200
++++ src/video/fbcon/SDL_fbriva.c 2012-04-01 15:10:10.108451467 -0300
+@@ -24,12 +24,10 @@
+ #include "SDL_video.h"
+ #include "../SDL_blit.h"
+ #include "SDL_fbriva.h"
+-#include "riva_mmio.h"
+ #include "riva_regs.h"
+
+
+ static int FifoEmptyCount = 0;
+-static int FifoFreeCount = 0;
+
+ /* Wait for vertical retrace */
+ static void WaitVBL(_THIS)
+@@ -41,20 +39,6 @@
+ while ( !(*port & 0x08) )
+ ;
+ }
+-static void NV3WaitIdle(_THIS)
+-{
+- RivaRop *Rop = (RivaRop *)(mapped_io + ROP_OFFSET);
+- while ( (Rop->FifoFree < FifoEmptyCount) ||
+- (*(mapped_io + PGRAPH_OFFSET + 0x000006B0) & 0x01) )
+- ;
+-}
+-static void NV4WaitIdle(_THIS)
+-{
+- RivaRop *Rop = (RivaRop *)(mapped_io + ROP_OFFSET);
+- while ( (Rop->FifoFree < FifoEmptyCount) ||
+- (*(mapped_io + PGRAPH_OFFSET + 0x00000700) & 0x01) )
+- ;
+-}
+
+ #if 0 /* Not yet implemented? */
+ /* Sets video mem colorkey and accelerated blit function */
+@@ -74,7 +58,6 @@
+ {
+ int dstX, dstY;
+ int dstW, dstH;
+- RivaBitmap *Bitmap = (RivaBitmap *)(mapped_io + BITMAP_OFFSET);
+
+ /* Don't blit to the display surface when switched away */
+ if ( switched_away ) {
+@@ -93,13 +76,6 @@
+ dstX += rect->x;
+ dstY += rect->y;
+
+- RIVA_FIFO_FREE(Bitmap, 1);
+- Bitmap->Color1A = color;
+-
+- RIVA_FIFO_FREE(Bitmap, 2);
+- Bitmap->UnclippedRectangle[0].TopLeft = (dstX << 16) | dstY;
+- Bitmap->UnclippedRectangle[0].WidthHeight = (dstW << 16) | dstH;
+-
+ FB_AddBusySurface(dst);
+
+ if ( dst == this->screen ) {
+@@ -115,7 +91,6 @@
+ int srcX, srcY;
+ int dstX, dstY;
+ int dstW, dstH;
+- RivaScreenBlt *Blt = (RivaScreenBlt *)(mapped_io + BLT_OFFSET);
+
+ /* FIXME: For now, only blit to display surface */
+ if ( dst->pitch != SDL_VideoSurface->pitch ) {
+@@ -142,11 +117,6 @@
+ dstX += dstrect->x;
+ dstY += dstrect->y;
+
+- RIVA_FIFO_FREE(Blt, 3);
+- Blt->TopLeftSrc = (srcY << 16) | srcX;
+- Blt->TopLeftDst = (dstY << 16) | dstX;
+- Blt->WidthHeight = (dstH << 16) | dstW;
+-
+ FB_AddBusySurface(src);
+ FB_AddBusySurface(dst);
+
+@@ -185,23 +155,15 @@
+
+ void FB_RivaAccel(_THIS, __u32 card)
+ {
+- RivaRop *Rop = (RivaRop *)(mapped_io + ROP_OFFSET);
+
+ /* We have hardware accelerated surface functions */
+ this->CheckHWBlit = CheckHWBlit;
+ wait_vbl = WaitVBL;
+ switch (card) {
+- case FB_ACCEL_NV3:
+- wait_idle = NV3WaitIdle;
+- break;
+- case FB_ACCEL_NV4:
+- wait_idle = NV4WaitIdle;
+- break;
+ default:
+ /* Hmm... FIXME */
+ break;
+ }
+- FifoEmptyCount = Rop->FifoFree;
+
+ /* The Riva has an accelerated color fill */
+ this->info.blit_fill = 1;
+--- src/video/fbcon/SDL_fbvideo.c.orig 2011-09-08 17:30:03.670583685 +0200
++++ src/video/fbcon/SDL_fbvideo.c 2011-09-08 17:30:24.230582737 +0200
+@@ -46,7 +46,6 @@
+ #include "SDL_fbevents_c.h"
+ #include "SDL_fb3dfx.h"
+ #include "SDL_fbmatrox.h"
+-#include "SDL_fbriva.h"
+
+ /*#define FBCON_DEBUG*/
+
+@@ -769,13 +768,6 @@
+ #endif
+ FB_3DfxAccel(this, finfo.accel);
+ break;
+- case FB_ACCEL_NV3:
+- case FB_ACCEL_NV4:
+-#ifdef FBACCEL_DEBUG
+- printf("NVidia hardware accelerator!\n");
+-#endif
+- FB_RivaAccel(this, finfo.accel);
+- break;
+ default:
+ #ifdef FBACCEL_DEBUG
+ printf("Unknown hardware accelerator.\n");
diff --git a/libre/lib32-sdl-libre/libsdl-1.2.15-resizing.patch b/libre/lib32-sdl-libre/libsdl-1.2.15-resizing.patch
new file mode 100644
index 000000000..0655a13e1
--- /dev/null
+++ b/libre/lib32-sdl-libre/libsdl-1.2.15-resizing.patch
@@ -0,0 +1,63 @@
+Description: Revert change that breaks window corner resizing
+ http://bugzilla.libsdl.org/show_bug.cgi?id=1430
+Author: Andrew Caudwell <acaudwell@gmail.com>
+Last-Update: 2012-04-10
+Bug-Debian: http://bugs.debian.org/665779
+
+diff -r c787fb1b5699 src/video/x11/SDL_x11events.c
+--- a/src/video/x11/SDL_x11events.c Mon Feb 20 23:51:08 2012 -0500
++++ b/src/video/x11/SDL_x11events.c Mon Mar 26 12:26:52 2012 +1300
+@@ -57,12 +57,6 @@
+ static SDLKey MISC_keymap[256];
+ SDLKey X11_TranslateKeycode(Display *display, KeyCode kc);
+
+-/*
+- Pending resize target for ConfigureNotify (so outdated events don't
+- cause inappropriate resize events)
+-*/
+-int X11_PendingConfigureNotifyWidth = -1;
+-int X11_PendingConfigureNotifyHeight = -1;
+
+ #ifdef X_HAVE_UTF8_STRING
+ Uint32 Utf8ToUcs4(const Uint8 *utf8)
+@@ -825,16 +819,6 @@
+ #ifdef DEBUG_XEVENTS
+ printf("ConfigureNotify! (resize: %dx%d)\n", xevent.xconfigure.width, xevent.xconfigure.height);
+ #endif
+- if ((X11_PendingConfigureNotifyWidth != -1) &&
+- (X11_PendingConfigureNotifyHeight != -1)) {
+- if ((xevent.xconfigure.width != X11_PendingConfigureNotifyWidth) &&
+- (xevent.xconfigure.height != X11_PendingConfigureNotifyHeight)) {
+- /* Event is from before the resize, so ignore. */
+- break;
+- }
+- X11_PendingConfigureNotifyWidth = -1;
+- X11_PendingConfigureNotifyHeight = -1;
+- }
+ if ( SDL_VideoSurface ) {
+ if ((xevent.xconfigure.width != SDL_VideoSurface->w) ||
+ (xevent.xconfigure.height != SDL_VideoSurface->h)) {
+diff -r c787fb1b5699 src/video/x11/SDL_x11events_c.h
+--- a/src/video/x11/SDL_x11events_c.h Mon Feb 20 23:51:08 2012 -0500
++++ b/src/video/x11/SDL_x11events_c.h Mon Mar 26 12:26:52 2012 +1300
+@@ -27,8 +27,3 @@
+ extern void X11_InitOSKeymap(_THIS);
+ extern void X11_PumpEvents(_THIS);
+ extern void X11_SetKeyboardState(Display *display, const char *key_vec);
+-
+-/* Variables to be exported */
+-extern int X11_PendingConfigureNotifyWidth;
+-extern int X11_PendingConfigureNotifyHeight;
+-
+diff -r c787fb1b5699 src/video/x11/SDL_x11video.c
+--- a/src/video/x11/SDL_x11video.c Mon Feb 20 23:51:08 2012 -0500
++++ b/src/video/x11/SDL_x11video.c Mon Mar 26 12:26:52 2012 +1300
+@@ -1182,8 +1182,6 @@
+ current = NULL;
+ goto done;
+ }
+- X11_PendingConfigureNotifyWidth = width;
+- X11_PendingConfigureNotifyHeight = height;
+ } else {
+ if (X11_CreateWindow(this,current,width,height,bpp,flags) < 0) {
+ current = NULL;
diff --git a/libre/lib32-sdl-libre/sdl-1.2.14-disable-mmx.patch b/libre/lib32-sdl-libre/sdl-1.2.14-disable-mmx.patch
new file mode 100644
index 000000000..1bb6e0e47
--- /dev/null
+++ b/libre/lib32-sdl-libre/sdl-1.2.14-disable-mmx.patch
@@ -0,0 +1,13 @@
+# and another one from FS#26020
+
+--- a/src/video/SDL_yuv_sw.c 2009-10-13 06:07:15.000000000 +0700
++++ b/src/video/SDL_yuv_sw.c 2011-09-20 19:26:30.247742620 +0700
+@@ -89,6 +89,8 @@
+ #include "SDL_yuvfuncs.h"
+ #include "SDL_yuv_sw_c.h"
+
++#undef __OPTIMIZE__
++
+ /* The functions used to manipulate software video overlays */
+ static struct private_yuvhwfuncs sw_yuvfuncs = {
+ SDL_LockYUV_SW,
diff --git a/libre/lib32-sdl-libre/sdl-1.2.14-fix-mouse-clicking.patch b/libre/lib32-sdl-libre/sdl-1.2.14-fix-mouse-clicking.patch
new file mode 100644
index 000000000..7d3e5acfc
--- /dev/null
+++ b/libre/lib32-sdl-libre/sdl-1.2.14-fix-mouse-clicking.patch
@@ -0,0 +1,23 @@
+--- SDL-1.2.14/src/video/x11/SDL_x11events.c.orig 2010-04-08 11:57:05.003169834 -0700
++++ SDL-1.2.14/src/video/x11/SDL_x11events.c 2010-04-08 12:33:51.690926340 -0700
+@@ -423,12 +423,15 @@
+ if ( xevent.xcrossing.mode == NotifyUngrab )
+ printf("Mode: NotifyUngrab\n");
+ #endif
+- if ( this->input_grab == SDL_GRAB_OFF ) {
+- posted = SDL_PrivateAppActive(1, SDL_APPMOUSEFOCUS);
++ if ( (xevent.xcrossing.mode != NotifyGrab) &&
++ (xevent.xcrossing.mode != NotifyUngrab) ) {
++ if ( this->input_grab == SDL_GRAB_OFF ) {
++ posted = SDL_PrivateAppActive(1, SDL_APPMOUSEFOCUS);
++ }
++ posted = SDL_PrivateMouseMotion(0, 0,
++ xevent.xcrossing.x,
++ xevent.xcrossing.y);
+ }
+- posted = SDL_PrivateMouseMotion(0, 0,
+- xevent.xcrossing.x,
+- xevent.xcrossing.y);
+ }
+ break;
+
diff --git a/libre/sdl-libre/PKGBUILD b/libre/sdl-libre/PKGBUILD
index c4eabb9db..9822d5df7 100755
--- a/libre/sdl-libre/PKGBUILD
+++ b/libre/sdl-libre/PKGBUILD
@@ -1,4 +1,4 @@
-# $Id: PKGBUILD 165847 2012-09-01 12:22:15Z heftig $
+# $Id: PKGBUILD 166672 2012-09-15 09:39:11Z heftig $
# Maintainer: Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
# Contributor: Allan McRae <allan@archlinux.org>
# Contributor: dorphell <dorphell@archlinux.org>
@@ -8,7 +8,7 @@
pkgname=sdl-libre
pkgver=1.2.15
-pkgrel=2
+pkgrel=3
pkgdesc="A library for portable low-level access to a video framebuffer, audio output, mouse, and keyboard"
arch=('i686' 'x86_64')
url="http://www.libsdl.org"
@@ -18,16 +18,20 @@ conflicts=('sdl')
replaces=('sdl')
depends=('glibc' 'libxext' 'libxrender' 'libx11')
makedepends=('alsa-lib' 'mesa' 'libpulse')
+optdepends=('alsa-lib: ALSA audio driver'
+ 'libpulse: PulseAudio audio driver')
options=('!libtool')
source=(http://www.libsdl.org/release/SDL-${pkgver}.tar.gz
sdl-1.2.14-fix-mouse-clicking.patch
sdl-1.2.14-disable-mmx.patch
fix_joystick_misc_axes.diff
+ libsdl-1.2.15-resizing.patch
libre.patch)
md5sums=('9d96df8417572a2afb781a7c4c811a85'
'04d8c179f125e04bcd4c9d60e013c2d7'
'e5c16b7611f62c7cb25f0534eff68852'
'687586a108b597a2a6b73070c1d37e51'
+ '3dd50347d8856160a9cbd7f80383a1f8'
'5c665f72b8a2adc97a91f6db6f2da79a')
build() {
@@ -35,8 +39,9 @@ build() {
patch -Np1 -i ../sdl-1.2.14-fix-mouse-clicking.patch
patch -Np1 -i ../sdl-1.2.14-disable-mmx.patch
patch -Np1 -i ../fix_joystick_misc_axes.diff
+ patch -Np1 -i ../libsdl-1.2.15-resizing.patch
patch -Np0 -i ../libre.patch
- ./configure --prefix=/usr --disable-nasm --enable-alsa --enable-esd \
+ ./configure --prefix=/usr --disable-nasm --enable-alsa \
--with-x --disable-rpath --disable-static
make
}
diff --git a/libre/sdl-libre/libsdl-1.2.15-resizing.patch b/libre/sdl-libre/libsdl-1.2.15-resizing.patch
new file mode 100644
index 000000000..0655a13e1
--- /dev/null
+++ b/libre/sdl-libre/libsdl-1.2.15-resizing.patch
@@ -0,0 +1,63 @@
+Description: Revert change that breaks window corner resizing
+ http://bugzilla.libsdl.org/show_bug.cgi?id=1430
+Author: Andrew Caudwell <acaudwell@gmail.com>
+Last-Update: 2012-04-10
+Bug-Debian: http://bugs.debian.org/665779
+
+diff -r c787fb1b5699 src/video/x11/SDL_x11events.c
+--- a/src/video/x11/SDL_x11events.c Mon Feb 20 23:51:08 2012 -0500
++++ b/src/video/x11/SDL_x11events.c Mon Mar 26 12:26:52 2012 +1300
+@@ -57,12 +57,6 @@
+ static SDLKey MISC_keymap[256];
+ SDLKey X11_TranslateKeycode(Display *display, KeyCode kc);
+
+-/*
+- Pending resize target for ConfigureNotify (so outdated events don't
+- cause inappropriate resize events)
+-*/
+-int X11_PendingConfigureNotifyWidth = -1;
+-int X11_PendingConfigureNotifyHeight = -1;
+
+ #ifdef X_HAVE_UTF8_STRING
+ Uint32 Utf8ToUcs4(const Uint8 *utf8)
+@@ -825,16 +819,6 @@
+ #ifdef DEBUG_XEVENTS
+ printf("ConfigureNotify! (resize: %dx%d)\n", xevent.xconfigure.width, xevent.xconfigure.height);
+ #endif
+- if ((X11_PendingConfigureNotifyWidth != -1) &&
+- (X11_PendingConfigureNotifyHeight != -1)) {
+- if ((xevent.xconfigure.width != X11_PendingConfigureNotifyWidth) &&
+- (xevent.xconfigure.height != X11_PendingConfigureNotifyHeight)) {
+- /* Event is from before the resize, so ignore. */
+- break;
+- }
+- X11_PendingConfigureNotifyWidth = -1;
+- X11_PendingConfigureNotifyHeight = -1;
+- }
+ if ( SDL_VideoSurface ) {
+ if ((xevent.xconfigure.width != SDL_VideoSurface->w) ||
+ (xevent.xconfigure.height != SDL_VideoSurface->h)) {
+diff -r c787fb1b5699 src/video/x11/SDL_x11events_c.h
+--- a/src/video/x11/SDL_x11events_c.h Mon Feb 20 23:51:08 2012 -0500
++++ b/src/video/x11/SDL_x11events_c.h Mon Mar 26 12:26:52 2012 +1300
+@@ -27,8 +27,3 @@
+ extern void X11_InitOSKeymap(_THIS);
+ extern void X11_PumpEvents(_THIS);
+ extern void X11_SetKeyboardState(Display *display, const char *key_vec);
+-
+-/* Variables to be exported */
+-extern int X11_PendingConfigureNotifyWidth;
+-extern int X11_PendingConfigureNotifyHeight;
+-
+diff -r c787fb1b5699 src/video/x11/SDL_x11video.c
+--- a/src/video/x11/SDL_x11video.c Mon Feb 20 23:51:08 2012 -0500
++++ b/src/video/x11/SDL_x11video.c Mon Mar 26 12:26:52 2012 +1300
+@@ -1182,8 +1182,6 @@
+ current = NULL;
+ goto done;
+ }
+- X11_PendingConfigureNotifyWidth = width;
+- X11_PendingConfigureNotifyHeight = height;
+ } else {
+ if (X11_CreateWindow(this,current,width,height,bpp,flags) < 0) {
+ current = NULL;
diff --git a/libre/virtualbox-libre/60-vboxguest.rules b/libre/virtualbox-libre/60-vboxguest.rules
new file mode 100644
index 000000000..6285f7249
--- /dev/null
+++ b/libre/virtualbox-libre/60-vboxguest.rules
@@ -0,0 +1,2 @@
+ACTION=="add", KERNEL=="vboxguest", SUBSYSTEM=="misc", OWNER="root", MODE="0600"
+ACTION=="add", KERNEL=="vboxuser", SUBSYSTEM=="misc", OWNER="root", MODE="0666"
diff --git a/libre/virtualbox-libre/PKGBUILD b/libre/virtualbox-libre/PKGBUILD
index 27e15f01f..7dbb749d7 100755
--- a/libre/virtualbox-libre/PKGBUILD
+++ b/libre/virtualbox-libre/PKGBUILD
@@ -10,36 +10,88 @@ pkgbase=virtualbox-libre
pkgname=('virtualbox-libre'
'virtualbox-libre-sdk'
'virtualbox-libre-host-source'
- 'virtualbox-libre-guest-additions'
+ 'virtualbox-libre-guest-utils'
'virtualbox-libre-guest-source')
pkgver=4.2.0
-pkgrel=2
+pkgrel=3
arch=('i686' 'x86_64')
url='http://virtualbox.org'
license=('GPL' 'custom')
-makedepends=('libstdc++5' 'bin86' 'dev86' 'iasl' 'libxslt' 'libxml2' 'libxcursor' 'qt' 'libidl2' 'sdl_ttf' 'alsa-lib' 'libpulse' 'libxtst'
-'xalan-c' 'sdl-libre' 'libxmu' 'curl' 'python2' 'linux-libre-headers' 'mesa' 'libxrandr' 'libxinerama' 'libvncserver' 'jdk7-openjdk' 'gsoap' 'vde2' 'cdrkit')
-#'xorg-server-devel' 'xf86driproto' 'libxcomposite')
+makedepends=('alsa-lib'
+ 'bin86'
+ 'cdrkit-libre'
+ 'curl'
+ 'dev86'
+ 'gsoap'
+ 'iasl'
+ 'jdk7-openjdk'
+ 'libidl2'
+ 'libpulse'
+ 'libstdc++5'
+ 'libvncserver'
+ 'libxcursor'
+ 'libxinerama'
+ 'libxml2'
+ 'libxmu'
+ 'libxrandr'
+ 'libxslt'
+ 'libxtst'
+ 'linux-libre-headers'
+ 'mesa'
+ 'python2'
+ 'qt'
+ 'sdl-libre'
+ 'sdl_ttf'
+ 'vde2'
+ 'xalan-c')
[[ $CARCH == "x86_64" ]] && makedepends=("${makedepends[@]}" 'gcc-multilib' 'lib32-glibc')
-source=(http://download.virtualbox.org/virtualbox/${pkgver}/VirtualBox-${pkgver}.tar.bz2
- 10-vboxdrv.rules vboxdrv-reference.patch LocalConfig.kmk
- change_default_driver_dir.patch vboxservice.conf vboxservice.rc vboxservice.service
- vboxweb.conf vboxweb.rc vboxweb.service os_blag_64.png os_blag.png os_dragora_64.png
- os_dragora.png os_dynebolic.png os_gnewsense_64.png os_gnewsense.png os_gnu_64.png
- os_gnuhurd.png os_gnulinux_64.png os_gnulinux.png os_gnu.png os_musix_64.png
- os_musix.png os_parabola_64.png os_parabola.png os_trisquel_64.png os_trisquel.png
- os_ututo_64.png os_ututo.png os_venenux.png libre.patch free-distros.patch)
+source=("http://download.virtualbox.org/virtualbox/$pkgver/VirtualBox-$pkgver.tar.bz2"
+ '10-vboxdrv.rules'
+ '60-vboxguest.rules'
+ 'LocalConfig.kmk'
+ 'vboxservice.conf'
+ 'vboxservice.rc'
+ 'vboxservice.service'
+ 'vboxweb.conf'
+ 'vboxweb.rc'
+ 'vboxweb.service'
+ 'change_default_driver_dir.patch'
+ 'vboxdrv-reference.patch'
+ 'os_blag_64.png'
+ 'os_blag.png'
+ 'os_dragora_64.png'
+ 'os_dragora.png'
+ 'os_dynebolic.png'
+ 'os_gnewsense_64.png'
+ 'os_gnewsense.png'
+ 'os_gnu_64.png'
+ 'os_gnuhurd.png'
+ 'os_gnulinux_64.png'
+ 'os_gnulinux.png'
+ 'os_gnu.png'
+ 'os_musix_64.png'
+ 'os_musix.png'
+ 'os_parabola_64.png'
+ 'os_parabola.png'
+ 'os_trisquel_64.png'
+ 'os_trisquel.png'
+ 'os_ututo_64.png'
+ 'os_ututo.png'
+ 'os_venenux.png'
+ 'libre.patch'
+ 'free-distros.patch')
md5sums=('691b4134983ce7d89b9fb683305cb647'
'5f85710e0b8606de967716ded7b2d351'
- 'aa0c090e33aab3e2853b679cc52cba2a'
+ 'ed1341881437455d9735875ddf455fbe'
'58d6e5bb4b4c1c6f3f0b3daa6aaeed03'
- '97e193f050574dd272a38e5ee5ebe62b'
'3c08ad30b89add47d3f45121200a5360'
'7d9823507206de9b8528a72af2f18d74'
'07c5f6d86c4b7839d719c8ee0c53653b'
'7e9483b1069a54f181546083ac7e5469'
'c159d683ba1947290fc2ad2c64194150'
'bc9efed88e0469cd7fc460d5a5cd7b4b'
+ '97e193f050574dd272a38e5ee5ebe62b'
+ '4f1692638d6740df4c4ad9766ba4e179'
'8538dba8686d7449cb481c9bae9d722a'
'545c925b46f2ac95e5f8ae407fad101a'
'f6416f509c2e5460e4dc624e0a57f3c1'
@@ -64,8 +116,8 @@ md5sums=('691b4134983ce7d89b9fb683305cb647'
'67cc4c8611890038eb3e4114ae899525'
'71df5e3eebe07e683782b264dadf65e7')
-_extramodules=extramodules-3.5-LIBRE
-_kernver="$(cat /usr/lib/modules/${_extramodules}/version)" || true
+#_extramodules=extramodules-3.5-LIBRE
+#_kernver="$(cat /usr/lib/modules/${_extramodules}/version)" || true
build() {
cd "VirtualBox-$pkgver"
@@ -104,7 +156,8 @@ build() {
--enable-webservice \
--enable-vde \
--enable-vnc \
- --with-linux=/usr/src/linux-${_kernver}
+ --disable-kmods
+# --with-linux=/usr/src/linux-${_kernver}
source ./env.sh
kmk all
sed -i 's_^#!.*/usr/bin/python_#!/usr/bin/python2_' "out/linux.$BUILD_PLATFORM_ARCH/release/bin/vboxshell.py"
@@ -115,14 +168,13 @@ build() {
}
package_virtualbox-libre() {
- pkgdesc="Powerful x86 virtualization for enterprise as well as home use (without non-free distros and others OS presets for the VM creation wizard; Oracle VM VirtualBox Extension Pack support removed)"
+ pkgdesc='Powerful x86 virtualization for enterprise as well as home use (without non-free distros and others OS presets for the VM creation wizard; Oracle VM VirtualBox Extension Pack support removed)'
depends=('virtualbox-libre-host-modules' 'libxml2' 'libxcursor' 'libxinerama' 'sdl-libre' 'libxmu' 'curl' 'libvncserver' 'libpng')
- optdepends=('qt: for VirtualBox GUI'
+ optdepends=('qt: VirtualBox GUI support'
'vde2: Virtual Distributed Ethernet support'
- 'virtualbox-libre-sdk: developer kit'
- 'virtualbox-libre-host-source: host kernel libre source modules for non-stock kernels'
- 'net-tools: for host-only or bridged networking')
-
+ 'virtualbox-libre-sdk: Developer kit'
+ 'virtualbox-libre-host-source: Host kernel libre source modules for non-stock kernels'
+ 'net-tools: Host-only or bridged networking support')
backup=('etc/vbox/vbox.cfg' 'etc/conf.d/vboxweb')
replaces=('virtualbox' 'virtualbox-ose')
conflicts=('virtualbox' 'virtualbox-ose')
@@ -184,7 +236,7 @@ package_virtualbox-libre() {
echo 'INSTALL_DIR=/usr/lib/virtualbox' > "$pkgdir/etc/vbox/vbox.cfg"
#udev and licence
- install -D -m 0644 "$srcdir/VirtualBox-${pkgver}/COPYING" \
+ install -D -m 0644 "$srcdir/VirtualBox-$pkgver/COPYING" \
"$pkgdir/usr/share/licenses/virtualbox/LICENSE"
install -D -m 0644 "$srcdir/10-vboxdrv.rules" \
"$pkgdir/usr/lib/udev/rules.d/10-vboxdrv.rules"
@@ -214,14 +266,14 @@ package_virtualbox-libre-sdk() {
install -D -m 0755 vboxshell.py "$pkgdir/usr/lib/virtualbox/vboxshell.py"
#python sdk
pushd sdk/installer
- VBOX_INSTALL_PATH="/usr/lib/virtualbox" python2 vboxapisetup.py install --root "${pkgdir}"
+ VBOX_INSTALL_PATH="/usr/lib/virtualbox" python2 vboxapisetup.py install --root "$pkgdir"
popd
rm -rf sdk/installer
mv sdk "$pkgdir/usr/lib/virtualbox"
}
package_virtualbox-libre-host-source() {
- pkgdesc='VirtualBox kernel libre modules source'
+ pkgdesc='VirtualBox Host kernel libre modules source'
depends=('dkms' 'gcc' 'make')
provides=("virtualbox-host-source=$pkgver" 'virtualbox-libre-host-modules')
replaces=('virtualbox-host-source' 'virtualbox-source' 'virtualbox-libre-source')
@@ -237,9 +289,9 @@ package_virtualbox-libre-host-source() {
}
package_virtualbox-libre-guest-source() {
- pkgdesc='VirtualBox Additions kernel libre modules source'
+ pkgdesc='VirtualBox Guest kernel libre modules source'
depends=('dkms' 'gcc' 'make')
- provides=("virtualbox-guest-source=${pkgver}" 'virtualbox-libre-guest-modules')
+ provides=("virtualbox-guest-source=$pkgver" 'virtualbox-libre-guest-modules')
replaces=('virtualbox-guest-source' 'virtualbox-archlinux-source' 'virtualbox-parabola-source')
conflicts=('virtualbox-guest-source' 'virtualbox-archlinux-source' 'virtualbox-parabola-source')
optdepends=('linux-libre-headers'
@@ -252,23 +304,21 @@ package_virtualbox-libre-guest-source() {
cp -r src "$pkgdir/usr/src/vboxguest-$pkgver"
}
-package_virtualbox-libre-guest-additions(){
- pkgdesc='Additions for guests only (userspace tools)'
+package_virtualbox-libre-guest-utils(){
+ pkgdesc='VirtualBox Guest userspace utilities'
depends=('virtualbox-libre-guest-modules' 'gcc-libs' 'libxmu' 'xorg-xrandr' 'libxfixes')
- provides=("virtualbox-guest-additions=${pkgver}")
- replaces=('virtualbox-guest-additions' 'virtualbox-archlinux-additions' 'virtualbox-parabola-additions')
- conflicts=('virtualbox-guest-additions' 'virtualbox-archlinux-additions' 'virtualbox-parabola-additions')
+ optdepends=('virtualbox-guest-source: Guest kernel libre source modules for non-stock kernels')
+ provides=("virtualbox-guest-utils=$pkgver")
+ replaces=('virtualbox-guest-utils' 'virtualbox-archlinux-additions' 'virtualbox-parabola-additions' 'virtualbox-guest-additions' 'virtualbox-libre-guest-additions')
+ conflicts=('virtualbox-guest-utils' 'virtualbox-archlinux-additions' 'virtualbox-parabola-additions' 'virtualbox-guest-additions' 'virtualbox-libre-guest-additions')
backup=('etc/conf.d/vboxservice')
- install=virtualbox-libre-guest-additions.install
+ install=virtualbox-libre-guest-utils.install
source "VirtualBox-$pkgver/env.sh"
-
- cd "VirtualBox-$pkgver/out/linux.$BUILD_PLATFORM_ARCH/release/bin/additions"
-
+ pushd "VirtualBox-$pkgver/out/linux.$BUILD_PLATFORM_ARCH/release/bin/additions"
install -d "$pkgdir"/{usr/bin,sbin}
install -m755 VBoxClient VBoxControl VBoxService "$pkgdir/usr/bin"
install -m755 mount.vboxsf "$pkgdir/sbin"
-
install -m755 -D "$srcdir"/VirtualBox-$pkgver/src/VBox/Additions/x11/Installer/98vboxadd-xclient \
"$pkgdir"/usr/bin/VBoxClient-all
install -m755 -D "$srcdir"/VirtualBox-$pkgver/src/VBox/Additions/x11/Installer/vboxclient.desktop \
@@ -279,14 +329,15 @@ package_virtualbox-libre-guest-additions(){
install -m755 VBoxOGL*.so "$pkgdir/usr/lib"
ln -s /usr/lib/VBoxOGL.so "$pkgdir/usr/lib/xorg/modules/dri/vboxvideo_dri.so"
install -m755 -D pam_vbox.so "$pkgdir/usr/lib/security/pam_vbox.so"
-
+ popd
+ # install udev rules
+ install -D -m 0644 60-vboxguest.rules \
+ "$pkgdir/usr/lib/udev/rules.d/60-vboxguest.rules"
# install rc.d script
- install -D -m755 "$srcdir/vboxservice.rc" "$pkgdir/etc/rc.d/vboxservice"
-
+ install -D -m755 vboxservice.rc "$pkgdir/etc/rc.d/vboxservice"
# install sample config
- install -D -m644 "$srcdir/vboxservice.conf" "$pkgdir/etc/conf.d/vboxservice"
-
+ install -D -m644 vboxservice.conf "$pkgdir/etc/conf.d/vboxservice"
# install systemd service file
- install -D -m644 "$srcdir/vboxservice.service" \
+ install -D -m644 vboxservice.service \
"$pkgdir/usr/lib/systemd/system/vboxservice.service"
}
diff --git a/libre/virtualbox-libre/vboxdrv-reference.patch b/libre/virtualbox-libre/vboxdrv-reference.patch
index 4703da68d..51fd6361c 100755..100644
--- a/libre/virtualbox-libre/vboxdrv-reference.patch
+++ b/libre/virtualbox-libre/vboxdrv-reference.patch
@@ -20,7 +20,7 @@ diff -Nur VirtualBox-4.1.6_OSE.orig/src/VBox/Frontends/VirtualBox/src/main.cpp V
- "DKMS package first. This package keeps track of Linux kernel changes and "
- "recompiles the vboxdrv kernel module if necessary."
+ "libre module by executing<br/><br/>"
-+ " <font color=blue>'pacman -S virtualbox-libre-modules'</font><br/><br/>"
++ " <font color=blue>'pacman -S virtualbox-libre-host-modules'</font><br/><br/>"
+ "as root. If you don't use our stock kernel libre, install virtualbox-libre-host-source and "
+ "execute dkms autoinstall ."
);
@@ -81,7 +81,7 @@ diff -Nur VirtualBox-4.1.6_OSE.orig/src/VBox/Installer/linux/VBox.sh VirtualBox-
- load. Please recompile the kernel module and install it by
+WARNING: The vboxdrv kernel libre module is not loaded. Either there is no module
+ available for the current kernel libre (`uname -r`) or it failed to
-+ load. Please reinstall the kernel libre module virtualbox-libre-modules or
++ load. Please reinstall the kernel libre module virtualbox-libre-host-modules or
+ if you don't use our stock kernel libre compile the modules with
- sudo /etc/init.d/vboxdrv setup
diff --git a/libre/virtualbox-libre/virtualbox-libre-guest-source.install b/libre/virtualbox-libre/virtualbox-libre-guest-source.install
index 966fb5681..2d62eae43 100755
--- a/libre/virtualbox-libre/virtualbox-libre-guest-source.install
+++ b/libre/virtualbox-libre/virtualbox-libre-guest-source.install
@@ -2,6 +2,7 @@
# arg 1: the new package version
post_install() {
+ dkms add vboxguest/${1%-*}
cat << EOF
==> To build and install your modules run dkms install vboxguest/${1%-*}
==> To do this automatically at startup you can add dkms in your DAEMONS
diff --git a/libre/virtualbox-libre/virtualbox-libre-guest-additions.install b/libre/virtualbox-libre/virtualbox-libre-guest-utils.install
index 38bbe807d..38bbe807d 100755
--- a/libre/virtualbox-libre/virtualbox-libre-guest-additions.install
+++ b/libre/virtualbox-libre/virtualbox-libre-guest-utils.install
diff --git a/libre/virtualbox-libre/virtualbox-libre-host-source.install b/libre/virtualbox-libre/virtualbox-libre-host-source.install
index 6a3994c8d..8028cb7e0 100755
--- a/libre/virtualbox-libre/virtualbox-libre-host-source.install
+++ b/libre/virtualbox-libre/virtualbox-libre-host-source.install
@@ -2,6 +2,7 @@
# arg 1: the new package version
post_install() {
+ dkms add vboxhost/${1%-*}
cat << EOF
==> To build and install your modules run dkms install vboxhost/${1%-*}
==> To do this automatically at startup you can add dkms in your DAEMONS
diff --git a/pcr/ffmpeg-static/PKGBUILD b/pcr/ffmpeg-static/PKGBUILD
new file mode 100644
index 000000000..592c4a7bf
--- /dev/null
+++ b/pcr/ffmpeg-static/PKGBUILD
@@ -0,0 +1,61 @@
+# $Id$
+# Maintainer : Ionut Biru <ibiru@archlinux.org>
+# Contributor: Tom Newsom <Jeepster@gmx.co.uk>
+# Contributor: Paul Mattal <paul@archlinux.org>
+# Maintainer (Parabola): Márcio Silva <coadde@lavabit.com>
+
+pkgname=ffmpeg-static
+pkgver=0.11.2
+pkgrel=1
+epoch=1
+pkgdesc='Complete and free Internet live audio and video broadcasting solution for GNU/Linux, with static library'
+arch=(i686 x86_64 mips64el)
+url=http://${pkgname%-static}.org/
+license=(GPL)
+depends=(alsa-lib bzip2 gsm lame libpulse libtheora libva libvorbis libvpx opencore-amr openjpeg rtmpdump schroedinger sdl speex v4l-utils x264 xvidcore zlib)
+makedepends=(yasm libvdpau)
+provides=(${pkgname%-static})
+conflicts=(${pkgname%-static})
+source=(http://${pkgname%-static}.org/releases/${pkgname%-static}-$pkgver.tar.bz2)
+md5sums=(93c1908022567b321df74db7214da6ac)
+
+build() {
+ cd ${pkgname%-static}-$pkgver
+
+ ./configure \
+ --prefix=/usr \
+ --enable-libmp3lame \
+ --enable-libvorbis \
+ --enable-libxvid \
+ --enable-libx264 \
+ --enable-libvpx \
+ --enable-libtheora \
+ --enable-libgsm \
+ --enable-libspeex \
+ --enable-postproc \
+ --enable-shared \
+ --enable-x11grab \
+ --enable-libopencore_amrnb \
+ --enable-libopencore_amrwb \
+ --enable-libschroedinger \
+ --enable-libopenjpeg \
+ --enable-librtmp \
+ --enable-libpulse \
+ --enable-libv4l2 \
+ --enable-gpl \
+ --enable-version3 \
+ --enable-runtime-cpudetect \
+ --disable-debug \
+ --enable-static
+ make
+ make tools/qt-faststart
+ make doc/ff{mpeg,play,server}.1
+}
+
+package() {
+ cd ${pkgname%-static}-$pkgver
+ make DESTDIR="$pkgdir" install install-man
+ install -D -m755 tools/qt-faststart "$pkgdir/usr/bin/qt-faststart"
+}
+
+# vim:set ts=2 sw=2 et:
diff --git a/pcr/perl-expect/PKGBUILD b/pcr/perl-expect/PKGBUILD
new file mode 100644
index 000000000..fefa03a0b
--- /dev/null
+++ b/pcr/perl-expect/PKGBUILD
@@ -0,0 +1,52 @@
+# CPAN Name : Expect
+# Contributor: Max Roder <maxroder@web.de>
+# Contributor: DarkHeart
+# Generator : CPANPLUS::Dist::Arch 1.19
+# Maintainer (Parabola): Márcio Silva <coadde@lavabit.com>
+
+pkgname='perl-expect'
+pkgver='1.21'
+pkgrel='2'
+pkgdesc="Perl version of Don Libes' Tcl-Expect"
+arch=('any')
+license=('PerlArtistic' 'GPL')
+options=('!emptydirs')
+depends=('perl-io-tty>=1.03')
+makedepends=()
+url='http://search.cpan.org/dist/Expect'
+source=('http://search.cpan.org/CPAN/authors/id/R/RG/RGIERSIG/Expect-1.21.tar.gz')
+md5sums=('a151b0dc4d1a35c73941c65b7c26da5b')
+sha512sums=('496716b9e6544e9d6809b7f704df8199291d18ec9ec9ebb4fd2b7b341aa10d9b03989335c1f22d1faddbff0974ceba5b2823685fa08ce6a75e2f3ccaeb944e74')
+_distdir="${srcdir}/Expect-1.21"
+
+build() {
+ ( export PERL_MM_USE_DEFAULT=1 PERL5LIB="" \
+ PERL_AUTOINSTALL=--skipdeps \
+ PERL_MM_OPT="INSTALLDIRS=vendor DESTDIR='$pkgdir'" \
+ PERL_MB_OPT="--installdirs vendor --destdir '$pkgdir'" \
+ MODULEBUILDRC=/dev/null
+
+ cd "$_distdir"
+ /usr/bin/perl Makefile.PL
+ make
+ )
+}
+
+check() {
+ cd "$_distdir"
+ ( export PERL_MM_USE_DEFAULT=1 PERL5LIB=""
+ make test
+ )
+}
+
+package() {
+ cd "$_distdir"
+ make install
+ find "$pkgdir" -name .packlist -o -name perllocal.pod -delete
+}
+
+# Local Variables:
+# mode: shell-script
+# sh-basic-offset: 2
+# End:
+# vim:set ts=2 sw=2 et:
diff --git a/pcr/perl-php-serialization/PKGBUILD b/pcr/perl-php-serialization/PKGBUILD
new file mode 100644
index 000000000..f09269c92
--- /dev/null
+++ b/pcr/perl-php-serialization/PKGBUILD
@@ -0,0 +1,50 @@
+# Contributor: Justin Davis <jrcd83@gmail.com>
+# Generator : CPANPLUS::Dist::Arch 1.18
+# Maintainer (Parabola): Márcio Silva <coadde@lavabit.com>
+
+pkgname='perl-php-serialization'
+pkgver='0.34'
+pkgrel='1'
+pkgdesc="simple flexible means of converting the output of PHP's serialize() into the equivalent Perl memory structure, and vice versa."
+arch=('any')
+license=('PerlArtistic' 'GPL')
+options=('!emptydirs')
+depends=('perl')
+makedepends=()
+url='http://search.cpan.org/dist/PHP-Serialization'
+source=('http://search.cpan.org/CPAN/authors/id/B/BO/BOBTFISH/PHP-Serialization-0.34.tar.gz')
+md5sums=('333af0848ad79931875a35cc61dc22e0')
+sha512sums=('72218973f21ab71419751cf818e6bd998235aa74bf8ae60ec4a6080ba169d0d7fcefde4f433ce3f6f30ed3084a651deb8aa3a5dd818fc6ebf3fb6188def4efe7')
+_distdir="${srcdir}/PHP-Serialization-0.34"
+
+build() {
+ ( export PERL_MM_USE_DEFAULT=1 PERL5LIB="" \
+ PERL_AUTOINSTALL=--skipdeps \
+ PERL_MM_OPT="INSTALLDIRS=vendor DESTDIR='$pkgdir'" \
+ PERL_MB_OPT="--installdirs vendor --destdir '$pkgdir'" \
+ MODULEBUILDRC=/dev/null
+
+ cd "$_distdir"
+ /usr/bin/perl Makefile.PL
+ make
+ )
+}
+
+check() {
+ cd "$_distdir"
+ ( export PERL_MM_USE_DEFAULT=1 PERL5LIB=""
+ make test
+ )
+}
+
+package() {
+ cd "$_distdir"
+ make install
+ find "$pkgdir" -name .packlist -o -name perllocal.pod -delete
+}
+
+# Local Variables:
+# mode: shell-script
+# sh-basic-offset: 2
+# End:
+# vim:set ts=2 sw=2 et:
diff --git a/pcr/zoneminder/PKGBUILD b/pcr/zoneminder/PKGBUILD
index 334d32325..91c6c9175 100644
--- a/pcr/zoneminder/PKGBUILD
+++ b/pcr/zoneminder/PKGBUILD
@@ -2,115 +2,114 @@
# Contributor: Jason Gardner <buhrietoe@gmail.com>
# Contributor: Ross melin <rdmelin@gmail.com>
# Maintainer (Parabola): Márcio Silva <coadde@lavabit.com>
-# Maintainer (Parabola): André Silva <emulatorman@lavabit.com>
+# Contributor (Parabola): André Silva <emulatorman@lavabit.com>
+
+# based of debian squeeze package
pkgname=zoneminder
pkgver=1.25.0
-pkgrel=14
-pkgdesc="Capture, analyse, record and monitor video security cameras"
-arch=('i686' 'x86_64' 'mips64el')
-url="http://www.zoneminder.com"
-license=('GPL')
-depends=('cambozola' 'apache' 'php' 'php-gd' 'php-mcrypt' 'mysql' 'pcre' 'openssl' 'ffmpeg' 'perl-libwww' 'perl-date-manip' 'perl-unicode-map' 'perl-dbi' 'perl-dbd-mysql' 'perl-io-stringy' 'perl-mime-lite' 'perl-timedate' 'perl-x10' 'perl-time-modules' 'perl-net-smtp-ssl' 'perl-sys-mmap' 'perl-net-sftp-foreign' 'perl-mime-tools' 'perl-io-tty' 'libv4l' 'libjpeg' 'gnutls' 'php-apache')
-makedepends=()
-install=zoneminder.install
-source=("http://www.zoneminder.com/downloads/ZoneMinder-${pkgver}.tar.gz"
- zm.rc.d
- Controls_Orbit.sql
- zminit.arch
- customdb
- httpd-zm.conf
- zmeventbackup
- patch-ffmpeg-0.11.patch
- patch-libavcodec-detection.patch
- zoneminder-1.25.0-kernel35.patch
- arm-context.patch)
-
-md5sums=('eaefa14befd482154970541252aa1a39'
- '9fb81f81b056c18be6eef3f1c8e0dd6d'
- '5033bc098bf497c8aed1fc1b3c9c5f9c'
- 'f9720872736f26d17bc49d8725b75ae4'
- '942f6641c744ffe7d64846a5c34d84f1'
- 'e63262d1417105ae24c7a03d98b2c64c'
- '1a6d7c43af79c786b27cc88f7ba7ed3e'
- 'b872dd86926ab00c5d4733e7e38eaa9c'
- '94bf5d95fe5429f7df458ddfbabf0c12'
- '88bd124dfb841320cecb0a757b2a78c1'
- 'b28c8eb392a7e7b6ef665817d7fe61f4')
-
+pkgrel=16
+pkgdesc='Capture, analyse, record and monitor video security cameras'
+arch=(i686 x86_64 mips64el)
+backup=(etc/zm.conf etc/httpd/conf/extra/httpd-zm.conf)
+url=http://www.$pkgname.com
+license=(GPL)
+depends=(
+ apache cambozola ffmpeg gnutls mysql perl-archive-zip perl-date-manip
+ perl-dbd-mysql perl-dbi perl-expect perl-libwww perl-mime-lite
+ perl-mime-tools perl-php-serialization perl-net-sftp-foreign perl-sys-mmap
+ perl-time-modules perl-x10 php php-apache php-gd php-mcrypt
+)
+makedepends=(netpbm)
+install=$pkgname.install
+source=(
+ http://www.$pkgname.com/downloads/ZoneMinder-$pkgver.tar.gz
+ patch-ffmpeg-0.11.patch
+ patch-libavcodec-detection.patch
+ $pkgname-1.25.0-kernel35.patch
+ httpd-zm.conf
+ zm.rc.d
+ $pkgname.service
+)
+md5sums=(
+ eaefa14befd482154970541252aa1a39
+ 81c8be870260142e2633eedf73c72040
+ 94bf5d95fe5429f7df458ddfbabf0c12
+ 48a3c48394e18bf072f7b32730db18df
+ 831e3538facff18e27d402e36dbd6b8d
+ 034b61cda8849fc3001849e76ef26041
+ 7487cc72ead82aea0bc78f2e4106ae1a
+)
build() {
- cd "$srcdir/ZoneMinder-$pkgver"
+ cd $srcdir/ZoneMinder-$pkgver
+
+ export CPPFLAGS=-D__STDC_CONSTANT_MACROS \
+ ZM_SSL_LIB=gnutls
# Patch for GCC 4.7.x
sed -i -e '1 s/^/#include <unistd.h>\n/;' src/zm_logger.cpp
sed -i -e '1 s/^/#include <unistd.h>\n/;' src/zm_thread.h
- # Patch for build/upgrade path
- sed -i -e 's#ZM_PATH_BUILD=@PATH_BUILD@#ZM_PATH_BUILD=/srv/zoneminder/upgrade\nZM_PATH_UPDATE=/srv/zoneminder/upgrade#' zm.conf.in
-
# Patch for support new ffmpeg
- patch -p1 < ../patch-ffmpeg-0.11.patch
+ patch -p1 < $srcdir/patch-ffmpeg-0.11.patch
# Patch for correct libavcodec detection
- patch -p0 < ../patch-libavcodec-detection.patch
+ patch -p0 < $srcdir/patch-libavcodec-detection.patch
# Patch for type cast in kernel3.5
- patch -p0 < ../zoneminder-1.25.0-kernel35.patch
-
- # Patch for ARM
- if test "$CARCH" == arm; then
- patch -p0 < ../arm-context.patch
- fi
-
- # Add some more configs into DB
- cat ../Controls_Orbit.sql >> db/zm_create.sql.in
+ patch -p0 < $srcdir/$pkgname-1.25.0-kernel35.patch
./configure --prefix=/usr \
+ --build \
+ --enable-crashtrace=yes \
+ --enable-debug=yes \
+ --enable-mmap=yes \
+ --mandir=/usr/share/man \
--sysconfdir=/etc \
- --with-webuser=http \
+ --with-cgidir=/usr/lib/$pkgname/cgi-bin \
+ --with-ffmpeg=/usr \
+ --with-libarch=lib \
+ --with-mysql=/usr \
+ --with-webdir=/usr/share/$pkgname \
--with-webgroup=http \
- --with-mysql=/usr \
- --with-webdir=/srv/zoneminder/www \
- --with-cgidir=/srv/zoneminder/cgi-bin \
- --bindir=/srv/zoneminder/bin \
- ZM_SSL_LIB=openssl \
- CPPFLAGS=-D__STDC_CONSTANT_MACROS
-
- # chown line mucks everything up, we'll chown it in the install script
- sed -i '/chown/d' Makefile
-
- # modify hard-coded paths
- sed -i 's#/var/lib/zm#/srv/zoneminder/backup#' scripts/zmdbrestore.in
- sed -i 's#/var/lib/zm#/srv/zoneminder/backup#' scripts/zmlogrotate.conf.in
- sed -i 's#/var/lib/zm#/srv/zoneminder/backup#' scripts/zmdbbackup.in
-
- # Build it!
- make || return 1
- make DESTDIR="$pkgdir" ZM_RUNDIR="$pkgdir/var/run" ZM_TMPDIR="$pkgdir/tmp" ZM_LOGDIR="$pkgdir/var/log" install || return 1
-
- install -D -m 700 $startdir/src/zminit.arch $startdir/pkg/srv/zoneminder/bin/zminit
- install -D -m 755 $startdir/src/zm.rc.d $startdir/pkg/etc/rc.d/zm
- install -D -m 700 scripts/zmdbbackup $startdir/pkg/srv/zoneminder/bin/zmdbbackup
- install -D -m 700 scripts/zmdbbackup $startdir/pkg/srv/zoneminder/bin/zmdbbackup
- install -D -m 700 scripts/zmdbrestore $startdir/pkg/srv/zoneminder/bin/zmdbrestore
- install -D -m 700 scripts/zmeventdump $startdir/pkg/srv/zoneminder/bin/zmeventdump
- install -D -m 700 scripts/zmlogrotate.conf $startdir/pkg/etc/logrotate.d/zm
- install -D -m 700 $startdir/src/zmeventbackup $startdir/pkg/etc/cron.hourly/zmeventbackup
-
- mkdir -p $startdir/pkg/etc/httpd/conf/extra/
- install -m 644 $startdir/src/httpd-zm.conf $startdir/pkg/etc/httpd/conf/extra/httpd-zm.conf
-
- install -D -m 700 $startdir/src/customdb $startdir/pkg/srv/zoneminder/upgrade/customdb
- install -D db/zm*.sql $startdir/pkg/srv/zoneminder/upgrade/
-
- mkdir -p $startdir/pkg/var/run/zm
-
- ### remove special files
- find $startdir/pkg/ -name "perllocal.pod" \
- -o -name ".packlist" \
- -o -name "*.bs" \
- |xargs -i rm -f {}
-
+ --with-webuser=http
+ make V=0
}
-# vim:set ft=sh ts=2 sw=2 et:
+package() {
+ cd $srcdir/ZoneMinder-$pkgver
+
+ make DESTDIR=$pkgdir \
+ ZM_LOGDIR=$pkgdir/var/log/zm \
+ ZM_RUNDIR=$pkgdir/run \
+ ZM_TMPDIR=$pkgdir/tmp \
+ install
+
+ rmdir $pkgdir/run
+ rmdir $pkgdir/tmp
+
+ mkdir -p $pkgdir/etc/httpd/conf/extra
+ mkdir -p $pkgdir/etc/rc.d
+ mkdir -p $pkgdir/usr/lib/systemd/system
+ mkdir -p $pkgdir/usr/share/license/$pkgname
+ mkdir -p $pkgdir/usr/share/$pkgname/db
+ mkdir -p $pkgdir/var/cache/$pkgname
+
+ for i in events images temp; do
+ mv $pkgdir/usr/share/$pkgname/$i $pkgdir/var/cache/$pkgname/$i
+ ln -s /var/cache/$pkgname/$i $pkgdir/usr/share/$pkgname/$i
+ done
+
+ ln -s /usr/lib/$pkgname/cgi-bin $pkgdir/usr/share/$pkgname
+ ln -s /usr/share/cambozola/cambozola.jar $pkgdir/usr/share/$pkgname
+
+ chown http.http $pkgdir/etc/zm.conf
+ chown -R http.http $pkgdir/var/cache/$pkgname
+ chown http.http $pkgdir/var/log/zm
+
+ install -D -m 644 $srcdir/httpd-zm.conf $pkgdir/etc/httpd/conf/extra
+ install -D -m 644 $srcdir/zm.rc.d $pkgdir/etc/rc.d/zm
+ install -D -m 644 $srcdir/$pkgname.service $pkgdir/usr/lib/systemd/system
+ install -D -m 644 COPYING $pkgdir/usr/share/license/$pkgname
+ install -D -m 644 db/zm*.sql $pkgdir/usr/share/$pkgname/db
+}
diff --git a/pcr/zoneminder/httpd-zm.conf b/pcr/zoneminder/httpd-zm.conf
index ad24cbbe4..e48ea9fc6 100644
--- a/pcr/zoneminder/httpd-zm.conf
+++ b/pcr/zoneminder/httpd-zm.conf
@@ -1,16 +1,18 @@
# /etc/httpd/conf/extra/httpd-zm.conf
# Config for zoneminder web app
-Alias /zm "/srv/zoneminder/www"
-<Directory "/srv/zoneminder/www">
- Options -Indexes MultiViews FollowSymLinks
- AllowOverride All
- Order allow,deny
- Allow from all
+Alias /zm "/usr/share/zoneminder"
+<Directory "/usr/share/zoneminder">
+ Options -Indexes MultiViews FollowSymLinks
+ AllowOverride All
+ Order allow,deny
+ Allow from all
+ # The code unfortunately uses short tags in many places
+ php_value short_open_tag 1
</Directory>
-ScriptAlias /cgi-bin "/srv/zoneminder/cgi-bin"
-<Directory "/srv/zoneminder/cgi-bin">
+ScriptAlias /zm/cgi-bin "/usr/lib/zoneminder/cgi-bin"
+<Directory "/usr/lib/zoneminder/cgi-bin">
AllowOverride All
Options ExecCGI
Order allow,deny
diff --git a/pcr/zoneminder/patch-ffmpeg-0.11.patch b/pcr/zoneminder/patch-ffmpeg-0.11.patch
index 8356fff83..ac56e4c69 100644
--- a/pcr/zoneminder/patch-ffmpeg-0.11.patch
+++ b/pcr/zoneminder/patch-ffmpeg-0.11.patch
@@ -2,7 +2,7 @@ diff --git a/src/zm_ffmpeg_camera.cpp b/src/zm_ffmpeg_camera.cpp
index 42927f6..61df606 100644
--- a/src/zm_ffmpeg_camera.cpp
+++ b/src/zm_ffmpeg_camera.cpp
-@@ -108,7 +108,7 @@ int FfmpegCamera::PrimeCapture()
+@@ -91,7 +91,7 @@ int FfmpegCamera::PrimeCapture()
Info( "Priming capture from %s", mPath.c_str() );
// Open the input, not necessarily a file
@@ -11,7 +11,7 @@ index 42927f6..61df606 100644
Fatal( "Unable to open input %s due to: %s", mPath.c_str(), strerror(errno) );
// Locate stream info from input
-@@ -139,7 +139,7 @@ int FfmpegCamera::PrimeCapture()
+@@ -122,7 +122,7 @@ int FfmpegCamera::PrimeCapture()
Fatal( "Can't find codec for video stream from %s", mPath.c_str() );
// Open the codec
@@ -25,7 +25,7 @@ diff --git a/src/zm_mpeg.cpp b/src/zm_mpeg.cpp
index f5de2a4..d614346 100644
--- a/src/zm_mpeg.cpp
+++ b/src/zm_mpeg.cpp
-@@ -167,10 +167,12 @@ void VideoStream::SetParameters()
+@@ -130,10 +130,12 @@ void VideoStream::SetParameters()
{
/* set the output parameters (must be done even if no
parameters). */
@@ -40,7 +40,7 @@ index f5de2a4..d614346 100644
//dump_format(ofc, 0, filename, 1);
}
-@@ -259,7 +261,7 @@ void VideoStream::OpenStream()
+@@ -222,7 +224,7 @@ void VideoStream::OpenStream()
if ( !(of->flags & AVFMT_NOFILE) )
{
#if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(51,2,1)
@@ -49,7 +49,7 @@ index f5de2a4..d614346 100644
#else
if ( url_fopen(&ofc->pb, filename, URL_WRONLY) < 0 )
#endif
-@@ -278,7 +280,7 @@ void VideoStream::OpenStream()
+@@ -241,7 +243,7 @@ void VideoStream::OpenStream()
}
/* write the stream header, if any */
@@ -57,4 +57,4 @@ index f5de2a4..d614346 100644
+ avformat_write_header(ofc, NULL);
}
- VideoStream::VideoStream( const char *filename, const char *format, int bitrate, double frame_rate, int colours, int subpixelorder, int width, int height ) \ No newline at end of file
+ VideoStream::VideoStream( const char *filename, const char *format, int bitrate, double frame_rate, int colours, int subpixelorder, int width, int height )
diff --git a/pcr/zoneminder/zm.rc.d b/pcr/zoneminder/zm.rc.d
index 99a1f1f22..c4cbf4d3f 100644
--- a/pcr/zoneminder/zm.rc.d
+++ b/pcr/zoneminder/zm.rc.d
@@ -1,172 +1,63 @@
#!/bin/bash
-# Source function library.
+daemon_name=zm
+
. /etc/rc.conf
. /etc/rc.d/functions
-prog=ZoneMinder
-ZM_VERSION="1.25.0"
-ZM_PATH_BIN="/srv/zoneminder/bin"
-ZM_CONFIG="/etc/zm.conf"
-command="$ZM_PATH_BIN/zmpkg.pl"
-
-loadconf()
-{
- if [ -f $ZM_CONFIG ]; then
- . $ZM_CONFIG
- else
- echo "ERROR: $ZM_CONFIG not found.
-"
- return 1
- fi
-}
-
-# Check for old config and update if needed
-checkcfg()
-{
- # Check config
- if [ "$ZM_DB_HOST" = "" -o "$ZM_DB_NAME" = "" -o "$ZM_DB_USER" = "" -o "$ZM_DB_PASS" = "" ]; then
- echo "In $ZM_CONFIG there should not be null values.
-"
- return 1
- loadconf
- fi
-}
-
-checkdb()
-{
- # Check database exisits and version
- GetVer="select Value from Config where Name='ZM_DYN_DB_VERSION'"
- OLD_VERSION=`echo $GetVer | mysql -B -h $ZM_DB_HOST -u $ZM_DB_USER -p$ZM_DB_PASS $ZM_DB_NAME | grep -v '^Value'`
- if [ "$OLD_VERSION" = "" ]; then
- GetVer="select Value from Config where Name='ZM_DYN_CURR_VERSION'"
- OLD_VERSION=`echo $GetVer | mysql -B -h $ZM_DB_HOST -u $ZM_DB_USER -p$ZM_DB_PASS $ZM_DB_NAME | grep -v '^Value'`
- if [ "$OLD_VERSION" = "" ]; then
- echo "You must run $ZM_PATH_BIN/zminit manually
-"
- return 1
- fi
- fi
- RETVAL=$?
-
- if [ $RETVAL != 0 ]; then
- tbls=`mysql -h $ZM_DB_HOST -u $ZM_DB_USER -p$ZM_DB_PASS -s -e 'show tables' $ZM_DB_NAME`
- RETVAL=$?
- if [ $RETVAL = 0 ]; then
- echo "Initialize $prog database:
-"
- echo tbls | grep Config >/dev/null 2>&1
- RETVAL=$?
- if [ $RETVAL != 0 ]; then
- mysql -B -h $ZM_DB_HOST -u $ZM_DB_USER -p$ZM_DB_PASS $ZM_DB_NAME < $ZM_PATH_UPDATE/zm_create.sql
- RETVAL=$?
- [ $RETVAL = 0 ] && stat_done
- [ $RETVAL != 0 ] && stat_fail
- echo
- return $RETVAL
- fi
- ( cd $ZM_PATH_UPDATE; perl $ZM_PATH_BIN/zmupdate.pl -f )
- RETVAL=$?
- [ $RETVAL = 0 ] && stat_done
- [ $RETVAL != 0 ] && stat_fail
- echo
- return $RETVAL
- else
- echo "No access to ZoneMinder database.
-Run $ZM_PATH_BIN/zminit manually.
-"
- return $RETVAL
- fi
- else
- [ "$ZM_VERSION" = "$OLD_VERSION" ] && return 0
- echo "Upgrade %s database: " "$prog"
- $ZM_PATH_BIN/zmupdate.pl --version=$OLD_VERSION --noi && ( cd $ZM_PATH_UPDATE; perl $ZM_PATH_BIN/zmupdate.pl -f )
- RETVAL=$?
- [ $RETVAL = 0 ] && stat_done
- [ $RETVAL != 0 ] && stat_fail
- echo
- return $RETVAL
- fi
-}
-
-start()
-{
- loadconf || return $?
- checkcfg || return $?
- checkdb || return $?
- stat_busy "Starting $prog"
- [ -d /var/run/zm ] || mkdir -m 774 /var/run/zm
- chown -R $ZM_WEB_USER:$ZM_WEB_GROUP /var/run/zm
- GetPath="select Value from Config where Name='ZM_PATH_SOCKS'"
- ZM_PATH_SOCK=`echo $GetPath | mysql -B -h $ZM_DB_HOST -u $ZM_DB_USER -p$ZM_DB_PASS $ZM_DB_NAME | grep -v '^Value'`
- [ -d $ZM_PATH_SOCK ] || mkdir -m 774 -p $ZM_PATH_SOCK
- sudo -u $ZM_WEB_USER test -O $ZM_PATH_SOCK \
- || chown -R $ZM_WEB_USER:$ZM_WEB_GROUP $ZM_PATH_SOCK
- # Setup the log dir
- [ -d /var/log/zm ] || mkdir /var/log/zm
- for logs in zmaudit.log zmdc.log zmfilter.log zmpkg.log zmupdate.log zmwatch.log; do
- touch /var/log/zm/$logs
- done
- chown -R $ZM_WEB_USER:$ZM_WEB_GROUP /var/log/zm
- $command start
- RETVAL=$?
- [ $RETVAL = 0 ] && stat_done && add_daemon zm
- [ $RETVAL != 0 ] && stat_fail
- #[ $RETVAL = 0 ] && touch /var/lock/subsys/zm
- return $RETVAL
-}
-
-stop()
-{
- stat_busy "Stopping $prog"
- $command stop
- RETVAL=$?
- [ $RETVAL = 0 ] && stat_done && rm_daemon zm
- [ $RETVAL != 0 ] && stat_fail
- #[ $RETVAL = 0 ] && rm -f /var/lock/subsys/zm
-}
-
-status()
-{
- result=`$command status`
- if [ "$result" = "running" ]; then
- echo "ZoneMinder is running
-"
- RETVAL=0
- else
- echo "ZoneMinder is stopped
-"
- RETVAL=1
- fi
-}
-
case "$1" in
- 'start')
- start
- ;;
- 'stop')
- stop
- ;;
- 'restart')
- stop
- start
- ;;
- 'condrestart')
- loadconf
- checkcfg
- result=`$ZM_PATH_BIN/zmdc.pl check`
- if [ "$result" = "running" ]; then
- $ZM_PATH_BIN/zmdc.pl shutdown > /dev/null
- start
- fi
- ;;
- 'status')
- status
- ;;
- *)
- echo "Usage: zm { start | stop | restart | condrestart | status }
-"
- RETVAL=1
- ;;
+ start)
+ stat_busy "Starting Zoneminder"
+ /usr/bin/zmfix -a
+ if /usr/bin/zmpkg.pl start >/dev/null ; then
+ add_daemon $daemon_name
+ stat_done
+ else
+ stat_fail
+ exit 1
+ fi
+ ;;
+
+ stop)
+ stat_busy "Stopping Zoneminder"
+ if /usr/bin/zmpkg.pl stop >/dev/null ; then
+ rm_daemon $daemon_name
+ stat_done
+ else
+ stat_fail
+ exit 1
+ fi
+ ;;
+
+ reload)
+ stat_busy "Reloading Zoneminder"
+ if /usr/bin/zmpkg.pl graceful >/dev/null ; then
+ add_daemon $daemon_name
+ stat_done
+ else
+ stat_fail
+ exit 1
+ fi
+ ;;
+
+ restart)
+ stat_busy "Restarting Zoneminder"
+ if /usr/bin/zmpkg.pl restart >/dev/null ; then
+ add_daemon $daemon_name
+ stat_done
+ else
+ stat_fail
+ exit 1
+ fi
+ ;;
+
+ status)
+ stat_busy "Checking Zoneminder status";
+ ck_status $daemon_name
+ ;;
+
+ *)
+ echo "usage: $0 {start|stop|reload|restart|status}"
esac
-exit $RETVAL
+
+exit 0
diff --git a/pcr/zoneminder/zoneminder-1.25.0-kernel35.patch b/pcr/zoneminder/zoneminder-1.25.0-kernel35.patch
index 51bc1288d..9939dc5c3 100644
--- a/pcr/zoneminder/zoneminder-1.25.0-kernel35.patch
+++ b/pcr/zoneminder/zoneminder-1.25.0-kernel35.patch
@@ -1,7 +1,7 @@
diff -up ./src/zm_local_camera.cpp.kernel35 ./src/zm_local_camera.cpp
--- ./src/zm_local_camera.cpp.kernel35 2012-07-16 15:01:22.182614878 -0500
+++ ./src/zm_local_camera.cpp 2012-07-16 15:02:16.491941730 -0500
-@@ -740,7 +740,7 @@ void LocalCamera::Terminate()
+@@ -739,7 +739,7 @@ void LocalCamera::Terminate()
{
Debug( 3, "Terminating video stream" );
//enum v4l2_buf_type type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
@@ -10,7 +10,7 @@ diff -up ./src/zm_local_camera.cpp.kernel35 ./src/zm_local_camera.cpp
if ( vidioctl( vid_fd, VIDIOC_STREAMOFF, &type ) < 0 )
Error( "Failed to stop capture stream: %s", strerror(errno) );
-@@ -1520,7 +1520,7 @@ int LocalCamera::PrimeCapture()
+@@ -1519,7 +1519,7 @@ int LocalCamera::PrimeCapture()
Debug( 3, "Starting video stream" );
//enum v4l2_buf_type type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
diff --git a/pcr/zoneminder/zoneminder.install b/pcr/zoneminder/zoneminder.install
index be449a5ca..3ade5355e 100644
--- a/pcr/zoneminder/zoneminder.install
+++ b/pcr/zoneminder/zoneminder.install
@@ -1,57 +1,100 @@
-# zoneminder.install
+pre_install() {
+ set -e
+ abort=false
+ if [ -L /usr/share/zoneminder/events ]; then
+ l=$(readlink /usr/share/zoneminder/events)
+ if [ $l != /var/cache/zoneminder/events ]; then
+ abort=true
+ fi
+ fi
+ if [ -L /usr/share/zoneminder/images ]; then
+ l=$(readlink /usr/share/zoneminder/images )
+ if [ $l != /var/cache/zoneminder/images ]; then
+ abort=true
+ fi
+ fi
+ if [ $abort = true ]; then
+ cat >&2 << EOF
+Aborting installation of zoneminder due to non-default symlinks in
+/usr/share/zoneminder for the images and/or events directory, which could
+result in loss of data. Please move your data in each of these directories to
+/var/cache/zoneminder before installing zoneminder from the package.
+EOF
+ exit 1
+ fi
+ exit 0
+}
-## arg 1: the new package version
post_install() {
- ln -s /usr/share/cambozola/cambozola.jar /srv/zoneminder/www/
- chown -R http.http /srv/zoneminder
- chown http.http /etc/zm.conf
- mkdir /srv/zoneminder/backup
- mkdir /srv/zoneminder/socks
+ mkdir /usr/share/zoneminder/backup
+ mkdir /usr/share/zoneminder/socks
cat << EOF
Note:
-==> To initialize the ZoneMinder database run (as root)
-==> /srv/zoneminder/bin/zminit
-EOF
+==> To run Zoneminder, you must install the database running mysql service (as root):
+==> "rc.d start mysqld" (in initscripts) or "systemctl start mysqld.service" (in systemd)
+==> and add Zoneminder database typing:
+==> mysqladmin --defaults-file=/etc/mysql/my.cnf -p -f reload
+==> cat /usr/share/zoneminder/db/zm_create.sql | mysql --defaults-file=/etc/mysql/my.cnf -p
+==> echo 'grant lock tables, alter,select,insert,update,delete on zm.*'"\
+==> "' to 'zmuser'@localhost identified by "zmpass";' |
+==> mysql --defaults-file=/etc/mysql/my.cnf -p mysql"
- cat << EOF
-==> Check /etc/php/php.ini and make sure these are uncommented
-==> extension=gd.so
-==> extension=gettext.so
-==> extension=mcrypt.so
-==> extension=mysql.so
-==> extension=mysqli.so
-==> extension=session.so
-==> extension=sockets.so
-EOF
- cat << EOF
-==> Check /etc/php/php.ini and make sure short_open_tag = On
-EOF
+Note:
+==> You must uncomment that line in /etc/php/php.ini:
+==> "extension=mysql.so"
+==> check and make sure these are uncommented:
+==> "extension=gd.so"
+==> "extension=gettext.so"
+==> "extension=mcrypt.so"
+==> "extension=mysqli.so"
+==> "extension=session.so"
+==> "extension=sockets.so"
+==> Check /etc/php/php.ini and make sure short_open_tag = On
+==> or ZoneMinder will not work.
- cat /etc/php/php.ini |grep "^open_basedir.*/etc/" | \
-grep "/srv/zoneminder/www">/dev/null || cat << EOF
-==> You must edit /etc/php/php.ini and add to open_basedir "/etc/" and
-==> "/srv/zoneminder/" like so
-==> open_basedir = /home/:/tmp/:/usr/share/pear/:/etc/:/srv/zoneminder/
+==> You must edit /etc/php/php.ini and add to open_basedir "/etc" and
+==> "/usr/share/zoneminder" like so
+==> open_basedir = /home:/tmp:/usr/share/pear:/etc:/usr/share/zoneminder
==> Otherwise ZoneMinder will be unable to read /etc/zm.conf
==> or display its own web directory
-EOF
- cat << EOF
Note:
-==> You must edit /etc/httpd/conf/httpd.conf and uncomment/add the line
+==> You must edit /etc/httpd/conf/httpd.conf and add the line:
==> LoadModule php5_module modules/libphp5.so
-==> You must also add these lines:
-==> Include conf/extra/php5_module.conf
+==> and:
==> Include /etc/httpd/conf/extra/httpd-zm.conf
EOF
- touch /srv/zoneminder/zm_backup.sql
}
-
-## arg 1: the new package version
-## arg 2: the old package version
post_upgrade() {
- /srv/zoneminder/bin/zmupdate.pl -f >/dev/null
+ /usr/bin/zmupdate.pl -f >/dev/null
+}
+
+post_remove() {
+ cat << EOF
+Note:
+==> To clean Zoneminder mysql database, run as root:
+==> "echo 'delete from user where User="zmuser";' | mysql --defaults-file=/etc/mysql/my.cnf -p mysql"
+==> "echo 'delete from db where User="zmuser";' | mysql --defaults-file=/etc/mysql/my.cnf -p mysql"
+==> "mysqladmin --defaults-file=/etc/mysql/my.cnf -p -f drop zm"
+
+==> Disable http with php if it isn't needed with others servers,
+==> comment or remove that lines in /etc/httpd/conf/httpd.conf:
+==> "LoadModule php5_module modules/libphp5.so"
+==> "Include /etc/httpd/conf/extra/httpd-zm.conf"
+
+==> Disable php with mysql if it isn't needed with others servers,
+==> comment that lines in /etc/php/php.ini:
+==> "extension=mysql.so"
+==> "extension=gd.so"
+==> "extension=gettext.so"
+==> "extension=mcrypt.so"
+==> "extension=mysqli.so"
+==> "extension=session.so"
+==> "extension=sockets.so"
+
+==> edit /etc/php/php.ini and remove "/etc" and "/usr/share/zoneminder"
+==> in the open_basedir.
+EOF
}
-# vim:set ts=2 sw=2 et:
diff --git a/pcr/zoneminder/zoneminder.service b/pcr/zoneminder/zoneminder.service
new file mode 100644
index 000000000..ba41e8926
--- /dev/null
+++ b/pcr/zoneminder/zoneminder.service
@@ -0,0 +1,14 @@
+[Unit]
+Description=Capture, analyse, record and monitor video security cameras
+After=network.target remote-fs.target
+Required=mysqld.service
+
+[Service]
+Type=forking
+PIDFile=/run/zm.pid
+ExecStart=/usr/bin/zmpkg.pl start
+ExecRestart=/usr/bin/zmpkg.pl restart
+ExecStop=/usr/bin/zmpkg.pl stop
+
+[Install]
+WantedBy=multi-user.target