root / pykota / trunk / setup.py @ 1717

Revision 1717, 23.6 kB (checked in by jalet, 20 years ago)

First version of dumpykota. Works fine but only with PostgreSQL backend
for now.

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