#!/usr/bin/env python

import os
import Params

APPNAME = "tear"
MAINTAINER = "Bundyo <bundyo@gmail.com>"
VERSION = "0.3.98"
BUILD = "6"
VERSION_MAJOR_MINOR = VERSION + "-" + BUILD
PREFIX = '/usr'

srcdir = '.'
blddir = '_build_'

def set_options(opt):
    opt.tool_options('compiler_cc')
    opt.add_option('--maemo-launcher', action='store_true', default=False, help='Enable maemo-launcher support.', dest='maemo_launcher')
    opt.sub_options("src")

def configure(conf):
    conf.check_tool('compiler_cc cc vala intltool')

    conf.check_pkg('glib-2.0', destvar='GLIB', vnum='2.10.0')
    conf.check_pkg('gconf-2.0', destvar='GCONF', vnum='2.10.0')
    conf.check_pkg('gobject-2.0', destvar='GOBJECT', vnum='2.10.0')
    conf.check_pkg('gtk+-2.0', destvar='GTK+', vnum='2.10.0')
    conf.check_pkg('gdk-x11-2.0', destvar='GDKX11', vnum='2.10.0')
    conf.check_pkg('hildon-1', destvar='HILDON', vnum='1.0')
    conf.check_pkg('hildon-1', destvar='FREMANTLE', vnum='2.1.62')
    conf.check_pkg('hildon-fm-2', destvar='HILDONFM', vnum='1.9')
    conf.check_pkg('gnome-vfs-2.0', destvar='GNOMEVFS', vnum='2.10.0')
    conf.check_pkg('conic', destvar='CONIC', vnum='0.16')
    conf.check_pkg('libpcre', destvar='PCRE', vnum='6.5')
    conf.check_pkg('libosso', destvar='OSSO', vnum='2.0')
    conf.check_pkg('sqlite3', destvar='SQLITE', vnum='3.0')
    conf.check_pkg('webkit-1.0', destvar='WEBKIT', vnum='1.0')
    conf.check_pkg('vala', destvar='VALA', vnum='0.7.7')
    conf.check_pkg('x11', destvar='X', vnum='1.0')
    if Params.g_options.maemo_launcher:
    	conf.check_pkg('maemo-launcher-app', destvar='LAUNCHER', vnum='0.31')
#    conf.check_pkg('libxml-2.0', destvar='LIBXML', vnum='2.0.0', mandatory=True)
	
    if (conf.env['HAVE_FREMANTLE'] == 1):
        conf.define('VALAFLAGS', '--disable-dbus-transformation -D FREMANTLE')

    conf.define('APPNAME', APPNAME)
    conf.define('PACKAGE', APPNAME)
    conf.define('PACKAGE_NAME', APPNAME.capitalize())
    conf.define('PACKAGE_STRING', APPNAME + '-' + VERSION)
    conf.define('PACKAGE_VERSION', APPNAME + '-' + VERSION)
    conf.define('GETTEXT_PACKAGE', APPNAME)
    conf.define('APP_DIR', os.path.join(PREFIX, 'share', APPNAME)) 
    conf.define('LOCALE_DIR', os.path.join(PREFIX, 'share', 'locale')) 
    conf.define('PIXMAPS_DIR', os.path.join(PREFIX, 'share', 'pixmaps'))
    conf.define('MAINTAINER', MAINTAINER)

    conf.define('VERSION', VERSION)
    conf.define('VERSION_MAJOR_MINOR', VERSION_MAJOR_MINOR)

    conf.write_config_header("config.h")

def build(bld):
    bld.add_subdirs('src')

