root / pykota / trunk / setup.py @ 3264

Revision 3264, 6.1 kB (checked in by jerome, 16 years ago)

Ensure only developers will install the latest development tree for now,
to prevent people from forming bad feelings about this (great) software.

  • 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 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 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"]), ["conf/README", "conf/pykota.conf.sample", "conf/pykotadmin.conf.sample"]))
94
95data_files.append((os.sep.join([directory, "cgi-bin"]), ["cgi-bin/README", "cgi-bin/printquota.cgi", "cgi-bin/dumpykota.cgi", "cgi-bin/pykotme.cgi"]))
96
97data_files.append((os.sep.join([directory, "logos"]), glob.glob(os.sep.join(["logos", "*.jpeg"])) + glob.glob(os.sep.join(["logos", "*.png"])) + glob.glob(os.sep.join(["logos", "*.xcf"]))))
98
99data_files.append((os.sep.join([directory, "stylesheets"]), glob.glob(os.sep.join(["stylesheets", "*.css"])) + [ "stylesheets/README" ]))
100
101pgdirectory = os.sep.join([directory, "postgresql"])
102data_files.append((pgdirectory, ["initscripts/postgresql/README.postgresql", "initscripts/postgresql/pykota-postgresql.sql"]))
103
104ldapdirectory = os.sep.join([directory, "ldap"])
105data_files.append((ldapdirectory, ["initscripts/ldap/README.ldap", "initscripts/ldap/pykota.schema", "initscripts/ldap/pykota-sample.ldif"]))
106
107mysqldirectory = os.sep.join([directory, "mysql"])
108data_files.append((mysqldirectory, ["initscripts/mysql/README.mysql", "initscripts/mysql/pykota-mysql.sql"]))
109
110sqlitedirectory = os.sep.join([directory, "sqlite"])
111data_files.append((sqlitedirectory, ["initscripts/sqlite/README.sqlite", "initscripts/sqlite/pykota-sqlite.sql"]))
112
113class MyInstallData(install_data) :
114    """A special class to ensure permissions are OK on the cupspykota backend."""
115    def run(self) :
116        """Launches the normal installation and then tweaks permissions."""
117        install_data.run(self)
118        if not self.dry_run :
119            cupspykota = [ filename for filename in self.get_outputs() if filename.endswith("cupspykota") ][0]
120            os.chmod(cupspykota, stat.S_IRWXU)
121   
122os.umask(022)
123setup(name = "pykota", version = __version__,
124      license = "GNU GPL version 3 or later",
125      description = __doc__,
126      author = "Jerome Alet",
127      author_email = "alet@librelogiciel.com",
128      url = "http://www.pykota.com",
129      packages = [ "pykota", "pykota.storages", "pykota.loggers", "pykota.accounters", "pykota.reporters" ],
130      scripts = [ "bin/pknotify", "bin/pkusers", "bin/pkinvoice", "bin/pksetup", \
131                  "bin/pkrefund", "bin/pkturnkey", "bin/pkbcodes", "bin/pkmail", \
132                  "bin/pkbanner", "bin/autopykota", "bin/dumpykota", \
133                  "bin/pykosd", "bin/edpykota", "bin/repykota", \
134                  "bin/warnpykota", "bin/pykotme", "bin/pkprinters" ],
135      data_files = data_files,
136      cmdclass = { "install_data" : MyInstallData })
Note: See TracBrowser for help on using the browser.