Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 7 Apr 2016 23:33:34 -0700
From:      Russell Haley <russ.haley@gmail.com>
To:        Ian Lepore <ian@freebsd.org>
Cc:        Boris Samorodov <bsam@passap.ru>, freebsd-arm <freebsd-arm@freebsd.org>,  Mark Millard <markmi@dsl-only.net>
Subject:   Re: Indication of Successful Build
Message-ID:  <CABx9NuTWSUyh7r5yqbsj%2BRorhg5RKtgHsBE1Z3sXFnPQfjrAtg@mail.gmail.com>
In-Reply-To: <CABx9NuQMwjCN_-jOsqzFqY66qYbuHrrkU-1iEEYW5rnhp9k1Mg@mail.gmail.com>
References:  <A36D4A7F-FE23-4E99-A2CA-A0F085270DE9@dsl-only.net> <CABx9NuScooxhv0VYAZr6DeWFzw5orvV4xQmcK3YSRVJTwLE1ig@mail.gmail.com> <570601E1.1080704@passap.ru> <CABx9NuTT0ume1BnMiZ1ECyQm=zbAFfCw7aor9wg9TKn9nX_PeQ@mail.gmail.com> <1460039914.1091.297.camel@freebsd.org> <CABx9NuQMwjCN_-jOsqzFqY66qYbuHrrkU-1iEEYW5rnhp9k1Mg@mail.gmail.com>

index | next in thread | previous in thread | raw e-mail

[-- Attachment #1 --]
Okay, I just expaneded Ian's script from the crossbuild page. This is
most of the way for what I want. Does someone know how to pull values
out of the  "svn info" command output (in the script there is a hard
coded revision number in the revision variable)?

I was able to use sudo -E by putting it in quotes, which fixes the
environment variable issues.

The one thing that is missing is archiving the old nfsroot directory.
hmmmm.... argh! ... must... sleep...

http://imgfave.com/view/3312424

Russ

On Thu, Apr 7, 2016 at 1:23 PM, Russell Haley <russ.haley@gmail.com> wrote:
> Okay, I'm getting there now. The script below is a rough start of what
> I was thinking. Check for success of each step and log it. It would be
> neat to include the script(1) command into this and only preserve the
> file if the a build step fails. As well, I'm thinking on "archiving"
> the build and deleting the last one if the current run succeeds. I'm
> new(ish) and self taught in Unix shell scripting so please point out
> anything wonky.
>
> #!/bin/bash
>
> BASEDIR=~/Projects
>
> if [ -z $1 ]
> then
> echo "Please include a project name"
> else
> PROJNAME=$1
> fi
>
> echo "`date` - Building for ${BASEDIR}/${PROJNAME}" >> ${BASEDIR}/logfile.log
>
> cd ${BASEDIR}/${PROJNAME} && make
>
> retval=$?
>
> if [ $retval -eq 0 ];
> then
> echo "`date` - Buildworld Succeeded" >> ${BASEDIR}/logfile.log
> else
> echo "`date` - Buildworld Failed with code $retval" >> ${BASEDIR}/logfile.log
> fi
>
>
> On Thu, Apr 7, 2016 at 7:38 AM, Ian Lepore <ian@freebsd.org> wrote:
>> On Thu, 2016-04-07 at 00:14 -0700, Russell Haley wrote:
>>> On Wed, Apr 6, 2016 at 11:44 PM, Boris Samorodov <bsam@passap.ru>
>>> wrote:
>>> > 06.04.16 23:14, Russell Haley пишет:
>>> > > Thanks for the input Mark.
>>> > >
>>> > > I'm currently looking into the cross build script on the
>>> > > developers
>>> >
>>> > Sees that you misunderstood Marks word "script". He uses SCRIPT(1)
>>> > to save build script output to a log-file.
>>>
>>> Thank you, I understood what he was doing. I was refering to the
>>> script here:
>>> https://wiki.freebsd.org/FreeBSD/arm/crossbuild
>>>
>>> >
>>> > > wiki, as well as considering updating crochet to use the u-boot
>>> > > ports
>>> > > and adding hummingboard to it. I'm going to take all these
>>> > > suggestions
>>> > > and see what I can come up with. In my mind it wouldn't be hard
>>> > > to use
>>> > > the return codes indicated by Boris to create a running log of
>>> > > make
>>> > > results and copy successful outputs to a different directory.
>>> > > What
>>> > > raises my concern is that I can't be the first person to ever
>>> > > come up
>>> > > with this idea, so where are all the other attempts at this? In
>>> > > my
>>> > > mind that means I'm either way ahead of the curve (not) or I am
>>> > > going
>>> > > down the wrong path and there is something else to this I haven't
>>> > > considered.
>>> >
>>> > I'd say that most developers have different purposes, plus it's not
>>> > hard
>>> > to create a shell script to automate the task. So everybody have
>>> > some of
>>> > them at their armoury. Here is mine (written once in a hurry, but
>>> > used
>>> > to be helpful and used often).
>>>
>>> Thank you for your script. This is precisely what I was looking for:
>>> some input on how other people build!
>>
>> It would be fairly trivial to add automatic log generation to that
>> script on the wiki page.  I usually don't care, but when I want logs
>> while I'm building I just add "2>&1 | tee make.log" (bash/sh syntax, it
>> would be different for csh) when I launch the script.  It would be easy
>> enough to put that inside the script, perhaps with some logic to
>> generate a log name that includes date and time.
>>
>> -- Ian

