44
43
parser.add_option("-n", "--dry",
45
44
action="store_true", dest="dry",
46
45
help="Print out the actions but don't do anything.")
47
parser.add_option("-S", "--nosubjects",
48
action="store_true", dest="nosubjects",
49
help="Don't copy subject/ to subjects directory.")
50
46
parser.add_option("-R", "--nosvnrevno",
51
47
action="store_true", dest="nosvnrevno",
52
48
help="Don't write out the Subversion revision to the share directory.")
57
53
(options, args) = parser.parse_args(args)
59
55
# Call the real function
60
return __install(options.dry, options.nosubjects, options.rootdir,
56
return __install(dry=options.dry, rootdir=options.rootdir,
57
nosvnrevno=options.nosvnrevno)
63
def __install(dry=False, nosubjects=False, rootdir=None, nosvnrevno=False):
59
def __install(dry=False, rootdir=None, nosvnrevno=False):
64
60
# We need to import the one in the working copy, not in the system path.
65
61
confmodule = __import__("ivle/conf/conf")
66
62
install_list = util.InstallList()
74
70
share_path = mip(confmodule.share_path)
75
71
bin_path = mip(confmodule.bin_path)
76
72
python_site_packages = mip(confmodule.python_site_packages)
77
jail_base = mip(confmodule.jail_base)
78
jail_system = mip(confmodule.jail_system)
79
subjects_base = mip(confmodule.subjects_base)
80
exercises_base = mip(confmodule.exercises_base)
82
74
# Must be run as root or a dry run
87
79
print >>sys.stderr, "Must be root to run install"
90
# Make some directories for data.
91
util.action_mkdir(mip(confmodule.log_path), dry)
92
util.action_mkdir(mip(confmodule.data_path), dry)
93
util.action_mkdir(mip(confmodule.jail_base), dry)
94
util.action_mkdir(mip(confmodule.jail_src_base), dry)
95
util.action_mkdir(mip(confmodule.content_path), dry)
96
util.action_mkdir(mip(confmodule.notices_path), dry)
97
util.action_mkdir(os.path.join(mip(confmodule.data_path), 'sessions'), dry)
98
util.action_mkdir(mip(confmodule.svn_path), dry)
99
util.action_mkdir(mip(confmodule.svn_repo_path), dry)
100
util.action_mkdir(os.path.join(mip(confmodule.svn_repo_path), 'users'),dry)
101
util.action_mkdir(os.path.join(mip(confmodule.svn_repo_path),'groups'),dry)
103
util.action_chown(mip(confmodule.log_path), util.wwwuid, util.wwwuid, dry)
104
util.action_chown(os.path.join(mip(confmodule.data_path), 'sessions'),
105
util.wwwuid, util.wwwuid, dry)
106
util.action_chown(os.path.join(mip(confmodule.svn_repo_path), 'users'),
107
util.wwwuid, util.wwwuid, dry)
108
util.action_chown(os.path.join(mip(confmodule.svn_repo_path), 'groups'),
109
util.wwwuid, util.wwwuid, dry)
111
82
# Create lib and copy the compiled files there
112
83
util.action_mkdir(lib_path, dry)
145
116
# Copy the lib directory (using the list)
146
117
util.action_copylist(install_list.list_ivle_lib, python_site_packages, dry)
148
# Make the config file private
149
configpath = os.path.join(python_site_packages, 'ivle/conf/conf.py')
150
util.action_make_private(configpath, dry)
153
# Copy the subjects and exercises directories across
154
util.action_mkdir(subjects_base, dry)
155
util.action_copylist(install_list.list_subjects, subjects_base, dry,
157
util.action_mkdir(exercises_base, dry)
158
util.action_copylist(install_list.list_exercises, exercises_base, dry,
159
srcdir="./exercises")
161
119
# XXX We shouldn't have ivle.pth at all any more.
162
120
# We may still need the www packages to be importable.
163
121
# Anything from www that is needed from the outside should go to lib.