Author: sandervanderburg
Date: Wed Dec 22 23:09:14 2010
New Revision: 25248
URL: https://svn.nixos.org/websvn/nix/?rev=25248&sc=1

Log:
- Added infrastructure model
- Added viewvcdb which stores repositories and revision data etc.

Added:
   disnix/examples/viewvc/trunk/configurations/mysqlpw
   disnix/examples/viewvc/trunk/configurations/mysqlscript
   disnix/examples/viewvc/trunk/configurations/test-vm3-client.nix
   disnix/examples/viewvc/trunk/pkgs/viewvcdb/
   disnix/examples/viewvc/trunk/pkgs/viewvcdb/default.nix
   disnix/examples/viewvc/trunk/pkgs/viewvcdb/viewvc.sql
Modified:
   disnix/examples/viewvc/trunk/DistributedDeployment/distribution.nix
   disnix/examples/viewvc/trunk/DistributedDeployment/infrastructure.nix
   disnix/examples/viewvc/trunk/DistributedDeployment/network.nix
   disnix/examples/viewvc/trunk/DistributedDeployment/services.nix
   disnix/examples/viewvc/trunk/configurations/test-vm1-httpd.nix
   disnix/examples/viewvc/trunk/pkgs/viewvc/default.nix
   disnix/examples/viewvc/trunk/top-level/all-packages.nix

Modified: disnix/examples/viewvc/trunk/DistributedDeployment/distribution.nix
==============================================================================
--- disnix/examples/viewvc/trunk/DistributedDeployment/distribution.nix Wed Dec 
22 19:38:26 2010        (r25247)
+++ disnix/examples/viewvc/trunk/DistributedDeployment/distribution.nix Wed Dec 
22 23:09:14 2010        (r25248)
@@ -1,6 +1,7 @@
 {infrastructure}:
 
 {
+  viewvcdb = [ infrastructure.test1 ];
   viewvc = [ infrastructure.test1 ];
   ViewVCRepository = [ infrastructure.test2 ];
 }

Modified: disnix/examples/viewvc/trunk/DistributedDeployment/infrastructure.nix
==============================================================================
--- disnix/examples/viewvc/trunk/DistributedDeployment/infrastructure.nix       
Wed Dec 22 19:38:26 2010        (r25247)
+++ disnix/examples/viewvc/trunk/DistributedDeployment/infrastructure.nix       
Wed Dec 22 23:09:14 2010        (r25248)
@@ -2,6 +2,9 @@
   test1 = {
     hostname = "test1";
     documentRoot = "/var/www";
+    mysqlPort = 3307;
+    mysqlUsername = "root";
+    mysqlPassword = builtins.readFile ../configurations/mysqlpw;
   };
   
   test2 = {

Modified: disnix/examples/viewvc/trunk/DistributedDeployment/network.nix
==============================================================================
--- disnix/examples/viewvc/trunk/DistributedDeployment/network.nix      Wed Dec 
22 19:38:26 2010        (r25247)
+++ disnix/examples/viewvc/trunk/DistributedDeployment/network.nix      Wed Dec 
22 23:09:14 2010        (r25248)
@@ -1,4 +1,5 @@
 {
   test1 = import ../configurations/test-vm1-httpd.nix;
   test2 = import ../configurations/test-vm2-subversion.nix;
+  test3 = import ../configurations/test-vm3-client.nix;
 }

Modified: disnix/examples/viewvc/trunk/DistributedDeployment/services.nix
==============================================================================
--- disnix/examples/viewvc/trunk/DistributedDeployment/services.nix     Wed Dec 
22 19:38:26 2010        (r25247)
+++ disnix/examples/viewvc/trunk/DistributedDeployment/services.nix     Wed Dec 
22 23:09:14 2010        (r25248)
@@ -10,10 +10,18 @@
     type = "subversion-repository";
   };
 
