Skip to content

Instantly share code, notes, and snippets.

@cachefiles
Last active January 8, 2017 15:25
Show Gist options
  • Save cachefiles/09c02ee39f3a5d2fd1e2ffc2a654fbfe to your computer and use it in GitHub Desktop.
Save cachefiles/09c02ee39f3a5d2fd1e2ffc2a654fbfe to your computer and use it in GitHub Desktop.
openwrt build daemon for build machine
<html>
<head>
</head>
<body>
<?php
function is_web_url($url)
{
return preg_match('/^[a-zA-Z0-9_:\\/.-]*$/', $url) > 0;
}
$sdkurl = $_REQUEST["sdkurl"];
$s = socket_create(AF_INET, SOCK_STREAM, 0);
$c = socket_connect($s, "127.0.0.1", 9000);
if (!$c) {
socket_close($s);
usleep(10000);
$s = socket_create(AF_INET, SOCK_STREAM, 0);
$c = socket_connect($s, "127.0.0.1", 9000);
}
if ($c && is_web_url($sdkurl)) {
socket_write($s, "sdkurl=");
socket_write($s, $sdkurl);
$build_dir = socket_read($s, 1024);
}
socket_close($s);
?>
<?php echo $build_dir ?>
</body>
</html>
#!/bin/bash
webdir=/var/www/html/downloads/dnsfix-openwrt;
build_package() {
wget -O - $sdkurl | tar xjf - -C $tmpdir || return;
sdkdir=$tmpdir/$(ls $tmpdir);
git clone --recursive https://github.com/cachefiles/dnsfix $sdkdir/package/dnsfix || return;
make -C $sdkdir package/dnsfix/openwrt/compile || return;
mkdir -p $webdir/$bindir;
cp $(find $sdkdir/bin -type f) $webdir/$bindir || return;
(cd $webdir && find $bindir/ -type f -name \*.ipk) > $webdir/$jobdir/pkgpath.txt;
rm -rf $tmpdir;
cat $webdir/$jobdir/pkgpath.txt;
}
while true; do
jobdir=$(mktemp -d build_openwrt_XXXX)
tmpdir=$(pwd)/$jobdir;
echo wait new build $jobdir;
echo new build jobid is $jobdir > $webdir/build.txt
echo $tmpdir | nc -l -p 9000 -s 127.0.0.1 -q 1 > sdkenv.rc
echo check build $jobdir;
#sdkurl=http://downloads.openwrt.org/latest/adm8668/generic/OpenWrt-SDK-15.05.1-adm8668_gcc-4.8-linaro_uClibc-0.9.33.2.Linux-x86_64.tar.bz2
sdkurl="";
source sdkenv.rc
bindir=$(echo $sdkurl| sed 's#(https|http)://[^/]*/#/#; s#/[^/]*$#/#; s#.*/\([^/]*/[^/]*/[^/]*/\)[^/]*$#\1#');
echo $sdkurl;
echo start build job $jobdir > $webdir/build.txt
if echo $sdkurl |grep downloads.openwrt.org; then
mkdir -p $webdir/$jobdir;
build_package 2>&1 | tee $webdir/$jobdir/build.log;
else
rmdir $tmpdir
fi;
echo done build job $jobdir > $webdir/build.txt
done;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment