Difference between revisions of "Mesh/Build An OpenWRT Image"

(added proxy builds)
Line 44: Line 44:


=Building an OpenWRT image using a proxy=
=Building an OpenWRT image using a proxy=
Those interested in building firmware on the local network, but want all the files to be updated through our specified server (or repository), then here's the process. It allows the code to be lock a specific firmware version, audit that version, compare it to other version, and save bandwidth on the network.


These are the scripts to support using a proxy to build OpenWRT.
These are the scripts to support using a proxy to build OpenWRT.
Line 49: Line 51:
They're ugly and hackish. They do not yet automirror downloaded files, which would be rather important.
They're ugly and hackish. They do not yet automirror downloaded files, which would be rather important.


Assumptions:
Assumptions: User 'sudomesh' builds the firmware.  User 'sudomirror' maintains the mirror. A third user has root.


User 'sudomesh' builds the firmware.  User 'sudomirror' maintains the mirror.
There is an http server on localhost, and ~/public_html/ maps to ~username URLs.
A third user has root.


There is an http server on localhost, and ~/public_html/ maps to ~username
~/bin/ is in your path ahead of system-wide binaries.
URLs.


~/bin/ is in your path ahead of systemwide binaries.
To use the proxy:  
 
Download the build proxy source from... (urls pending)
To use:
copy sudomesh-bin/* into ~sudomesh/bin/
copy sudomesh-bin/* into ~sudomesh/bin/
copy sudomirror-bin/* into ~sudomirror/bin/
copy sudomirror-bin/* into ~sudomirror/bin/
As sudomesh, check out the OpenWRT firmware (before the firewall is up!)
As sudomesh, check out the OpenWRT firmware (before the firewall is up!)
run firewall.sh as root.
run firewall.sh as root.
As sudomirror, mkdir -p ~/public_html/mirror/svn/
As sudomirror, prep-cloneserver.sh
As sudomirror, start ~/bin/build-proxy.py and ~/bin/cloneserver.py
As sudomirror, start ~/bin/build-proxy.py and ~/bin/cloneserver.py
As sudomesh, cd to the openwrt-firmware dir and run ./prepare
As sudomesh, cd to the openwrt-firmware dir and run ./prepare
---
OLD MANUAL CLONE INSTRUCTIONS:
To clone a Git repository into the mirror (we're assuming you're starting
by cloning https://github.com/sudomesh/openwrt-firmware.git and that your umask
is 022)
As the mirror user:
mkdir -p ~/public_html/mirror/https/github.com/sudomesh/openwrt-firmware.git
cd ~/public_html/mirror/https/github.com/sudomesh/openwrt-firmware.git
git --bare init
git --bare fetch https://github.com/sudomesh/openwrt-firmware.git master:master
git update-server-info
)
To clone a Subversion repo into the mirror, as the mirror user:
cd ~/public_html/mirror/svn/ (Create it if needed)
mkdir -p svn.openwrt.org/openwrt/branches/attitude_adjustment
svnadmin create svn.openwrt.org/openwrt/branches/attitude_adjustment
echo '#!/bin/sh' >svn.openwrt.org/openwrt/branches/attitude_adjustment/hooks/pre-revprop-change
chmod 755 svn.openwrt.org/openwrt/branches/attitude_adjustment/hooks/pre-revprop-change
svnsync init file://$PWD/svn.openwrt.org/openwrt/branches/attitude_adjustment svn://svn.openwrt.org/openwrt/branches/attitude_adjustment
svnsync sync file://$PWD/svn.openwrt.org/openwrt/branches/attitude_adjustment


CRITICAL NOTE: These assume that git and svnsync do not ever execute code
CRITICAL NOTE: These assume that git and svnsync do not ever execute code
downloaded from the remote.  I do not know if this is true.
downloaded from the remote.  I do not know if this is true.
289

edits