nuttx/tools/ci/cibuild.sh
simbit18 fd86cf70cc tools/ci: Modify cibuild.sh to adapt to new platforms.
cibuild.sh -> modify scripts
platforms -> new folder +scripts
add header

tools/ci/platforms: Set the execute permissions on the updated files.

tools/ci/platforms/linux.sh: fix header

Corrected Apache Foundation copyright header.

tools/ci: Modify cibuild.sh to adapt to new platforms.

cibuild.sh -> modify scripts
platforms -> new folder +scripts
add header

tools/ci/platforms: Set the execute permissions on the updated files.

tools/ci: Modify cibuild.sh to adapt to new platforms.

cibuild.sh -> modify scripts
platforms -> new folder +scripts
add header

tools/ci/platforms: Set the execute permissions on the updated files.

tools/ci: Kept the common code in cibuild.sh.

Kept the common code in cibuild.sh.

tools/ci: Storing all Environment Variables in env.sh script.

Added in cibuild.sh this command "source "${CIWORKSPACE}"/tools/env.sh" to activate installed tools.

tools/ci: shared the tools path in cibuild.sh

Added in cibuild.sh enviroment variable "NUTTXTOOLS" for installed tools.

Removed bashisms from scripts darwin.sh, linux.sh, msys2.sh and ubuntu.sh.

tools/ci: Fixed build problems with macOS

Fix Error: /Users/runner/work/nuttx/nuttx/sources/tools/bloaty-src/build is not a directory
2024-03-01 21:30:03 +08:00

182 lines
3.6 KiB
Bash
Executable File

#!/usr/bin/env bash
############################################################################
# tools/ci/cibuild.sh
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership. The
# ASF licenses this file to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance with the
# License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
############################################################################
set -e
set -o xtrace
CID=$(cd "$(dirname "$0")" && pwd)
CIWORKSPACE=$(cd "${CID}"/../../../ && pwd -P)
CIPLAT=${CIWORKSPACE}/nuttx/tools/ci/platforms
nuttx=${CIWORKSPACE}/nuttx
apps=${CIWORKSPACE}/apps
os=$(uname -s)
if [ -f /etc/os-release ]; then
osname=$(grep "^ID=" /etc/os-release | cut -d'=' -f2 | tr -d '"')
else
osname=${os}
fi
function to_do {
echo ""
echo "NuttX TODO: $1"
echo "The $1 platform does not appear to have been added to this project."
echo ""
exit 1
}
function install_tools {
export NUTTXTOOLS=${CIWORKSPACE}/tools
mkdir -p "${NUTTXTOOLS}"
case ${osname} in
alpine)
to_do "alpine"
;;
arch)
to_do "arch"
;;
CYGWIN*)
to_do "CYGWIN"
;;
debian)
to_do "debian"
;;
fedora)
to_do "fedora"
;;
freebsd)
to_do "freebsd"
;;
Darwin)
"${CIPLAT}"/darwin.sh
;;
Linux)
"${CIPLAT}"/linux.sh
;;
manjaro)
to_do "manjaro"
;;
msys2)
"${CIPLAT}"/msys2.sh
;;
ubuntu)
"${CIPLAT}"/ubuntu.sh
;;
*)
to_do "unknown"
;;
esac
source "${CIWORKSPACE}"/tools/env.sh
}
function usage {
echo ""
echo "USAGE: $0 [-i] [-s] [-c] [-*] <testlist>"
echo " $0 -h"
echo ""
echo "Where:"
echo " -i install tools"
echo " -s setup repos"
echo " -c enable ccache"
echo " -* support all options in testbuild.sh"
echo " -h will show this help text and terminate"
echo " <testlist> select testlist file"
echo ""
exit 1
}
function enable_ccache {
export CCACHE_DIR="${CIWORKSPACE}"/tools/ccache
}
function setup_repos {
pushd .
if [ -d "${nuttx}" ]; then
cd "${nuttx}"; git pull
else
git clone https://github.com/apache/nuttx.git "${nuttx}"
cd "${nuttx}"
fi
git log -1
if [ -d "${apps}" ]; then
cd "${apps}"; git pull
else
git clone https://github.com/apache/nuttx-apps.git "${apps}"
cd "${apps}"
fi
git log -1
popd
}
function run_builds {
local ncpus
if [ "X$osname" == "XDarwin" ]; then
ncpus=$(sysctl -n hw.ncpu)
else
ncpus=$(grep -c ^processor /proc/cpuinfo)
fi
options+="-j ${ncpus}"
for build in "${builds[@]}"; do
"${nuttx}"/tools/testbuild.sh ${options} -e "-Wno-cpp -Werror" "${build}"
done
if [ -d "${CCACHE_DIR}" ]; then
# Print a summary of configuration and statistics counters
ccache -s
fi
}
if [ -z "$1" ]; then
usage
fi
while [ -n "$1" ]; do
case "$1" in
-h )
usage
;;
-i )
install_tools
;;
-c )
enable_ccache
;;
-s )
setup_repos
;;
-* )
options+="$1 "
;;
* )
builds=( "$@" )
break
;;
esac
shift
done
run_builds