Changes

From Amahi Wiki
Jump to: navigation, search
1,992 bytes added ,  17:51, 12 September 2009
m
no edit summary
This is an "advanced" technique for install scripts to
 
* Reduce the size of install scripts
* Make them more forward compatible for the future
* Make them more robust
 
== The Idea ==
 
The idea is simple: install by hand, make changes to make it work, then compare against the pristine sources, generating a patch that later does automatically what you did by hand
 
* Setup the app for installation as a webapp (say in html). Save a pristine copy as html.orign
* Make changes in html/ only
* Find out the diff of what you made:
diff -r -N -b -u html.orig html > app-patch.diff
* This then can go into the install script as follows:
patch -p0 -E << 'EOF'
.... contents of app-patch.diff here ....
'EOF'
 
Note: If patching a single file above, after the 'patch -p0 -E' and before the '<< EOF', insert the filename of file to be patched. Otherwise, installer will attempt to prompt for File to patch and then skip immediately since its automated.
 
 
== Testing the patch ahead of time ==
 
It is strongly encouraged that you test the patch before attempting trial-and-error runs in the install script, which can be time consuming and error prone. This is basically simulating the install script applying the patch.
 
To do this, do this:
 
mv html html.modified
cp -a html.orig html
mv html.orig html.pristine
 
(the last step is to prevent patch from accidentally patching html.orig)
 
then try your patch against html dir (which is now like the original):
 
patch -p0 -E < app-patch.diff
 
There is a --dry-run option for patch that lends itself useful for previewing the patch without it actually patching files.
 
Doing this '''will''' save you a lot of trial-and-error in the installer.
 
If you have an problems, remove html and then
 
cp -a html.pristine html
 
(or unpack the app again and rename it to make the root html/)
== References ==
* Good [http://www.linuxtutorialblog.com/post/introduction-using-diff-and-patch-tutorial reference tutorial on diff and patch]
* [http://stephenjungels.com/jungels.net/articles/diff-patch-ten-minutes.html Ten minute guide to diff and patch]
24

edits