summaryrefslogtreecommitdiff
path: root/HACKING
diff options
context:
space:
mode:
Diffstat (limited to 'HACKING')
-rw-r--r--HACKING63
1 files changed, 19 insertions, 44 deletions
diff --git a/HACKING b/HACKING
index 7963220..3b8b891 100644
--- a/HACKING
+++ b/HACKING
@@ -17,7 +17,7 @@
build basics
One of the coolest things about rvs (imo) is how modular and
- customizable it is. If you wish to create a fork of rvs, it would
+ customizable it is. If you wish to create a fork of rvs, it wls ould
be a good idea to give it a different name. This can be done
without even changing a single source file! Simply run configure
with `--name=NAME' option (variables that have `rvs' in the name
@@ -28,10 +28,11 @@
name='rvs'
The name of the program. Note that unlike most
variables, you should NOT call this in Makefiles
- (`$(name)'), but use $(rvs) instead.
+ (`$(name)'), but use `$(rvs)' instead.
RVS='$(bindir)/$(rvs)'
Where the exectuable will be. `$(rvs)' is the same as
- `$(name)' (see above)
+ `$(name)' (see above). In this document it is
+ sometimes reffered to as the `wrapper'.
SHELL='/bin/sh'
The shell that will be used by make, and the shell
that scripts will run in. (Perhaps we should make
@@ -104,54 +105,28 @@
and ONLY the final files to be used by that plugin.
========this is outdated but I don't really want to keep editing it ==
-
- There are two main parts to rvs, the wrapper, and the core. The
- wrapper is a small executable, located in the PATH, and is the one
- called when you type `rvs'. The core is a set of many small
- executables that do all the real work.
build system
- (be sure to read the `configuration' section of `README' first)
The build system rvs uses is rather simple.
`./configure' does two things:
- * create a preprocessor (`tmp/var.sed')
- * run `Makefile.orig' through the preprocessor to generate a
- propper `Makefile'
- Then, the Makefile runs each file in `source/' through the
- preprocessor, and writes the resulting files to `out/'.
-
- preprocessor
+ * create a sed script (`var.sed')
+ * run every incance of `$(srcdir)/Makefile.in' through
+ `var.sed' to generate a propper `Makefile'
- The preprocessor contains all configuration variables. When it
- processes a file every instance of `$$VAR_NAME$$' is replaced by
- that variable's value. Note that this replacement only happens for
+ `var.sed' contains all configuration variables. When it processes
+ a file every instance of `@VAR_NAME@' is replaced by that
+ variable's value. This makes `configure' act much like a GNU
+ package `congfigure'. Note that this replacement only happens for
defined variables.
- configuration Variables
-
- Again the configuration variables and their default values are:
- VER '0.6.3'
- SHELL '/usr/bin/env bash'
- prefix "$HOME"
- bindir 'bin'
- libdir '/etc/rvs/'
-
- The wrapper is installed at `$$prefix$$/$$bindir$$/rvs'
- The core is installed at `$$libdir$$/'
- The source for the wrapper is in `source/rvs'
- The source for the core is in `source/rvs-core/'
-
- $$SHELL$$ is the shell all shell scripts that are part of rvs are
- run in. As of rvs 0.6.3 all executables are shell scripts.
-
- Most of these can easily be changed _after_ compilation also:
- VER line 4 of the wrapper
- SHELL line 1 of each shell script
- prefix simply move the wrapper
- bindir simply move the wrapper
- libdir move the core, then update the line `RVSDIR=...' in
- the wrapper
+ Most of these can easily be changed _after_ `compilation' also:
+ VER line 4 of the wrapper
+ SHELL line 1 of each shell script
+ prefix simply move the wrapper
+ bindir simply move the wrapper
+ libexecdir move the directory, then update the line
+ `RVSDIR=...' in the wrapper
I have designed this system to be extremely modular. As you may
have figured out, each bit on functionality is in it's own
@@ -177,7 +152,7 @@
As you probably noticed (if you've looked at the blueprints or
source files), only directories and regular files have been
- implemented as of rvs 0.6.3.
+ implemented as of rvs 0.7.0.
After `rvs commit' has done this, it creates a meta-file for that
commit. The meta file contains author, copyright owner, licence