From ba6f269bf550a35811be8e74a9eb253ee0d79105 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Sat, 22 Jan 2005 00:19:27 +0000 Subject: [PATCH] * Qt: add optional support for MySQL. * MythTV: the setup program works :-). * Added XmlTV. This requires a huge number of Perl modules, so... * Added a generic builder for Perl modules. I'm lazy so the modules are defined directly in all-packages-generic.nix. The generic builder also patches Perl scripts to include a hard-coded Perl module search path (i.e., similar to an RPATH in ELF executables). svn path=/nixpkgs/trunk/; revision=2083 --- pkgs/applications/video/mythtv/builder.sh | 11 ++- pkgs/applications/video/mythtv/default.nix | 2 + pkgs/development/libraries/qt-3/builder.sh | 11 ++- pkgs/development/libraries/qt-3/default.nix | 5 +- .../perl-modules/generic/builder.sh | 45 ++++++++++ .../perl-modules/generic/default.nix | 8 ++ pkgs/system/all-packages-generic.nix | 82 ++++++++++++++++++- pkgs/tools/misc/xmltv/default.nix | 17 ++++ 8 files changed, 174 insertions(+), 7 deletions(-) create mode 100644 pkgs/development/perl-modules/generic/builder.sh create mode 100644 pkgs/development/perl-modules/generic/default.nix create mode 100644 pkgs/tools/misc/xmltv/default.nix diff --git a/pkgs/applications/video/mythtv/builder.sh b/pkgs/applications/video/mythtv/builder.sh index 1208fd63598c..e30fa126f3c7 100644 --- a/pkgs/applications/video/mythtv/builder.sh +++ b/pkgs/applications/video/mythtv/builder.sh @@ -10,6 +10,13 @@ myBuilder() { } -genericBuild +postInstall=postInstall +postInstall() { + sqlDir="$out/share/mythtv/sql" + ensureDir $sqlDir + cp -p ./database/mc.sql $sqlDir/ + cp -p ./setup/setup $out/bin/mythsetup +} -exit 1 \ No newline at end of file + +genericBuild diff --git a/pkgs/applications/video/mythtv/default.nix b/pkgs/applications/video/mythtv/default.nix index db08db78268a..d494df00b384 100644 --- a/pkgs/applications/video/mythtv/default.nix +++ b/pkgs/applications/video/mythtv/default.nix @@ -1,5 +1,7 @@ {stdenv, fetchurl, which, qt3, x11, libXinerama, libXv, libXxf86vm, lame}: +assert qt3.mysqlSupport; + stdenv.mkDerivation { name = "mythtv-0.16"; diff --git a/pkgs/development/libraries/qt-3/builder.sh b/pkgs/development/libraries/qt-3/builder.sh index 0f45c1acce4e..5273ca795d3d 100644 --- a/pkgs/development/libraries/qt-3/builder.sh +++ b/pkgs/development/libraries/qt-3/builder.sh @@ -7,15 +7,14 @@ preConfigure() { # Patch some of the configure files a bit to get of global paths. # (Buildings using stuff in those paths will fail anyway, but it # will cause ./configure misdetections). - for i in config.tests/*/*.test mkspecs/*/qmake.conf; do + for i in config.tests/unix/checkavail config.tests/*/*.test mkspecs/*/qmake.conf; do echo "patching $i..." sed < $i > $i.tmp \ -e 's^ /lib^ /FOO^g' \ -e 's^/usr^/FOO^g' + if test -x $i; then chmod +x $i.tmp; fi mv $i.tmp $i done - - chmod +x config.tests/*/*.test } @@ -36,6 +35,12 @@ if test -n "$xftSupport"; then $configureFlags" fi +if test -n "$mysqlSupport"; then + configureFlags="-qt-sql-mysql -L$mysql/lib/mysql -I$mysql/include/mysql $configureFlags"; +else + configureFlags="-no-thread $configureFlags"; +fi + if test -n "$xrenderSupport"; then configureFlags="-xrender -L$libXrender/lib -I$libXrender/include $configureFlags" fi diff --git a/pkgs/development/libraries/qt-3/default.nix b/pkgs/development/libraries/qt-3/default.nix index d6868746541a..7f29396cf614 100644 --- a/pkgs/development/libraries/qt-3/default.nix +++ b/pkgs/development/libraries/qt-3/default.nix @@ -1,12 +1,14 @@ { xftSupport ? true , xrenderSupport ? true , threadSupport ? true -, stdenv, fetchurl, x11, libXft ? null, libXrender ? null +, mysqlSupport ? true +, stdenv, fetchurl, x11, libXft ? null, libXrender ? null, mysql ? null , zlib, libjpeg, libpng, which }: assert xftSupport -> libXft != null; assert xrenderSupport -> xftSupport && libXft != null; +assert mysqlSupport -> mysql != null; stdenv.mkDerivation { name = "qt-3.3.3"; @@ -20,5 +22,6 @@ stdenv.mkDerivation { buildInputs = [x11 libXft libXrender zlib libjpeg libpng which]; inherit threadSupport xftSupport libXft xrenderSupport libXrender; + inherit mysqlSupport mysql; inherit (libXft) freetype fontconfig; } diff --git a/pkgs/development/perl-modules/generic/builder.sh b/pkgs/development/perl-modules/generic/builder.sh new file mode 100644 index 000000000000..389858bcfcf6 --- /dev/null +++ b/pkgs/development/perl-modules/generic/builder.sh @@ -0,0 +1,45 @@ +addInputsHook=addInputsHook +addInputsHook() { + # Should be in a Perl setup hook. + envHooks=(${envHooks[@]} addPerlLibs) +} + +addPerlLibs() { + PERL5LIB="$PERL5LIB${PERL5LIB:+:}$1/lib/site_perl" +} + +. $stdenv/setup + +PERL5LIB="$PERL5LIB${PERL5LIB:+:}$out/lib/site_perl" + +export PERL5LIB + +oldIFS=$IFS +IFS=: +perlFlags= +for i in $PERL5LIB; do + perlFlags="$perlFlags -I$i" +done +IFS=$oldIFS +echo "$perlFlags" + +preConfigure=preConfigure +preConfigure() { + + find . | while read fn; do + if test -f "$fn"; then + first=$(dd if="$fn" count=2 bs=1 2> /dev/null) + if test "$first" = "#!"; then + echo "patching $fn..." + sed < "$fn" > "$fn".tmp \ + -e "s|^#\!\(.*/perl.*\)$|#\! \1$perlFlags|" + if test -x "$fn"; then chmod +x "$fn".tmp; fi + mv "$fn".tmp "$fn" + fi + fi + done + + perl Makefile.PL PREFIX=$out $makeMakerFlags +} + +genericBuild diff --git a/pkgs/development/perl-modules/generic/default.nix b/pkgs/development/perl-modules/generic/default.nix new file mode 100644 index 000000000000..26cc365d9bde --- /dev/null +++ b/pkgs/development/perl-modules/generic/default.nix @@ -0,0 +1,8 @@ +perl: + +attrs: + +perl.stdenv.mkDerivation (attrs // { + builder = ./builder.sh; + buildInputs = [(if attrs ? buildInputs then attrs.buildInputs else []) perl]; +}) diff --git a/pkgs/system/all-packages-generic.nix b/pkgs/system/all-packages-generic.nix index 87171f1943dd..cfd3ae03c814 100644 --- a/pkgs/system/all-packages-generic.nix +++ b/pkgs/system/all-packages-generic.nix @@ -156,6 +156,12 @@ rec { inherit fetchurl stdenv x11; }; + xmltv = import ../tools/misc/xmltv { + inherit fetchurl perl perlTermReadKey perlXMLTwig perlXMLWriter + perlDateManip perlHTMLTree perlHTMLParser perlHTMLTagset + perlURI perlLWP; + }; + openssh = (import ../tools/networking/openssh) { inherit fetchurl stdenv zlib openssl; }; @@ -605,7 +611,7 @@ rec { }; qt3 = import ../development/libraries/qt-3 { - inherit fetchurl stdenv x11 zlib libjpeg libpng which; + inherit fetchurl stdenv x11 zlib libjpeg libpng which mysql; inherit (xlibs) libXft libXrender; }; @@ -698,6 +704,80 @@ rec { inherit fetchurl stdenv perl expat; }; + perlXMLTwig = import ../development/perl-modules/generic perl { + name = "XML-Twig-3.15"; + src = fetchurl { + url = http://search.cpan.org/CPAN/authors/id/M/MI/MIROD/XML-Twig-3.15.tar.gz; + md5 = "b26886b8bd19761fff37b23e4964b499"; + }; + propagatedBuildInputs = [perlXMLParser]; + }; + + perlXMLWriter = import ../development/perl-modules/generic perl { + name = "XML-Writer-0.520"; + src = fetchurl { + url = http://search.cpan.org/CPAN/authors/id/J/JO/JOSEPHW/XML-Writer-0.520.tar.gz; + md5 = "0a194acc70c906c0be32f4b2b7a9f689"; + }; + }; + + perlTermReadKey = import ../development/perl-modules/generic perl { + name = "TermReadKey-2.30"; + src = fetchurl { + url = http://search.cpan.org/CPAN/authors/id/J/JS/JSTOWE/TermReadKey-2.30.tar.gz; + md5 = "f0ef2cea8acfbcc58d865c05b0c7e1ff"; + }; + }; + + perlDateManip = import ../development/perl-modules/generic perl { + name = "DateManip-5.42a"; + src = fetchurl { + url = http://search.cpan.org/CPAN/authors/id/S/SB/SBECK/DateManip-5.42a.tar.gz; + md5 = "648386bbf46d021ae283811f75b07bdf"; + }; + }; + + perlHTMLTree = import ../development/perl-modules/generic perl { + name = "HTML-Tree-3.18"; + src = fetchurl { + url = http://search.cpan.org/CPAN/authors/id/S/SB/SBURKE/HTML-Tree-3.18.tar.gz; + md5 = "6a9e4e565648c9772e7d8ec6d4392497"; + }; + }; + + perlHTMLParser = import ../development/perl-modules/generic perl { + name = "HTML-Parser-3.45"; + src = fetchurl { + url = http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/HTML-Parser-3.45.tar.gz; + md5 = "c2ac1379ac5848dd32e24347cd679391"; + }; + }; + + perlHTMLTagset = import ../development/perl-modules/generic perl { + name = "HTML-Tagset-3.04"; + src = fetchurl { + url = http://search.cpan.org/CPAN/authors/id/S/SB/SBURKE/HTML-Tagset-3.04.tar.gz; + md5 = "b82e0f08c1ececefe98b891f30dd56a6"; + }; + }; + + perlURI = import ../development/perl-modules/generic perl { + name = "URI-1.35"; + src = fetchurl { + url = http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/URI-1.35.tar.gz; + md5 = "1a933b1114c41a25587ee59ba8376f7c"; + }; + }; + + perlLWP = import ../development/perl-modules/generic perl { + name = "libwww-perl-5.803"; + src = fetchurl { + url = http://search.cpan.org/CPAN/authors/id/G/GA/GAAS/libwww-perl-5.803.tar.gz; + md5 = "3345d5f15a4f42350847254141725c8f"; + }; + propagatedBuildInputs = [perlURI perlHTMLParser]; + }; + wxPython = (import ../development/python-modules/wxPython-2.5) { inherit fetchurl stdenv pkgconfig wxGTK python; }; diff --git a/pkgs/tools/misc/xmltv/default.nix b/pkgs/tools/misc/xmltv/default.nix new file mode 100644 index 000000000000..be5e85cc20f1 --- /dev/null +++ b/pkgs/tools/misc/xmltv/default.nix @@ -0,0 +1,17 @@ +{ fetchurl, perl, perlTermReadKey, perlXMLTwig, perlXMLWriter +, perlDateManip, perlHTMLTree, perlHTMLParser, perlHTMLTagset +, perlURI, perlLWP +}: + +import ../../../development/perl-modules/generic perl { + name = "xmltv-0.5.37"; + src = fetchurl { + url = http://heanet.dl.sourceforge.net/sourceforge/xmltv/xmltv-0.5.37.tar.bz2; + md5 = "40b7675cc1b7632065ebbd1e0ecf860f"; + }; + makeMakerFlags = "-components tv_grab_nl"; + buildInputs = [ + perlTermReadKey perlXMLTwig perlXMLWriter perlDateManip + perlHTMLTree perlHTMLParser perlHTMLTagset perlURI perlLWP + ]; +}