Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dist/tools/insufficient_memory: Minor improvements #19303

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,12 @@ for app in ${APPLICATIONS}; do
if grep -e overflowed -e "not within region" "$TMPFILE" > /dev/null; then
printf "${CBIG}%s${CRESET}\n" "too big"
make -f "$(dirname "$0")"/Makefile.for_sh DIR="${RIOTBASE}/${application}" BOARD="${BOARD}" Makefile.ci > /dev/null
elif grep -e "not whitelisted" -e "unsatisfied feature requirements" "$TMPFILE" > /dev/null; then
elif grep -e "not whitelisted" \
-e "unsatisfied feature requirements" \
-e "Some feature requirements are blacklisted:" \
-e "not supported. Stop." \
-e "let the build continue on expected errors by setting CONTINUE_ON_EXPECTED_ERRORS=1" \
"$TMPFILE" > /dev/null; then
printf "${CWARN}%s${CRESET}\n" "not supported"
else
printf "${CERROR}%s${CRESET}\n" "build failed"
Expand Down
35 changes: 23 additions & 12 deletions dist/tools/insufficient_memory/create_makefile.ci.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#!/usr/bin/env bash
#!/usr/bin/env sh
#
# Copyright (C) 2021 Benjamin Valentin <benjamin.valentin@ml-pa.com>
#
Expand All @@ -7,10 +7,12 @@
# directory for more details.
#

MAKE_ARGS="-j4"
if nproc > /dev/null 2>&1; then
MAKE_ARGS="-j$(nproc)"
fi
APP_DIR=$(pwd)

if tput colors &> /dev/null && [ "$(tput colors)" -ge 8 ]; then
if tput colors > /dev/null 2>&1 && [ "$(tput colors)" -ge 8 ]; then
COK="\e[1;32m"
CBIG="\e[1;34m"
CNORMAL="\e[1m"
Expand All @@ -28,12 +30,12 @@ else
CRESET=
fi

if [ "$1" == "--no-docker" ]; then
LOCAL_MAKE_ARGS=${MAKE_ARGS}
if [ "$1" = "--no-docker" ]; then
LOCAL_MAKE_ARGS="${MAKE_ARGS}"
shift 1
else
# Use a standardized build within Docker and with minimal output
export DOCKER_MAKE_ARGS=${MAKE_ARGS}
export DOCKER_MAKE_ARGS="${MAKE_ARGS}"
export BUILD_IN_DOCKER=1
fi

Expand All @@ -43,21 +45,30 @@ BOARDS=

rm "${APP_DIR}/Makefile.ci" 2>/dev/null
touch "${APP_DIR}/Makefile.ci"
TMPFILE="$(mktemp)"

for BOARD in $(make --no-print-directory info-boards-supported -C "${APP_DIR}"); do
for BOARD in $(EXTERNAL_BOARD_DIRS="" make --no-print-directory info-boards-supported -C "${APP_DIR}"); do
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hm for some reason this does not work, my list of EXTERNAL_BOARD_DIRS still gets iterated.

What works is doing

EXTERNAL_BOARD_DIRS= make generate-Makefile.ci

but that's easily forgotten and we end up with internal boards in Makefile.ci

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
for BOARD in $(EXTERNAL_BOARD_DIRS="" make --no-print-directory info-boards-supported -C "${APP_DIR}"); do
for BOARD in $(make EXTERNAL_BOARD_DIRS="" --no-print-directory info-boards-supported -C "${APP_DIR}"); do

Could you give this a try?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nope that doesn't make a difference

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But, it should! 😢

printf "${CNORMAL}%-40s${CRESET}" "${BOARD}"
output=$(make BOARD="${BOARD}" ${LOCAL_MAKE_ARGS} clean all -C "${APP_DIR}" 2>&1)
if [ "$?" != 0 ]; then
if echo "${output}" | grep -e overflowed -e "not within region" > /dev/null; then
# disabling warning about globbing and word splitting for LOCAL_MAKE_ARGS,
# as this is exactly what we want here
# shellcheck disable=SC2086
if ! make BOARD="${BOARD}" ${LOCAL_MAKE_ARGS} clean all -C "${APP_DIR}" > "$TMPFILE" 2>&1; then
if grep -e overflowed -e "not within region" "$TMPFILE" > /dev/null; then
printf "${CBIG}%s${CRESET}\n" "too big"
BOARDS="${BOARDS} ${BOARD}"
elif echo "${output}" | grep -e "not whitelisted" -e "unsatisfied feature requirements" > /dev/null; then
elif grep -e "not whitelisted" \
-e "unsatisfied feature requirements" \
-e "Some feature requirements are blacklisted:" \
-e "not supported. Stop." \
-e "let the build continue on expected errors by setting CONTINUE_ON_EXPECTED_ERRORS=1" \
"$TMPFILE" > /dev/null; then
printf "${CWARN}%s${CRESET}\n" "not supported"
else
printf "${CERROR}%s${CRESET}\n" "build failed"
cat "$TMPFILE"
fi
else
if echo "${output}" | grep -e "skipping link step" > /dev/null; then
if grep -e "skipping link step" "$TMPFILE" > /dev/null; then
printf "${CSKIP}%s${CRESET}\n" "skipped"
else
printf "${COK}%s${CRESET}\n" "OK"
Expand Down