1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
|
import os, sys
import time
from os.path import join, basename
from subprocess import check_output
# Pre-fight checks
if not os.path.exists('brushlib/SConscript'):
print >>sys.stderr, """
----------------------------------------------------------------------
Missing submodule "brushlib"
Please run "git submodule update --init" to create it. See the README
for more information.
----------------------------------------------------------------------
"""
sys.exit(2)
Import('env', 'install_perms', 'install_tree')
# Clone the environment to not affect the common one
env = env.Clone()
mypaintlib = SConscript('lib/SConscript')
languages = SConscript('po/SConscript')
try:
new_umask = 022
old_umask = os.umask(new_umask)
print "set umask to 0%03o (was 0%03o)" % (new_umask, old_umask)
except OSError:
# Systems like Win32...
pass
def burn_versions(env, target, source):
"""Pseudo-builder: bakes version info into the target Python script.
This also burns in a suitable #! line for "python_binary".
"""
def _burn_versions(target, source, env):
sys.path.insert(0, ".")
import lib.meta
relinfo_script = lib.meta._get_release_info_script(gitprefix="git")
header = "\n".join([
"#!/usr/bin/env {python_binary}",
"#",
"# ***DO NOT EDIT THIS FILE***: edit {source} instead.",
"#",
"# Auto-generated version info:",
"{relinfo_script}",
]).format(
python_binary = env['python_binary'],
relinfo_script = relinfo_script,
source = source[0],
)
with open(unicode(target[0]), 'w') as output:
output.write(header)
with open(unicode(source[0])) as input:
output.write(input.read())
c = env.Command(target, source, [
_burn_versions,
Chmod(target, 0755),
])
d = env.Depends(target, env.Value(env["python_binary"]))
# But don't depend on the git output:
# users often run "scons prefix=/foo install" to install
# after invoking "scons prefix=foo" to build.
# In this case, we don't want git updating its index,
# or scons to update any files.
return [c, d]
env.AddMethod(burn_versions, "BurnVersions")
## Build-time customization
# User-facing executable Python code
# MyPaint app
env.BurnVersions('mypaint', 'mypaint.py')
# Thumbnailer script and .thumbnailer
# Only build or install on platforms where we might expect to find
# GNOME or Cinnamon.
if os.name == "posix":
env.BurnVersions(
'desktop/mypaint-ora-thumbnailer',
'desktop/mypaint-ora-thumbnailer.py',
)
install_perms(env,
'$prefix/bin',
'desktop/mypaint-ora-thumbnailer',
perms=0755,
)
install_perms(env,
'$prefix/share/thumbnailers',
'desktop/mypaint-ora.thumbnailer',
)
## Additional cleanup
env.Clean('.', Glob('*.pyc'))
env.Clean('.', Glob('gui/*.pyc'))
env.Clean('.', Glob('gui/colors/*.pyc'))
env.Clean('.', Glob('lib/*.pyc'))
env.Clean('.', Glob('lib/layer/*.pyc'))
## Installation
# Painting resources
install_tree(env, '$prefix/share/mypaint', 'backgrounds')
install_tree(env, '$prefix/share/mypaint', 'pixmaps')
install_tree(env, '$prefix/share/mypaint', 'palettes')
# Desktop resources and themeable internal icons
install_tree(env, '$prefix/share', 'desktop/icons')
install_perms(env, '$prefix/share/applications', 'desktop/mypaint.desktop')
install_perms(env, '$prefix/share/appdata', 'desktop/mypaint.appdata.xml')
# location for achitecture-dependent modules
install_perms(env, '$prefix/lib/mypaint', mypaintlib)
# Program and supporting UI XML
install_perms(env, '$prefix/bin', 'mypaint', perms=0755)
install_perms(env, '$prefix/share/mypaint/gui', Glob('gui/*.xml'))
install_perms(env, '$prefix/share/mypaint/gui', Glob('gui/*.glade'))
install_perms(env, "$prefix/share/mypaint/lib", Glob("lib/*.py"))
install_perms(env, "$prefix/share/mypaint/lib/layer", Glob("lib/layer/*.py"))
install_perms(env, "$prefix/share/mypaint/gui", Glob("gui/*.py"))
install_perms(env, "$prefix/share/mypaint/gui/colors", Glob("gui/colors/*.py"))
Return('mypaintlib')
# vim:syntax=python
|