root / pykota / trunk / setup.py @ 1658

Revision 1658, 23.5 kB (checked in by jalet, 20 years ago)

Now takes care of .sxi and .sxc files if any

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