[rules/functions][slave.mk]: Refine build output (#838)
Print current build configuration before run Update screen with currently running targets (only available if TERM is available) Change format of printed targets Signed-off-by: marian-pritsak <marianp@mellanox.com>
This commit is contained in:
parent
f136334c72
commit
7d95fd7e8c
10
rules/config
10
rules/config
@ -2,10 +2,6 @@
|
|||||||
## Configuration parameters for SONiC build system
|
## Configuration parameters for SONiC build system
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
# SONIC_CONFIG_VERBOSE - enable echoing for rules commands.
|
|
||||||
# Uncomment next line to enable:
|
|
||||||
# SONIC_CONFIG_VERBOSE = y
|
|
||||||
|
|
||||||
# SONIC_CONFIG_PRINT_DEPENDENCIES - show dependencies for each invoked target.
|
# SONIC_CONFIG_PRINT_DEPENDENCIES - show dependencies for each invoked target.
|
||||||
# Before executing rule for each target its dependencies are printed to console.
|
# Before executing rule for each target its dependencies are printed to console.
|
||||||
# Uncomment next line to enable:
|
# Uncomment next line to enable:
|
||||||
@ -21,12 +17,6 @@ SONIC_CONFIG_BUILD_JOBS = 1
|
|||||||
# container.
|
# container.
|
||||||
SONIC_CONFIG_MAKE_JOBS = $(shell nproc)
|
SONIC_CONFIG_MAKE_JOBS = $(shell nproc)
|
||||||
|
|
||||||
# SONIC_CONFIG_LOG_TO_FILES - print output from execution of rule for each
|
|
||||||
# target into separate log file under target/log/.
|
|
||||||
# Useful when executing parallel build
|
|
||||||
# Uncomment next line to enable:
|
|
||||||
SONIC_CONFIG_LOG_TO_FILES = y
|
|
||||||
|
|
||||||
# SONIC_CONFIG_ENABLE_COLORS - enable colored output in build system.
|
# SONIC_CONFIG_ENABLE_COLORS - enable colored output in build system.
|
||||||
# Comment next line to disable:
|
# Comment next line to disable:
|
||||||
# SONIC_CONFIG_ENABLE_COLORS = y
|
# SONIC_CONFIG_ENABLE_COLORS = y
|
||||||
|
@ -41,43 +41,30 @@ log_green = echo -e "$(GREEN)$(1)$(GRAY)"
|
|||||||
## Logging
|
## Logging
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
ifeq ($(SONIC_CONFIG_LOG_TO_FILES),y)
|
|
||||||
FLUSH_LOG = rm -f $@.log
|
FLUSH_LOG = rm -f $@.log
|
||||||
|
|
||||||
LOG = &>> $(PROJECT_ROOT)/$@.log || { [ $$? -eq 0 ] || cat $(PROJECT_ROOT)/$@.log ; false ; }
|
LOG = &>> $(PROJECT_ROOT)/$@.log || { [ $$? -eq 0 ] || pushd $(PROJECT_ROOT) > /dev/null ; ./update_screen.sh -e $@ ; popd > /dev/null ; false ; }
|
||||||
endif
|
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
## Header and footer for each target
|
## Header and footer for each target
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
# Print name of target being built
|
|
||||||
PRINT_TARGET = $(call log_purple,Executing rules for $@)
|
|
||||||
|
|
||||||
# Print name of target that finished build
|
|
||||||
PRINT_END_TARGET = $(call log_green,Finished $@)
|
|
||||||
|
|
||||||
# Dump targets taht current depends on
|
# Dump targets taht current depends on
|
||||||
ifeq ($(SONIC_CONFIG_PRINT_DEPENDENCIES),y)
|
ifeq ($(SONIC_CONFIG_PRINT_DEPENDENCIES),y)
|
||||||
PRINT_DEPENDENCIES = $(call log_blue,Dependencies for $@ are $^)
|
PRINT_DEPENDENCIES = echo Dependencies for $@ are $^ $(LOG)
|
||||||
endif
|
|
||||||
|
|
||||||
# Enable verbose mode
|
|
||||||
ifneq ($(SONIC_CONFIG_VERBOSE),y)
|
|
||||||
ENABLE_VERBOSE = @
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# header for each rule
|
# header for each rule
|
||||||
define HEADER
|
define HEADER
|
||||||
$(ENABLE_VERBOSE)
|
@
|
||||||
$(PRINT_TARGET)
|
|
||||||
$(PRINT_DEPENDENCIES)
|
$(PRINT_DEPENDENCIES)
|
||||||
$(FLUSH_LOG)
|
$(FLUSH_LOG)
|
||||||
|
./update_screen.sh -a $@
|
||||||
endef
|
endef
|
||||||
|
|
||||||
# footer for each rule
|
# footer for each rule
|
||||||
define FOOTER
|
define FOOTER
|
||||||
$(PRINT_END_TARGET)
|
./update_screen.sh -d $@
|
||||||
endef
|
endef
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
24
slave.mk
24
slave.mk
@ -80,13 +80,21 @@ export SONIC_CONFIG_MAKE_JOBS
|
|||||||
## Dumping key config attributes associated to current building exercise
|
## Dumping key config attributes associated to current building exercise
|
||||||
###############################################################################
|
###############################################################################
|
||||||
|
|
||||||
ifndef $(CONFIGURED_PLATFORM)
|
$(info SONiC Build System)
|
||||||
$(info CONFIGURED_PLATFORM is $(CONFIGURED_PLATFORM))
|
$(info )
|
||||||
endif
|
$(info Build Configuration)
|
||||||
|
$(info "CONFIGURED_PLATFORM" : "$(if $(PLATFORM),$(PLATFORM),$(CONFIGURED_PLATFORM))")
|
||||||
ifndef $(SONIC_ROUTING_STACK)
|
$(info "SONIC_CONFIG_PRINT_DEPENDENCIES" : "$(SONIC_CONFIG_PRINT_DEPENDENCIES)")
|
||||||
$(info ROUTING_STACK is $(SONIC_ROUTING_STACK))
|
$(info "SONIC_CONFIG_BUILD_JOBS" : "$(SONIC_CONFIG_BUILD_JOBS)")
|
||||||
endif
|
$(info "SONIC_CONFIG_MAKE_JOBS" : "$(SONIC_CONFIG_MAKE_JOBS)")
|
||||||
|
$(info "DEFAULT_USERNAME" : "$(DEFAULT_USERNAME)")
|
||||||
|
$(info "DEFAULT_PASSWORD" : "$(DEFAULT_PASSWORD)")
|
||||||
|
$(info "ENABLE_DHCP_GRAPH_SERVICE" : "$(ENABLE_DHCP_GRAPH_SERVICE)")
|
||||||
|
$(info "SHUTDOWN_BGP_ON_START" : "$(SHUTDOWN_BGP_ON_START)")
|
||||||
|
$(info "SONIC_CONFIG_DEBUG" : "$(SONIC_CONFIG_DEBUG)")
|
||||||
|
$(info "ROUTING_STACK" : "$(SONIC_ROUTING_STACK)")
|
||||||
|
$(info "ENABLE_SYNCD_RPC" : "$(ENABLE_SYNCD_RPC)")
|
||||||
|
$(info )
|
||||||
|
|
||||||
###############################################################################
|
###############################################################################
|
||||||
## Generic rules section
|
## Generic rules section
|
||||||
@ -241,7 +249,7 @@ SONIC_INSTALL_TARGETS = $(addsuffix -install,$(addprefix $(DEBS_PATH)/, \
|
|||||||
$(SONIC_EXTRA_DEBS)))
|
$(SONIC_EXTRA_DEBS)))
|
||||||
$(SONIC_INSTALL_TARGETS) : $(DEBS_PATH)/%-install : .platform $$(addsuffix -install,$$(addprefix $(DEBS_PATH)/,$$($$*_DEPENDS))) $(DEBS_PATH)/$$*
|
$(SONIC_INSTALL_TARGETS) : $(DEBS_PATH)/%-install : .platform $$(addsuffix -install,$$(addprefix $(DEBS_PATH)/,$$($$*_DEPENDS))) $(DEBS_PATH)/$$*
|
||||||
$(HEADER)
|
$(HEADER)
|
||||||
[ -f $(DEBS_PATH)/$* ] || { echo $(DEBS_PATH)/$* does not exist $(LOG) && exit 1; }
|
[ -f $(DEBS_PATH)/$* ] || { echo $(DEBS_PATH)/$* does not exist $(LOG) && false $(LOG) }
|
||||||
# put a lock here because dpkg does not allow installing packages in parallel
|
# put a lock here because dpkg does not allow installing packages in parallel
|
||||||
while true; do
|
while true; do
|
||||||
if mkdir $(DEBS_PATH)/dpkg_lock &> /dev/null; then
|
if mkdir $(DEBS_PATH)/dpkg_lock &> /dev/null; then
|
||||||
|
88
update_screen.sh
Executable file
88
update_screen.sh
Executable file
@ -0,0 +1,88 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
lockfile .screen
|
||||||
|
|
||||||
|
target_list_file=/tmp/target_list
|
||||||
|
touch ${target_list_file}
|
||||||
|
|
||||||
|
function scroll_up {
|
||||||
|
# Check if TERM is available
|
||||||
|
[[ "${TERM}" == "dumb" ]] && return
|
||||||
|
|
||||||
|
for i in $(cat ${target_list_file}); do
|
||||||
|
tput cuu1
|
||||||
|
tput el
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function print_targets {
|
||||||
|
# Check if TERM is available
|
||||||
|
[[ "${TERM}" == "dumb" ]] && return
|
||||||
|
|
||||||
|
count=1
|
||||||
|
for i in $(cat ${target_list_file}); do
|
||||||
|
printf "[ %02d ] [ %s ]\n" "${count}" "$i"
|
||||||
|
((count++))
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function remove_target {
|
||||||
|
# Check if TERM is available
|
||||||
|
[[ "${TERM}" == "dumb" ]] && echo "[ finished ] [ $1 ] " && return
|
||||||
|
|
||||||
|
old_list=$(cat ${target_list_file})
|
||||||
|
rm ${target_list_file}
|
||||||
|
for target in ${old_list}; do
|
||||||
|
if [[ "${target}" != "$1" ]]; then
|
||||||
|
echo ${target} >> ${target_list_file}
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
touch ${target_list_file}
|
||||||
|
}
|
||||||
|
|
||||||
|
function add_target {
|
||||||
|
# Check if TERM is available
|
||||||
|
[[ "${TERM}" == "dumb" ]] && echo "[ building ] [ $1 ] " && return
|
||||||
|
|
||||||
|
echo $1 >> ${target_list_file}
|
||||||
|
}
|
||||||
|
|
||||||
|
function print_targets_delay {
|
||||||
|
sleep 2 && print_targets && rm -f .screen &
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
while getopts ":a:d:e:" opt; do
|
||||||
|
case $opt in
|
||||||
|
a)
|
||||||
|
scroll_up
|
||||||
|
add_target ${OPTARG}
|
||||||
|
print_targets
|
||||||
|
;;
|
||||||
|
d)
|
||||||
|
scroll_up
|
||||||
|
remove_target ${OPTARG}
|
||||||
|
print_targets
|
||||||
|
;;
|
||||||
|
e)
|
||||||
|
scroll_up
|
||||||
|
remove_target ${OPTARG}
|
||||||
|
echo "[ FAIL LOG START ] [ ${OPTARG} ]"
|
||||||
|
cat ${OPTARG}.log
|
||||||
|
echo "[ FAIL LOG END ] [ ${OPTARG} ]"
|
||||||
|
print_targets_delay
|
||||||
|
;;
|
||||||
|
\?)
|
||||||
|
echo "Invalid option: -$OPTARG" >&2
|
||||||
|
rm -f .screen
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
:)
|
||||||
|
echo "Option -$OPTARG requires an argument." >&2
|
||||||
|
rm -f .screen
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
rm -f .screen
|
Loading…
Reference in New Issue
Block a user