Mercurial > gub
view gub/specs/nsis.py @ 6192:194987553373
Nsis: add rpath to linux-x86::libstdc++; requires GNU/Linux build host. Fixes /usr/lib/libstdc++ dependency.
author | Jan Nieuwenhuizen <janneke@gnu.org> |
---|---|
date | Sun, 26 Aug 2012 10:59:17 +0200 |
parents | d30d675873f7 |
children | 8d8b634b4839 |
line wrap: on
line source
import os # from gub import cross from gub import misc from gub import tools class Nsis (tools.SConsBuild): source = 'http://surfnet.dl.sourceforge.net/sourceforge/nsis/nsis-2.46-src.tar.bz2' #source = ':pserver:anonymous@nsis.cvs.sourceforge.net:/cvsroot/nsis&module=NSIS&tag=HEAD' dependencies = ['mingw::cross/gcc'] scons_flags = misc.join_lines (''' DEBUG=yes NSIS_CONFIG_LOG=yes SKIPUTILS="NSIS Menu" ''') def __init__ (self, settings, source): tools.AutoBuild.__init__ (self, settings, source) if 'x86_64-linux' in self.settings.build_architecture: self.dependencies += ['linux-x86::glibc'] cross.change_target_package_x86 (self, self.add_mingw_env ()) if 'stat' in misc.librestrict (): self.compile_command = ('LIBRESTRICT_IGNORE=%(tools_prefix)s/bin/python ' + tools.SConsBuild.compile_command) def add_mingw_env (self): # Do not use 'root', 'usr', 'cross', rather use from settings, # that enables changing system root, prefix, etc. mingw_dir = (self.settings.alltargetdir + '/mingw' + self.settings.root_dir) mingw_bin = (mingw_dir + self.settings.prefix_dir + self.settings.cross_dir + '/bin') tools_dir = (self.settings.alltargetdir + '/tools' + self.settings.root_dir) tools_bin = (tools_dir + self.settings.prefix_dir + '/bin') return {'PATH': mingw_bin + ':' + tools_bin + ':' + os.environ['PATH'] } def patch (self): self.system ('mkdir -p %(allbuilddir)s', ignore_errors=True) self.system ('ln -s %(srcdir)s %(builddir)s') if 'x86_64-linux' in self.settings.build_architecture: self.file_sub ([('''^Export\('defenv'\)''', ''' import os defenv['CC'] = os.environ['CC'] defenv['CXX'] = os.environ['CXX'] defenv['C_INCLUDE_PATH'] = '' defenv['CPLUS_INCLUDE_PATH'] = '' defenv['CFLAGS'] = '' # SCons will add double quotes when LINKFLAGS contains whitespace, # so start and end with double quotes as so to disarm them #defenv['LINKFLAGS'] = '"%(rpath)s -Wl,-rpath -Wl,%(alltargetdir)s/%(build_platform)s%(root_dir)s%(prefix_dir)s/lib"' # Nsis is built 32 bit -- this won't work for non-GNU/Linux build hosts defenv['LINKFLAGS'] = '"%(rpath)s -Wl,-rpath -Wl,%(alltargetdir)s/linux-x86%(root_dir)s%(prefix_dir)s/lib"' Export('defenv') ''')], '%(srcdir)s/SConstruct') # this method is overwritten for x86-64_linux def build_environment (self): return self.add_mingw_env () def compile (self): self.system ('cd %(builddir)s && %(compile_command)s', self.build_environment ()) def install (self): self.system ('cd %(builddir)s && %(install_command)s ', self.build_environment ()) self.system ('cp -p %(nsisdir)s/FontName.dll %(install_prefix)s/share/nsis/Plugins')