+  viewvcdb = {
+    name = "viewvcdb";
+    pkg = pkgs.viewvcdb;
+    dependsOn = {};
+    type = "mysql-database";
+  };
+
   viewvc = {
     name = "viewvc";
     pkg = pkgs.viewvc;
     dependsOn = {
+      inherit viewvcdb;
       inherit ViewVCRepository;
     };
     type = "apache-webapplication";

Added: disnix/examples/viewvc/trunk/configurations/mysqlpw
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ disnix/examples/viewvc/trunk/configurations/mysqlpw Wed Dec 22 23:09:14 
2010        (r25248)
@@ -0,0 +1 @@
+admin
\ No newline at end of file

Added: disnix/examples/viewvc/trunk/configurations/mysqlscript
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ disnix/examples/viewvc/trunk/configurations/mysqlscript     Wed Dec 22 
23:09:14 2010        (r25248)
@@ -0,0 +1 @@
+grant all on *.* to 'root'@'%' identified by '';

Modified: disnix/examples/viewvc/trunk/configurations/test-vm1-httpd.nix
==============================================================================
--- disnix/examples/viewvc/trunk/configurations/test-vm1-httpd.nix      Wed Dec 
22 19:38:26 2010        (r25247)
+++ disnix/examples/viewvc/trunk/configurations/test-vm1-httpd.nix      Wed Dec 
22 23:09:14 2010        (r25248)
@@ -37,9 +37,15 @@
           AllowOverride all
        </Directory>
       '';
+    };    
+    
+    mysql = {
+      enable = true;
+      rootPassword = ./mysqlpw;
+      initialScript = ./mysqlscript;
     };
   };
