Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This works by using git as backend for all the dirty work. This means
that patches are not just applied, but committed separately on top of the
base sources (which are put into an initial commit). A final empty commit
marks the end of the applied patch series, which allows to have multiple
sets of patches to apply on top of each other. So a git history might
look like this:
- OpenADK patch marker: 0000
(this is the initial commit, containing the unpatched sources)
- patch 1 of series 1
- patch 2 of series 1
- patch 3 of series 1
- OpenADK patch marker: 0001
- patch 1 of series 2
- patch 2 of series 2
- OpenADK patch marker: 0002
In addition to the separating empty commits, for every patch series
metadata files are added (which are used for update-patches):
__patchfiles__: A list of the patches' file names
__patchdir__: The directory containing the applied patches
Since patches might have to be unzipped first and in order to allow
calling git-am just once for each patch series, the patches (along with
above metadata files) are cached in dedicated directories:
.git/patch_tmp/NNNN (where NNNN is the series number with leading zeroes
[so shell globbing returns them in the right order]).
In case update-patches is called later, update_patches.sh works it's way
reverse through the git history, searching for commits named 'OpenADK
patch marker: NNNN'. For each one it finds, it uses the metadata info to
first remove all source patch files, then export the history in between
using git-format-patch.
To change patches or add new ones, the user has to use git-rebase in
order to get things where they need to be for update_patches.sh to put
stuff at the right place. For an example, here is how to change patch 3
of series 1 in the sample history above:
- make desired code changes
- commit them, ideally using --fixup option
- call 'git rebase -i --autosquash <hash of OpenADK patch marker: 0000>'
Using --fixup and --autosquash is convenient, since it automatically
edits the rebase todo as intended. It's optional though, editing the todo
manually will do just fine as well.
Signed-off-by: Phil Sutter <phil@nwl.cc>
|
|
|
|
|
|
defaults are set right
|
|
|
|
|
|
After the addition of bare metal toolchains the menu system allowed
to create non-valid configurations. I reworked it so we can also
add other operating system support if we wish.
So first you choose your operating system, then your architecture
and endianess, after that your embedded system, emulator or
generic device and then you choose your task you want to run.
Tasks may be toolchain, a new appliance/application or some preconfigured
sets of packages and configurations as kodi, mpd, firefox and more.
The tasks are limited to a plausible choice of hardware and software.
Deduplicate CPU configuration.
You don't wanna compile Kodi for a H8/300 microcontroller ;)
|
|
|
|
We can now clone git tags and branches in a more performant
way. No change for specific hashes, other then PKG_GIT is required
now. Do not remove .git dirs, as the downloaded code might be
used to add a patch and send upstream.
Add git as requirement for downloading.
Remove unmaintained u-boot-git package.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
This was tested on a rpi2.
|
|
Default to busybox hush for noMMU systems.
Add busybox profiles to choose a minimal busybox
config for noMMU systems.
Add gdb git from ysato for h8/300 simulator.
Change some kernel defaults to off to have a really
small kernel.
For bfin simulator the kernel+initramfs is smaller then
2MB in size.
|
|
|
|
|
|
Idea from Phil to have a portable method to find
the kernel module dependencies. make-module-ipkgs.sh
uses associative arrays, so check for bash version 4.
|
|
|
|
coreutils on host
|
|
|
|
|
|
|
|
The new prereq check is completely implemented in
POSIX shell in scripts/prereq.sh.
It combines the old features from Makefile, scan-tools.sh,
scan-pkgs.sh, reloc.sh and some wrappers for tools.
The big benefit is to have all portability stuff in one place.
Furthermore we can compile GNU make and bash on the fly, for
systems lacking the required tools.
All changes on the host are detected on the fly, no make
prereq required anymore.
The build process is separated in following three phases:
1. small wrapper Makefile is used for BSD make or GNU make
2. prereq.sh is called, doing all checking, calling Makefile.adk
3. old logic in Makefile.adk or mk/build.mk is used
Tested successfully on Linux, MacOS X, Cygwin, FreeBSD, OpenBSD
and NetBSD.
An old depmaker bug was fixed, only optional host tools are compiled.
For example, even when a host provides xz, a local xz was compiled
in the past, because other packages had a build dependency on it.
Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
|
|
This reverts commit fba2ff31928b18364c1934654169806f5c800e23.
|
|
Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
|
|
|
|
|
|
We need it for toolchain components.
Add latest config.sub/config.guess from upstream
with a minor patch for sh2eb detection.
|
|
|
|
|
|
|
|
running
|
|
|
|
|
|
The recursive call of find_modlevel overwrites the loop variable 'dep'
if not declared local before. Yay.
Signed-off-by: Phil Sutter <phil@nwl.cc>
|
|
|
|
|
|
Instead of maintaining mk/modules.mk which defines compilations of
related kernel modules to pack together into a single package, follow an
automatic approach: For every kernel module found in the modules
installation directory, create a single package.
There are a few caveats to cover:
=== Module Loading Order ===
Upon bootup, module loading is ordered based on the number-prefixed
files in /etc/modules.d/. The correct number was previously managed in
mk/modules.mk on a per-collection basis. The new approach is to have
levels which modules are to be assigned to. Level 0 contains modules
with no dependencies at all. Level 1 contains modules which have only
level 0 dependencies, and so on. This information is determined at
compile-time by make-module-ipkgs.sh.
=== Module Installation to Target RootFS ===
Since module packages are created automatically from the modules the
script finds, ADK build system has no knowledge about the connection
between what the user has selected in menuconfig and the actual module
packages. Therefore the earlier approach to install selected packages
into rootfs does not hold anymore. Instead, use wildcards to find all
packages in firmware directory prefixed by 'kmod-' and install them all
(hopefully doing the right thing).
=== Kernel Version ===
KERNEL_VERSION now contains KERNEL_RELEASE already
By creating a localversion file, make KERNEL_RELEASE part of the
kernel's version number (so KERNEL_VERSION is correct in most
situations)
Signed-off-by: Phil Sutter <phil@nwl.cc>
|