2006-05-10 16:21:51 +02:00
#!/usr/bin/env python
from distutils . core import setup
2016-09-16 16:09:59 +02:00
import distutils . core
2009-05-06 13:47:53 +02:00
import distutils . command . build
import distutils . command . install_data
import os . path
2009-05-06 11:33:18 +02:00
import osc . core
2009-05-14 17:49:54 +02:00
import sys
2009-05-06 13:47:53 +02:00
from osc import commandline
from osc import babysitter
2009-05-14 17:49:54 +02:00
# optional support for py2exe
try :
import py2exe
HAVE_PY2EXE = True
except :
HAVE_PY2EXE = False
2009-05-06 13:47:53 +02:00
2011-07-08 16:09:44 +02:00
2009-05-06 13:47:53 +02:00
class build_osc ( distutils . command . build . build , object ) :
"""
Custom build command which generates man page .
"""
def build_man_page ( self ) :
"""
"""
2009-05-09 16:16:18 +02:00
import gzip
2016-09-16 16:04:25 +02:00
man_path = os . path . join ( self . build_base , ' osc.1.gz ' )
2009-05-06 13:47:53 +02:00
distutils . log . info ( ' generating %s ' % man_path )
2009-05-09 16:16:18 +02:00
outfile = gzip . open ( man_path , ' w ' )
2011-07-08 16:09:44 +02:00
osccli = commandline . Osc ( stdout = outfile )
# FIXME: we cannot call the main method because osc expects an ~/.oscrc
# file (this would break builds in environments like the obs)
2009-05-10 12:42:36 +02:00
#osccli.main(argv = ['osc','man'])
osccli . optparser = osccli . get_optparser ( )
2010-12-22 13:29:52 +01:00
osccli . do_man ( None )
2009-05-09 16:16:18 +02:00
outfile . close ( )
2009-05-06 13:47:53 +02:00
def run ( self ) :
super ( build_osc , self ) . run ( )
2009-05-10 12:42:36 +02:00
self . build_man_page ( )
2006-05-10 16:21:51 +02:00
2016-02-15 23:31:02 +01:00
# Support for documentation (sphinx)
2016-09-16 16:09:59 +02:00
class build_docs ( distutils . core . Command ) :
2016-02-15 23:31:02 +01:00
description = ' builds documentation using sphinx '
user_options = [ ]
def initialize_options ( self ) :
2016-09-16 16:04:25 +02:00
self . built_docs = None
2016-02-15 23:31:02 +01:00
def finalize_options ( self ) :
2016-09-16 16:04:25 +02:00
self . set_undefined_options ( ' build ' , ( ' build_base ' , ' built_docs ' ) )
2016-02-15 23:31:02 +01:00
def run ( self ) :
# metadata contains information supplied in setup()
metadata = self . distribution . metadata
# package_dir may be None, in that case use the current directory.
src_dir = ( self . distribution . package_dir or { ' ' : ' ' } ) [ ' ' ]
src_dir = os . path . join ( os . getcwd ( ) , src_dir )
import sphinx
sphinx . main ( [ ' runme ' ,
' -D ' , ' version= %s ' % metadata . get_version ( ) ,
2016-09-16 16:04:25 +02:00
os . path . join ( ' docs ' , ) , os . path . join ( self . built_docs , ' docs ' ) ] )
# take a potential build-base option into account (for instance, if osc is
# build and installed like this:
# python setup.py build --build-base=<dir> ... install ...)
class install_data ( distutils . command . install_data . install_data , object ) :
def initialize_options ( self ) :
super ( install_data , self ) . initialize_options ( )
self . built_data = None
def finalize_options ( self ) :
super ( install_data , self ) . finalize_options ( )
self . set_undefined_options ( ' build ' , ( ' build_base ' , ' built_data ' ) )
data_files = [ ]
for f in self . data_files :
# f is either a str or a (dir, files) pair
# (see distutils.command.install_data.install_data.run)
if isinstance ( f , str ) :
data_files . append ( os . path . join ( self . built_data , f ) )
else :
data_files . append ( ( f [ 0 ] , [ os . path . join ( self . built_data , i ) for i in f [ 1 ] ] ) )
self . data_files = data_files
2016-02-15 23:31:02 +01:00
2009-05-14 17:49:54 +02:00
addparams = { }
if HAVE_PY2EXE :
2009-05-15 13:40:50 +02:00
addparams [ ' console ' ] = [ { ' script ' : ' osc-wrapper.py ' , ' dest_base ' : ' osc ' , ' icon_resources ' : [ ( 1 , ' osc.ico ' ) ] } ]
2009-05-14 17:49:54 +02:00
addparams [ ' zipfile ' ] = ' shared.lib '
2011-07-08 16:09:44 +02:00
addparams [ ' options ' ] = { ' py2exe ' : { ' optimize ' : 0 , ' compressed ' : True , ' packages ' : [ ' xml.etree ' , ' StringIO ' , ' gzip ' ] } }
2009-05-14 17:49:54 +02:00
data_files = [ ]
2009-05-15 13:40:50 +02:00
if sys . platform [ : 3 ] != ' win ' :
2016-09-16 16:04:25 +02:00
data_files . append ( ( os . path . join ( ' share ' , ' man ' , ' man1 ' ) , [ ' osc.1.gz ' ] ) )
2009-05-14 17:49:54 +02:00
2006-05-10 16:21:51 +02:00
setup ( name = ' osc ' ,
2009-05-14 17:49:54 +02:00
version = osc . core . __version__ ,
description = ' openSUSE commander ' ,
long_description = ' Command-line client for the openSUSE Build Service, which allows to access repositories in the openSUSE Build Service in similar way as Subversion repositories. ' ,
author = ' openSUSE project ' ,
author_email = ' opensuse-buildservice@opensuse.org ' ,
license = ' GPL ' ,
2013-02-06 00:43:36 +01:00
platforms = [ ' Linux ' , ' Mac OSX ' , ' Windows XP/2000/NT ' , ' Windows 95/98/ME ' , ' FreeBSD ' ] ,
2009-05-06 11:33:18 +02:00
keywords = [ ' openSUSE ' , ' SUSE ' , ' RPM ' , ' build ' , ' buildservice ' ] ,
2010-07-27 15:20:35 +02:00
url = ' http://en.opensuse.org/openSUSE:OSC ' ,
2011-10-20 20:38:09 +02:00
download_url = ' https://github.com/openSUSE/osc ' ,
2009-05-14 17:49:54 +02:00
packages = [ ' osc ' , ' osc.util ' ] ,
scripts = [ ' osc_hotshot.py ' , ' osc-wrapper.py ' ] ,
data_files = data_files ,
2006-05-10 16:21:51 +02:00
2009-05-06 13:47:53 +02:00
# Override certain command classes with our own ones
cmdclass = {
' build ' : build_osc ,
2016-02-15 23:31:02 +01:00
' build_docs ' : build_docs ,
2016-09-16 16:04:25 +02:00
' install_data ' : install_data
2009-05-06 13:47:53 +02:00
} ,
2009-05-14 17:49:54 +02:00
* * addparams
2006-05-10 16:21:51 +02:00
)