Commit 133f0c6dd58f6ea2c0c329c6fb3c59728be713e6
1 parent
679b4f93
Exists in
master
and in
39 other branches
Updating installation process
Showing
7 changed files
with
14 additions
and
282 deletions
Show diff stats
MANIFEST.in
README.md
requirements.txt
1 | https://www.djangoproject.com/download/1.6b1/tarball/ | 1 | https://www.djangoproject.com/download/1.6b1/tarball/ |
2 | South==0.8.1 | 2 | South==0.8.1 |
3 | +psycopg2==2.5.1 | ||
3 | django-piston==0.2.3 | 4 | django-piston==0.2.3 |
4 | pytz==2011n | 5 | pytz==2011n |
5 | chardet==1.0.1 | 6 | chardet==1.0.1 |
6 | python-dateutil==1.5 | 7 | python-dateutil==1.5 |
7 | django-cliauth==0.9 | 8 | django-cliauth==0.9 |
9 | + | ||
10 | +# Feedzilla (planet) and deps | ||
8 | https://bitbucket.org/seocam/feedzilla/get/tip.tar.gz # Temporarily work around | 11 | https://bitbucket.org/seocam/feedzilla/get/tip.tar.gz # Temporarily work around |
9 | django-common | 12 | django-common |
10 | django-tagging | 13 | django-tagging |
setup.py
@@ -1,51 +0,0 @@ | @@ -1,51 +0,0 @@ | ||
1 | -#!/usr/bin/env python | ||
2 | - | ||
3 | -from setuptools import setup, find_packages | ||
4 | -from setupext import Data_Files, install_Data_Files | ||
5 | - | ||
6 | -setup(name='colab', | ||
7 | - version='3.0', | ||
8 | - description = 'Colab, a Software for Communities', | ||
9 | - author='Sergio Oliveira', | ||
10 | - author_email='seocam@seocam.com', | ||
11 | - url='https://bitbucket.org/seocam/atu-colab', | ||
12 | - license = "GPL 2", | ||
13 | - packages=find_packages(), | ||
14 | - package_data={'colab': ['templates/*.html', | ||
15 | - 'super_archives/templates/*.html', | ||
16 | - 'super_archives/fixtures/initial_data.json']}, | ||
17 | - data_files=[ | ||
18 | - Data_Files(base_dir='install_data', | ||
19 | - copy_to='static', | ||
20 | - template=['recursive-include colab/static *'], | ||
21 | - preserve_path=1, | ||
22 | - strip_dirs=2), | ||
23 | - Data_Files(base_dir='install_data', | ||
24 | - copy_to='wsgi', | ||
25 | - template=['include etc/apache2/wsgi/colab.wsgi'], | ||
26 | - preserve_path=0), | ||
27 | - Data_Files(base_dir='install_data', | ||
28 | - copy_to='apache-site', | ||
29 | - template=['include etc/apache2/sites-available/colab'], | ||
30 | - preserve_path=0), | ||
31 | - Data_Files(base_dir='install_data', | ||
32 | - copy_to='autofs', | ||
33 | - template=['include etc/autofs/listas'], | ||
34 | - preserve_path=0), | ||
35 | - Data_Files(base_dir='install_data', | ||
36 | - copy_to='cron.d', | ||
37 | - template=['include etc/cron.d/*'], | ||
38 | - preserve_path=0), | ||
39 | - ], | ||
40 | - install_requires=( | ||
41 | - 'distribute', | ||
42 | - 'Django==1.3.1', | ||
43 | - 'South==0.7.3', | ||
44 | - 'django-piston==0.2.3', | ||
45 | - 'django-cliauth==0.9', | ||
46 | - 'pytz==2011n', | ||
47 | - 'chardet==1.0.1', | ||
48 | - 'python-dateutil==1.5', | ||
49 | - 'psycopg2==2.4.4'), | ||
50 | - cmdclass = {"install_data": install_Data_Files}, | ||
51 | -) |
setupext/__init__.py
@@ -1,15 +0,0 @@ | @@ -1,15 +0,0 @@ | ||
1 | -"Package providing extensions to the standard distutils" | ||
2 | - | ||
3 | -from install_data import Data_Files, install_Data_Files | ||
4 | - | ||
5 | -from distutils.command.bdist_wininst import bdist_wininst | ||
6 | - | ||
7 | -# When building a windows installer, put some more text into | ||
8 | -# the long description | ||
9 | -class wininst_request_delete(bdist_wininst): | ||
10 | - add_text = "\nIf you have installed earlier versions of this package, please remove them through 'Add/Remove Programs' before installing this release." | ||
11 | - | ||
12 | - def get_inidata(self): | ||
13 | - m = self.distribution.metadata | ||
14 | - m.long_description = m.long_description + self.add_text | ||
15 | - return bdist_wininst.get_inidata(self) |
setupext/install_data.py
@@ -1,197 +0,0 @@ | @@ -1,197 +0,0 @@ | ||
1 | -# -*- coding: utf-8 -*- | ||
2 | -"""install_data.py | ||
3 | - | ||
4 | -Provides a more sophisticated facility to install data files | ||
5 | -than distutils' install_data does. | ||
6 | -You can specify your files as a template like in MANIFEST.in | ||
7 | -and you have more control over the copy process. | ||
8 | - | ||
9 | -Copyright 2000 by Rene Liebscher, Germany. | ||
10 | - | ||
11 | -Permission is hereby granted, free of charge, to any person obtaining | ||
12 | -a copy of this software and associated documentation files (the | ||
13 | -"Software"), to deal in the Software without restriction, including | ||
14 | -without limitation the rights to use, copy, modify, merge, publish, | ||
15 | -distribute, sublicense, and/or sell copies of the Software, and to | ||
16 | -permit persons to whom the Software is furnished to do so, subject to | ||
17 | -the following conditions: | ||
18 | - | ||
19 | -The above copyright notice and this permission notice shall be included | ||
20 | -in all copies or substantial portions of the Software. | ||
21 | - | ||
22 | -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||
23 | -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||
24 | -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. | ||
25 | -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY | ||
26 | -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, | ||
27 | -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE | ||
28 | -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
29 | - | ||
30 | -""" | ||
31 | - | ||
32 | -# created 2000/08/01, Rene Liebscher <R.Liebscher@gmx.de> | ||
33 | -# modified 2000/12/18, Martin v. Löwis <loewis@informatik.hu-berlin.de> | ||
34 | - | ||
35 | -########################################################################### | ||
36 | -# import some modules we need | ||
37 | - | ||
38 | -import os,sys,string | ||
39 | -from types import StringType,TupleType,ListType | ||
40 | -from distutils.util import change_root | ||
41 | -from distutils.filelist import FileList | ||
42 | -from distutils.command.install_data import install_data | ||
43 | - | ||
44 | -########################################################################### | ||
45 | -# a container class for our more sophisticated install mechanism | ||
46 | - | ||
47 | -class Data_Files: | ||
48 | - """ container for list of data files. | ||
49 | - supports alternate base_dirs e.g. 'install_lib','install_header',... | ||
50 | - supports a directory where to copy files | ||
51 | - supports templates as in MANIFEST.in | ||
52 | - supports preserving of paths in filenames | ||
53 | - eg. foo/xyz is copied to base_dir/foo/xyz | ||
54 | - supports stripping of leading dirs of source paths | ||
55 | - eg. foo/bar1/xyz, foo/bar2/abc can be copied to bar1/xyz, bar2/abc | ||
56 | - """ | ||
57 | - | ||
58 | - def __init__(self,base_dir=None,files=None,copy_to=None,template=None,preserve_path=0,strip_dirs=0): | ||
59 | - self.base_dir = base_dir | ||
60 | - self.files = files | ||
61 | - self.copy_to = copy_to | ||
62 | - if template is not None: | ||
63 | - t = [] | ||
64 | - for item in template: | ||
65 | - item = string.strip(item) | ||
66 | - if not item:continue | ||
67 | - t.append(item) | ||
68 | - template = t | ||
69 | - self.template = template | ||
70 | - self.preserve_path = preserve_path | ||
71 | - self.strip_dirs = strip_dirs | ||
72 | - self.finalized = 0 | ||
73 | - | ||
74 | - def warn (self, msg): | ||
75 | - sys.stderr.write ("warning: %s: %s\n" % | ||
76 | - ("install_data", msg)) | ||
77 | - | ||
78 | - def debug_print (self, msg): | ||
79 | - """Print 'msg' to stdout if the global DEBUG (taken from the | ||
80 | - DISTUTILS_DEBUG environment variable) flag is true. | ||
81 | - """ | ||
82 | - from distutils.core import DEBUG | ||
83 | - if DEBUG: | ||
84 | - print msg | ||
85 | - | ||
86 | - | ||
87 | - def finalize(self): | ||
88 | - """ complete the files list by processing the given template """ | ||
89 | - if self.finalized: | ||
90 | - return | ||
91 | - if self.files == None: | ||
92 | - self.files = [] | ||
93 | - if self.template != None: | ||
94 | - if type(self.template) == StringType: | ||
95 | - self.template = string.split(self.template,";") | ||
96 | - filelist = FileList(self.warn,self.debug_print) | ||
97 | - for line in self.template: | ||
98 | - filelist.process_template_line(string.strip(line)) | ||
99 | - filelist.sort() | ||
100 | - filelist.remove_duplicates() | ||
101 | - self.files.extend(filelist.files) | ||
102 | - self.finalized = 1 | ||
103 | - | ||
104 | -# end class Data_Files | ||
105 | - | ||
106 | -########################################################################### | ||
107 | -# a more sophisticated install routine than distutils install_data | ||
108 | - | ||
109 | -class install_Data_Files (install_data): | ||
110 | - | ||
111 | - def check_data(self,d): | ||
112 | - """ check if data are in new format, if not create a suitable object. | ||
113 | - returns finalized data object | ||
114 | - """ | ||
115 | - if not isinstance(d, Data_Files): | ||
116 | - self.warn(("old-style data files list found " | ||
117 | - "-- please convert to Data_Files instance")) | ||
118 | - if type(d) is TupleType: | ||
119 | - if len(d) != 2 or not (type(d[1]) is ListType): | ||
120 | - raise DistutilsSetupError, \ | ||
121 | - ("each element of 'data_files' option must be an " | ||
122 | - "Data File instance, a string or 2-tuple (string,[strings])") | ||
123 | - d = Data_Files(copy_to=d[0],files=d[1]) | ||
124 | - else: | ||
125 | - if not (type(d) is StringType): | ||
126 | - raise DistutilsSetupError, \ | ||
127 | - ("each element of 'data_files' option must be an " | ||
128 | - "Data File instance, a string or 2-tuple (string,[strings])") | ||
129 | - d = Data_Files(files=[d]) | ||
130 | - d.finalize() | ||
131 | - return d | ||
132 | - | ||
133 | - def run(self): | ||
134 | - self.outfiles = [] | ||
135 | - install_cmd = self.get_finalized_command('install') | ||
136 | - | ||
137 | - for d in self.data_files: | ||
138 | - d = self.check_data(d) | ||
139 | - | ||
140 | - install_dir = self.install_dir | ||
141 | - # alternative base dir given => overwrite install_dir | ||
142 | - if d.base_dir != None: | ||
143 | - install_dir = getattr(install_cmd,d.base_dir) | ||
144 | - | ||
145 | - # copy to an other directory | ||
146 | - if d.copy_to != None: | ||
147 | - if not os.path.isabs(d.copy_to): | ||
148 | - # relatiev path to install_dir | ||
149 | - dir = os.path.join(install_dir, d.copy_to) | ||
150 | - elif install_cmd.root: | ||
151 | - # absolute path and alternative root set | ||
152 | - dir = change_root(self.root,d.copy_to) | ||
153 | - else: | ||
154 | - # absolute path | ||
155 | - dir = d.copy_to | ||
156 | - else: | ||
157 | - # simply copy to install_dir | ||
158 | - dir = install_dir | ||
159 | - # warn if necceassary | ||
160 | - self.warn("setup script did not provide a directory to copy files to " | ||
161 | - " -- installing right in '%s'" % install_dir) | ||
162 | - | ||
163 | - dir=os.path.normpath(dir) | ||
164 | - # create path | ||
165 | - self.mkpath(dir) | ||
166 | - | ||
167 | - # copy all files | ||
168 | - for src in d.files: | ||
169 | - if d.strip_dirs > 0: | ||
170 | - dst = string.join(string.split(os.path.normcase(src),os.sep)[d.strip_dirs:],os.sep) | ||
171 | - else: | ||
172 | - dst = src | ||
173 | - if d.preserve_path: | ||
174 | - # preserve path in filename | ||
175 | - self.mkpath(os.path.dirname(os.path.join(dir,dst))) | ||
176 | - out = self.copy_file(src, os.path.join(dir,dst)) | ||
177 | - else: | ||
178 | - out = self.copy_file(src, dir) | ||
179 | - if type(out) is TupleType: | ||
180 | - out = out[0] | ||
181 | - self.outfiles.append(out) | ||
182 | - | ||
183 | - return self.outfiles | ||
184 | - | ||
185 | - def get_inputs (self): | ||
186 | - inputs = [] | ||
187 | - for d in self.data_files: | ||
188 | - d = self.check_data(d) | ||
189 | - inputs.append(d.files) | ||
190 | - return inputs | ||
191 | - | ||
192 | - def get_outputs (self): | ||
193 | - return self.outfiles | ||
194 | - | ||
195 | - | ||
196 | -########################################################################### | ||
197 | - |
update-deploy.sh
1 | #!/bin/bash | 1 | #!/bin/bash |
2 | 2 | ||
3 | -cd /usr/local/src/colab/ | ||
4 | -hg pull | ||
5 | -hg up | ||
6 | -rm -fR dist/ | ||
7 | -python setup.py sdist | 3 | +apt-get install apache2 libapache2-mod-wsgi |
4 | +apt-get install libxml2-dev libxslt1-dev # lxml | ||
5 | +apt-get install libpq-dev # psycopg2 | ||
6 | + | ||
7 | +cd /usr/local/src/colab2/ | ||
8 | +git pull | ||
8 | 9 | ||
9 | if [[ $1 == 'deps' ]] ; then | 10 | if [[ $1 == 'deps' ]] ; then |
10 | # com dependencias | 11 | # com dependencias |
11 | - /usr/local/django/colab/bin/pip install dist/*.gz -U | ||
12 | -else | ||
13 | - # sem dependencias | ||
14 | - /usr/local/django/colab/bin/pip install dist/*.gz -U --no-deps | 12 | + |
13 | + /usr/local/django/colab2/bin/pip install -r /usr/local/src/colab2/requirements.txt -U | ||
15 | fi | 14 | fi |
16 | 15 | ||
17 | -/usr/local/django/colab/bin/python colab/manage.py syncdb | ||
18 | -/usr/local/django/colab/bin/python colab/manage.py migrate | ||
19 | -touch /usr/local/django/colab/wsgi/colab.wsgi | 16 | +/usr/local/django/colab2/bin/python src/manage.py syncdb |
17 | +/usr/local/django/colab2/bin/python src/manage.py migrate | ||
18 | +touch src/colab/wsgi.py |