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