root / pykota / trunk / setup.py @ 1647

Revision 1647, 23.3 kB (checked in by jalet, 20 years ago)

Now warns the user if pyosd is not present

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