Browse Source

Add documentation for the new module system

Matthias Schiffer 10 years ago
parent
commit
b48cdd4f1a
1 changed files with 43 additions and 8 deletions
  1. 43 8
      README.md

+ 43 - 8
README.md

@@ -1,23 +1,23 @@
 To build Gluon, after checkeing out the repository change to the source root directory
 To build Gluon, after checkeing out the repository change to the source root directory
 to  perform the following commands:
 to  perform the following commands:
 
 
-    git submodule update --init                                  # Get other repositories used by Gluon
     git clone git://github.com/freifunk-gluon/site-ffhl.git site # Get the Freifunk Lübeck site repository - or use your own!
     git clone git://github.com/freifunk-gluon/site-ffhl.git site # Get the Freifunk Lübeck site repository - or use your own!
+    make update                                                  # Get other repositories used by Gluon
     make                                                         # Build Gluon
     make                                                         # Build Gluon
 
 
-When calling make, the OpenWRT build environment is prepared/updated. To rebuilt
+When calling make, the OpenWRT build environment is prepared/updated. To rebuild
 the images only, just use:
 the images only, just use:
 
 
     make images
     make images
 
 
-The built images can be found in the directory ./images.
+The built images can be found in the directory `images`.
 
 
 For the build reserve 6GB of disk space. The building requires packages
 For the build reserve 6GB of disk space. The building requires packages
-for subversion, ncurses headers (libncurses-dev) and zlib headers
-(libz-dev).`
+for `subversion`, ncurses headers (`libncurses-dev`) and zlib headers
+(`libz-dev`).`
 
 
 
 
-There are three levels of 'make clean':
+There are three levels of `make clean`:
 
 
     make clean
     make clean
 
 
@@ -25,8 +25,43 @@ will only clean the Gluon-specific files;
 
 
     make cleanall
     make cleanall
 
 
-will also call 'make clean' on the OpenWRT tree, and
+will also call `make clean` on the OpenWRT tree, and
 
 
     make dirclean
     make dirclean
 
 
-will do all this, and call 'make dirclean' on the OpenWRT tree.
+will do all this, and call `make dirclean` on the OpenWRT tree.
+
+
+# Development
+
+To update the repositories used by Gluon, just adjust the commit IDs in `modules` and
+rerun
+
+	make update
+
+The repository paths may be changed locally by creating a file `modules.local`.
+
+`make update` also applies the patches that can be found in the directories found in
+`patches`; the resulting branch will be called `patched`, while the commit specified in `modules`
+can be refered to by the branch `base`.
+
+    make unpatch
+
+sets the repositories to the `base` branch,
+
+     make patch
+
+re-applies the patches by resetting the `patched` branch to `base` and calling `git am`
+for the patch files. Calling `make` or a similar command after calling `make unpatch`
+is generally not a good idea.
+
+After new patches have been commited on top of the patched branch (or existing commits
+since the base commit have been edited or removed), the patch directories can be regenerated
+using
+	make update-patches
+
+If applying a patch fails because you have changed the base commit, the repository will be reset to the old `patched` branch
+and you can try rebasing it onto the new `base` branch yourself and after that call `make update-patches` to fix the problem.
+
+Always call `make update-patches` after making changes to a module repository as `make update` will overwrite your
+commits, making `git reflog` the only way to recover them!