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
RevLine 
[695]1#! /usr/bin/env python
[3260]2# -*- coding: UTF-8 -*-
[695]3#
[3259]4# PyKota : Print Quotas for CUPS
[695]5#
[3133]6# (c) 2003, 2004, 2005, 2006, 2007 Jerome Alet <alet@librelogiciel.com>
[3259]7# This program is free software: you can redistribute it and/or modify
[873]8# it under the terms of the GNU General Public License as published by
[3259]9# the Free Software Foundation, either version 3 of the License, or
[873]10# (at your option) any later version.
[3259]11#
[873]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
[3259]18# along with this program.  If not, see <http://www.gnu.org/licenses/>.
[695]19#
20# $Id$
21#
[2028]22#
[695]23
24import sys
25import glob
26import os
[3005]27import stat
[884]28import shutil
[996]29try :
30    from distutils.core import setup
[3005]31    from distutils.command.install_data import install_data
[997]32except ImportError, msg :   
33    sys.stderr.write("%s\n" % msg)
[996]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)
[695]36
37sys.path.insert(0, "pykota")
38from pykota.version import __version__, __doc__
39
[3264]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
[695]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 ]))
[839]50   
[1592]51docdir = "share/doc/pykota"   
[3156]52docfiles = ["README", "FAQ", "SECURITY", "COPYING", "LICENSE", "CREDITS", "TODO"]
53if os.path.exists("ChangeLog") :
54    docfiles.append("ChangeLog")
[1297]55data_files.append((docdir, docfiles))
[1279]56
[1307]57docfiles = glob.glob(os.sep.join(["docs", "*.pdf"]))
[1658]58docfiles += glob.glob(os.sep.join(["docs", "*.sx?"]))
[1307]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
[1658]64docfiles = glob.glob(os.sep.join(["openoffice", "*.sx?"]))
[1307]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
[3214]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
[839]73directory = os.sep.join(["share", "man", "man1"])
74manpages = glob.glob(os.sep.join(["man", "*.1"]))   
75data_files.append((directory, manpages))
[695]76
[1829]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
[1345]83directory = os.sep.join(["share", "pykota"])
[2383]84data_files.append((directory, ["checkdeps.py", "bin/cupspykota", \
[2469]85                               "bin/waitprinter.sh", \
[2383]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"]))
[1345]92
[1905]93data_files.append((os.sep.join([directory, "conf"]), ["conf/README", "conf/pykota.conf.sample", "conf/pykotadmin.conf.sample"]))
94
[2175]95data_files.append((os.sep.join([directory, "cgi-bin"]), ["cgi-bin/README", "cgi-bin/printquota.cgi", "cgi-bin/dumpykota.cgi", "cgi-bin/pykotme.cgi"]))
[1905]96
[1911]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"]))))
[1907]98
[2508]99data_files.append((os.sep.join([directory, "stylesheets"]), glob.glob(os.sep.join(["stylesheets", "*.css"])) + [ "stylesheets/README" ]))
100
[1905]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
[2638]107mysqldirectory = os.sep.join([directory, "mysql"])
108data_files.append((mysqldirectory, ["initscripts/mysql/README.mysql", "initscripts/mysql/pykota-mysql.sql"]))
109
[2748]110sqlitedirectory = os.sep.join([directory, "sqlite"])
111data_files.append((sqlitedirectory, ["initscripts/sqlite/README.sqlite", "initscripts/sqlite/pykota-sqlite.sql"]))
112
[3005]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   
[2434]122os.umask(022)
[695]123setup(name = "pykota", version = __version__,
[3259]124      license = "GNU GPL version 3 or later",
[695]125      description = __doc__,
126      author = "Jerome Alet",
127      author_email = "alet@librelogiciel.com",
[2909]128      url = "http://www.pykota.com",
[1483]129      packages = [ "pykota", "pykota.storages", "pykota.loggers", "pykota.accounters", "pykota.reporters" ],
[3033]130      scripts = [ "bin/pknotify", "bin/pkusers", "bin/pkinvoice", "bin/pksetup", \
[3063]131                  "bin/pkrefund", "bin/pkturnkey", "bin/pkbcodes", "bin/pkmail", \
[2699]132                  "bin/pkbanner", "bin/autopykota", "bin/dumpykota", \
133                  "bin/pykosd", "bin/edpykota", "bin/repykota", \
134                  "bin/warnpykota", "bin/pykotme", "bin/pkprinters" ],
[3005]135      data_files = data_files,
136      cmdclass = { "install_data" : MyInstallData })
Note: See TracBrowser for help on using the browser.