Parcourir la source

Add documentation for the new module system

Matthias Schiffer il y a 10 ans
Parent
commit
b48cdd4f1a
1 fichiers modifiés avec 43 ajouts et 8 suppressions
  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  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!
+    make update                                                  # Get other repositories used by 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:
 
     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 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
 
@@ -25,8 +25,43 @@ will only clean the Gluon-specific files;
 
     make cleanall
 
-will also call 'make clean' on the OpenWRT tree, and
+will also call `make clean` on the OpenWRT tree, and
 
     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!