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