root / pykota / trunk / setup.py @ 3411

Revision 3411, 6.8 kB (checked in by jerome, 16 years ago)

Minor change to please emacs...

  • 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
[3411]2# -*- coding: utf-8 -*-
[695]3#
[3259]4# PyKota : Print Quotas for CUPS
[695]5#
[3275]6# (c) 2003, 2004, 2005, 2006, 2007, 2008 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:]) :
[3265]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")
[3264]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
[3338]93data_files.append((os.sep.join([directory, "conf"]), 
94                  ["conf/README", "conf/pykota.conf.sample", 
95                   "conf/pykotadmin.conf.sample"]))
[1905]96
[3338]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"]))
[1905]102
[3338]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"]))))
[1907]107
[3338]108data_files.append((os.sep.join([directory, "stylesheets"]), 
109                  glob.glob(os.sep.join(["stylesheets", "*.css"])) \
110                + [ "stylesheets/README" ]))
[2508]111
[1905]112pgdirectory = os.sep.join([directory, "postgresql"])
[3338]113data_files.append((pgdirectory, ["initscripts/postgresql/README.postgresql", 
114                                 "initscripts/postgresql/pykota-postgresql.sql"]))
[1905]115
116ldapdirectory = os.sep.join([directory, "ldap"])
[3338]117data_files.append((ldapdirectory, ["initscripts/ldap/README.ldap", 
[3344]118                                   "initscripts/ldap/README.sunds", 
[3338]119                                   "initscripts/ldap/pykota.schema", 
[3344]120                                   "initscripts/ldap/pykota-sunds-indexes.ldif", 
[3338]121                                   "initscripts/ldap/pykota-schema-sunds.ldif", 
122                                   "initscripts/ldap/pykota-sample.ldif"]))
[1905]123
[2638]124mysqldirectory = os.sep.join([directory, "mysql"])
[3338]125data_files.append((mysqldirectory, ["initscripts/mysql/README.mysql", 
126                                    "initscripts/mysql/pykota-mysql.sql"]))
[2638]127
[2748]128sqlitedirectory = os.sep.join([directory, "sqlite"])
[3338]129data_files.append((sqlitedirectory, ["initscripts/sqlite/README.sqlite", 
130                                     "initscripts/sqlite/pykota-sqlite.sql"]))
[2748]131
[3005]132class MyInstallData(install_data) :
133    """A special class to ensure permissions are OK on the cupspykota backend."""
134    def run(self) :
135        """Launches the normal installation and then tweaks permissions."""
136        install_data.run(self)
137        if not self.dry_run :
138            cupspykota = [ filename for filename in self.get_outputs() if filename.endswith("cupspykota") ][0]
139            os.chmod(cupspykota, stat.S_IRWXU)
140   
[2434]141os.umask(022)
[695]142setup(name = "pykota", version = __version__,
[3259]143      license = "GNU GPL version 3 or later",
[695]144      description = __doc__,
145      author = "Jerome Alet",
146      author_email = "alet@librelogiciel.com",
[2909]147      url = "http://www.pykota.com",
[3305]148      packages = [ "pykota", 
149                   "pykota.storages", 
150                   "pykota.loggers", 
151                   "pykota.accounters", 
152                   "pykota.reporters",
153                 ],
[3033]154      scripts = [ "bin/pknotify", "bin/pkusers", "bin/pkinvoice", "bin/pksetup", \
[3345]155                  "bin/pkrefund", "bin/pkturnkey", "bin/pkbcodes", \
[2699]156                  "bin/pkbanner", "bin/autopykota", "bin/dumpykota", \
157                  "bin/pykosd", "bin/edpykota", "bin/repykota", \
158                  "bin/warnpykota", "bin/pykotme", "bin/pkprinters" ],
[3005]159      data_files = data_files,
160      cmdclass = { "install_data" : MyInstallData })
Note: See TracBrowser for help on using the browser.