--- a +++ b/trunk/wharfie/lib/actions.py @@ -0,0 +1,115 @@ +#!/usr/bin/python +# +# Copyright 2017 Ingo Hornberger <ingo_@gmx.net> +# +# This software is licensed under the MIT License +# +# Permission is hereby granted, free of charge, to any person obtaining a copy of this +# software and associated documentation files (the "Software"), to deal in the Software +# without restriction, including without limitation the rights to use, copy, modify, +# merge, publish, distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to the following +# conditions: +# +# The above copyright notice and this permission notice shall be included in all copies +# or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +# PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE +# OR OTHER DEALINGS IN THE SOFTWARE. +# +################################################################################ + +def run(name, dep, cmd): + makeTarget = { + 'comment' : "%s %s" % (cmd[0], cmd[1]), + 'name': name, + 'dep': dep, + 'trgcmd': cmd[1] + }; + return makeTarget; + +def run_host(name, dep, cmd): + makeTarget = { + 'comment' : "%s %s" % (cmd[0], cmd[1]), + 'name': name, + 'dep': dep, + 'hostcmd': cmd[1] + }; + return makeTarget; + +def add(name, dep, cmd): + src,dst = cmd[1].lstrip().split(" ") + dep.append(src) + myHostCmd = ''' + dest="$(pwd)"; + cd ../; + mkdir -p $(dirname "${dest}/%s"); + cp -R --preserve=mode %s "${dest}/%s"''' % (dst, src, dst) + + makeTarget = { + 'comment' : "%s %s" % (cmd[0], cmd[1]), + 'name': name, + 'dep': dep, + 'hostcmd': myHostCmd + }; + return makeTarget; + +def source(name, dep, cmd): + myTrgCmd = ''' + mkdir /sources; + cd /sources; + [ ! -f .pkg.list ] && + dpkg-query -f \'${binary:Package}\\n\' -W > .pkg.list; + apt-get install -y dpkg-dev; + cat .pkg.list | xargs -n 1 apt-get source''' + myHostCmd = 'tar -cf ../' + cmd[1].lstrip() + ' sources;' + makeTarget = { + 'comment' : "%s %s" % (cmd[0], cmd[1]), + 'name': name, + 'dep': dep, + 'trgcmd': myTrgCmd, + 'hostcmd': myHostCmd, + 'temporary': True + }; + return makeTarget; + +def license(name, dep, cmd): + myTrgCmd = ''' + mkdir /licenses; + for i in /usr/share/doc/*/; + do [ -f $i/copyright ] && + cp $i/copyright licenses/$(basename $i).txt || + echo $(basename $i) >> licenses/___MISSING___.txt; + done''' + myHostCmd = 'tar -cf ../' + cmd[1].lstrip() + ' licenses;' + makeTarget = { + 'comment' : "%s %s" % (cmd[0], cmd[1]), + 'name': name, + 'dep': dep, + 'trgcmd': myTrgCmd, + 'hostcmd': myHostCmd, + 'temporary': True + }; + return makeTarget; + +def toolchain(name, dep, cmd): + myTrgCmd = ''' + apt-get install -y libc6-dev; + [ -d ./usr/lib/arm-linux-gnueabi*/ ] && + (cd ./usr/lib/arm-linux-gnueabi*/; ln -s crt1.o crt0.o)''' + myHostCmd = 'rm .hst.sh; mkdir target; mv ./* target; mkdir host; (cd host; tar -xf ../../debian_toolchain.tar); cp ../debian_toolchain_env.sh env.sh; tar -cf ../' + cmd[1].lstrip() + ' .;' + dep.append('debian_toolchain.tar') + dep.append('debian_toolchain_env.sh') + makeTarget = { + 'comment' : "%s %s" % (cmd[0], cmd[1]), + 'name': name, + 'dep': dep, + 'trgcmd': myTrgCmd, + 'hostcmd': myHostCmd, + 'temporary': True + }; +