diff options
author | Luke Shumaker <LukeShu@sbcglobal.net> | 2012-09-26 16:55:49 -0400 |
---|---|---|
committer | Luke Shumaker <LukeShu@sbcglobal.net> | 2012-09-26 16:55:49 -0400 |
commit | ad1725db924d8330ec3c9cd738f214f51fbc4504 (patch) | |
tree | 349d2f047eb312e75cdc9c0ac9e38b25f7dd51d2 | |
parent | 928f7e0d03b6d5952462ce955ce66f5b80dfdeb8 (diff) | |
parent | f9404aabf6f47252c537d9ac6546d9a0aa0f04e2 (diff) | |
download | abslibre-ad1725db924d8330ec3c9cd738f214f51fbc4504.tar.gz abslibre-ad1725db924d8330ec3c9cd738f214f51fbc4504.tar.bz2 abslibre-ad1725db924d8330ec3c9cd738f214f51fbc4504.zip |
Merge branch 'master' of ssh://parabolagnulinux.org:1863/srv/git/abslibre
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 |