From 68361ac1991767b73e7858fe1e744dc0953e5aa3 Mon Sep 17 00:00:00 2001 From: Eelco Visser Date: Mon, 29 Dec 2003 17:01:32 +0000 Subject: [PATCH] clone nix-dist to create strategoxt-dist svn path=/nixpkgs/trunk/; revision=603 --- strategoxt-dist/build+upload.sh | 29 ++++++++++++++ strategoxt-dist/do-it.nix | 26 +++++++++++++ strategoxt-dist/mail-result.sh | 33 ++++++++++++++++ strategoxt-dist/nix-source-dist.nix | 38 +++++++++++++++++++ strategoxt-dist/nix-source-dist.sh | 32 ++++++++++++++++ strategoxt-dist/nix-test-build.nix | 12 ++++++ strategoxt-dist/nix-test-build.sh | 11 ++++++ strategoxt-dist/server-side/cgi-bin/md5.pl | 21 ++++++++++ strategoxt-dist/server-side/cgi-bin/upload.pl | 23 +++++++++++ 9 files changed, 225 insertions(+) create mode 100755 strategoxt-dist/build+upload.sh create mode 100644 strategoxt-dist/do-it.nix create mode 100755 strategoxt-dist/mail-result.sh create mode 100644 strategoxt-dist/nix-source-dist.nix create mode 100755 strategoxt-dist/nix-source-dist.sh create mode 100644 strategoxt-dist/nix-test-build.nix create mode 100755 strategoxt-dist/nix-test-build.sh create mode 100755 strategoxt-dist/server-side/cgi-bin/md5.pl create mode 100755 strategoxt-dist/server-side/cgi-bin/upload.pl diff --git a/strategoxt-dist/build+upload.sh b/strategoxt-dist/build+upload.sh new file mode 100755 index 00000000000..22592ca570a --- /dev/null +++ b/strategoxt-dist/build+upload.sh @@ -0,0 +1,29 @@ +#! /bin/sh + +url="https://svn.cs.uu.nl:12443/repos/trace/nix/trunk/" + +if ! rev=$(curl --silent -k https://svn.cs.uu.nl:12443/repos/trace/nix/trunk/ \ + | grep '

Revision' \ + | sed 's/.*Revision \(.*\):.*/\1/'); \ + then exit 1; fi + +echo "building revision $rev of $url" + +echo $rev > head-revision.nix + +if ! storeexprs=($(nix-instantiate -vvv do-it.nix)); then exit 1; fi + +srcexpr=${storeexprs[0]} +testexpr=${storeexprs[1]} + +if ! nix-store -vvvv -r "$srcexpr" > /dev/null; then exit 1; fi + +if ! outpath=$(nix-store -qn "$srcexpr"); then exit 1; fi + +uploader="http://losser.st-lab.cs.uu.nl/~eelco/cgi-bin/upload.pl/" + +curl --silent -T "$outpath/manual.html" "$uploader" || exit 1 +curl --silent -T "$outpath/style.css" "$uploader" || exit 1 +curl --silent -T "$outpath"/nix-*.tar.bz2 "$uploader" || exit 1 + +if ! nix-store -vvvv -r "$testexpr" > /dev/null; then exit 1; fi diff --git a/strategoxt-dist/do-it.nix b/strategoxt-dist/do-it.nix new file mode 100644 index 00000000000..81f04169bc9 --- /dev/null +++ b/strategoxt-dist/do-it.nix @@ -0,0 +1,26 @@ +let { + system = "i686-linux"; + pkgs = (import ../pkgs/system/all-packages.nix) {system = system;}; + stdenv = pkgs.stdenv_; + + sourcedist = (import ./nix-source-dist.nix) { + stdenv = stdenv; + autoconf = pkgs.autoconf; + automake = pkgs.automake; + libxml2 = pkgs.libxml2; + libxslt = pkgs.libxslt; + docbook_dtd = pkgs.docbook_xml_dtd; + docbook_xslt = pkgs.docbook_xml_xslt; + fetchurl = pkgs.fetchurl; + fetchsvn = pkgs.fetchsvn; + rev = import ./head-revision.nix; + }; + + testbuild = (import ./nix-test-build.nix) { + stdenv = stdenv; + getopt = pkgs.getopt; + src = sourcedist; + }; + + body = [sourcedist testbuild]; +} diff --git a/strategoxt-dist/mail-result.sh b/strategoxt-dist/mail-result.sh new file mode 100755 index 00000000000..f5e94d18bba --- /dev/null +++ b/strategoxt-dist/mail-result.sh @@ -0,0 +1,33 @@ +#! /bin/sh + +email=$1 +shift + +logfile=/tmp/logfile-$$ # !!! security +trap "rm $logfile" EXIT + +echo $logfile + +if ! "$@" > $logfile 2>&1; then + BLOCKER=/tmp/inhibit-notify + if ! test -f $BLOCKER; then + HEAD=`head $logfile` + TAIL=`tail $logfile` + bzip2 < $logfile > $logfile.bz2 + mail -s "Nix build failed" -a $logfile.bz2 $email <new->addfile(*FILE)->hexdigest; +close FILE; + +print "Content-Type: text/plain\n\n"; +print "$hash"; diff --git a/strategoxt-dist/server-side/cgi-bin/upload.pl b/strategoxt-dist/server-side/cgi-bin/upload.pl new file mode 100755 index 00000000000..4d303c77d38 --- /dev/null +++ b/strategoxt-dist/server-side/cgi-bin/upload.pl @@ -0,0 +1,23 @@ +#! /usr/bin/perl -w + +use strict; + +my $uploadpath = $ENV{"PATH_INFO"}; + +# Sanitise upload path. +die unless $uploadpath =~ /^(\/[A-Za-z0-9-][A-Za-z0-9-\.]+)+$/; + +my $dst = "/home/eelco/public_html/nix/$uploadpath"; +my $tmp = "${dst}_$$"; + +open OUT, ">$tmp" or die; +while () { + print OUT "$_" or die; +} +close OUT or die; + +rename $tmp, $dst or die; + +print "Content-Type: text/plain\n\n"; +print "upload succesful\n"; +print "upload path: $uploadpath\n";