# build-helper

Common script used in other build scripts.

- `host-functions-source.sh`: to be included with `source` in the host build script
- `container-functions-source.sh`: to be included with `source` in the container build script

Deprecated:

- `builder-helper.sh`: used in the first generation of build scripts.

# Patches

The code used to download and extract archives can also be used
to post-patch the downloaded files. For this a patch file must be
placed in the `patches` folder, and the name must be passed as the
third param to `extract()`.

## Memo

The code to apply the patch (`common-functions-source.sh:extract()`) does 
the following:

```console
$ cd sources/binutils
$ patch -p0 < "binutils-2.31.patch"
```

The patch is applied from the library source folder, so it must be created
with the library relative path.

For example, to create a binutils patch, use:

```console
$ cd sources/binutils
$ cp bfd/ihex.c bfd/ihex-patched.c
$ vi bfd/ihex-patched.c
$ diff -u bfd/ihex.c bfd/ihex-patched.c > patches/binutils-2.31.patch
```

Alternatively, multiple changes can be generated by Git:

```console
$ git init
$ git add -A
$ git commit -m all
```

Perform changes as usual.

To create a patch with the uncommitted changes that will be consumed
with `patch`:

```console
$ git diff --no-prefix -u > file.patch
```

For completeness, to create a patch with the uncommitted changes that
will be consumeed with `git apply file.git-patch`.

```console
$ git diff > file.git-patch
```

It is also possible to create patches with git and consume them with patch

```console
$ git diff --no-prefix -u > file.patch
```

Links:

- https://git-scm.com/docs/git-diff
- https://git-scm.com/docs/git-apply