def dist():
	import os, shutil, sys

	# Here's the core info for the package
	DEBARCH = "armel"
	DEBDEPENDS = "libgtk2.0-0, libglib2.0-0, libhildon1, libosso1, libpcre3, gconf2, libsqlite3-0, libwebkit-1.0-1 | libwebkitgtk-1.0" # what are we dependent on? hildonfm2, libgconf2.0, 
	DEBDESC = "A WebKit based browser with dashhboard"
	
	DEBDIR = [
	    ("DEBIAN/postinst","include/postinst"),
	    ("DEBIAN/preinst","include/preinst"),
	]
	
	DEBFILES = [
	
	    # Now we specify the files to be included in the .deb
	    # Where they should go, and where they should be copied from.
	    # If you have a lot of files, you may wish to generate this 
	    # list in some other way.
	    ("usr/bin/"+APPNAME,													"_build_/default/src/"+APPNAME),
	    ("home/user/.tear/userstyles.css",										"include/userstyles.css"),
	    ("usr/share/pixmaps/"+APPNAME+".png",									"include/"+APPNAME+".png"),
	    ("usr/share/icons/hicolor/40x40/hildon/"+APPNAME+".png",				"include/"+APPNAME+".png"),
	    ("usr/share/icons/hicolor/64x64/hildon/"+APPNAME+".png",				"include/"+APPNAME+".png"),
	    ("usr/share/"+APPNAME+"/home/"+APPNAME+".png",							"include/"+APPNAME+".png"),
	    ("usr/share/"+APPNAME+"/"+APPNAME+"_no_bookmark.png",					"include/"+APPNAME+"_no_bookmark.png"),
	    ("usr/share/"+APPNAME+"/"+APPNAME+"_bookmark.png",						"include/"+APPNAME+"_bookmark.png"),
	    ("usr/share/"+APPNAME+"/"+APPNAME+"_no_bookmark_rss.png",				"include/"+APPNAME+"_no_bookmark_rss.png"),
	    ("usr/share/"+APPNAME+"/"+APPNAME+"_bookmark_rss.png",					"include/"+APPNAME+"_bookmark_rss.png"),
	    ("usr/share/"+APPNAME+"/"+APPNAME+"_add.png",							"include/"+APPNAME+"_add.png"),
	    ("usr/share/"+APPNAME+"/"+APPNAME+"_edit.png",							"include/"+APPNAME+"_edit.png"),
	    ("usr/share/"+APPNAME+"/"+APPNAME+"_remove.png",						"include/"+APPNAME+"_remove.png"),
	    ("usr/share/"+APPNAME+"/"+APPNAME+"_back.png",							"include/"+APPNAME+"_back.png"),
	    ("usr/share/"+APPNAME+"/"+APPNAME+"_forward.png",						"include/"+APPNAME+"_forward.png"),
	    ("usr/share/"+APPNAME+"/"+APPNAME+"_refresh.png",						"include/"+APPNAME+"_refresh.png"),
	    ("usr/share/"+APPNAME+"/"+APPNAME+"_stop.png",							"include/"+APPNAME+"_stop.png"),
	    ("usr/share/"+APPNAME+"/"+APPNAME+"_go.png",							"include/"+APPNAME+"_go.png"),
	    ("usr/share/applications/hildon/"+APPNAME+".desktop",					"include/"+APPNAME+".desktop"),
	    ("usr/share/dbus-1/services/com.nokia."+APPNAME+".service",				"include/com.nokia."+APPNAME+".service"),
	    ("etc/osso-backup/applications/"+APPNAME+".conf",						"include/"+APPNAME+".conf"),
	]
	    
	# This is the debian package we're going to create
	debpkg = '%s-%s-%s_%s.deb' % (APPNAME, VERSION, BUILD, DEBARCH)
	
	DEBCONTROLFILE = "distbuild/DEBIAN/control"

	os.system("rm -r distbuild/")

	def copy_force(src, dst):
		try: os.makedirs(os.path.dirname(dst))
		except: print "Directory "+os.path.dirname(dst)+" already exists.";
		shutil.copy2(src, dst)

	for f in DEBFILES:
	    dest = os.path.join("distbuild/", f[0])
	    copy_force(f[1], dest)
	
	# Now to create the control file:
	
	CONTROL_TEMPLATE = """Package: %s
Priority: optional
Section: user/other
Installed-Size: %s
Maintainer: %s
Architecture: %s
Version: %s
Depends: %s
Description: %s
Maemo-Display-Name: Tear
Maemo-Icon-26: 
 iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAABGdBTUEAAK/INwWK6QAAAAZi
 S0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAAXwAAAGAABUf3twAABHJJREFUSMe9lttvVFUUh799
 9jkz58y0nUtvlHZaS4GRCtqCMCUKbRVqSEAFLX1Q0AcfTEiMD/JqNL744Jt/gSEa0mg0XtBG
 SdVECUiAAEYlhNoC0k4vTDszncu5bB9oLMVeBh88yUpO1jl7ffu3fjsrWyil+D8efbHk0NAQ
 g4ODC3Ke5wGgaVpJhTs7O2lpaZlPKKX+Ff39/feuE4kdXc3t2zoaAQ0QK4GOHTu2oKa+0gKA
 2rq6UO+RN967PT6a/PXC+aPFYiEHuPfTupL60NG9u3vGij6lV8d61qyPt861fEVV9wUKR6IV
 G3f2vJDM5oNpaTYndu3ZL6UMlrrJkkGtbZsf0avruwwUruuJ5m2dvfGNmzbdr6plQbquy7bH
 u3uK6JVhy0fENHCsipZdB196NRKN1kFpHq8IqqyuiVatiXcpz6XCbxCy/BgCqh569MDTh145
 bBhGWanKlgWtiW9o1cqirYYA05AEDUnIMig4ri/W8cSR7r37+6SmBUqxYLkfxIPtWxOzror6
 pMCnCXy6RsCnEzZ9FIRek+h9+a0nn3m+V7sDk/8BpAgEg2aormFL0XYwpIYUAikEfikp8xuE
 TR9pV6tNPHf47V37nt2nCWEut/FFP3ieoqqmNlpR29DiuQ5SgEAh8PCTp0wvEjUFlZYkZXv1
 iQOH3mxt27IZMJbya8lTI3U9krXdVUJKxNwY8TxFlRjmAWsYLahTDGmkCoq0o8fliweOXh8Z
 fn16cvw6YJekSClFXUNjyBNauVLeP/PKUzBarEa4LrViDLN4i0ZznLbQGF0b6Gnfvv2gkEZg
 MVVLKqqsqQ2gaZrneARVipgYQWJgazo3ZiMEtQzHz+QZSulowqFgT/orm9buLQtHPk1PJrOA
 UxLIsW3XdVzluh45W1LpjbA2OIWGBM2HZQr2tAXo/30VKRViajJFOKyvbWhoiP02mfyzJJAA
 xm7eyMXyOddWghmnnEuZZhrMDI5t8/mlLIbfRyQoiMhpskQoD4fxGdIqD4XCcyUEoJZXJART
 42OTFsUxx7HDQUBqcKsQpDE4QyAgOZOsw5+xsD0H5SuSK3iYQuYy06mZkj0SQpCaSt6qyFz5
 JRYx4utVltUSLAUZR2NnHAo+j6S2iqIHo6kMeTuLMzt+ceTa1WHAu1vN8qBUevabEz9/sLFn
 /46By3ZTpekRMT1CpkvYdEH7i5tFH64VZjSVobbCuv3HicH+TDo9ca8/yx4GQJ079dOp+uZ1
 79Zv6nhnZHy6atoFM6+hMja2XcARaYSlWB0pnx49c/L909+f/A6YnVNUMshzHSc38PFHxxMT
 YzPrHtv9WloGHs7ZrmXrLtIqJ2LIXNDOXLj67Scfnjo5cMK27XGgcG/bVgIBeLnZ2fQPX3/5
 2eWzp8+2tm9NRFc3tukQFcpLDY9cu3Tl4vlzkxMTN4EMUFxMTSkgAFcplZ9IJod+HPjqBvAF
 85Pa4c64sefel7wkLgqKxWL09fUtUDYXDpBn/viqu2LeXKVoampaUPNvq2nPwgZkzi4AAAAZ
 dEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAAElFTkSuQmCC
"""
	
	# This function creates the control file from the template and info
	# specified above, and works out the final size of the package.
	def make_control(target=None):
	    installed_size = 0
	    for i in DEBFILES:
	        installed_size += os.stat(str(i[1]))[6]
	    control_info = CONTROL_TEMPLATE % (
	        APPNAME, installed_size / 1000, MAINTAINER, DEBARCH, VERSION,
	        DEBDEPENDS, DEBDESC)
	    try: os.makedirs(os.path.dirname(target))
	    except: print "Directory "+os.path.dirname(target)+" already exists.";
	    f = open(str(target), 'w')
	    f.write(control_info)
	    f.close()
	    
	# We can generate the control file by calling make_control
	make_control(DEBCONTROLFILE)
	
	for f in DEBDIR:
	    dest = os.path.join("distbuild/", f[0])
	    copy_force(f[1], dest)
	
	os.system("strip distbuild/usr/bin/" + APPNAME)
	
	# And we can generate the .deb file by calling dpkg-deb
	os.system("dpkg-deb -b %s ../%s" % ("distbuild/", debpkg))


def shutdown():
    import UnitTest, Object
    unittest = UnitTest.unit_test()
    unittest.want_to_see_test_output = True
    unittest.want_to_see_test_error = True
    unittest.run()
    unittest.print_results()
    import Params
    Params.pprint ('YELLOW', 'You may find the resulting objects in the %s folder' % blddir)

