mirror of https://github.com/OpenIPC/firmware.git
Determine toolchain archive name based on profile (#365)
parent
1b7c1c4d39
commit
154d51d04c
|
@ -19,44 +19,26 @@ on:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
toolchain:
|
toolchain:
|
||||||
name: Build toolchain
|
name: Toolchain
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
env:
|
env:
|
||||||
FAMILY: hi3516ev200
|
NEEDED: true
|
||||||
|
|
||||||
outputs:
|
strategy:
|
||||||
sdk-file: ${{ steps.build-sdk.outputs.sdk-file }}
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
platform:
|
||||||
|
- hi3516cv500
|
||||||
|
- hi3516ev200
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
id: checkout
|
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0 # OR "2" -> To retrieve the preceding commit.
|
fetch-depth: 0 # OR "2" -> To retrieve the preceding commit.
|
||||||
|
|
||||||
- name: Install build dependencies
|
- name: Determine toolchain name and can we skip build
|
||||||
run: |
|
|
||||||
make install-deps
|
|
||||||
mkdir -p tmp
|
|
||||||
if [ ! -z "$ACT" ]; then
|
|
||||||
apt install -y cpio rsync bc
|
|
||||||
echo "FORCE_UNSAFE_CONFIGURE=1" >> $GITHUB_ENV
|
|
||||||
else
|
|
||||||
# https://github.com/actions/runner-images/issues/2577
|
|
||||||
echo "1.1.1.1 invisible-mirror.net" | sudo tee -a /etc/hosts
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Free disk space
|
|
||||||
if: ${{ !env.ACT }}
|
|
||||||
run: |
|
|
||||||
sudo apt clean
|
|
||||||
docker rmi $(docker image ls -aq)
|
|
||||||
df -h
|
|
||||||
|
|
||||||
- name: Build Buildroot SDK
|
|
||||||
id: build-sdk
|
|
||||||
run: |
|
run: |
|
||||||
HEAD_TAG=$(git tag --points-at HEAD)
|
HEAD_TAG=$(git tag --points-at HEAD)
|
||||||
GIT_HASH=$(git rev-parse --short $GITHUB_SHA)
|
GIT_HASH=$(git rev-parse --short $GITHUB_SHA)
|
||||||
|
@ -75,21 +57,51 @@ jobs:
|
||||||
echo "PRERELEASE=$PRERELEASE" >> $GITHUB_ENV
|
echo "PRERELEASE=$PRERELEASE" >> $GITHUB_ENV
|
||||||
|
|
||||||
make prepare
|
make prepare
|
||||||
make BOARD=unknown_unknown_${FAMILY}_openipc br-sdk
|
TOOLNAME=$(make BOARD=unknown_unknown_${{ matrix.platform }}_openipc toolname)
|
||||||
|
echo "TOOLNAME=$TOOLNAME" >> $GITHUB_ENV
|
||||||
|
CHECK=$(curl -o /dev/null --silent -Iw '%{http_code}' \
|
||||||
|
https://github.com/${GITHUB_REPOSITORY}/${TAG_NAME}/${TOOLNAME}.tgz)
|
||||||
|
if [ "$CHECK" == "302" ]; then
|
||||||
|
echo "NEEDED=false" >> $GITHUB_ENV
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Install build dependencies
|
||||||
|
if: env.NEEDED
|
||||||
|
run: |
|
||||||
|
make install-deps
|
||||||
|
if [ ! -z "$ACT" ]; then
|
||||||
|
echo "FORCE_UNSAFE_CONFIGURE=1" >> $GITHUB_ENV
|
||||||
|
else
|
||||||
|
# https://github.com/actions/runner-images/issues/2577
|
||||||
|
echo "1.1.1.1 invisible-mirror.net" | sudo tee -a /etc/hosts
|
||||||
|
fi
|
||||||
|
|
||||||
|
- name: Free disk space
|
||||||
|
if: ${{ !env.ACT && env.NEEDED }}
|
||||||
|
run: |
|
||||||
|
sudo apt clean
|
||||||
|
docker rmi $(docker image ls -aq)
|
||||||
|
|
||||||
|
- name: Build Buildroot SDK
|
||||||
|
if: env.NEEDED
|
||||||
|
run: |
|
||||||
|
make BOARD=unknown_unknown_${{ matrix.platform }}_openipc br-sdk
|
||||||
SDK_PATH=$(find output/images -name "*_sdk-buildroot.tar.gz")
|
SDK_PATH=$(find output/images -name "*_sdk-buildroot.tar.gz")
|
||||||
|
# Why do we need this crap (only for weird artifact names)?
|
||||||
|
NEW="$(dirname $SDK_PATH)/${TOOLNAME}.tgz"
|
||||||
|
mv $SDK_PATH $NEW
|
||||||
|
SDK_PATH=$NEW
|
||||||
echo "SDK_PATH=$SDK_PATH" >> $GITHUB_ENV
|
echo "SDK_PATH=$SDK_PATH" >> $GITHUB_ENV
|
||||||
SDK_FILE=$(basename $SDK_PATH)
|
|
||||||
echo "SDK_FILE=$SDK_FILE" >> $GITHUB_ENV
|
|
||||||
echo "::set-output name=sdk-file::$SDK_FILE"
|
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v3
|
- uses: actions/upload-artifact@v3
|
||||||
|
if: ${{ (env.ACT || github.event_name == 'pull_request') && env.NEEDED }}
|
||||||
with:
|
with:
|
||||||
name: ${{ env.SDK_FILE }}
|
name: '${{ env.TOOLNAME }}.tgz'
|
||||||
path: ${{ env.SDK_PATH }}
|
path: ${{ env.SDK_PATH }}
|
||||||
retention-days: 1
|
retention-days: 1
|
||||||
|
|
||||||
- name: Create release
|
- name: Create release
|
||||||
if: ${{ !env.ACT && github.event_name != 'pull_request' }}
|
if: ${{ !env.ACT && github.event_name != 'pull_request' && env.NEEDED }}
|
||||||
uses: actions/create-release@v1
|
uses: actions/create-release@v1
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
env:
|
env:
|
||||||
|
@ -101,19 +113,21 @@ jobs:
|
||||||
prerelease: ${{ env.PRERELEASE }}
|
prerelease: ${{ env.PRERELEASE }}
|
||||||
|
|
||||||
- name: Upload SDK to release
|
- name: Upload SDK to release
|
||||||
if: ${{ !env.ACT && github.event_name != 'pull_request' }}
|
if: ${{ !env.ACT && github.event_name != 'pull_request' && env.NEEDED }}
|
||||||
uses: svenstaro/upload-release-action@v2
|
uses: svenstaro/upload-release-action@v2
|
||||||
with:
|
with:
|
||||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
file: ${{ env.SDK_PATH }}
|
file: ${{ env.SDK_PATH }}
|
||||||
asset_name: ${{ env.SDK_FILE }}
|
asset_name: '${{ env.TOOLNAME }}.tgz'
|
||||||
tag: ${{ env.TAG_NAME }}
|
tag: ${{ env.TAG_NAME }}
|
||||||
overwrite: true
|
overwrite: true
|
||||||
|
|
||||||
buildroot:
|
buildroot:
|
||||||
name: Build firmware
|
name: Firmware
|
||||||
needs: toolchain
|
needs: toolchain
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
env:
|
||||||
|
FURRY: ${{ secrets.FURRY }}
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
|
@ -138,17 +152,25 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
|
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
id: checkout
|
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v3
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0 # OR "2" -> To retrieve the preceding commit.
|
fetch-depth: 0 # OR "2" -> To retrieve the preceding commit.
|
||||||
|
|
||||||
|
- name: Checkout deps
|
||||||
|
if: ${{ env.FURRY != '' }}
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
repository: furry-disco/deps
|
||||||
|
fetch-depth: 0 # OR "2" -> To retrieve the preceding commit.
|
||||||
|
path: deps
|
||||||
|
submodules: recursive
|
||||||
|
ssh-key: ${{ secrets.FURRY }}
|
||||||
|
|
||||||
- name: Install build dependencies
|
- name: Install build dependencies
|
||||||
run: |
|
run: |
|
||||||
make install-deps
|
make install-deps
|
||||||
mkdir -p tmp
|
ls -l deps || true
|
||||||
if [ ! -z "$ACT" ]; then
|
if [ ! -z "$ACT" ]; then
|
||||||
apt install -y cpio rsync bc
|
|
||||||
echo "FORCE_UNSAFE_CONFIGURE=1" >> $GITHUB_ENV
|
echo "FORCE_UNSAFE_CONFIGURE=1" >> $GITHUB_ENV
|
||||||
else
|
else
|
||||||
# https://github.com/actions/runner-images/issues/2577
|
# https://github.com/actions/runner-images/issues/2577
|
||||||
|
@ -160,10 +182,8 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
sudo apt clean
|
sudo apt clean
|
||||||
docker rmi $(docker image ls -aq)
|
docker rmi $(docker image ls -aq)
|
||||||
df -h
|
|
||||||
|
|
||||||
- name: Prepare buildroot
|
- name: Prepare buildroot
|
||||||
id: prepare
|
|
||||||
run: |
|
run: |
|
||||||
HEAD_TAG=$(git tag --points-at HEAD)
|
HEAD_TAG=$(git tag --points-at HEAD)
|
||||||
GIT_HASH=$(git rev-parse --short $GITHUB_SHA)
|
GIT_HASH=$(git rev-parse --short $GITHUB_SHA)
|
||||||
|
@ -182,11 +202,17 @@ jobs:
|
||||||
echo "RELEASE_NAME=$RELEASE_NAME" >> $GITHUB_ENV
|
echo "RELEASE_NAME=$RELEASE_NAME" >> $GITHUB_ENV
|
||||||
echo "PRERELEASE=$PRERELEASE" >> $GITHUB_ENV
|
echo "PRERELEASE=$PRERELEASE" >> $GITHUB_ENV
|
||||||
echo "BRANCH=$BRANCH" >> $GITHUB_ENV
|
echo "BRANCH=$BRANCH" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
- name: Determine toolchain name
|
||||||
|
run: |
|
||||||
make prepare
|
make prepare
|
||||||
|
TOOLNAME=$(make BOARD=unknown_unknown_${{ matrix.platform }}_openipc toolname)
|
||||||
|
echo "TOOLNAME=$TOOLNAME" >> $GITHUB_ENV
|
||||||
|
|
||||||
- uses: actions/download-artifact@v3
|
- uses: actions/download-artifact@v3
|
||||||
|
if: ${{ (env.ACT || github.event_name == 'pull_request') }}
|
||||||
with:
|
with:
|
||||||
name: ${{ needs.toolchain.outputs.sdk-file }}
|
name: '${{ env.TOOLNAME }}.tgz'
|
||||||
|
|
||||||
- name: Build firmware
|
- name: Build firmware
|
||||||
run: |
|
run: |
|
||||||
|
@ -205,19 +231,36 @@ jobs:
|
||||||
|
|
||||||
CONF_PATH=$(find . -name "${BOARD}_defconfig")
|
CONF_PATH=$(find . -name "${BOARD}_defconfig")
|
||||||
|
|
||||||
echo Using ${{ needs.toolchain.outputs.sdk-file }}
|
echo Using $TOOLNAME
|
||||||
|
if [ ! -f "$TOOLNAME.tgz" ]; then
|
||||||
|
wget https://github.com/${GITHUB_REPOSITORY}/${TAG_NAME}/${TOOLNAME}.tgz
|
||||||
|
fi
|
||||||
|
|
||||||
echo "BR2_TOOLCHAIN_EXTERNAL=y" >> $CONF_PATH
|
echo "BR2_TOOLCHAIN_EXTERNAL=y" >> $CONF_PATH
|
||||||
echo "BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y" >> $CONF_PATH
|
echo "BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y" >> $CONF_PATH
|
||||||
echo "BR2_TOOLCHAIN_EXTERNAL_PREINSTALLED=y" >> $CONF_PATH
|
echo "BR2_TOOLCHAIN_EXTERNAL_PREINSTALLED=y" >> $CONF_PATH
|
||||||
echo "BR2_TOOLCHAIN_EXTERNAL_PATH=\"/tmp/extsdk\"" >> $CONF_PATH
|
echo "BR2_TOOLCHAIN_EXTERNAL_PATH=\"/tmp/extsdk\"" >> $CONF_PATH
|
||||||
echo "BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX=\"arm-openipc-linux-musleabi\"" >> $CONF_PATH
|
|
||||||
echo "BR2_TOOLCHAIN_EXTERNAL_CUSTOM_MUSL=y" >> $CONF_PATH
|
LIBC=$(echo $TOOLNAME | cut -d '-' -f 3)
|
||||||
echo "BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_9=y" >> $CONF_PATH
|
PREFIX="arm-openipc-linux-"
|
||||||
echo "BR2_TOOLCHAIN_EXTERNAL_GCC_8=y" >> $CONF_PATH
|
case "$LIBC" in
|
||||||
LIBC="musl"
|
musl|uclibc)
|
||||||
|
PREFIX="${PREFIX}${LIBC}eabi"
|
||||||
|
;;
|
||||||
|
glibc)
|
||||||
|
PREFIX="${PREFIX}gnueabi"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
echo "BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX=\"${PREFIX}\"" >> $CONF_PATH
|
||||||
|
CAP_LIBC=$(echo $LIBC | tr a-z A-Z)
|
||||||
|
echo "BR2_TOOLCHAIN_EXTERNAL_CUSTOM_${CAP_LIBC}=y" >> $CONF_PATH
|
||||||
|
LXHDRS=$(echo $TOOLNAME | cut -d '-' -f 4)
|
||||||
|
echo "BR2_TOOLCHAIN_EXTERNAL_HEADERS_${LXHDRS}=y" >> $CONF_PATH
|
||||||
|
GCC_VER=$(echo $TOOLNAME | cut -d '-' -f 2)
|
||||||
|
echo "BR2_TOOLCHAIN_EXTERNAL_GCC_${GCC_VER:3:1}=y" >> $CONF_PATH
|
||||||
echo "BR2_ROOTFS_POST_BUILD_SCRIPT=\"\$(TOPDIR)/../scripts/executing_commands_for_${LIBC}.sh\"" >> $CONF_PATH
|
echo "BR2_ROOTFS_POST_BUILD_SCRIPT=\"\$(TOPDIR)/../scripts/executing_commands_for_${LIBC}.sh\"" >> $CONF_PATH
|
||||||
mkdir /tmp/extsdk
|
mkdir /tmp/extsdk
|
||||||
tar xvf ${{ needs.toolchain.outputs.sdk-file }} --strip-components=1 -C /tmp/extsdk >/dev/null
|
tar xvf ${TOOLNAME}.tgz --strip-components=1 -C /tmp/extsdk >/dev/null
|
||||||
|
|
||||||
HAS_NAND=$(make BOARD=${BOARD} has-nand)
|
HAS_NAND=$(make BOARD=${BOARD} has-nand)
|
||||||
echo "HAS_NAND=$HAS_NAND" >> $GITHUB_ENV
|
echo "HAS_NAND=$HAS_NAND" >> $GITHUB_ENV
|
||||||
|
|
6
Makefile
6
Makefile
|
@ -56,7 +56,8 @@ $(BR_DIR): $(ROOT_DIR)/buildroot-$(BR_VER).tar.gz
|
||||||
|
|
||||||
|
|
||||||
install-deps:
|
install-deps:
|
||||||
DEBIAN_FRONTEND=noninteractive sudo apt-get update && sudo apt-get -y install build-essential make libncurses-dev wget
|
DEBIAN_FRONTEND=noninteractive sudo apt-get update && \
|
||||||
|
sudo apt-get -y install build-essential make libncurses-dev wget cpio rsync bc
|
||||||
|
|
||||||
|
|
||||||
%_info:
|
%_info:
|
||||||
|
@ -73,6 +74,9 @@ buildroot-version:
|
||||||
has-nand:
|
has-nand:
|
||||||
@sed -rn "s/^BR2_TARGET_ROOTFS_UBI=(y)/\1/p" $(FULL_PATH)
|
@sed -rn "s/^BR2_TARGET_ROOTFS_UBI=(y)/\1/p" $(FULL_PATH)
|
||||||
|
|
||||||
|
toolname:
|
||||||
|
@$(SCRIPTS_DIR)/show_toolchains.sh $(FULL_PATH) $(BR_VER)
|
||||||
|
|
||||||
list-configs:
|
list-configs:
|
||||||
@echo
|
@echo
|
||||||
@ls -1 $(BR_EXT_DIR)/configs
|
@ls -1 $(BR_EXT_DIR)/configs
|
||||||
|
|
|
@ -2,41 +2,83 @@
|
||||||
|
|
||||||
shopt -s nullglob
|
shopt -s nullglob
|
||||||
|
|
||||||
if [ $# -eq 0 ]; then
|
toolchain_by_config() {
|
||||||
$0 1 | sort
|
CF=$1
|
||||||
#$0 1 | sort | uniq
|
FMT=$2
|
||||||
else
|
|
||||||
for D in br-ext-chip-*; do
|
|
||||||
for CF in $D/configs/*; do
|
|
||||||
BR2_VER=$(grep BR2_DEFAULT_KERNEL_VERSION $CF)
|
|
||||||
if [ ! -z $BR2_VER ]; then
|
|
||||||
VENDOR=$(echo $CF | cut -d - -f 4 | cut -d / -f 1 | sed -r 's/\<./\U&/g')
|
|
||||||
VER=$(echo $BR2_VER | cut -d \" -f 2 | awk -F . '{printf "%s_%s", $1, $2}')
|
|
||||||
GCC_VER=$(sed -rn "s/^BR2_GCC_VERSION_([0-9]*)_X=y/\1/p" $CF)
|
|
||||||
ARCH=$(sed -rn "s/^BR2_(arm[a-z0-9_]+)=y/\1/p" $CF)
|
|
||||||
if [ -z "$ARCH" ]; then
|
|
||||||
ARCH=$(sed -rn "s/^BR2_(cortex_[a-z0-9_]+)=y/\1/p" $CF)
|
|
||||||
fi
|
|
||||||
if [ -z "$ARCH" ]; then
|
|
||||||
ARCH=$(sed -rn "s/^BR2_(arm)=y/\1/p" $CF)
|
|
||||||
else
|
|
||||||
# Here we have something from ARM modern family
|
|
||||||
HF=$(sed -rn "s/^BR2_ARM_EABI(HF)=y/\1/p" $CF | tr '[:upper:]' '[:lower:]')
|
|
||||||
if [ ! -z "$HF" ]; then
|
|
||||||
ARCH="${ARCH}_${HF}"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -z "$ARCH" ]; then
|
BR2_VER=$(grep BR2_DEFAULT_KERNEL_VERSION $CF)
|
||||||
ARCH=$(sed -rn "s/^BR2_(mips_[a-z]*)=y/\1/p" $CF)
|
if [ ! -z $BR2_VER ]; then
|
||||||
fi
|
VENDOR=$(echo $CF | cut -d - -f 4 | cut -d / -f 1 | sed -r 's/\<./\U&/g')
|
||||||
|
KVER=$(echo $BR2_VER | cut -d \" -f 2 | awk -F . '{printf "%s_%s", $1, $2}')
|
||||||
LIBC=$(sed -rn "s/^BR2_TOOLCHAIN_BUILDROOT_LIBC=\"(.*)\"/\1/p" $CF)
|
GCC_VER=$(sed -rn "s/^BR2_GCC_VERSION_([0-9]*)_X=y/\1/p" $CF)
|
||||||
|
ARCH=$(sed -rn "s/^BR2_(arm[a-z0-9_]+)=y/\1/p" $CF)
|
||||||
SOC=$(echo $CF | cut -d _ -f 3)
|
if [ -z "$ARCH" ]; then
|
||||||
# $GCC_VER
|
ARCH=$(sed -rn "s/^BR2_(cortex_[a-z0-9_]+)=y/\1/p" $CF)
|
||||||
echo $ARCH $LIBC $VER $VENDOR $CF
|
fi
|
||||||
|
if [ -z "$ARCH" ]; then
|
||||||
|
ARCH=$(sed -rn "s/^BR2_(arm)=y/\1/p" $CF)
|
||||||
|
else
|
||||||
|
# Here we have something from ARM modern family
|
||||||
|
HF=$(sed -rn "s/^BR2_ARM_EABI(HF)=y/\1/p" $CF | tr '[:upper:]' '[:lower:]')
|
||||||
|
if [ ! -z "$HF" ]; then
|
||||||
|
ARCH="${ARCH}_${HF}"
|
||||||
fi
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$ARCH" ]; then
|
||||||
|
ARCH=$(sed -rn "s/^BR2_(mips_[a-z]*)=y/\1/p" $CF)
|
||||||
|
fi
|
||||||
|
|
||||||
|
LIBC=$(sed -rn "s/^BR2_TOOLCHAIN_BUILDROOT_LIBC=\"(.*)\"/\1/p" $CF)
|
||||||
|
|
||||||
|
SOC=$(echo $CF | cut -d _ -f 3)
|
||||||
|
case $FMT in
|
||||||
|
list)
|
||||||
|
echo $ARCH $GCC_VER $LIBC $KVER $VENDOR $CF
|
||||||
|
;;
|
||||||
|
uniq)
|
||||||
|
echo $ARCH $GCC_VER $LIBC $KVER
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
if [ ! -z "$2" ]; then
|
||||||
|
BR_DIR=buildroot-$2
|
||||||
|
GCC_VER=$(sed -rn \
|
||||||
|
"s/^\s+default\s+\"([0-9.]+)\"\s+if BR2_GCC_VERSION_${GCC_VER}_X/\1/p" \
|
||||||
|
$BR_DIR/package/gcc/Config.in.host)
|
||||||
|
case $LIBC in
|
||||||
|
musl)
|
||||||
|
VER=$(sed -rn "s/^MUSL_VERSION\s*=\s*([0-9.]+)/\1/p" \
|
||||||
|
$BR_DIR/package/musl/musl.mk)
|
||||||
|
;;
|
||||||
|
uclibc)
|
||||||
|
VER=$(sed -rn "s/^UCLIBC_VERSION\s*=\s*([0-9.]+)/\1/p" \
|
||||||
|
$BR_DIR/package/uclibc/uclibc.mk)
|
||||||
|
;;
|
||||||
|
glibc)
|
||||||
|
VER=$(sed -rn "s/^GLIBC_VERSION\s*=\s*([0-9.]+).*/\1/p" \
|
||||||
|
$BR_DIR/package/glibc/glibc.mk | tail -1)
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
HASH=$(echo $VER | sha1sum | cut -c 1-8)
|
||||||
|
echo ${ARCH}-gcc${GCC_VER}-${LIBC}-${KVER}-${HASH}
|
||||||
|
else
|
||||||
|
echo ${ARCH}-gcc${GCC_VER}-${LIBC}-${KVER}
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ $# -eq 0 ]; then
|
||||||
|
$0 list | sort
|
||||||
|
else
|
||||||
|
if [ "$1" != "list" ] && [ "$1" != "uniq" ]; then
|
||||||
|
toolchain_by_config $1 $2
|
||||||
|
else
|
||||||
|
for D in br-ext-chip-*; do
|
||||||
|
for CF in $D/configs/*; do
|
||||||
|
toolchain_by_config $CF $1
|
||||||
|
done
|
||||||
done
|
done
|
||||||
done
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
Loading…
Reference in New Issue