My notes for Makeshift
builders
/ Properly ‘software builders’.
\ - A builder is coded all in one file.
\ - A default copy of the builder is included in the release package.
\ - The builder itself warns if it needs to be updated owing to change in the default copy.
\ / Viz. after a new release of the Breccia Web imager has been installed.
\ - Only a programmer will ever see this, or have to act on it.
\ - It is updated manually by reference to a public diff.
\ / E.g. via a URL into a Web copy of the release repository, e.g. on Git Hub.
\ / Later maybe also as Gentoo users do, by a tool-assisted merger.
\ - To personalize the builder, I will build from a private branch of the project.
\ - While I code in the master branch, I build in my private branch.
\ - My private branch alone has my personalized copy of the builder.
\ - Building initially entails merging any changes from the master branch and, if necessary,
\ restarting the builder.
- The function of software builders is personalized as follows.
- They use the general path mechanism of the OS.
/ E.g. to locate the JDK.
- They use conventional locations.
/ E.g. `/tmp/` in the case of the output directory,
namely `/tmp/Makeshift/<project-proper-path>`.
- They use relative file references.
/ E.g. to locate other projects which are dependencies.
- They take parameters.
- Via the shell.
- Via environment variable `BUILD_PARAMETERS`.
- They put intermediate and end results under `/tmp/Makeshift/<project-proper-path>`.
- Software builders use:
• `jpackage`
: see https://openjdk.java.net/jeps/343
+ Would it be useful, given builder and launcher?
‘builder’ vs. ‘building’
- Term (and project subdirectory) ‘builder’ I use to refer to a project’s proper builder
together with the building code (internal and external) it depends on and entails.
- Term (and directory) ‘building’ I apply to building code that builders elsewhere may depend on.
/ E.g. the Java programming project’s proper builder I might store in `Java/builder/`,
while in `Java/building/` I house a separate project of Java-specific building code.
target naming
- Characters ‘-’ and ‘_’ are equivalent in user-given target names.
∵ The user description for targets is in source code that necessarily uses ‘_’,
while ‘-’ is more convenient for users to type in the shell.
- Targets are defined in the source code as enumeration constants each having a lower-case name.
∵ Lower case, while atypical, is more convenient for users to type in the shell.
testing
>+ clean && build Makeshift/example/top/ builder custom
>+ clean && build Makeshift/example/top/ builder
>+ clean && build Makeshift/example/top/ custom
>+ clean && build Makeshift/example/mixed_top/ builder custom class_files
>+ clean && build Makeshift/example/mixed_top/ builder
>+ clean && build Makeshift/example/mixed_top/ custom
>+ clean && build Makeshift/example/mixed_top/ class_files
>+ clean && build Makeshift/example/sub/ builder custom class_files
>+ clean && build Makeshift/example/sub/ builder
>+ clean && build Makeshift/example/sub/ class_files
>+ clean && build Makeshift/example/sub/ custom