From cce11c4f1f5dd041feb95e16c8afb5bbcef2dcf5 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Tue, 18 Apr 2006 18:46:36 +0000 Subject: [PATCH] * Added gtk-gnutella. * Added a patch to MPlayer to fix the aspect ratio on screens rotated with Xrandr. * Disable toolbus for now because it requires a non-existant package (tcltk). svn path=/nixpkgs/trunk/; revision=5171 --- pkgs/applications/video/MPlayer/default.nix | 12 +- .../video/MPlayer/mplayer-aspect.patch | 76 ++++++++++++ .../video/MPlayer/mplayer-pivot.patch | 112 ++++++++++++++++++ .../networking/p2p/gtk-gnutella/builder.sh | 9 ++ .../networking/p2p/gtk-gnutella/default.nix | 11 ++ pkgs/top-level/all-packages.nix | 10 +- 6 files changed, 227 insertions(+), 3 deletions(-) create mode 100644 pkgs/applications/video/MPlayer/mplayer-aspect.patch create mode 100644 pkgs/applications/video/MPlayer/mplayer-pivot.patch create mode 100644 pkgs/tools/networking/p2p/gtk-gnutella/builder.sh create mode 100644 pkgs/tools/networking/p2p/gtk-gnutella/default.nix diff --git a/pkgs/applications/video/MPlayer/default.nix b/pkgs/applications/video/MPlayer/default.nix index 5c7d50cd63d..8337a4d7767 100644 --- a/pkgs/applications/video/MPlayer/default.nix +++ b/pkgs/applications/video/MPlayer/default.nix @@ -1,7 +1,8 @@ { alsaSupport ? false, xvSupport ? true, theoraSupport ? false, cacaSupport ? false -, xineramaSupport ? false +, xineramaSupport ? false, randrSupport ? false , stdenv, fetchurl, x11, freetype, zlib -, alsa ? null, libXv ? null, libtheora ? null, libcaca ? null, libXinerama ? null +, alsa ? null, libXv ? null, libtheora ? null, libcaca ? null +, libXinerama ? null, libXrandr ? null }: assert alsaSupport -> alsa != null; @@ -9,6 +10,7 @@ assert xvSupport -> libXv != null; assert theoraSupport -> libtheora != null; assert cacaSupport -> libcaca != null; assert xineramaSupport -> libXinerama != null; +assert randrSupport -> libXrandr != null; stdenv.mkDerivation { name = "MPlayer-1.0pre7"; @@ -34,7 +36,13 @@ stdenv.mkDerivation { (if theoraSupport then libtheora else null) (if cacaSupport then libcaca else null) (if xineramaSupport then libXinerama else null) + (if randrSupport then libXrandr else null) ]; configureFlags = if cacaSupport then "--enable-caca" else "--disable-caca"; + + # These fix MPlayer's aspect ratio when run in a screen rotated with + # Xrandr. + # See: http://itdp.de/~itdp/html/mplayer-dev-eng/2005-08/msg00427.html + patches = [./mplayer-aspect.patch ./mplayer-pivot.patch]; } diff --git a/pkgs/applications/video/MPlayer/mplayer-aspect.patch b/pkgs/applications/video/MPlayer/mplayer-aspect.patch new file mode 100644 index 00000000000..9fed008e1b0 --- /dev/null +++ b/pkgs/applications/video/MPlayer/mplayer-aspect.patch @@ -0,0 +1,76 @@ +diff -Nur MPlayer.orig/libvo/aspect.c MPlayer/libvo/aspect.c +--- MPlayer.orig/libvo/aspect.c 2004-10-28 03:15:51.000000000 +0200 ++++ MPlayer/libvo/aspect.c 2005-08-24 15:34:14.000000000 +0200 +@@ -11,13 +11,16 @@ + #include + #endif + ++int vo_physical_width = 0; ++int vo_physical_height = 0; ++ + int vo_panscan_x = 0; + int vo_panscan_y = 0; + float vo_panscan_amount = 0; + + #include "video_out.h" + +-float monitor_aspect=4.0/3.0; ++float monitor_aspect=-1.0f; + extern float movie_aspect; + + static struct { +@@ -47,11 +50,24 @@ + aspdat.preh = preh; + } + ++static void init_monitor_aspect( void ) ++{ ++ if (monitor_aspect != -1.0f) return; ++ if (vo_physical_width == 0 || vo_physical_height == 0) { ++ // if there's no other indication, assume square pixels ++ vo_physical_width = aspdat.scrw; ++ vo_physical_height = aspdat.scrh; ++ } ++ mp_msg(MSGT_VO,MSGL_V,"\naspect: monitor aspect detected %d:%d\n", vo_physical_width, vo_physical_height); ++ monitor_aspect = 1.0f * vo_physical_width / vo_physical_height; ++} ++ + void aspect_save_screenres(int scrw, int scrh){ + #ifdef ASPECT_DEBUG + printf("aspect_save_screenres %dx%d \n",scrw,scrh); + #endif + aspdat.scrw = scrw; + aspdat.scrh = scrh; ++ init_monitor_aspect(); // now is a good time + } + + /* aspect is called with the source resolution and the +diff -Nur MPlayer.orig/libvo/aspect.h MPlayer/libvo/aspect.h +--- MPlayer.orig/libvo/aspect.h 2002-06-05 21:35:54.000000000 +0200 ++++ MPlayer/libvo/aspect.h 2005-08-24 00:08:35.000000000 +0200 +@@ -2,6 +2,9 @@ + #define __ASPECT_H + /* Stuff for correct aspect scaling. */ + ++extern int vo_physical_width; ++extern int vo_physical_height; ++ + extern int vo_panscan_x; + extern int vo_panscan_y; + extern float vo_panscan_amount; +diff -Nur MPlayer.orig/libvo/x11_common.c MPlayer/libvo/x11_common.c +--- MPlayer.orig/libvo/x11_common.c 2005-08-23 23:07:07.000000000 +0200 ++++ MPlayer/libvo/x11_common.c 2005-08-23 23:42:31.000000000 +0200 +@@ -464,6 +464,12 @@ + if (!vo_screenheight) + vo_screenheight = DisplayHeight(mDisplay, mScreen); + } ++ if (vo_physical_width == 0) { ++ vo_physical_width = DisplayWidthMM(mDisplay, mScreen); ++ } ++ if (vo_physical_height == 0) { ++ vo_physical_height = DisplayHeightMM(mDisplay, mScreen); ++ } + // get color depth (from root window, or the best visual): + XGetWindowAttributes(mDisplay, mRootWin, &attribs); + depth = attribs.depth; diff --git a/pkgs/applications/video/MPlayer/mplayer-pivot.patch b/pkgs/applications/video/MPlayer/mplayer-pivot.patch new file mode 100644 index 00000000000..33afa32a009 --- /dev/null +++ b/pkgs/applications/video/MPlayer/mplayer-pivot.patch @@ -0,0 +1,112 @@ +--- MPlayer/configure.orig 2005-08-21 23:47:47.000000000 +0200 ++++ MPlayer/configure 2005-08-21 23:55:02.000000000 +0200 +@@ -162,6 +162,7 @@ + --enable-lircc enable LIRCCD (LIRC client daemon) input [autodetect] + --enable-joystick enable joystick support [disable] + --disable-vm disable support X video mode extensions [autodetect] ++ --disable-randr disable support for X resize and rotate extension [autodetect] + --disable-xf86keysym disable support for 'multimedia' keys [autodetect] + --disable-tv disable TV Interface (tv/dvb grabbers) [enable] + --disable-tv-v4l disable Video4Linux TV Interface support [autodetect] +@@ -252,6 +253,7 @@ + --enable-xv build with Xv render support for X 4.x [autodetect] + --enable-xvmc build with XvMC acceleration for X 4.x [disable] + --enable-vm build with XF86VidMode support for X11 [autodetect] ++ --enable-randr build with XRandR support for X11 [autodetect] + --enable-xinerama build with Xinerama support for X11 [autodetect] + --enable-x11 build with X11 render support [autodetect] + --enable-fbdev build with FBDev render support [autodetect] +@@ -1351,6 +1353,7 @@ + _mga=auto + _xmga=auto + _vm=auto ++_randr=auto + _xf86keysym=auto + _mlib=auto + _sgiaudio=auto +@@ -1562,6 +1565,8 @@ + --disable-xmga) _xmga=no ;; + --enable-vm) _vm=yes ;; + --disable-vm) _vm=no ;; ++ --enable-randr) _randr=yes ;; ++ --disable-randr) _randr=no ;; + --enable-xf86keysym) _xf86keysym=yes ;; + --disable-xf86keysym) _xf86keysym=no ;; + --enable-mlib) _mlib=yes ;; +@@ -3603,6 +3608,25 @@ + fi + echores "$_vm" + ++# X Resize, Rotate and Reflect extension ++echocheck "Xrandr" ++if test "$_x11" = yes && test "$_randr" = auto; then ++ cat > $TMPC < ++#include ++int main(void) { (void) XRRQueryExtension(0, 0, 0); return 0; } ++EOF ++ _randr=no ++ cc_check $_inc_x11 -lXrandr $_ld_x11 && _randr=yes ++fi ++if test "$_randr" = yes ; then ++ _def_randr='#define HAVE_XRANDR 1' ++ _ld_randr='-lXrandr' ++else ++ _def_randr='#undef HAVE_XRANDR' ++fi ++echores "$_randr" ++ + # Check for the presence of special keycodes, like audio control buttons + # that XFree86 might have. Used to be bundled with the xf86vm check, but + # has nothing to do with xf86vm and XFree 3.x has xf86vm but does NOT +@@ -6762,7 +6786,7 @@ + SLIBSUF=.so + + # video output +-X_LIB = $_ld_gl $_ld_dga $_ld_xv $_ld_xvmc $_ld_vm $_ld_xinerama $_ld_x11 $_ld_sock ++X_LIB = $_ld_gl $_ld_dga $_ld_xv $_ld_xvmc $_ld_vm $_ld_randr $_ld_xinerama $_ld_x11 $_ld_sock + GGI_LIB = $_ld_ggi + MLIB_LIB = $_ld_mlib + MLIB_INC = $_inc_mlib +@@ -7465,6 +7489,7 @@ + $_def_xv + $_def_xvmc + $_def_vm ++$_def_randr + $_def_xf86keysym + $_def_xinerama + $_def_gl +--- MPlayer/libvo/x11_common.c.orig 2005-08-21 23:56:20.000000000 +0200 ++++ MPlayer/libvo/x11_common.c 2005-08-22 00:05:17.000000000 +0200 +@@ -39,6 +39,10 @@ + #include + #endif + ++#ifdef HAVE_XRANDR ++#include ++#endif ++ + #ifdef HAVE_XF86XK + #include + #endif +@@ -434,6 +438,20 @@ + int clock; + + XF86VidModeGetModeLine(mDisplay, mScreen, &clock, &modeline); ++#ifdef HAVE_XRANDR ++ { ++ Rotation current_rotation; ++ ++ XRRRotations(mDisplay, mScreen, ¤t_rotation); ++ if ((current_rotation&RR_Rotate_90) != 0 || ++ (current_rotation&RR_Rotate_270) != 0) { ++ unsigned short tmp; ++ tmp = modeline.hdisplay; ++ modeline.hdisplay = modeline.vdisplay; ++ modeline.vdisplay = tmp; ++ } ++ } ++#endif + if (!vo_screenwidth) + vo_screenwidth = modeline.hdisplay; + if (!vo_screenheight) diff --git a/pkgs/tools/networking/p2p/gtk-gnutella/builder.sh b/pkgs/tools/networking/p2p/gtk-gnutella/builder.sh new file mode 100644 index 00000000000..33dec4ff34d --- /dev/null +++ b/pkgs/tools/networking/p2p/gtk-gnutella/builder.sh @@ -0,0 +1,9 @@ +source $stdenv/setup + +configureScript="./Configure" + +dontAddPrefix=1 + +configureFlags="-d -e -D prefix=$out -D gtkversion=2 -D official=true" + +genericBuild \ No newline at end of file diff --git a/pkgs/tools/networking/p2p/gtk-gnutella/default.nix b/pkgs/tools/networking/p2p/gtk-gnutella/default.nix new file mode 100644 index 00000000000..a0a9e33f056 --- /dev/null +++ b/pkgs/tools/networking/p2p/gtk-gnutella/default.nix @@ -0,0 +1,11 @@ +{stdenv, fetchurl, pkgconfig, glib, gtk, libxml2}: + +stdenv.mkDerivation { + name = "gtk-gnutella-0.96.1"; + builder = ./builder.sh; + src = fetchurl { + url = http://surfnet.dl.sourceforge.net/sourceforge/gtk-gnutella/gtk-gnutella-0.96.1.tar.bz2; + md5 = "6529379cc105c1e98f501a67e8e875fd"; + }; + buildInputs = [pkgconfig glib gtk libxml2]; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 33d9089a78b..b32d6db7121 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -262,6 +262,11 @@ rec { inherit fetchurl stdenv jdk swt; }; + gtkgnutella = (import ../tools/networking/p2p/gtk-gnutella) { + inherit fetchurl stdenv pkgconfig libxml2; + inherit (gtkLibs) glib gtk; + }; + dhcp = (import ../tools/networking/dhcp) { inherit fetchurl stdenv groff nettools coreutils iputils gnused bash; }; @@ -2078,12 +2083,13 @@ rec { MPlayer = (import ../applications/video/MPlayer) { inherit fetchurl stdenv freetype x11 zlib libtheora libcaca; - inherit (xlibs) libXv libXinerama; + inherit (xlibs) libXv libXinerama libXrandr; alsaSupport = true; alsa = alsaLib; theoraSupport = true; cacaSupport = true; xineramaSupport = true; + randrSupport = true; }; MPlayerPlugin = (import ../applications/networking/browsers/mozilla-plugins/mplayerplug-in) { @@ -2399,9 +2405,11 @@ rec { inherit stdenv fetchurl aterm; }; + /* toolbus = (import ../development/interpreters/toolbus) { inherit stdenv fetchurl atermjava toolbuslib aterm yacc flex; }; + */ joe = (import ../applications/editors/joe) { inherit stdenv fetchurl;