-
+  
   environment = {
     systemPackages = [
       pkgs.mc

Added: disnix/examples/viewvc/trunk/configurations/test-vm3-client.nix
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ disnix/examples/viewvc/trunk/configurations/test-vm3-client.nix     Wed Dec 
22 23:09:14 2010        (r25248)
@@ -0,0 +1,58 @@
+{pkgs, ...}:
+
+{
+  boot = {
+    loader = {
+      grub = {
+        device = "/dev/sda";
+      };
+    };
+  };
+
+  fileSystems = [
+    { mountPoint = "/";
+      device = "/dev/sda2";
+    }
+  ];
+
+  swapDevices = [
+    { device = "/dev/sda1"; }
+  ];
+  
+  services = {
+    openssh = {
+      enable = true;
+    };
+    
+    disnix = {
+      enable = true;
+    };
+    
+    xserver = {
+      enable = true;
+      
+      displayManager = {
+        slim.enable = false;
+       auto.enable = true;
+      };
+      
+      windowManager = {
+        default = "icewm";
+        icewm = {
+         enable = true;
+       };
+      };
+      
+      desktopManager.default = "none";
+    };
+  };
+  
+  environment = {
+    systemPackages = [
+      pkgs.mc
+      pkgs.subversion
+      pkgs.lynx
+      pkgs.firefox
+    ];
+  };  
+}

Modified: disnix/examples/viewvc/trunk/pkgs/viewvc/default.nix
==============================================================================
--- disnix/examples/viewvc/trunk/pkgs/viewvc/default.nix        Wed Dec 22 
19:38:26 2010        (r25247)
+++ disnix/examples/viewvc/trunk/pkgs/viewvc/default.nix        Wed Dec 22 
23:09:14 2010        (r25248)
@@ -1,7 +1,9 @@
-{stdenv, fetchurl, python, subversion}:
-subversionRepositories:
+{stdenv, fetchurl, python, subversion, MySQL_python, setuptools}:
+interdependenc...@{viewvcdb, ...}:
 
 let
+  subversionRepositories = builtins.removeAttrs interDependencies [ "viewvcdb" 
];
+  
   svnRoots = stdenv.lib.concatMapStrings (serviceName:
     let repository = builtins.getAttr serviceName subversionRepositories;
     in
@@ -16,17 +18,39 @@
   buildInputs = [ python ];
   installPhase = ''
     python viewvc-install --prefix=$out/webapps/viewvc --destdir=
+
+    # Add the Python Subversion and MySQL modules to the module search path
     
-    # Add the Python Subversion module to the module search path
-    sed -i -e '/import os/asys.path.insert(0, 
"${subversion}/lib/python2.6/site-packages")' 
$out/webapps/viewvc/bin/cgi/viewvc.cgi
+    MySQLpythonEgg=$(echo ${MySQL_python}/lib/python2.6/site-packages/*.egg)
+    setuptoolsEgg=$(echo ${setuptools}/lib/python2.6/site-packages/*.egg)
     
+    sed -i -e '/import os/asys.path.insert(0, 
"${subversion}/lib/python2.6/site-packages")' \
+           -e '/import os/asys.path.insert(0, "'$setuptoolsEgg'")' \
+           -e '/import os/asys.path.insert(0, "'$MySQLpythonEgg'")' \
+           -e '/import os/aos.environ["PYTHON_EGG_CACHE"] = "/tmp"' \
+           $out/webapps/viewvc/bin/cgi/viewvc.cgi
+
+    sed -i -e '/import os/asys.path.insert(0, 
"${subversion}/lib/python2.6/site-packages")' \
+           -e '/import os/asys.path.insert(0, "'$setuptoolsEgg'")' \
+           -e '/import os/asys.path.insert(0, "'$MySQLpythonEgg'")' \
+           -e '/import os/aos.environ["PYTHON_EGG_CACHE"] = "/tmp"' \
+           $out/webapps/viewvc/bin/svndbadmin
+
     # Tweak the ViewVC configuration file
-    
+
     sed -i -e "s/cvs_roots =/#cvs_roots =/" \
            -e "s%#svn_roots = svn: /home/svnrepos%svn_roots = ${svnRoots}%" \
            -e "s/root_as_url_component = 0/root_as_url_component = 1/" \
+           -e "s/enabled = 0/enabled = 1/" \
+           -e "s/#host = localhost/host = ${viewvcdb.target.hostname}/" \
+           -e "s/#port = 3306/port = ${toString viewvcdb.target.mysqlPort}/" \
+           -e "s/#database_name = ViewVC/database_name = ${viewvcdb.name}/" \
+           -e "s/#user =/user = ${viewvcdb.target.mysqlUsername}/" \
+           -e "s/#passwd =/passwd = ${viewvcdb.target.mysqlPassword}/" \
+           -e "s/#readonly_user =/readonly_user = 
${viewvcdb.target.mysqlUsername}/" \
+           -e "s/#readonly_passwd =/readonly_passwd = 
${viewvcdb.target.mysqlPassword}/" \
     $out/webapps/viewvc/viewvc.conf
-    
+
     # Add htaccess file which allows execution of cgi-scripts
     cat > $out/webapps/viewvc/.htaccess <<EOF
     AddHandler cgi-script .cgi

Added: disnix/examples/viewvc/trunk/pkgs/viewvcdb/default.nix
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ disnix/examples/viewvc/trunk/pkgs/viewvcdb/default.nix      Wed Dec 22 
23:09:14 2010        (r25248)
@@ -0,0 +1,11 @@
+{stdenv}:
+
+stdenv.mkDerivation {
+  name = "viewvcdb";
+  src = ./viewvc.sql;
+  buildCommand =
+  ''
+    ensureDir $out/mysql-databases
+    cp $src $out/mysql-databases/viewvc.sql
+  '';
+}

Added: disnix/examples/viewvc/trunk/pkgs/viewvcdb/viewvc.sql
==============================================================================
--- /dev/null   00:00:00 1970   (empty, because file is newly added)
+++ disnix/examples/viewvc/trunk/pkgs/viewvcdb/viewvc.sql       Wed Dec 22 
23:09:14 2010        (r25248)
@@ -0,0 +1,87 @@
+-- This SQL code is taken from the ViewVC make-database command
+
+DROP TABLE IF EXISTS branches;
+CREATE TABLE branches (
+  id mediumint(9) NOT NULL auto_increment,
+  branch varchar(64) binary DEFAULT '' NOT NULL,
+  PRIMARY KEY (id),
+  UNIQUE branch (branch)
+) TYPE=MyISAM;
+
+DROP TABLE IF EXISTS checkins;
+CREATE TABLE checkins (
+  type enum('Change','Add','Remove'),
+  ci_when datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
+  whoid mediumint(9) DEFAULT '0' NOT NULL,
+  repositoryid mediumint(9) DEFAULT '0' NOT NULL,
+  dirid mediumint(9) DEFAULT '0' NOT NULL,
+  fileid mediumint(9) DEFAULT '0' NOT NULL,
+  revision varchar(32) binary DEFAULT '' NOT NULL,
+  stickytag varchar(255) binary DEFAULT '' NOT NULL,
+  branchid mediumint(9) DEFAULT '0' NOT NULL,
+  addedlines int(11) DEFAULT '0' NOT NULL,
+  removedlines int(11) DEFAULT '0' NOT NULL,
+  descid mediumint(9),
+  UNIQUE repositoryid (repositoryid,dirid,fileid,revision),
+  KEY ci_when (ci_when),
+  KEY whoid (whoid),
+  KEY repositoryid_2 (repositoryid),
+  KEY dirid (dirid),
+  KEY fileid (fileid),
+  KEY branchid (branchid)
+) TYPE=MyISAM;
+
+DROP TABLE IF EXISTS descs;
+CREATE TABLE descs (
+  id mediumint(9) NOT NULL auto_increment,
+  description text,
+  hash bigint(20) DEFAULT '0' NOT NULL,
+  PRIMARY KEY (id),
+  KEY hash (hash)
+) TYPE=MyISAM;
+
+DROP TABLE IF EXISTS dirs;
+CREATE TABLE dirs (
+  id mediumint(9) NOT NULL auto_increment,
+  dir varchar(255) binary DEFAULT '' NOT NULL,
+  PRIMARY KEY (id),
+  UNIQUE dir (dir)
+) TYPE=MyISAM;
+
+DROP TABLE IF EXISTS files;
+CREATE TABLE files (
+  id mediumint(9) NOT NULL auto_increment,
+  file varchar(255) binary DEFAULT '' NOT NULL,
+  PRIMARY KEY (id),
+  UNIQUE file (file)
+) TYPE=MyISAM;
+
+DROP TABLE IF EXISTS people;
+CREATE TABLE people (
+  id mediumint(9) NOT NULL auto_increment,
+  who varchar(32) binary DEFAULT '' NOT NULL,
+  PRIMARY KEY (id),
+  UNIQUE who (who)
+) TYPE=MyISAM;
+
+DROP TABLE IF EXISTS repositories;
+CREATE TABLE repositories (
+  id mediumint(9) NOT NULL auto_increment,
+  repository varchar(64) binary DEFAULT '' NOT NULL,
+  PRIMARY KEY (id),
+  UNIQUE repository (repository)
+) TYPE=MyISAM;
+
+DROP TABLE IF EXISTS tags;
+CREATE TABLE tags (
+  repositoryid mediumint(9) DEFAULT '0' NOT NULL,
+  branchid mediumint(9) DEFAULT '0' NOT NULL,
+  dirid mediumint(9) DEFAULT '0' NOT NULL,
+  fileid mediumint(9) DEFAULT '0' NOT NULL,
+  revision varchar(32) binary DEFAULT '' NOT NULL,
+  UNIQUE repositoryid (repositoryid,dirid,fileid,branchid,revision),
+  KEY repositoryid_2 (repositoryid),
+  KEY dirid (dirid),
+  KEY fileid (fileid),
+  KEY branchid (branchid)
+) TYPE=MyISAM;

Modified: disnix/examples/viewvc/trunk/top-level/all-packages.nix
==============================================================================
--- disnix/examples/viewvc/trunk/top-level/all-packages.nix     Wed Dec 22 
19:38:26 2010        (r25247)
+++ disnix/examples/viewvc/trunk/top-level/all-packages.nix     Wed Dec 22 
23:09:14 2010        (r25248)
@@ -5,8 +5,13 @@
 with pkgs;
 
 rec {
+  viewvcdb = import ../pkgs/viewvcdb {
+    inherit stdenv;
+  };
+
   viewvc = import ../pkgs/viewvc {
-    inherit stdenv fetchurl python;
+    inherit stdenv fetchurl python setuptools;
+    inherit (pythonPackages) MySQL_python;
     
     subversion = subversion.override {
       pythonBindings = true;
_______________________________________________
nix-commits mailing list
[email protected]
http://mail.cs.uu.nl/mailman/listinfo/nix-commits

Reply via email to