mirror of
https://github.com/armbian/build.git
synced 2025-08-10 13:16:58 +02:00
- WiP: Python patching delusion, pt 1: finding & parsing patches; apply & git commit with pygit2; Markdown summaries (also for aggregation); git-to-patches tool - Python: Markdown aggregation and patching summaries; collapsible; SummarizedMarkdownWriter - Python: Markdown aggregation and patching summaries - Python: reorg a bit into common/armbian_utils; define the `ASSET_LOG_BASE` in preparation for Markdown delusion - Python patching: initial apply patches & initial commit patches to git (using pygit2) - Python patching: add basic `series.conf` support - Python patching: force use of utf-8; better error handling; use realpath of dirs - Python patching: `git-to-patches` initial hack. not proud. half-reused some of the patches-to-git - Python patching: "tag" the git commits with info for extracting later; introduce REWRITE_PATCHES/rewrite_patches_in_place - Python patching: commented-out, recover-bad-patches hacks - Python patching: shorten the signature - Python patching: allow BASE_GIT_TAG as well as BASE_GIT_REVISION - Python patching: git-archeology for patches missing descriptions; avoid UTF-8 in header/desc (not diff) - Python patching: use modern-er email.utils.parsedate_to_datetime to parse commit date - Python patching: unify PatchInPatchFile; better git-commiting; re-exporting patches from Git (directly) - Python patching: switch to GitPython - GitPython is like 100x slower than pygit2, but actually allows for date & committer - also allows to remove untracked files before starting - Python aggregation: fix missing `AGGREGATED_APT_SOURCES_DICT` - Python patching: add `unidecode` dependency to pip3 install - Python patching: don't try archeology if SRC is not a Git Repo (eg, in Docker) - Python patching: don't try archeology if not applying patches to git - WiP: Python patching delusion, pt2: actually use for u-boot & kernel patching - Python patching: much better problem handling/logging; lenient with recreations (kernel) - Python patching: don't force SHOW_LOG for u-boot patching - Python patching: don't bomb for no reason when there are no patches to apply - Python patching: fully (?) switch kernel patching to Python - Python patching: more logging fixups - Python patching: capture `kernel_git_revision` from `fetch_from_repo()`'s `checked_out_revision` - Python patching: fully switch u-boot patching to Python - Python aggregation/patching: colored logging; patching: always reset to git revision - Python aggregation/patching: better logging; introduce u-boot Python patching - Python patching pt3: recovers and better Markdown - Python patching: detect, and rescue, `wrong_strip_level` problem; don't try to export patches that didn't apply, bitch instead - Python patching: Markdown patching summary table, complete with emoji - Python patching: include the problem breakdown in Markdown summary - Python patching: sanity check against half-bare, half-mbox patches - Python patching: try to recover from 1) bad utf-8 encoded patches; 2) bad unidiff patches; add a few sanity checks - Python patching: try, and fail, to apply badly utf-8 encoded patches directly as bytes [reverted] - Python patching: try to recover from patch *parse* failures; show summary; better logging - set `GIT_ARCHEOLOGY=yes` to do archeology, default not - armbian-next: Python `pip` dependencies handling, similar to `hostdeps` - same scheme for Dockerfile caching - @TODO: still using global/shared environment; should move to a dir under `cache` or some kinda venv - WiP: add `python3-pip` to hostdeps; remove `python-setuptools` - remove `python-setuptools` (Python2, no longer exists in Sid) from hostdeps - add `python3-pip` to hostdeps; part of virtualenv saga - WiP: split `kernel.sh` a bit, into `kernel-patching.sh`, `kernel-config.sh` and `kernel-make.sh` - `advanced_patch()`: rename vars for clarity; no real changes - Python patching: introduce FAST_ARCHEOLOGY; still trying for Markdown links
48 lines
1.9 KiB
Bash
48 lines
1.9 KiB
Bash
function uboot_prepare_bare_repo() {
|
|
uboot_git_bare_tree="${SRC}/cache/git-bare/u-boot" # sets the outer scope variable
|
|
declare uboot_git_bare_tree_done_marker="${uboot_git_bare_tree}/.git/armbian-bare-tree-done"
|
|
|
|
if [[ ! -d "${uboot_git_bare_tree}" || ! -f "${uboot_git_bare_tree_done_marker}" ]]; then
|
|
if [[ -d "${uboot_git_bare_tree}" ]]; then
|
|
display_alert "Removing old u-boot bare tree" "${uboot_git_bare_tree}" "info"
|
|
rm -rf "${uboot_git_bare_tree}"
|
|
fi
|
|
|
|
# get the mainline u-boot repo completely; use clone, not fetch.
|
|
display_alert "Cloning u-boot from mainline into bare tree" "this might take a somewhat-long time" "info"
|
|
declare -a verbose_params=() && if_user_on_terminal_and_not_logging_add verbose_params "--verbose" "--progress"
|
|
run_host_command_logged git clone "${verbose_params[@]}" --tags --no-checkout \
|
|
"${MAINLINE_UBOOT_SOURCE}" "${uboot_git_bare_tree}"
|
|
|
|
# write the marker file
|
|
touch "${uboot_git_bare_tree_done_marker}"
|
|
fi
|
|
|
|
return 0
|
|
}
|
|
|
|
function uboot_prepare_git() {
|
|
display_alert "Preparing git for u-boot" "BOOTSOURCE: ${BOOTSOURCE}" "debug"
|
|
if [[ -n $BOOTSOURCE ]] && [[ "${BOOTSOURCE}" != "none" ]]; then
|
|
# Prepare the git bare repo for u-boot.
|
|
declare uboot_git_bare_tree
|
|
uboot_prepare_bare_repo # this sets uboot_git_bare_tree
|
|
|
|
display_alert "Downloading sources" "u-boot; BOOTSOURCEDIR=${BOOTSOURCEDIR}" "git"
|
|
|
|
# This var will be set by fetch_from_repo().
|
|
declare checked_out_revision="undetermined"
|
|
|
|
GIT_FIXED_WORKDIR="${BOOTSOURCEDIR}" \
|
|
GIT_BARE_REPO_FOR_WORKTREE="${uboot_git_bare_tree}" \
|
|
GIT_BARE_REPO_INITIAL_BRANCH="master" \
|
|
GIT_SKIP_SUBMODULES="${UBOOT_GIT_SKIP_SUBMODULES}" \
|
|
fetch_from_repo "$BOOTSOURCE" "$BOOTDIR" "$BOOTBRANCH" "yes" # fetch_from_repo <url> <dir> <ref> <subdir_flag>
|
|
|
|
# Sets the outer scope variable
|
|
uboot_git_revision="${checked_out_revision}"
|
|
display_alert "Using u-boot revision SHA1" "${uboot_git_revision}"
|
|
fi
|
|
return 0
|
|
}
|