Tweaks to build process for embedded scripts

- Force a rebuild if a script in applets_sh is changed.

- Move the dummy usage messages for custom applets to usage.h and
  change the name from 'dummy' to 'scripted'.

- Hide an error from gen_build_files.sh if an embed directory exists
  but is empty.

- Tidy up embedded_scripts script.

v2: Remove a couple of unnecessary tests in embedded_scripts, as
    pointed out by Xabier Oneca.
    Drop the stripping of comments.

Signed-off-by: Ron Yorston <rmy@pobox.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Ron Yorston 2018-11-21 10:11:01 +00:00 committed by Denys Vlasenko
parent dffc8ff6a6
commit 7b42f8fc76
5 changed files with 14 additions and 23 deletions

View File

@ -853,7 +853,7 @@ quiet_cmd_split_autoconf = SPLIT include/autoconf.h -> include/config/*
quiet_cmd_gen_embedded_scripts = GEN include/embedded_scripts.h quiet_cmd_gen_embedded_scripts = GEN include/embedded_scripts.h
cmd_gen_embedded_scripts = $(srctree)/scripts/embedded_scripts include/embedded_scripts.h $(srctree)/embed $(srctree)/applets_sh cmd_gen_embedded_scripts = $(srctree)/scripts/embedded_scripts include/embedded_scripts.h $(srctree)/embed $(srctree)/applets_sh
#bbox# piggybacked generation of few .h files #bbox# piggybacked generation of few .h files
include/config/MARKER: scripts/basic/split-include include/autoconf.h $(wildcard $(srctree)/embed/*) $(srctree)/scripts/embedded_scripts include/config/MARKER: scripts/basic/split-include include/autoconf.h $(wildcard $(srctree)/embed/*) $(wildcard $(srctree)/applets_sh/*) $(srctree)/scripts/embedded_scripts
$(call cmd,split_autoconf) $(call cmd,split_autoconf)
$(call cmd,gen_bbconfigopts) $(call cmd,gen_bbconfigopts)
$(call cmd,gen_common_bufsiz) $(call cmd,gen_common_bufsiz)

View File

@ -22,12 +22,6 @@ s - suid type:
BB_SUID_REQUIRE or BB_SUID_MAYBE applet. BB_SUID_REQUIRE or BB_SUID_MAYBE applet.
*/ */
#define NOUSAGE_STR "\b"
#define dummy_trivial_usage NOUSAGE_STR \
#define dummy_full_usage "" \
#if defined(PROTOTYPES) #if defined(PROTOTYPES)
# define APPLET(name,l,s) int name##_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; # define APPLET(name,l,s) int name##_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
# define APPLET_ODDNAME(name,main,l,s,help) int main##_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; # define APPLET_ODDNAME(name,main,l,s,help) int main##_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;

View File

@ -14,6 +14,9 @@
#define NOUSAGE_STR "\b" #define NOUSAGE_STR "\b"
#define scripted_trivial_usage NOUSAGE_STR
#define scripted_full_usage ""
#if !ENABLE_USE_BB_CRYPT || ENABLE_USE_BB_CRYPT_SHA #if !ENABLE_USE_BB_CRYPT || ENABLE_USE_BB_CRYPT_SHA
# define CRYPT_METHODS_HELP_STR "des,md5,sha256/512" \ # define CRYPT_METHODS_HELP_STR "des,md5,sha256/512" \
" (default "CONFIG_FEATURE_DEFAULT_PASSWD_ALGO")" " (default "CONFIG_FEATURE_DEFAULT_PASSWD_ALGO")"

View File

@ -81,21 +81,15 @@ exec >"$target.$$"
if [ $n -ne 0 ] if [ $n -ne 0 ]
then then
printf '#ifdef DEFINE_SCRIPT_DATA\n' printf '#ifdef DEFINE_SCRIPT_DATA\n'
if [ $n -ne 0 ] printf 'const uint16_t applet_numbers[] = {\n'
then for i in $custom_scripts $applet_scripts
printf 'const uint16_t applet_numbers[] = {\n' do
for i in $custom_scripts $applet_scripts # TODO support applets with names including invalid characters
do printf '\tAPPLET_NO_%s,\n' $i
# TODO support applets with names including invalid characters done
printf '\tAPPLET_NO_%s,\n' $i printf '};\n'
done
printf '};\n'
fi
printf '#else\n' printf '#else\n'
if [ $n -ne 0 ] printf 'extern const uint16_t applet_numbers[];\n'
then
printf 'extern const uint16_t applet_numbers[];\n'
fi
printf '#endif\n' printf '#endif\n'
fi fi

View File

@ -23,9 +23,9 @@ custom_scripts()
custom_loc="$1" custom_loc="$1"
if [ -d "$custom_loc" ] if [ -d "$custom_loc" ]
then then
for i in $(cd "$custom_loc"; ls *) for i in $(cd "$custom_loc"; ls * 2>/dev/null)
do do
printf "APPLET_SCRIPTED(%s, scripted, BB_DIR_USR_BIN, BB_SUID_DROP, dummy)\n" $i; printf "APPLET_SCRIPTED(%s, scripted, BB_DIR_USR_BIN, BB_SUID_DROP, scripted)\n" $i;
done done
fi fi
} }