root / pykota / trunk / setup.py @ 1758

Revision 1758, 24.2 kB (checked in by jalet, 20 years ago)

Initial release of autopykota. Reading help or manpage is greatly
encouraged !

  • 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: ISO-8859-15 -*-
3#
4# PyKota
5#
6# PyKota : Print Quotas for CUPS and LPRng
7#
8# (c) 2003-2004 Jerome Alet <alet@librelogiciel.com>
9# This program is free software; you can redistribute it and/or modify
10# it under the terms of the GNU General Public License as published by
11# the Free Software Foundation; either version 2 of the License, or
12# (at your option) any later version.
13#
14# This program is distributed in the hope that it will be useful,
15# but WITHOUT ANY WARRANTY; without even the implied warranty of
16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17# GNU General Public License for more details.
18#
19# You should have received a copy of the GNU General Public License
20# along with this program; if not, write to the Free Software
21# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
22#
23# $Id$
24#
25# $Log$
26# Revision 1.52  2004/09/30 09:52:45  jalet
27# Initial release of autopykota. Reading help or manpage is greatly
28# encouraged !
29#
30# Revision 1.51  2004/09/21 21:31:35  jalet
31# Installation script now checks for availability of Python-SNMP (http://pysnmp.sf.net)
32#
33# Revision 1.50  2004/09/14 22:29:12  jalet
34# First version of dumpykota. Works fine but only with PostgreSQL backend
35# for now.
36#
37# Revision 1.49  2004/07/28 13:00:02  jalet
38# Now takes care of .sxi and .sxc files if any
39#
40# Revision 1.48  2004/07/27 07:14:24  jalet
41# Now warns the user if pyosd is not present
42#
43# Revision 1.47  2004/07/16 12:22:45  jalet
44# LPRng support early version
45#
46# Revision 1.46  2004/07/07 13:21:26  jalet
47# Introduction of the pykosd command
48#
49# Revision 1.45  2004/07/06 09:37:01  jalet
50# Integrated most of the Debian packaging work made by Sergio Gonz�z Gonz�z
51#
52# Revision 1.44  2004/06/05 22:03:49  jalet
53# Payments history is now stored in database
54#
55# Revision 1.43  2004/05/25 09:49:41  jalet
56# The old pykota filter has been removed. LPRng support disabled for now.
57#
58# Revision 1.42  2004/05/18 14:48:46  jalet
59# Big code changes to completely remove the need for "requester" directives,
60# jsut use "hardware(... your previous requester directive's content ...)"
61#
62# Revision 1.41  2004/05/13 14:17:32  jalet
63# Warning about changed accounter and requester directives
64#
65# Revision 1.40  2004/05/13 13:59:27  jalet
66# Code simplifications
67#
68# Revision 1.39  2004/04/08 17:07:41  jalet
69# pkpgcounter added
70#
71# Revision 1.38  2004/03/18 09:18:09  jalet
72# Installation now checks for old scripts
73#
74# Revision 1.37  2004/03/03 19:35:36  jalet
75# Spelling problem. Thanks to Jurandy Martins
76#
77# Revision 1.36  2004/02/25 15:10:38  jalet
78# Preliminary snmpprinterstatus command added.
79#
80# Revision 1.35  2004/02/12 22:43:58  jalet
81# Better integration in Debian and more LSB compliance, thanks to
82# Peter Hawkins.
83#
84# Revision 1.34  2004/02/07 13:45:51  jalet
85# Preliminary work on the pkhint command
86#
87# Revision 1.33  2004/02/04 11:16:59  jalet
88# pkprinters command line tool added.
89#
90# Revision 1.32  2004/01/18 20:52:50  jalet
91# Portuguese portuguese translation replaces brasilian portuguese one, which
92# moves in its own directory.
93# Installation script modified to reorganise installed documentation and include
94# the documentation on OpenOffice.org + ODBC
95#
96# Revision 1.31  2004/01/15 12:50:41  jalet
97# Installation scripts now tells where the documentation was installed.
98#
99# Revision 1.30  2004/01/12 15:45:03  jalet
100# Now installs documentation in /usr/share/doc/pykota too.
101#
102# Revision 1.29  2004/01/08 14:10:32  jalet
103# Copyright year changed.
104#
105# Revision 1.28  2003/12/27 16:49:25  uid67467
106# Should be ok now.
107#
108# Revision 1.28  2003/12/06 09:03:43  jalet
109# Added Perl script to retrieve printer's internal page counter via PJL,
110# contributed by Ren�und Jensen.
111#
112# Revision 1.27  2003/11/28 08:31:28  jalet
113# Shell script to wait for AppleTalk enabled printers being idle was added.
114#
115# Revision 1.26  2003/11/08 16:05:31  jalet
116# CUPS backend added for people to experiment.
117#
118# Revision 1.25  2003/10/08 07:01:19  jalet
119# Job history can be disabled.
120# Some typos in README.
121# More messages in setup script.
122#
123# Revision 1.24  2003/10/07 09:07:27  jalet
124# Character encoding added to please latest version of Python
125#
126# Revision 1.23  2003/07/29 20:55:17  jalet
127# 1.14 is out !
128#
129# Revision 1.22  2003/07/29 09:54:03  jalet
130# Added configurable LDAP mail attribute support
131#
132# Revision 1.21  2003/07/28 09:11:12  jalet
133# PyKota now tries to add its attributes intelligently in existing LDAP
134# directories.
135#
136# Revision 1.20  2003/07/23 16:51:32  jalet
137# waitprinter.sh is now included to prevent PyKota from asking the
138# printer's internal page counter while a job is still being printer.
139#
140# Revision 1.19  2003/07/16 21:53:07  jalet
141# Really big modifications wrt new configuration file's location and content.
142#
143# Revision 1.18  2003/07/03 09:44:00  jalet
144# Now includes the pykotme utility
145#
146# Revision 1.17  2003/06/30 12:46:15  jalet
147# Extracted reporting code.
148#
149# Revision 1.16  2003/06/06 20:49:15  jalet
150# Very latest schema. UNTESTED.
151#
152# Revision 1.15  2003/05/17 16:32:30  jalet
153# Also outputs the original import error message.
154#
155# Revision 1.14  2003/05/17 16:31:38  jalet
156# Dies gracefully if DistUtils is not present.
157#
158# Revision 1.13  2003/04/29 18:37:54  jalet
159# Pluggable accounting methods (actually doesn't support external scripts)
160#
161# Revision 1.12  2003/04/23 22:13:56  jalet
162# Preliminary support for LPRng added BUT STILL UNTESTED.
163#
164# Revision 1.11  2003/04/17 13:49:29  jalet
165# Typo
166#
167# Revision 1.10  2003/04/17 13:48:39  jalet
168# Better help
169#
170# Revision 1.9  2003/04/17 13:47:28  jalet
171# Help added during installation.
172#
173# Revision 1.8  2003/04/15 17:49:29  jalet
174# Installation script now checks the presence of Netatalk
175#
176# Revision 1.7  2003/04/03 20:03:37  jalet
177# Installation script now allows to install the sample configuration file.
178#
179# Revision 1.6  2003/03/29 13:45:26  jalet
180# GPL paragraphs were incorrectly (from memory) copied into the sources.
181# Two README files were added.
182# Upgrade script for PostgreSQL pre 1.01 schema was added.
183#
184# Revision 1.5  2003/03/29 13:08:28  jalet
185# Configuration is now expected to be found in /etc/pykota.conf instead of
186# in /etc/cups/pykota.conf
187# Installation script can move old config files to the new location if needed.
188# Better error handling if configuration file is absent.
189#
190# Revision 1.4  2003/03/29 09:47:00  jalet
191# More powerful installation script.
192#
193# Revision 1.3  2003/03/26 17:48:36  jalet
194# First shot at trying to detect the availability of the needed software
195# during the installation.
196#
197# Revision 1.2  2003/03/09 16:49:04  jalet
198# The installation script installs the man pages too now.
199#
200# Revision 1.1  2003/02/05 21:28:17  jalet
201# Initial import into CVS
202#
203#
204#
205
206import sys
207import glob
208import os
209import shutil
210try :
211    from distutils.core import setup
212except ImportError, msg :   
213    sys.stderr.write("%s\n" % msg)
214    sys.stderr.write("You need the DistUtils Python module.\nunder Debian, you may have to install the python-dev package.\nOf course, YMMV.\n")
215    sys.exit(-1)
216
217from distutils import sysconfig
218sys.path.insert(0, "pykota")
219from pykota.version import __version__, __doc__
220
221ACTION_CONTINUE = 0
222ACTION_ABORT = 1
223
224#ETC_DIR = "./debian/tmp/etc/pykota/"
225ETC_DIR = "/etc/pykota/"
226
227def checkOldModule(path) :
228    """Checks if an old PyKota module is still in the destination (in case of upgrade)."""
229    fname = os.path.join(sysconfig.get_python_lib(), "pykota", path)
230    for ext in ["py", "pyc", "pyo"] :
231        fullname = "%s.%s" % (fname, ext)
232        if os.path.isfile(fullname) :
233            sys.stderr.write("ERROR : old module %s still exists. Remove it and restart installation.\n" % fullname)
234            sys.stderr.write("INSTALLATION ABORTED !\n")
235            sys.exit(-1)
236   
237def checkOldScript(cmd) :
238    """Checks if an old shell script is still around in /usr/bin."""
239    return os.path.isfile(os.path.join("/usr/bin", cmd))
240
241def checkModule(module) :
242    """Checks if a Python module is available or not."""
243    try :
244        exec "import %s" % module
245    except ImportError :   
246        return 0
247    else :   
248        return 1
249       
250def checkCommand(command) :
251    """Checks if a command is available or not."""
252    input = os.popen("type %s 2>/dev/null" % command)
253    result = input.read().strip()
254    input.close()
255    return result
256   
257def checkWithPrompt(prompt, module=None, command=None, helper=None) :
258    """Tells the user what will be checked, and asks him what to do if something is absent."""
259    sys.stdout.write("Checking for %s availability : " % prompt)
260    sys.stdout.flush()
261    if command is not None :
262        result = checkCommand(command)
263    elif module is not None :   
264        result = checkModule(module)
265    if result :   
266        sys.stdout.write("OK\n")
267        return ACTION_CONTINUE
268    else :   
269        sys.stdout.write("NO.\n")
270        sys.stderr.write("ERROR : %s not available !\n" % prompt)
271        if helper is not None :
272            sys.stdout.write("%s\n" % helper)
273            sys.stdout.write("You may continue safely if you don't need this functionnality.\n")
274        answer = raw_input("%s is missing. Do you want to continue anyway (y/N) ? " % prompt)
275        if answer[0:1].upper() == 'Y' :
276            return ACTION_CONTINUE
277        else :
278            return ACTION_ABORT
279   
280if ("install" in sys.argv) and not ("help" in sys.argv) :
281    # checks if Python version is correct, we need >= 2.1
282    if not (sys.version > "2.1") :
283        sys.stderr.write("PyKota needs at least Python v2.1 !\nYour version seems to be older than that, please update.\nAborted !\n")
284        sys.exit(-1)
285       
286    # checks if a configuration file is present in the new location
287    if not os.path.isfile(os.path.join(ETC_DIR,"pykota.conf")) :
288        if not os.path.isdir(ETC_DIR) :
289            try :
290                os.mkdir(ETC_DIR)
291            except OSError, msg :   
292                sys.stderr.write("An error occured while creating the etc/pykota directory.\n%s\n" % msg)
293                sys.exit(-1)
294               
295        if os.path.isfile("/etc/pykota.conf") :
296            # upgrade from pre-1.14 to 1.14 and above
297            sys.stdout.write("From version 1.14 on, PyKota expects to find its configuration\nfile in /etc/pykota/ instead of /etc/\n")
298            sys.stdout.write("It seems that you've got a configuration file in the old location,\nso it will not be used anymore,\nand there's no configuration file in the new location.\n")
299            answer = raw_input("Do you want to move /etc/pykota.conf to /etc/pykota/pykota.conf (y/N) ? ")
300            if answer[0:1].upper() == 'Y' :
301                try :
302                    os.rename("/etc/pykota.conf", os.path.join(ETC_DIR,"pykota.conf"))
303                except OSError :   
304                    sys.stderr.write("ERROR : An error occured while moving /etc/pykota.conf to /etc/pykota/pykota.conf\nAborted !\n")
305                    sys.exit(-1)
306                else :   
307                    sys.stdout.write("Configuration file /etc/pykota.conf moved to /etc/pykota/pykota.conf.\n")
308            else :
309                sys.stderr.write("WARNING : Configuration file /etc/pykota.conf won't be used ! Move it to /etc/pykota/ instead.\n")
310                sys.stderr.write("PyKota installation will continue anyway,\nbut the software won't run until you put a proper configuration file in /etc/pykota/\n")
311            dummy = raw_input("Please press ENTER when you have read the message above. ")
312        else :
313            # first installation
314            if os.path.isfile("conf/pykota.conf.sample") :
315                answer = raw_input("Do you want to install\n\tconf/pykota.conf.sample as /etc/pykota/pykota.conf (y/N) ? ")
316                if answer[0:1].upper() == 'Y' :
317                    try :
318                        shutil.copy("conf/pykota.conf.sample", os.path.join(ETC_DIR,"pykota.conf"))       
319                        shutil.copy("conf/pykotadmin.conf.sample", os.path.join(ETC_DIR,"pykotadmin.conf"))       
320                    except IOError, msg :   
321                        sys.stderr.write("WARNING : Problem while installing sample configuration files in /etc/pykota/, please do it manually.\n%s\n" % msg)
322                    else :   
323                        sys.stdout.write("Configuration file /etc/pykota/pykota.conf and /etc/pykota/pykotadmin.conf installed.\nDon't forget to adapt these files to your needs.\n")
324                else :       
325                    sys.stderr.write("WARNING : PyKota won't run without a configuration file !\n")
326            else :       
327                # Problem ?
328                sys.stderr.write("WARNING : PyKota's sample configuration file cannot be found.\nWhat you have downloaded seems to be incomplete,\nor you are not in the pykota directory.\nPlease double check, and restart the installation procedure.\n")
329            dummy = raw_input("Please press ENTER when you have read the message above. ")
330    else :   
331        # already at 1.14 or above.
332        # Now check if old scripts are still in /usr/bin
333        for script in ["cupspykota", "pykota", "waitprinter.sh", "papwaitprinter.sh", "mailandpopup.sh", "pagecount.pl"] :
334            if checkOldScript(script) :
335                sys.stderr.write("WARNING : the %s script is still present in /usr/bin, but the new version will be installed in /usr/share/pykota, please remove the %s script from /usr/bin and double check that your configuration is correct.\n" % (script, script))
336                if script == "cupspykota" :
337                    sys.stderr.write("\nBe sure to also remove the old symbolic link from /usr/lib/cups/backend/cupspykota to /usr/bin/cupspykota. You'll have to recreate it once the installation has finished successfully.\n")
338                sys.stderr.write("\nINSTALLATION ABORTED !\nPlease correct the problem and restart installation.\n")
339                sys.exit(-1)
340               
341        # now checks if pre-1.19alpha8 code is still there       
342        for module in ["accounters/querying", "accounters/external", "requesters/snmp", "requesters/external"] :
343            checkOldModule(module)
344       
345    # Second stage, we will fail if onfiguration is incorrect for security reasons
346    from pykota.config import PyKotaConfig,PyKotaConfigError
347    try :
348        conf = PyKotaConfig(ETC_DIR)
349    except PyKotaConfigError, msg :   
350        sys.stedrr.write("%s\nINSTALLATION ABORTED !\nPlease restart installation.\n" % msg)
351        sys.exit(-1)
352    else :
353        hasadmin = conf.getGlobalOption("storageadmin", ignore=1)
354        hasadminpw = conf.getGlobalOption("storageadminpw", ignore=1)
355        hasuser = conf.getGlobalOption("storageuser", ignore=1)
356        if hasadmin or hasadminpw : 
357            sys.stderr.write("From version 1.14 on, PyKota expects that /etc/pykota/pykota.conf doesn't contain the Quota Storage Administrator's name and optional password.\n")
358            sys.stderr.write("Please put these in a [global] section in /etc/pykota/pykotadmin.conf\n")
359            sys.stderr.write("Then replace these values with 'storageuser' and 'storageuserpw' in /etc/pykota/pykota.conf\n")
360            sys.stderr.write("These two fields were re-introduced to allow any user to read to his own quota, without allowing them to modify it.\n")
361            sys.stderr.write("You can look at the conf/pykota.conf.sample and conf/pykotadmin.conf.sample files for examples.\n")
362            sys.stderr.write("YOU HAVE TO DO THESE MODIFICATIONS MANUALLY, AND RESTART THE INSTALLATION.\n")
363            sys.stderr.write("INSTALLATION ABORTED FOR SECURITY REASONS.\n")
364            sys.exit(-1)
365        if not hasuser :
366            sys.stderr.write("From version 1.14 on, PyKota expects that /etc/pykota/pykota.conf contains the Quota Storage Normal User's name and optional password.\n")
367            sys.stderr.write("Please put these in a [global] section in /etc/pykota/pykota.conf\n")
368            sys.stderr.write("These fields are respectively named 'storageuser' and 'storageuserpw'.\n")
369            sys.stderr.write("These two fields were re-introduced to allow any user to read to his own quota, without allowing them to modify it.\n")
370            sys.stderr.write("You can look at the conf/pykota.conf.sample and conf/pykotadmin.conf.sample files for examples.\n")
371            sys.stderr.write("YOU HAVE TO DO THESE MODIFICATIONS MANUALLY, AND RESTART THE INSTALLATION.\n")
372            sys.stderr.write("INSTALLATION ABORTED FOR SECURITY REASONS.\n")
373            sys.exit(-1)
374           
375        sb = conf.getStorageBackend()
376        if (sb.get("storageadmin") is None) or (sb.get("storageuser") is None) :
377            sys.stderr.write("From version 1.14 on, PyKota expects that /etc/pykota/pykota.conf contains the Quota Storage Normal User's name and optional password which gives READONLY access to the Print Quota DataBase,")
378            sys.stderr.write("and that /etc/pykota/pykotadmin.conf contains the Quota Storage Administrator's name and optional password which gives READ/WRITE access to the Print Quota DataBase.\n")
379            sys.stderr.write("Your configuration doesn't seem to be OK, please modify your configuration files in /etc/pykota/\n")
380            sys.stderr.write("AND RESTART THE INSTALLATION.\n")
381            sys.stderr.write("INSTALLATION ABORTED FOR SECURITY REASONS.\n")
382            sys.exit(-1)
383           
384        # warns for new LDAP fields   
385        if sb.get("storagebackend") == "ldapstorage" :   
386            usermail = conf.getGlobalOption("usermail", ignore=1)
387            newuser = conf.getGlobalOption("newuser", ignore=1)
388            newgroup = conf.getGlobalOption("newgroup", ignore=1)
389            if not (usermail and newuser and newgroup) :
390                sys.stderr.write("From version 1.14 on, PyKota LDAP Support needs three additional configuration fields.\n")
391                sys.stderr.write("Please put the 'usermail', 'newuser' and 'newgroup' configuration fields in a\n[global] section in /etc/pykota/pykota.conf\n")
392                sys.stderr.write("You can look at the conf/pykota.conf.sample file for examples.\n")
393                sys.stderr.write("YOU HAVE TO DO THESE MODIFICATIONS MANUALLY, AND RESTART THE INSTALLATION.\n")
394                sys.stderr.write("INSTALLATION ABORTED BECAUSE CONFIGURATION INCOMPLETE.\n")
395                sys.exit(-1)
396               
397        # Say something about caching mechanism and disabling job history
398        sys.stdout.write("You can now activate the database caching mechanism\nwhich is disabled by default.\nIt is especially recommended with the LDAP backend.\n")
399        sys.stdout.write("You can now disable the preservation of the complete\njob history which is enabled by default.\nIt is probably more useful with the LDAP backend.\n")
400        sys.stdout.write("PLEASE LOOK AT THE SAMPLE CONFIGURATION FILE conf/pykota.conf.sample\n")
401        sys.stdout.write("TO LEARN HOW TO DO\n")
402        dummy = raw_input("Please press ENTER when you have read the message above. ")
403        sys.stdout.write("\n")
404           
405    # change files permissions   
406    os.chmod(os.path.join(ETC_DIR,"pykota.conf"), 0644)
407    os.chmod(os.path.join(ETC_DIR,"pykotadmin.conf"), 0640)
408   
409    # WARNING MESSAGE   
410    sys.stdout.write("WARNING : IF YOU ARE UPGRADING FROM A PRE-1.19alpha17 TO 1.19alpha17 OR ABOVE\n")
411    sys.stdout.write("AND USE THE POSTGRESQL BACKEND, THEN YOU HAVE TO MODIFY YOUR\n")
412    sys.stdout.write("DATABASE SCHEMA USING initscripts/postgresql/upgrade-to-1.19.sql\n")
413    sys.stdout.write("PLEASE READ DOCUMENTATION IN initscripts/postgresql/ TO LEARN HOW TO DO.\n")
414    sys.stdout.write("YOU CAN DO THAT AFTER THE INSTALLATION IS FINISHED, OR PRESS CTRL+C NOW.\n")
415    sys.stdout.write("\n\nYOU DON'T HAVE ANYTHING SPECIAL TO DO IF THIS IS YOUR FIRST INSTALLATION\nOR IF YOU ARE ALREADY RUNNING VERSION 1.19alpha17 OR ABOVE.\n\n")
416    dummy = raw_input("Please press ENTER when you have read the message above. ")
417   
418    sys.stdout.write("\n\nWARNING : IF YOU ARE UPGRADING FROM A PRE-1.19alpha10 TO 1.19alpha10 OR ABOVE\n")
419    sys.stdout.write("YOU **MUST** MODIFY YOUR /etc/pykota/pykota.conf FILE BECAUSE accounter\n")
420    sys.stdout.write("AND requester DIRECTIVES SUPPORTED VALUES HAVE CHANGED.\n\n")
421    sys.stdout.write("YOU CAN DO THAT AFTER THE INSTALLATION IS FINISHED, OR PRESS CTRL+C NOW.\n")
422    sys.stdout.write("\n\nYOU DON'T HAVE ANYTHING SPECIAL TO DO IF THIS IS YOUR FIRST INSTALLATION\nOR IF YOU ARE ALREADY RUNNING VERSION 1.19alpha10 OR ABOVE.\n\n")
423    dummy = raw_input("Please press ENTER when you have read the message above. ")
424   
425    # checks if some needed Python modules are there or not.
426    modulestocheck = [ ("PygreSQL", "pg", "PygreSQL is mandatory if you want to use PostgreSQL as the quota storage backend.\nSee http://www.pygresql.org"),                                           
427                       ("mxDateTime", "mx.DateTime", "eGenix' mxDateTime is mandatory for PyKota to work.\nSee http://www.egenix.com"), 
428                       ("Python-LDAP", "ldap", "Python-LDAP is mandatory if you plan to use an LDAP\ndirectory as the quota storage backend.\nSee http://python-ldap.sf.net"),
429                       ("Python-OSD", "pyosd", "Python-OSD is recommended if you plan to use the X Window On Screen Display\nprint quota reminder named pykosd."),
430                       ("Python-SNMP", "pysnmp", "Python-SNMP is recommended if you plan to use hardware\naccounting with printers which support SNMP.\nSee http://pysnmp.sf.net"),
431                     ]
432    commandstocheck = [("SNMP Tools", "snmpget", "SNMP Tools are needed if you want to use SNMP enabled printers."), ("Netatalk", "pap", "Netatalk is needed if you want to use AppleTalk enabled printers.")]
433    for (name, module, helper) in modulestocheck :
434        action = checkWithPrompt(name, module=module, helper=helper)
435        if action == ACTION_ABORT :
436            sys.stderr.write("Aborted !\n")
437            sys.exit(-1)
438           
439    # checks if some software are there or not.
440    for (name, command, helper) in commandstocheck :
441        action = checkWithPrompt(name, command=command, helper=helper)
442        if action == ACTION_ABORT :
443            sys.stderr.write("Aborted !\n")
444            sys.exit(-1)
445           
446data_files = []
447mofiles = glob.glob(os.sep.join(["po", "*", "*.mo"]))
448for mofile in mofiles :
449    lang = mofile.split(os.sep)[1]
450    directory = os.sep.join(["share", "locale", lang, "LC_MESSAGES"])
451    data_files.append((directory, [ mofile ]))
452   
453docdir = "share/doc/pykota"   
454docfiles = ["README", "FAQ", "SECURITY", "COPYING", "LICENSE", "CREDITS", "TODO", "NEWS"]
455data_files.append((docdir, docfiles))
456
457docfiles = glob.glob(os.sep.join(["docs", "*.pdf"]))
458docfiles += glob.glob(os.sep.join(["docs", "*.sx?"]))
459data_files.append((docdir, docfiles))
460
461docfiles = glob.glob(os.sep.join(["docs", "spanish", "*.pdf"]))
462docfiles += glob.glob(os.sep.join(["docs", "spanish", "*.sxw"]))
463data_files.append((os.path.join(docdir, "spanish"), docfiles))
464
465docfiles = glob.glob(os.sep.join(["docs", "pykota", "*.html"]))
466data_files.append((os.path.join(docdir, "html"), docfiles))
467
468docfiles = glob.glob(os.sep.join(["openoffice", "*.sx?"]))
469docfiles += glob.glob(os.sep.join(["openoffice", "*.png"]))
470docfiles += glob.glob(os.sep.join(["openoffice", "README"]))
471data_files.append((os.path.join(docdir, "openoffice"), docfiles))
472
473directory = os.sep.join(["share", "man", "man1"])
474manpages = glob.glob(os.sep.join(["man", "*.1"]))   
475data_files.append((directory, manpages))
476
477directory = os.sep.join(["share", "pykota"])
478data_files.append((directory, ["bin/cupspykota", "bin/lprngpykota", "bin/waitprinter.sh", "bin/papwaitprinter.sh", "bin/mailandpopup.sh", "contributed/pagecount.pl", "untested/pjl/pagecount.pjl", "untested/pjl/status.pjl", "untested/netatalk/netatalk.sh", "untested/netatalk/pagecount.ps"]))
479
480setup(name = "pykota", version = __version__,
481      license = "GNU GPL",
482      description = __doc__,
483      author = "Jerome Alet",
484      author_email = "alet@librelogiciel.com",
485      url = "http://www.librelogiciel.com/software/",
486      packages = [ "pykota", "pykota.storages", "pykota.loggers", "pykota.accounters", "pykota.reporters" ],
487      scripts = [ "bin/autopykota", "bin/dumpykota", "bin/pkpgcounter", "bin/snmpprinterstatus", "bin/pykosd", "bin/edpykota", "bin/repykota", "bin/warnpykota", "bin/pykotme", "bin/pkprinters", "bin/pkhint" ],
488      data_files = data_files)
489
490if ("install" in sys.argv) and not ("help" in sys.argv) :
491    sys.stdout.write("\n\nYou can give a look at PyKota's documentation in:\n%s\n\n" % docdir)
Note: See TracBrowser for help on using the browser.