root / pykota / trunk / setup.py @ 3338

Revision 3338, 6.7 kB (checked in by jerome, 16 years ago)

Added PyKota schema for Sun Directory Server to the data files to install.

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
Line 
1#! /usr/bin/env python
2# -*- coding: UTF-8 -*-
3#
4# PyKota : Print Quotas for CUPS
5#
6# (c) 2003, 2004, 2005, 2006, 2007, 2008 Jerome Alet <alet@librelogiciel.com>
7# This program is free software: you can redistribute it and/or modify
8# it under the terms of the GNU General Public License as published by
9# the Free Software Foundation, either version 3 of the License, or
10# (at your option) any later version.
11#
12# This program is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15# GNU General Public License for more details.
16#
17# You should have received a copy of the GNU General Public License
18# along with this program.  If not, see <http://www.gnu.org/licenses/>.
19#
20# $Id$
21#
22#
23
24import sys
25import glob
26import os
27import stat
28import shutil
29try :
30    from distutils.core import setup
31    from distutils.command.install_data import install_data
32except ImportError, msg :   
33    sys.stderr.write("%s\n" % msg)
34    sys.stderr.write("You need the DistUtils Python module.\nunder Debian, you may have to install the python-dev package.\nOf course, YMMV.\n")
35    sys.exit(-1)
36
37sys.path.insert(0, "pykota")
38from pykota.version import __version__, __doc__
39
40if (__version__.upper().find("BROKEN") != -1) and ("--force" not in sys.argv[1:]) :
41    sys.stderr.write("THIS DEVELOPMENT VERSION OF PYKOTA IS BROKEN. YOU MUST NOT USE IT. YOU SHOULD DOWNLOAD AN EARLIER RELEASE INSTEAD, EITHER THROUGH AN ENTRY PASS, OR BY DOWNLOADING THE LATEST STABLE TAG FROM SUBVERSION.\n")
42    sys.exit(-1)
43
44data_files = []
45mofiles = glob.glob(os.sep.join(["po", "*", "*.mo"]))
46for mofile in mofiles :
47    lang = mofile.split(os.sep)[1]
48    directory = os.sep.join(["share", "locale", lang, "LC_MESSAGES"])
49    data_files.append((directory, [ mofile ]))
50   
51docdir = "share/doc/pykota"   
52docfiles = ["README", "FAQ", "SECURITY", "COPYING", "LICENSE", "CREDITS", "TODO"]
53if os.path.exists("ChangeLog") :
54    docfiles.append("ChangeLog")
55data_files.append((docdir, docfiles))
56
57docfiles = glob.glob(os.sep.join(["docs", "*.pdf"]))
58docfiles += glob.glob(os.sep.join(["docs", "*.sx?"]))
59data_files.append((docdir, docfiles))
60
61docfiles = glob.glob(os.sep.join(["docs", "pykota", "*.html"]))
62data_files.append((os.path.join(docdir, "html"), docfiles))
63
64docfiles = glob.glob(os.sep.join(["openoffice", "*.sx?"]))
65docfiles += glob.glob(os.sep.join(["openoffice", "*.png"]))
66docfiles += glob.glob(os.sep.join(["openoffice", "README"]))
67data_files.append((os.path.join(docdir, "openoffice"), docfiles))
68
69docfiles = glob.glob(os.sep.join(["qa-assistant", "*.xml"]))
70docfiles += glob.glob(os.sep.join(["qa-assistant", "README"]))
71data_files.append((os.path.join(docdir, "qa-assistant"), docfiles))
72
73directory = os.sep.join(["share", "man", "man1"])
74manpages = glob.glob(os.sep.join(["man", "*.1"]))   
75data_files.append((directory, manpages))
76
77modirs = [ os.path.split(os.path.split(mof)[0])[1] for mof in mofiles ]
78for dir in modirs :
79    directory = os.sep.join(["share", "man", dir, "man1"])
80    manpages = glob.glob(os.sep.join(["man", dir, "*.1"]))   
81    data_files.append((directory, manpages))
82
83directory = os.sep.join(["share", "pykota"])
84data_files.append((directory, ["checkdeps.py", "bin/cupspykota", \
85                               "bin/waitprinter.sh", \
86                               "bin/papwaitprinter.sh", \
87                               "bin/mailandpopup.sh", \
88                               "untested/pjl/pagecount.pjl", \
89                               "untested/pjl/status.pjl", \
90                               "untested/netatalk/netatalk.sh", \
91                               "untested/netatalk/pagecount.ps"]))
92
93data_files.append((os.sep.join([directory, "conf"]), 
94                  ["conf/README", "conf/pykota.conf.sample", 
95                   "conf/pykotadmin.conf.sample"]))
96
97data_files.append((os.sep.join([directory, "cgi-bin"]), 
98                  ["cgi-bin/README", 
99                   "cgi-bin/printquota.cgi", 
100                   "cgi-bin/dumpykota.cgi", 
101                   "cgi-bin/pykotme.cgi"]))
102
103data_files.append((os.sep.join([directory, "logos"]), 
104                  glob.glob(os.sep.join(["logos", "*.jpeg"])) \
105                + glob.glob(os.sep.join(["logos", "*.png"])) \
106                + glob.glob(os.sep.join(["logos", "*.xcf"]))))
107
108data_files.append((os.sep.join([directory, "stylesheets"]), 
109                  glob.glob(os.sep.join(["stylesheets", "*.css"])) \
110                + [ "stylesheets/README" ]))
111
112pgdirectory = os.sep.join([directory, "postgresql"])
113data_files.append((pgdirectory, ["initscripts/postgresql/README.postgresql", 
114                                 "initscripts/postgresql/pykota-postgresql.sql"]))
115
116ldapdirectory = os.sep.join([directory, "ldap"])
117data_files.append((ldapdirectory, ["initscripts/ldap/README.ldap", 
118                                   "initscripts/ldap/pykota.schema", 
119                                   "initscripts/ldap/pykota-schema-sunds.ldif", 
120                                   "initscripts/ldap/pykota-sample.ldif"]))
121
122mysqldirectory = os.sep.join([directory, "mysql"])
123data_files.append((mysqldirectory, ["initscripts/mysql/README.mysql", 
124                                    "initscripts/mysql/pykota-mysql.sql"]))
125
126sqlitedirectory = os.sep.join([directory, "sqlite"])
127data_files.append((sqlitedirectory, ["initscripts/sqlite/README.sqlite", 
128                                     "initscripts/sqlite/pykota-sqlite.sql"]))
129
130class MyInstallData(install_data) :
131    """A special class to ensure permissions are OK on the cupspykota backend."""
132    def run(self) :
133        """Launches the normal installation and then tweaks permissions."""
134        install_data.run(self)
135        if not self.dry_run :
136            cupspykota = [ filename for filename in self.get_outputs() if filename.endswith("cupspykota") ][0]
137            os.chmod(cupspykota, stat.S_IRWXU)
138   
139os.umask(022)
140setup(name = "pykota", version = __version__,
141      license = "GNU GPL version 3 or later",
142      description = __doc__,
143      author = "Jerome Alet",
144      author_email = "alet@librelogiciel.com",
145      url = "http://www.pykota.com",
146      packages = [ "pykota", 
147                   "pykota.storages", 
148                   "pykota.loggers", 
149                   "pykota.accounters", 
150                   "pykota.reporters",
151                 ],
152      scripts = [ "bin/pknotify", "bin/pkusers", "bin/pkinvoice", "bin/pksetup", \
153                  "bin/pkrefund", "bin/pkturnkey", "bin/pkbcodes", "bin/pkmail", \
154                  "bin/pkbanner", "bin/autopykota", "bin/dumpykota", \
155                  "bin/pykosd", "bin/edpykota", "bin/repykota", \
156                  "bin/warnpykota", "bin/pykotme", "bin/pkprinters" ],
157      data_files = data_files,
158      cmdclass = { "install_data" : MyInstallData })
Note: See TracBrowser for help on using the browser.