Nahum Shalman

The SmartOS lx brand is coming along nicely.

I can't take any credit for the actual work, but I did help in two ways:

  1. I started a wiki page to help people learn how to test it while it's under development.
  2. I set up my home machine to rebuild SmartOS regularly when there are new commits.

The latter evolved over time. At first I was just blindly rebuilding 90 minutes after the previous build had completed, but now I'm using a somewhat clever hack using a feature of git to do builds more intelligently.

In my build zone I have a separate delegated filesystem where I do builds, and a second, extra checkout of illumos joyent. Inside that extra checkout is where I have my hack:

[root@smartos-build ~/illumos-joyent]# cat .git/hooks/post-merge 
#!/bin/bash -x

FILESYSTEM=zones/smartos-build/data/ws/smartos-live

SNAPNAME=$(zfs list -t snapshot -Ho name -r $FILESYSTEM | tail -n 1)  
zfs rollback $SNAPNAME  
cd $(zfs list -Ho mountpoint $FILESYSTEM)  
gmake update  
zfs snapshot $FILESYSTEM@$(TZ=UTC date "+%Y%m%dT%H%M%SZ")  
time gmake world live  
mput -m -c 1 -f output/platform*.tgz ~~/public/smartos/platform-hourly.tgz  
./tools/build_iso
mput -m -c 1 -f output-iso/platform*.iso ~~/public/smartos/platform-hourly.iso  
/usr/bin/sum -x md5 output-iso/platform-*.iso output/platform*.tgz | sed 's|-[0-9][0-9TZ]*|-hourly|;s|[^ ]*/||' | mput -H 'content-type: text/plain' ~~/public/smartos/md5sums.txt
mput -H 'content-type: text/plain' ~~/public/smartos/platform-hourly-gitstatus.json -m -f output/platform-*/i86pc/amd64/boot_archive.gitstatus  
cd -  

In a screen session in a shell where I have my Manta SSH key available from an SSH agent, I simply run:

while true; do sleep 3600; git pull; done;  

After a build finishes, check hourly for new commits and if there's anything new, the post-merge hook kicks off the next build. Otherwise, just sleep for another hour and check again.

Of course, Joyent runs a proper CI server that rebuilds SDC for every commit. At some point I'm hoping to figure out how to run a SmartOS machine off the SDC platform image so that I can stop doing my own builds. If I do, you'll probably read about it here.

Go kick the tires on the lx brand! I heard on IRC that someone managed to get XFCE running (I assume in a VNC server or with X forwarding or something....)

smartos