[-- Attachment #2 --]
#!/usr/local/bin/bash

BASEDIR=$(pwd)
PROJECT_NAME=hummingboard

BUILD_OUTPUT=buildoutput.log

# First set all tweakable variables to default values before loading
# config/mk.conf which can override any of these defaults.
mk_arch="armv6"
mk_insdir="${BASEDIR}/nfsroot"
mk_jobs="$(sysctl -n hw.ncpu)"
mk_kernel="IMX6"
mk_makeconf="${BASEDIR}/config/make.conf"
mk_mkargs=""
mk_nice="nice -10"
mk_objdir="${BASEDIR}/obj"
mk_srcconf="${BASEDIR}/config/src.conf"
mk_srcdir="${BASEDIR}/src"
mk_ubldraddr="0x0"

# If making a target that requires root privs, automatically add sudo.
# This can be overridden by setting mk_sudo="" in config/mk.conf.
case "$*" in
  *installworld* | *installkernel* | *distribution* | *builddtb* ) mk_sudo="sudo -E";;
esac


# Source in config/mk.conf if it exists.
if [ -r config/mk.conf ] ; then
    . config/mk.conf
fi

# If there is a local kernel config file, link it into the source tree.
if [ -r "config/${mk_kernel}" ] ; then
    ln -fs "../../../../config/${mk_kernel}"   "src/sys/arm/conf/${mk_kernel}"
fi

# MAKEOBJDIRPREFIX must be in the environment, not on the make command line.
export MAKEOBJDIRPREFIX="${mk_objdir}"

# Do it.

cd ${mk_srcdir} 

info="$(svn info)" 
echo ${info}

revision="r297517"

LOG_FILE=${BASEDIR}/logs/${PROJECT_NAME}.log

echo "`date` - Building $@ for ${PROJECT_NAME}-${revision}"

echo "`date` - Building $@ for ${PROJECT_NAME}-${revision}" >> ${LOG_FILE}

${mk_nice} ${mk_sudo} make -j ${mk_jobs} \
    "-DNO_CLEAN" \
    "TARGET_ARCH=${mk_arch}" \
    "DESTDIR=${mk_insdir}" \
    "__MAKE_CONF=${mk_makeconf}" \
    "srcconf=${mk_srcconf}" \
    "KERNCONF=${mk_kernel}" \
    "UBLDR_LOADADDR=${mk_ubldraddr}" \
    ${mk_mkargs} \
    "$@" > /tmp/temp-${revision}.output

retval=$?
#exit
if [ $retval -eq 0 ];
then
echo "`date` - $* Succeeded"
echo "`date` - $* Succeeded" >> ${LOG_FILE}
#mv /tmp/temp-${revision}.output ${BASEDIR}/logs/${revision}.output
else
echo "`date` - $* Failed with code $retval" 
echo "`date` - $* Failed with code $retval" >> ${LOG_FILE}
mv /tmp/temp-${revision}.output /logs/${revision}_errors.output
fi

help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CABx9NuTWSUyh7r5yqbsj%2BRorhg5RKtgHsBE1Z3sXFnPQfjrAtg>