mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-06-13 15:03:58 +03:00
Squashed 'dts/upstream/' content from commit aaba2d45dc2a
git-subtree-dir: dts/upstream git-subtree-split: aaba2d45dc2a1b3bbb710f2a3808ee1c9f340abe
This commit is contained in:
278
scripts/Kbuild.include
Normal file
278
scripts/Kbuild.include
Normal file
@@ -0,0 +1,278 @@
|
||||
####
|
||||
# kbuild: Generic definitions
|
||||
|
||||
# Convenient variables
|
||||
comma := ,
|
||||
squote := '
|
||||
empty :=
|
||||
space := $(empty) $(empty)
|
||||
|
||||
###
|
||||
# Name of target with a '.' as filename prefix. foo/bar.o => foo/.bar.o
|
||||
dot-target = $(dir $@).$(notdir $@)
|
||||
|
||||
###
|
||||
# The temporary file to save gcc -MD generated dependencies must not
|
||||
# contain a comma
|
||||
depfile = $(subst $(comma),_,$(dot-target).d)
|
||||
|
||||
###
|
||||
# filename of target with directory and extension stripped
|
||||
basetarget = $(basename $(notdir $@))
|
||||
|
||||
###
|
||||
# filename of first prerequisite with directory and extension stripped
|
||||
baseprereq = $(basename $(notdir $<))
|
||||
|
||||
###
|
||||
# Escape single quote for use in echo statements
|
||||
escsq = $(subst $(squote),'\$(squote)',$1)
|
||||
|
||||
###
|
||||
# Easy method for doing a status message
|
||||
kecho := :
|
||||
quiet_kecho := echo
|
||||
silent_kecho := :
|
||||
kecho := $($(quiet)kecho)
|
||||
|
||||
###
|
||||
# filechk is used to check if the content of a generated file is updated.
|
||||
# Sample usage:
|
||||
# define filechk_sample
|
||||
# echo $KERNELRELEASE
|
||||
# endef
|
||||
# version.h : Makefile
|
||||
# $(call filechk,sample)
|
||||
# The rule defined shall write to stdout the content of the new file.
|
||||
# The existing file will be compared with the new one.
|
||||
# - If no file exist it is created
|
||||
# - If the content differ the new file is used
|
||||
# - If they are equal no change, and no timestamp update
|
||||
# - stdin is piped in from the first prerequisite ($<) so one has
|
||||
# to specify a valid file as first prerequisite (often the kbuild file)
|
||||
define filechk
|
||||
$(Q)set -e; \
|
||||
$(kecho) ' CHK $@'; \
|
||||
mkdir -p $(dir $@); \
|
||||
$(filechk_$(1)) < $< > $@.tmp; \
|
||||
if [ -r $@ ] && cmp -s $@ $@.tmp; then \
|
||||
rm -f $@.tmp; \
|
||||
else \
|
||||
$(kecho) ' UPD $@'; \
|
||||
mv -f $@.tmp $@; \
|
||||
fi
|
||||
endef
|
||||
|
||||
######
|
||||
# gcc support functions
|
||||
# See documentation in Documentation/kbuild/makefiles.txt
|
||||
|
||||
# cc-cross-prefix
|
||||
# Usage: CROSS_COMPILE := $(call cc-cross-prefix, m68k-linux-gnu- m68k-linux-)
|
||||
# Return first prefix where a prefix$(CC) is found in PATH.
|
||||
# If no $(CC) found in PATH with listed prefixes return nothing
|
||||
cc-cross-prefix = \
|
||||
$(word 1, $(foreach c,$(1), \
|
||||
$(shell set -e; \
|
||||
if (which $(strip $(c))$(CC)) > /dev/null 2>&1 ; then \
|
||||
echo $(c); \
|
||||
fi)))
|
||||
|
||||
# output directory for tests below
|
||||
TMPOUT := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/)
|
||||
|
||||
# try-run
|
||||
# Usage: option = $(call try-run, $(CC)...-o "$$TMP",option-ok,otherwise)
|
||||
# Exit code chooses option. "$$TMP" is can be used as temporary file and
|
||||
# is automatically cleaned up.
|
||||
try-run = $(shell set -e; \
|
||||
TMP="$(TMPOUT).$$$$.tmp"; \
|
||||
TMPO="$(TMPOUT).$$$$.o"; \
|
||||
if ($(1)) >/dev/null 2>&1; \
|
||||
then echo "$(2)"; \
|
||||
else echo "$(3)"; \
|
||||
fi; \
|
||||
rm -f "$$TMP" "$$TMPO")
|
||||
|
||||
# as-option
|
||||
# Usage: cflags-y += $(call as-option,-Wa$(comma)-isa=foo,)
|
||||
|
||||
as-option = $(call try-run,\
|
||||
$(CC) $(KBUILD_CFLAGS) $(1) -c -x assembler /dev/null -o "$$TMP",$(1),$(2))
|
||||
|
||||
# as-instr
|
||||
# Usage: cflags-y += $(call as-instr,instr,option1,option2)
|
||||
|
||||
as-instr = $(call try-run,\
|
||||
printf "%b\n" "$(1)" | $(CC) $(KBUILD_AFLAGS) -c -x assembler -o "$$TMP" -,$(2),$(3))
|
||||
|
||||
# cc-option
|
||||
# Usage: cflags-y += $(call cc-option,-march=winchip-c6,-march=i586)
|
||||
|
||||
cc-option = $(call try-run,\
|
||||
$(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) $(1) -c -x c /dev/null -o "$$TMP",$(1),$(2))
|
||||
|
||||
# cc-option-yn
|
||||
# Usage: flag := $(call cc-option-yn,-march=winchip-c6)
|
||||
cc-option-yn = $(call try-run,\
|
||||
$(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) $(1) -c -x c /dev/null -o "$$TMP",y,n)
|
||||
|
||||
# cc-option-align
|
||||
# Prefix align with either -falign or -malign
|
||||
cc-option-align = $(subst -functions=0,,\
|
||||
$(call cc-option,-falign-functions=0,-malign-functions=0))
|
||||
|
||||
# cc-disable-warning
|
||||
# Usage: cflags-y += $(call cc-disable-warning,unused-but-set-variable)
|
||||
cc-disable-warning = $(call try-run,\
|
||||
$(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) -W$(strip $(1)) -c -x c /dev/null -o "$$TMP",-Wno-$(strip $(1)))
|
||||
|
||||
# cc-version
|
||||
# Usage gcc-ver := $(call cc-version)
|
||||
cc-version = $(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-version.sh $(CC))
|
||||
|
||||
# cc-fullversion
|
||||
# Usage gcc-ver := $(call cc-fullversion)
|
||||
cc-fullversion = $(shell $(CONFIG_SHELL) \
|
||||
$(srctree)/scripts/gcc-version.sh -p $(CC))
|
||||
|
||||
# cc-ifversion
|
||||
# Usage: EXTRA_CFLAGS += $(call cc-ifversion, -lt, 0402, -O1)
|
||||
cc-ifversion = $(shell [ $(call cc-version, $(CC)) $(1) $(2) ] && echo $(3))
|
||||
|
||||
# cc-ldoption
|
||||
# Usage: ldflags += $(call cc-ldoption, -Wl$(comma)--hash-style=both)
|
||||
cc-ldoption = $(call try-run,\
|
||||
$(CC) $(1) -nostdlib -x c /dev/null -o "$$TMP",$(1),$(2))
|
||||
|
||||
# ld-option
|
||||
# Usage: LDFLAGS += $(call ld-option, -X)
|
||||
ld-option = $(call try-run,\
|
||||
$(CC) /dev/null -c -o "$$TMPO" ; $(LD) $(1) "$$TMPO" -o "$$TMP",$(1),$(2))
|
||||
|
||||
# ar-option
|
||||
# Usage: KBUILD_ARFLAGS := $(call ar-option,D)
|
||||
# Important: no spaces around options
|
||||
ar-option = $(call try-run, $(AR) rc$(1) "$$TMP",$(1),$(2))
|
||||
|
||||
######
|
||||
|
||||
###
|
||||
# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.build obj=
|
||||
# Usage:
|
||||
# $(Q)$(MAKE) $(build)=dir
|
||||
build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj
|
||||
|
||||
###
|
||||
# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.modbuiltin obj=
|
||||
# Usage:
|
||||
# $(Q)$(MAKE) $(modbuiltin)=dir
|
||||
modbuiltin := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.modbuiltin obj
|
||||
|
||||
# Prefix -I with $(srctree) if it is not an absolute path.
|
||||
# skip if -I has no parameter
|
||||
addtree = $(if $(patsubst -I%,%,$(1)), \
|
||||
$(if $(filter-out -I/%,$(1)),$(patsubst -I%,-I$(srctree)/%,$(1))) $(1))
|
||||
|
||||
# Find all -I options and call addtree
|
||||
flags = $(foreach o,$($(1)),$(if $(filter -I%,$(o)),$(call addtree,$(o)),$(o)))
|
||||
|
||||
# echo command.
|
||||
# Short version is used, if $(quiet) equals `quiet_', otherwise full one.
|
||||
echo-cmd = $(if $($(quiet)cmd_$(1)),\
|
||||
echo ' $(call escsq,$($(quiet)cmd_$(1)))$(echo-why)';)
|
||||
|
||||
# printing commands
|
||||
cmd = @$(echo-cmd) $(cmd_$(1))
|
||||
|
||||
# Add $(obj)/ for paths that are not absolute
|
||||
objectify = $(foreach o,$(1),$(if $(filter /%,$(o)),$(o),$(obj)/$(o)))
|
||||
|
||||
###
|
||||
# if_changed - execute command if any prerequisite is newer than
|
||||
# target, or command line has changed
|
||||
# if_changed_dep - as if_changed, but uses fixdep to reveal dependencies
|
||||
# including used config symbols
|
||||
# if_changed_rule - as if_changed but execute rule instead
|
||||
# See Documentation/kbuild/makefiles.txt for more info
|
||||
|
||||
ifneq ($(KBUILD_NOCMDDEP),1)
|
||||
# Check if both arguments has same arguments. Result is empty string if equal.
|
||||
# User may override this check using make KBUILD_NOCMDDEP=1
|
||||
arg-check = $(strip $(filter-out $(cmd_$(1)), $(cmd_$@)) \
|
||||
$(filter-out $(cmd_$@), $(cmd_$(1))) )
|
||||
else
|
||||
arg-check = $(if $(strip $(cmd_$@)),,1)
|
||||
endif
|
||||
|
||||
# >'< substitution is for echo to work,
|
||||
# >$< substitution to preserve $ when reloading .cmd file
|
||||
# note: when using inline perl scripts [perl -e '...$$t=1;...']
|
||||
# in $(cmd_xxx) double $$ your perl vars
|
||||
make-cmd = $(subst \\,\\\\,$(subst \#,\\\#,$(subst $$,$$$$,$(call escsq,$(cmd_$(1))))))
|
||||
|
||||
# Find any prerequisites that is newer than target or that does not exist.
|
||||
# PHONY targets skipped in both cases.
|
||||
any-prereq = $(filter-out $(PHONY),$?) $(filter-out $(PHONY) $(wildcard $^),$^)
|
||||
|
||||
# Execute command if command has changed or prerequisite(s) are updated.
|
||||
#
|
||||
if_changed = $(if $(strip $(any-prereq) $(arg-check)), \
|
||||
@set -e; \
|
||||
$(echo-cmd) $(cmd_$(1)); \
|
||||
echo 'cmd_$@ := $(make-cmd)' > $(dot-target).cmd)
|
||||
|
||||
# Execute the command and also postprocess generated .d dependencies file.
|
||||
if_changed_dep = $(if $(strip $(any-prereq) $(arg-check) ), \
|
||||
@set -e; \
|
||||
$(echo-cmd) $(cmd_$(1)); \
|
||||
scripts/basic/fixdep $(depfile) $@ '$(make-cmd)' > $(dot-target).tmp;\
|
||||
rm -f $(depfile); \
|
||||
mv -f $(dot-target).tmp $(dot-target).cmd)
|
||||
|
||||
# Usage: $(call if_changed_rule,foo)
|
||||
# Will check if $(cmd_foo) or any of the prerequisites changed,
|
||||
# and if so will execute $(rule_foo).
|
||||
if_changed_rule = $(if $(strip $(any-prereq) $(arg-check) ), \
|
||||
@set -e; \
|
||||
$(rule_$(1)))
|
||||
|
||||
###
|
||||
# why - tell why a a target got build
|
||||
# enabled by make V=2
|
||||
# Output (listed in the order they are checked):
|
||||
# (1) - due to target is PHONY
|
||||
# (2) - due to target missing
|
||||
# (3) - due to: file1.h file2.h
|
||||
# (4) - due to command line change
|
||||
# (5) - due to missing .cmd file
|
||||
# (6) - due to target not in $(targets)
|
||||
# (1) PHONY targets are always build
|
||||
# (2) No target, so we better build it
|
||||
# (3) Prerequisite is newer than target
|
||||
# (4) The command line stored in the file named dir/.target.cmd
|
||||
# differed from actual command line. This happens when compiler
|
||||
# options changes
|
||||
# (5) No dir/.target.cmd file (used to store command line)
|
||||
# (6) No dir/.target.cmd file and target not listed in $(targets)
|
||||
# This is a good hint that there is a bug in the kbuild file
|
||||
ifeq ($(KBUILD_VERBOSE),2)
|
||||
why = \
|
||||
$(if $(filter $@, $(PHONY)),- due to target is PHONY, \
|
||||
$(if $(wildcard $@), \
|
||||
$(if $(strip $(any-prereq)),- due to: $(any-prereq), \
|
||||
$(if $(arg-check), \
|
||||
$(if $(cmd_$@),- due to command line change, \
|
||||
$(if $(filter $@, $(targets)), \
|
||||
- due to missing .cmd file, \
|
||||
- due to $(notdir $@) not in $$(targets) \
|
||||
) \
|
||||
) \
|
||||
) \
|
||||
), \
|
||||
- due to target missing \
|
||||
) \
|
||||
)
|
||||
|
||||
echo-why = $(call escsq, $(strip $(why)))
|
||||
endif
|
||||
27
scripts/basic/fixdep
Executable file
27
scripts/basic/fixdep
Executable file
@@ -0,0 +1,27 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Simplfied version of Linux scripts/basic/fixdep. We don't need
|
||||
# CONFIG tracking etc for this usecase.
|
||||
|
||||
|
||||
# Fixdep's interface is described:
|
||||
|
||||
# It is invoked as
|
||||
#
|
||||
# fixdep <depfile> <target> <cmdline>
|
||||
#
|
||||
# and will read the dependency file <depfile>
|
||||
#
|
||||
# The transformed dependency snipped is written to stdout.
|
||||
#
|
||||
# It first generates a line
|
||||
#
|
||||
# cmd_<target> = <cmdline>
|
||||
#
|
||||
# and then basically copies the .<target>.d file to stdout, in the
|
||||
# process filtering out the dependency on autoconf.h and adding
|
||||
# dependencies on include/config/my/option.h for every
|
||||
# CONFIG_MY_OPTION encountered in any of the prequisites.
|
||||
|
||||
echo cmd_$2 = $3
|
||||
cat $1
|
||||
124
scripts/cronjob
Executable file
124
scripts/cronjob
Executable file
@@ -0,0 +1,124 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
cd $(dirname $0)/..
|
||||
|
||||
UPSTREAM_GIT="git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git"
|
||||
|
||||
BRANCHES="master filter-state upstream/master upstream/dts"
|
||||
|
||||
if [ ! -f scripts/filter.sh ] ; then
|
||||
echo "`pwd`: does not appear to be a device-tree.git" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$LATEST_VERSION" ] ; then
|
||||
FINGER_BANNER="https://www.kernel.org/finger_banner"
|
||||
LATEST_VERSION=$(wget --quiet -O - "$FINGER_BANNER" |\
|
||||
sed -n -e '0,/^The latest mainline version of the Linux kernel is:\s*\(.*\)$/s//\1/p')
|
||||
fi
|
||||
|
||||
if [ -z "$LATEST_VERSION" ] ; then
|
||||
echo "Unable to determine latest version" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Latest Version: v$LATEST_VERSION"
|
||||
if ! git show-ref --quiet --verify refs/tags/v${LATEST_VERSION} ; then
|
||||
echo "Latest version is new"
|
||||
fi
|
||||
if ! git show-ref --quiet --verify refs/tags/v${LATEST_VERSION}-dts ; then
|
||||
echo "Latest version is unmerged"
|
||||
fi
|
||||
echo
|
||||
|
||||
echo "Current State:"
|
||||
for branch in $BRANCHES ; do
|
||||
REF=$(git show-ref --verify refs/heads/${branch})
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "Tree is missing required branch ${branch}, aborting" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
echo " ${REF}"
|
||||
done
|
||||
echo
|
||||
|
||||
trap '
|
||||
if [ -n "$FILTER_OUTPUT" ] ; then
|
||||
echo "---------------------------------------------------------------------"
|
||||
echo "Filter Output:"
|
||||
echo "---------------------------------------------------------------------"
|
||||
echo "$FILTER_OUTPUT"
|
||||
echo
|
||||
fi
|
||||
if [ -n "$MERGE_OUTPUT" ] ; then
|
||||
echo "---------------------------------------------------------------------"
|
||||
echo "Merge Output:"
|
||||
echo "---------------------------------------------------------------------"
|
||||
echo "$MERGE_OUTPUT"
|
||||
echo
|
||||
fi
|
||||
' EXIT
|
||||
|
||||
FILTER_OUTPUT=`(
|
||||
set -e
|
||||
echo "Switching to master branch"
|
||||
git checkout master
|
||||
|
||||
echo "Fetching $UPSTREAM_GIT master"
|
||||
git fetch --tags "$UPSTREAM_GIT" master
|
||||
echo
|
||||
|
||||
echo "Filtering"
|
||||
./scripts/filter.sh
|
||||
echo
|
||||
) 2>&1 `
|
||||
|
||||
#git push --dry-run origin filter-state upstream/dts upstream/master
|
||||
#git push --dry-run origin --tags
|
||||
#echo
|
||||
|
||||
DATE=$(date +%Y%m%d)
|
||||
TESTBRANCH=test-${DATE}
|
||||
MERGE_OUTPUT=`(
|
||||
set -e
|
||||
git checkout -b ${TESTBRANCH} origin/master
|
||||
git -c merge.renameLimit=1000000 merge --no-edit upstream/dts
|
||||
) 2>&1 `
|
||||
REF=$(git show-ref --verify refs/heads/${TESTBRANCH})
|
||||
echo "Testing: ${REF}"
|
||||
if git log ${TESTBRANCH} -- MAINTAINERS | grep --quiet . ; then
|
||||
echo "Filter branch has upstream-only content (MAINTAINERS file)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
make clean -s
|
||||
TEST_OUTPUT=`make -k -s 2>&1 || true`
|
||||
if [ -z "${TEST_OUTPUT}" ]; then
|
||||
echo "Success!"
|
||||
else
|
||||
echo "---------------------------------------------------------------------"
|
||||
echo "Test Output:"
|
||||
echo "---------------------------------------------------------------------"
|
||||
echo "$TEST_OUTPUT"
|
||||
fi
|
||||
echo
|
||||
|
||||
echo "Switching back to master branch"
|
||||
git checkout master
|
||||
|
||||
echo "Recording refs/tests/${DATE}"
|
||||
git update-ref refs/tests/${DATE} ${TESTBRANCH}
|
||||
|
||||
echo "Removing ${TESTBRANCH}"
|
||||
git branch -D "${TESTBRANCH}"
|
||||
|
||||
echo "Final State:"
|
||||
for branch in ${BRANCHES} ; do
|
||||
REF=$(git show-ref --verify refs/heads/${branch})
|
||||
echo " ${REF}"
|
||||
done
|
||||
echo
|
||||
|
||||
exit 0
|
||||
40
scripts/filter.sh
Executable file
40
scripts/filter.sh
Executable file
@@ -0,0 +1,40 @@
|
||||
#!/bin/sh
|
||||
|
||||
# git branch -D upstream/rewritten-prev upstream/master upstream/rewritten filter-state
|
||||
|
||||
set -e
|
||||
|
||||
export SCRIPTS=$(dirname $(readlink -f $0))
|
||||
|
||||
export FILTER_BRANCH_SQUELCH_WARNING=1
|
||||
|
||||
UPSTREAM_MASTER=upstream/master
|
||||
UPSTREAM_REWRITTEN=upstream/dts
|
||||
|
||||
LAST=$(git show-ref -s refs/heads/$UPSTREAM_MASTER||true)
|
||||
if [ -n "$LAST" ] ; then
|
||||
RANGE="$LAST..$UPSTREAM_REWRITTEN"
|
||||
else
|
||||
# This must be a new conversion...
|
||||
RANGE="$UPSTREAM_REWRITTEN"
|
||||
fi
|
||||
|
||||
FETCH_HEAD=$(git rev-parse FETCH_HEAD)
|
||||
if [ "$LAST" = "$FETCH_HEAD" ] ; then
|
||||
echo "Nothing new in FETCH_HEAD: $FETCH_HEAD"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
rm -f .git/refs/original/refs/heads/${UPSTREAM_REWRITTEN}
|
||||
|
||||
git branch -f $UPSTREAM_REWRITTEN FETCH_HEAD
|
||||
|
||||
git filter-branch --force \
|
||||
--index-filter ${SCRIPTS}/index-filter.sh \
|
||||
--msg-filter 'cat && /bin/echo -e "\n[ upstream commit: $GIT_COMMIT ]"' \
|
||||
--tag-name-filter 'while read t ; do /bin/echo -n $t-dts-raw ; done' \
|
||||
--parent-filter 'sed "s/-p //g" | xargs -r git show-branch --independent | sed "s/\</-p /g"' \
|
||||
--prune-empty --state-branch refs/heads/filter-state \
|
||||
-- $RANGE
|
||||
|
||||
git branch -f $UPSTREAM_MASTER FETCH_HEAD
|
||||
14
scripts/index-filter.sh
Executable file
14
scripts/index-filter.sh
Executable file
@@ -0,0 +1,14 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
set -o pipefail
|
||||
|
||||
${SCRIPTS}/rewrite-index.pl | GIT_INDEX_FILE=$GIT_INDEX_FILE.new git update-index --index-info
|
||||
|
||||
if [ -f "$GIT_INDEX_FILE.new" ] ; then
|
||||
mv "$GIT_INDEX_FILE.new" "$GIT_INDEX_FILE"
|
||||
else
|
||||
rm "$GIT_INDEX_FILE"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
48
scripts/merge-new-release.sh
Executable file
48
scripts/merge-new-release.sh
Executable file
@@ -0,0 +1,48 @@
|
||||
#!/bin/bash
|
||||
|
||||
case $1 in
|
||||
v*-dts) ;;
|
||||
'')
|
||||
echo >&2 "No version given"
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
echo >&2 "Unexpected version: $1"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
v=$1
|
||||
|
||||
set -e
|
||||
|
||||
# Use the date of Linus' originally tagged commit for the merge. This might
|
||||
# differ from what the commit that the rewritten tag points to, since the
|
||||
# orignal commit may have been discarded.
|
||||
export GIT_AUTHOR_DATE=$(git log -1 --format=%ad "${v%-dts}")
|
||||
if [ ! "${GIT_AUTHOR_DATE}" ] ; then
|
||||
echo >&2 "Unable to determine commit date for merge"
|
||||
exit 1
|
||||
fi
|
||||
if [ "${v}" = "v2.6.12-rc2-dts" ] ; then
|
||||
auh="--allow-unrelated-histories"
|
||||
fi
|
||||
git merge $auh --no-edit "${v}-raw"
|
||||
git clean -fdqx
|
||||
# Use the date of Linus' original tag for the tag.
|
||||
case "${v%-dts}" in
|
||||
v2.6.12*|v2.6.13-rc[123])
|
||||
# Commits from v2.6.12-rc2..v2.6.13-rc3 lacked the date. So use the commit's
|
||||
# date.
|
||||
export GIT_COMMITTER_DATE="${GIT_AUTHOR_DATE}"
|
||||
;;
|
||||
*)
|
||||
export GIT_COMMITTER_DATE="$(git for-each-ref --format='%(taggerdate)' "refs/tags/${v%-dts}")"
|
||||
;;
|
||||
esac
|
||||
if [ ! "${GIT_COMMITTER_DATE}" ] ; then
|
||||
echo >&2 "Unable to determine date for tag"
|
||||
exit 1
|
||||
fi
|
||||
git tag -s -m "Tagging ${v}" -u 695A46C6 "${v}"
|
||||
make -k -j12 -s
|
||||
72
scripts/rewrite-index.pl
Executable file
72
scripts/rewrite-index.pl
Executable file
@@ -0,0 +1,72 @@
|
||||
#!/usr/bin/perl
|
||||
use strict;
|
||||
use warnings;
|
||||
use IPC::Open2;
|
||||
my $pid;
|
||||
|
||||
open(my $lsfiles, "-|", "git ls-files -s") or die "fork lsfiles: $!";
|
||||
|
||||
while (<$lsfiles>) {
|
||||
if ($_ =~ m/^120000 ([0-9a-f]{40}) (.*)\t(.*)/) {
|
||||
my ($obj, $stage, $path) = ($1,$2,$3);
|
||||
if (!defined $pid) {
|
||||
$pid = open2(*Rderef, *Wderef, "git cat-file --batch-check='deref-ok %(objectname)' --follow-symlinks")
|
||||
or die "open git cat-file: $!";
|
||||
}
|
||||
print Wderef "$ENV{GIT_COMMIT}:$path\n" or die "write Wderef: $!";
|
||||
my $deref = <Rderef>;
|
||||
if ($deref =~ m/^deref-ok ([0-9a-f]{40})$/) {
|
||||
$_ = "100644 $1 $stage\t$path\n"
|
||||
} elsif ($deref =~ /^dangling /) {
|
||||
# Skip next line
|
||||
my $dummy = <Rderef>;
|
||||
} else {
|
||||
die "Failed to parse symlink $ENV{GIT_COMMIT}:$path $deref";
|
||||
}
|
||||
}
|
||||
|
||||
my $m = 0;
|
||||
|
||||
# Keep the copyright. Also ensures we never have a completely empty commit.
|
||||
$m++ if m/\tCOPYING$/;
|
||||
|
||||
# A few architectures have dts files at non standard paths. Massage those into
|
||||
# a standard arch/ARCH/boot/dts first.
|
||||
|
||||
# symlink: arch/microblaze/boot/dts/system.dts -> ../../platform/generic/system.dts
|
||||
next if m,\tarch/microblaze/boot/dts/system.dts$,;
|
||||
$m++ if s,\tarch/microblaze/platform/generic/(system.dts)$,\tarch/microblaze/boot/dts/$1,;
|
||||
|
||||
# arch/mips/lantiq/dts/easy50712.dts
|
||||
# arch/mips/lantiq/dts/danube.dtsi
|
||||
# arch/mips/netlogic/dts/xlp_evp.dts
|
||||
# arch/mips/ralink/dts/rt3050.dtsi
|
||||
# arch/mips/ralink/dts/rt3052_eval.dts
|
||||
$m++ if s,\tarch/mips/([^/]*)/dts/(.*\.dts.?)$,\tarch/mips/boot/dts/$2,;
|
||||
|
||||
# arch/mips/cavium-octeon/octeon_68xx.dts
|
||||
# arch/mips/cavium-octeon/octeon_3xxx.dts
|
||||
# arch/mips/mti-sead3/sead3.dts
|
||||
$m++ if s,\tarch/mips/([^/]*)/([^/]*\.dts.?)$,\tarch/mips/boot/dts/$2,;
|
||||
|
||||
# arch/x86/platform/ce4100/falconfalls.dts
|
||||
$m++ if s,\tarch/x86/platform/ce4100/falconfalls.dts,\tarch/x86/boot/dts/falconfalls.dts,;
|
||||
|
||||
# test cases
|
||||
$m++ if s,\tdrivers/of/testcase-data/,\ttestcase-data/,;
|
||||
|
||||
# Now rewrite generic DTS paths
|
||||
$m++ if s,\tarch/([^/]*)/boot/dts/(.*\.dts.?)$,\tsrc/$1/$2,;
|
||||
$m++ if s,\tarch/([^/]*)/boot/dts/(.*\.h)$,\tsrc/$1/$2,;
|
||||
|
||||
# Also rewrite the DTS include paths for dtc+cpp support
|
||||
$m++ if s,\tarch/([^/]*)/include/dts/,\tsrc/$1/include/,;
|
||||
$m++ if s,\tinclude/dt-bindings/,\tinclude/dt-bindings/,;
|
||||
|
||||
# Rewrite the bindings subdirectory
|
||||
$m++ if s,\tDocumentation/devicetree/bindings/,\tBindings/,;
|
||||
|
||||
print if $m > 0;
|
||||
}
|
||||
kill $pid if $pid;
|
||||
exit 0;
|
||||
Reference in New Issue
Block a user