From dd3984c11c2f0d1a052eb4a3485718e6b4e16142 Mon Sep 17 00:00:00 2001 From: WXbet Date: Mon, 11 May 2020 22:31:56 +0200 Subject: [PATCH] s3.TUP Integrating of Freetz-NG toolchains (v0.13.0) - seamlessly add Freetz-NG cross toolchain builder integration including first cross templates for Fritz!OS (see wiki) - rename source folder crosstool-ng - new commandline options -fng / --freetz-ng to open the Freetz-NG menu - fix unset variables in syscheck-function to avoid multiple checks - extend the installers to setup the correct packages for Freetz-NG (tested on Ubuntu 20.04, ArchLinux, CentOS 8, Fedora 31, openSUSE in WSL2) --- .../crosstool/templates/fritzOS-musl-LAB_mips | 686 ++++++++++++++++++ .../templates/fritzOS-uClibc-69x_mips | 7 + .../templates/fritzOS-uClibc-71x_mips | 7 + support/functions/_plugin_update_toolchain | 356 ++++++--- support/functions/_sys_check | 1 + support/os/debian_ubuntu.install | 16 + support/os/manjaro.install | 17 +- support/os/redhat_centos_fedora.install | 33 +- support/os/suse.install | 27 +- 9 files changed, 1050 insertions(+), 100 deletions(-) create mode 100644 support/crosstool/templates/fritzOS-musl-LAB_mips create mode 100644 support/crosstool/templates/fritzOS-uClibc-69x_mips create mode 100644 support/crosstool/templates/fritzOS-uClibc-71x_mips diff --git a/support/crosstool/templates/fritzOS-musl-LAB_mips b/support/crosstool/templates/fritzOS-musl-LAB_mips new file mode 100644 index 0000000..210dffb --- /dev/null +++ b/support/crosstool/templates/fritzOS-musl-LAB_mips @@ -0,0 +1,686 @@ +#toolchain template: FRITZ!OS musl Labor +CT_CONFIGURE_has_static_link=y +CT_CONFIGURE_has_cxx11=y +CT_CONFIGURE_has_wget=y +CT_CONFIGURE_has_curl=y +CT_CONFIGURE_has_make_3_81_or_newer=y +CT_CONFIGURE_has_make_4_0_or_newer=y +CT_CONFIGURE_has_libtool_2_4_or_newer=y +CT_CONFIGURE_has_libtoolize_2_4_or_newer=y +CT_CONFIGURE_has_autoconf_2_65_or_newer=y +CT_CONFIGURE_has_autoreconf_2_65_or_newer=y +CT_CONFIGURE_has_automake_1_15_or_newer=y +CT_CONFIGURE_has_gnu_m4_1_4_12_or_newer=y +CT_CONFIGURE_has_python_3_4_or_newer=y +CT_CONFIGURE_has_bison_2_7_or_newer=y +CT_CONFIGURE_has_python=y +CT_CONFIGURE_has_svn=y +CT_CONFIGURE_has_git=y +CT_CONFIGURE_has_md5sum=y +CT_CONFIGURE_has_sha1sum=y +CT_CONFIGURE_has_sha256sum=y +CT_CONFIGURE_has_sha512sum=y +CT_CONFIGURE_has_install_with_strip_program=y +CT_CONFIG_VERSION_CURRENT="3" +CT_CONFIG_VERSION="3" +CT_MODULES=y +# CT_OBSOLETE is not set +CT_EXPERIMENTAL=y +# CT_ALLOW_BUILD_AS_ROOT is not set +# CT_DEBUG_CT is not set +CT_LOCAL_TARBALLS_DIR="${HOME}/src" +CT_SAVE_TARBALLS=y +# CT_TARBALLS_BUILDROOT_LAYOUT is not set +CT_WORK_DIR="${CT_TOP_DIR}/.build" +CT_BUILD_TOP_DIR="${CT_WORK_DIR:-${CT_TOP_DIR}/.build}/${CT_HOST:+HOST-${CT_HOST}/}${CT_TARGET}" +CT_BUILD_DIR="${CT_BUILD_TOP_DIR}/build" +CT_PREFIX_DIR="${CT_PREFIX:-${HOME}/x-tools}/${CT_HOST:+HOST-${CT_HOST}/}${CT_TARGET}" +CT_RM_RF_PREFIX_DIR=y +CT_REMOVE_DOCS=y +CT_INSTALL_LICENSES=y +# CT_PREFIX_DIR_RO is not set +CT_STRIP_HOST_TOOLCHAIN_EXECUTABLES=y +# CT_STRIP_TARGET_TOOLCHAIN_EXECUTABLES is not set +CT_DOWNLOAD_AGENT_WGET=y +# CT_DOWNLOAD_AGENT_CURL is not set +# CT_DOWNLOAD_AGENT_NONE is not set +# CT_FORBID_DOWNLOAD is not set +# CT_FORCE_DOWNLOAD is not set +CT_CONNECT_TIMEOUT=10 +CT_DOWNLOAD_WGET_OPTIONS="--passive-ftp --tries=3 -nc --progress=dot:binary" +# CT_ONLY_DOWNLOAD is not set +# CT_USE_MIRROR is not set +CT_VERIFY_DOWNLOAD_DIGEST=y +CT_VERIFY_DOWNLOAD_DIGEST_SHA512=y +# CT_VERIFY_DOWNLOAD_DIGEST_SHA256 is not set +# CT_VERIFY_DOWNLOAD_DIGEST_SHA1 is not set +# CT_VERIFY_DOWNLOAD_DIGEST_MD5 is not set +CT_VERIFY_DOWNLOAD_DIGEST_ALG="sha512" +# CT_VERIFY_DOWNLOAD_SIGNATURE is not set +# CT_FORCE_EXTRACT is not set +CT_OVERRIDE_CONFIG_GUESS_SUB=y +# CT_ONLY_EXTRACT is not set +CT_PATCH_BUNDLED=y +# CT_PATCH_LOCAL is not set +# CT_PATCH_BUNDLED_LOCAL is not set +# CT_PATCH_LOCAL_BUNDLED is not set +# CT_PATCH_NONE is not set +CT_PATCH_ORDER="bundled" +CT_PARALLEL_JOBS=0 +CT_LOAD="" +CT_USE_PIPES=y +CT_EXTRA_CFLAGS_FOR_BUILD="" +CT_EXTRA_LDFLAGS_FOR_BUILD="" +CT_EXTRA_CFLAGS_FOR_HOST="" +CT_EXTRA_LDFLAGS_FOR_HOST="" +# CT_CONFIG_SHELL_SH is not set +# CT_CONFIG_SHELL_ASH is not set +CT_CONFIG_SHELL_BASH=y +# CT_CONFIG_SHELL_CUSTOM is not set +CT_CONFIG_SHELL="${bash}" +# CT_LOG_ERROR is not set +# CT_LOG_WARN is not set +# CT_LOG_INFO is not set +CT_LOG_EXTRA=y +# CT_LOG_ALL is not set +# CT_LOG_DEBUG is not set +CT_LOG_LEVEL_MAX="EXTRA" +# CT_LOG_SEE_TOOLS_WARN is not set +CT_LOG_PROGRESS_BAR=y +CT_LOG_TO_FILE=y +CT_LOG_FILE_COMPRESS=y +# CT_ARCH_ALPHA is not set +# CT_ARCH_ARC is not set +# CT_ARCH_ARM is not set +# CT_ARCH_AVR is not set +# CT_ARCH_M68K is not set +# CT_ARCH_MICROBLAZE is not set +CT_ARCH_MIPS=y +# CT_ARCH_MOXIE is not set +# CT_ARCH_MSP430 is not set +# CT_ARCH_NIOS2 is not set +# CT_ARCH_POWERPC is not set +# CT_ARCH_RISCV is not set +# CT_ARCH_S390 is not set +# CT_ARCH_SH is not set +# CT_ARCH_SPARC is not set +# CT_ARCH_X86 is not set +# CT_ARCH_XTENSA is not set +CT_ARCH="mips" +CT_ARCH_CHOICE_KSYM="MIPS" +CT_ARCH_TUNE="" +CT_ARCH_MIPS_SHOW=y +CT_ARCH_MIPS_PKG_KSYM="" +CT_ARCH_mips_o32=y +CT_ARCH_mips_ABI="32" +CT_ALL_ARCH_CHOICES="ALPHA ARC ARM AVR M68K MICROBLAZE MIPS MOXIE MSP430 NIOS2 POWERPC RISCV S390 SH SPARC X86 XTENSA" +CT_ARCH_SUFFIX="" +# CT_OMIT_TARGET_VENDOR is not set +# CT_MULTILIB is not set +CT_DEMULTILIB=y +CT_ARCH_USE_MMU=y +CT_ARCH_SUPPORTS_EITHER_ENDIAN=y +CT_ARCH_DEFAULT_BE=y +CT_ARCH_BE=y +# CT_ARCH_LE is not set +CT_ARCH_ENDIAN="big" +CT_ARCH_SUPPORTS_32=y +CT_ARCH_SUPPORTS_64=y +CT_ARCH_DEFAULT_32=y +CT_ARCH_BITNESS=32 +CT_ARCH_32=y +# CT_ARCH_64 is not set +CT_ARCH_SUPPORTS_WITH_ARCH=y +CT_ARCH_SUPPORTS_WITH_TUNE=y +CT_ARCH_SUPPORTS_WITH_FLOAT=y +CT_ARCH_ARCH="mips1" +# CT_ARCH_FLOAT_AUTO is not set +# CT_ARCH_FLOAT_HW is not set +CT_ARCH_FLOAT_SW=y +CT_TARGET_CFLAGS="" +CT_TARGET_LDFLAGS="" +CT_ARCH_FLOAT="soft" +CT_FORCE_SYSROOT=y +CT_USE_SYSROOT=y +CT_SYSROOT_NAME="sysroot" +CT_SYSROOT_DIR_PREFIX="" +CT_WANTS_STATIC_LINK=y +CT_WANTS_STATIC_LINK_CXX=y +# CT_STATIC_TOOLCHAIN is not set +CT_SHOW_CT_VERSION=y +CT_TOOLCHAIN_PKGVERSION="" +CT_TOOLCHAIN_BUGURL="" +CT_TARGET_VENDOR="fritzos" +CT_TARGET_ALIAS_SED_EXPR="" +CT_TARGET_ALIAS="" +# CT_NATIVE is not set +CT_CROSS=y +# CT_CROSS_NATIVE is not set +# CT_CANADIAN is not set +CT_TOOLCHAIN_TYPE="cross" +CT_BUILD="" +CT_BUILD_PREFIX="" +CT_BUILD_SUFFIX="" +# CT_TOOLCHAIN_ENABLE_NLS is not set +CT_KERNEL_SUPPORTS_SHARED_LIBS=y +# CT_KERNEL_BARE_METAL is not set +CT_KERNEL_LINUX=y +CT_KERNEL="linux" +CT_KERNEL_CHOICE_KSYM="LINUX" +CT_KERNEL_LINUX_SHOW=y +CT_KERNEL_LINUX_PKG_KSYM="LINUX" +CT_LINUX_DIR_NAME="linux" +CT_LINUX_PKG_NAME="linux" +CT_LINUX_SRC_RELEASE=y +# CT_LINUX_SRC_DEVEL is not set +# CT_LINUX_SRC_CUSTOM is not set +CT_LINUX_PATCH_GLOBAL=y +# CT_LINUX_PATCH_BUNDLED is not set +# CT_LINUX_PATCH_LOCAL is not set +# CT_LINUX_PATCH_BUNDLED_LOCAL is not set +# CT_LINUX_PATCH_LOCAL_BUNDLED is not set +# CT_LINUX_PATCH_NONE is not set +CT_LINUX_PATCH_ORDER="global" +CT_LINUX_V_5_5=y +# CT_LINUX_V_5_4 is not set +# CT_LINUX_V_5_3 is not set +# CT_LINUX_V_5_2 is not set +# CT_LINUX_V_5_1 is not set +# CT_LINUX_V_5_0 is not set +# CT_LINUX_V_4_20 is not set +# CT_LINUX_V_4_19 is not set +# CT_LINUX_V_4_18 is not set +# CT_LINUX_V_4_17 is not set +# CT_LINUX_V_4_16 is not set +# CT_LINUX_V_4_15 is not set +# CT_LINUX_V_4_14 is not set +# CT_LINUX_V_4_13 is not set +# CT_LINUX_V_4_12 is not set +# CT_LINUX_V_4_11 is not set +# CT_LINUX_V_4_10 is not set +# CT_LINUX_V_4_9 is not set +# CT_LINUX_V_4_4 is not set +# CT_LINUX_V_4_1 is not set +# CT_LINUX_V_3_16 is not set +# CT_LINUX_V_3_13 is not set +# CT_LINUX_V_3_12 is not set +# CT_LINUX_V_3_10 is not set +# CT_LINUX_V_3_4 is not set +# CT_LINUX_V_3_2 is not set +# CT_LINUX_V_2_6_32 is not set +# CT_LINUX_NO_VERSIONS is not set +CT_LINUX_VERSION="5.5.5" +CT_LINUX_MIRRORS="$(CT_Mirrors kernel.org linux ${CT_LINUX_VERSION})" +CT_LINUX_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_LINUX_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_LINUX_ARCHIVE_FORMATS=".tar.xz .tar.gz" +CT_LINUX_SIGNATURE_FORMAT="unpacked/.sign" +CT_LINUX_later_than_4_8=y +CT_LINUX_4_8_or_later=y +CT_LINUX_later_than_3_7=y +CT_LINUX_3_7_or_later=y +CT_LINUX_later_than_3_2=y +CT_LINUX_3_2_or_later=y +CT_KERNEL_LINUX_VERBOSITY_0=y +# CT_KERNEL_LINUX_VERBOSITY_1 is not set +# CT_KERNEL_LINUX_VERBOSITY_2 is not set +CT_KERNEL_LINUX_VERBOSE_LEVEL=0 +CT_KERNEL_LINUX_INSTALL_CHECK=y +CT_ALL_KERNEL_CHOICES="BARE_METAL LINUX WINDOWS" +CT_SHARED_LIBS=y +CT_ARCH_BINFMT_ELF=y +CT_BINUTILS_BINUTILS=y +CT_BINUTILS="binutils" +CT_BINUTILS_CHOICE_KSYM="BINUTILS" +CT_BINUTILS_BINUTILS_SHOW=y +CT_BINUTILS_BINUTILS_PKG_KSYM="BINUTILS" +CT_BINUTILS_DIR_NAME="binutils" +CT_BINUTILS_USE_GNU=y +CT_BINUTILS_USE="BINUTILS" +CT_BINUTILS_PKG_NAME="binutils" +CT_BINUTILS_SRC_RELEASE=y +# CT_BINUTILS_SRC_DEVEL is not set +# CT_BINUTILS_SRC_CUSTOM is not set +CT_BINUTILS_PATCH_GLOBAL=y +# CT_BINUTILS_PATCH_BUNDLED is not set +# CT_BINUTILS_PATCH_LOCAL is not set +# CT_BINUTILS_PATCH_BUNDLED_LOCAL is not set +# CT_BINUTILS_PATCH_LOCAL_BUNDLED is not set +# CT_BINUTILS_PATCH_NONE is not set +CT_BINUTILS_PATCH_ORDER="global" +# CT_BINUTILS_V_2_34 is not set +CT_BINUTILS_V_2_33=y +# CT_BINUTILS_V_2_32 is not set +# CT_BINUTILS_V_2_31 is not set +# CT_BINUTILS_V_2_30 is not set +# CT_BINUTILS_V_2_29 is not set +# CT_BINUTILS_V_2_28 is not set +# CT_BINUTILS_V_2_27 is not set +# CT_BINUTILS_V_2_26 is not set +# CT_BINUTILS_NO_VERSIONS is not set +CT_BINUTILS_VERSION="2.33.1" +CT_BINUTILS_MIRRORS="$(CT_Mirrors GNU binutils) $(CT_Mirrors sourceware binutils/releases)" +CT_BINUTILS_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_BINUTILS_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_BINUTILS_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz" +CT_BINUTILS_SIGNATURE_FORMAT="packed/.sig" +CT_BINUTILS_later_than_2_30=y +CT_BINUTILS_2_30_or_later=y +CT_BINUTILS_later_than_2_27=y +CT_BINUTILS_2_27_or_later=y +CT_BINUTILS_later_than_2_25=y +CT_BINUTILS_2_25_or_later=y +CT_BINUTILS_later_than_2_23=y +CT_BINUTILS_2_23_or_later=y +CT_BINUTILS_HAS_HASH_STYLE=y +CT_BINUTILS_HAS_GOLD=y +CT_BINUTILS_HAS_PLUGINS=y +CT_BINUTILS_HAS_PKGVERSION_BUGURL=y +CT_BINUTILS_LINKER_LD=y +CT_BINUTILS_LINKERS_LIST="ld" +CT_BINUTILS_LINKER_DEFAULT="bfd" +CT_BINUTILS_PLUGINS=y +CT_BINUTILS_RELRO=m +CT_BINUTILS_DETERMINISTIC_ARCHIVES=y +CT_BINUTILS_EXTRA_CONFIG_ARRAY="" +CT_BINUTILS_FOR_TARGET=y +CT_BINUTILS_FOR_TARGET_IBERTY=y +CT_BINUTILS_FOR_TARGET_BFD=y +CT_ALL_BINUTILS_CHOICES="BINUTILS" +# CT_LIBC_BIONIC is not set +# CT_LIBC_GLIBC is not set +CT_LIBC_MUSL=y +# CT_LIBC_UCLIBC is not set +CT_LIBC="musl" +CT_LIBC_CHOICE_KSYM="MUSL" +CT_THREADS="musl" +CT_LIBC_MUSL_SHOW=y +CT_LIBC_MUSL_PKG_KSYM="MUSL" +CT_MUSL_DIR_NAME="musl" +CT_MUSL_PKG_NAME="musl" +CT_MUSL_SRC_RELEASE=y +# CT_MUSL_SRC_DEVEL is not set +# CT_MUSL_SRC_CUSTOM is not set +CT_MUSL_PATCH_GLOBAL=y +# CT_MUSL_PATCH_BUNDLED is not set +# CT_MUSL_PATCH_LOCAL is not set +# CT_MUSL_PATCH_BUNDLED_LOCAL is not set +# CT_MUSL_PATCH_LOCAL_BUNDLED is not set +# CT_MUSL_PATCH_NONE is not set +CT_MUSL_PATCH_ORDER="global" +# CT_MUSL_V_1_1_24 is not set +CT_MUSL_V_1_1_23=y +# CT_MUSL_V_1_1_22 is not set +# CT_MUSL_V_1_1_21 is not set +# CT_MUSL_V_1_1_20 is not set +# CT_MUSL_V_1_1_19 is not set +# CT_MUSL_V_1_1_18 is not set +# CT_MUSL_V_1_1_17 is not set +# CT_MUSL_V_1_1_16 is not set +# CT_MUSL_NO_VERSIONS is not set +CT_MUSL_VERSION="1.1.23" +CT_MUSL_MIRRORS="http://www.musl-libc.org/releases" +CT_MUSL_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_MUSL_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_MUSL_ARCHIVE_FORMATS=".tar.gz" +CT_MUSL_SIGNATURE_FORMAT="packed/.asc" +# CT_LIBC_MUSL_DEBUG is not set +# CT_LIBC_MUSL_WARNINGS is not set +# CT_LIBC_MUSL_OPTIMIZE_NONE is not set +CT_LIBC_MUSL_OPTIMIZE_AUTO=y +# CT_LIBC_MUSL_OPTIMIZE_SPEED is not set +# CT_LIBC_MUSL_OPTIMIZE_SIZE is not set +CT_LIBC_MUSL_OPTIMIZE="auto" +CT_ALL_LIBC_CHOICES="AVR_LIBC BIONIC GLIBC MINGW_W64 MOXIEBOX MUSL NEWLIB NONE UCLIBC" +CT_LIBC_SUPPORT_THREADS_ANY=y +CT_LIBC_SUPPORT_THREADS_NATIVE=y +CT_THREADS_NATIVE=y +# CT_CREATE_LDSO_CONF is not set +CT_LIBC_XLDD=y +CT_CC_CORE_PASSES_NEEDED=y +CT_CC_CORE_PASS_1_NEEDED=y +CT_CC_CORE_PASS_2_NEEDED=y +CT_CC_SUPPORT_CXX=y +CT_CC_SUPPORT_FORTRAN=y +CT_CC_SUPPORT_ADA=y +CT_CC_SUPPORT_OBJC=y +CT_CC_SUPPORT_OBJCXX=y +CT_CC_SUPPORT_GOLANG=y +CT_CC_GCC=y +CT_CC="gcc" +CT_CC_CHOICE_KSYM="GCC" +CT_CC_GCC_SHOW=y +CT_CC_GCC_PKG_KSYM="GCC" +CT_GCC_DIR_NAME="gcc" +CT_GCC_USE_GNU=y +# CT_GCC_USE_LINARO is not set +CT_GCC_USE="GCC" +CT_GCC_PKG_NAME="gcc" +CT_GCC_SRC_RELEASE=y +# CT_GCC_SRC_DEVEL is not set +# CT_GCC_SRC_CUSTOM is not set +CT_GCC_PATCH_GLOBAL=y +# CT_GCC_PATCH_BUNDLED is not set +# CT_GCC_PATCH_LOCAL is not set +# CT_GCC_PATCH_BUNDLED_LOCAL is not set +# CT_GCC_PATCH_LOCAL_BUNDLED is not set +# CT_GCC_PATCH_NONE is not set +CT_GCC_PATCH_ORDER="global" +CT_GCC_V_9=y +# CT_GCC_V_8 is not set +# CT_GCC_V_7 is not set +# CT_GCC_V_6 is not set +# CT_GCC_V_5 is not set +# CT_GCC_V_4_9 is not set +# CT_GCC_NO_VERSIONS is not set +CT_GCC_VERSION="9.2.0" +CT_GCC_MIRRORS="$(CT_Mirrors GNU gcc/gcc-${CT_GCC_VERSION}) $(CT_Mirrors sourceware gcc/releases/gcc-${CT_GCC_VERSION})" +CT_GCC_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_GCC_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_GCC_ARCHIVE_FORMATS=".tar.xz .tar.gz" +CT_GCC_SIGNATURE_FORMAT="" +CT_GCC_later_than_8=y +CT_GCC_8_or_later=y +CT_GCC_later_than_7=y +CT_GCC_7_or_later=y +CT_GCC_later_than_6=y +CT_GCC_6_or_later=y +CT_GCC_later_than_5=y +CT_GCC_5_or_later=y +CT_GCC_later_than_4_9=y +CT_GCC_4_9_or_later=y +CT_GCC_later_than_4_8=y +CT_GCC_4_8_or_later=y +CT_CC_GCC_ENABLE_PLUGINS=y +CT_CC_GCC_HAS_LIBMPX=y +CT_CC_GCC_ENABLE_CXX_FLAGS="" +CT_CC_GCC_CORE_EXTRA_CONFIG_ARRAY="" +CT_CC_GCC_EXTRA_CONFIG_ARRAY="" +CT_CC_GCC_STATIC_LIBSTDCXX=y +# CT_CC_GCC_SYSTEM_ZLIB is not set +CT_CC_GCC_CONFIG_TLS=m +CT_CC_GCC_USE_GRAPHITE=y +CT_CC_GCC_USE_LTO=y +CT_CC_GCC_ENABLE_TARGET_OPTSPACE=y +# CT_CC_GCC_LIBMUDFLAP is not set +# CT_CC_GCC_LIBGOMP is not set +# CT_CC_GCC_LIBSSP is not set +# CT_CC_GCC_LIBQUADMATH is not set +CT_CC_CXA_ATEXIT=y +# CT_CC_GCC_DISABLE_PCH is not set +CT_CC_GCC_SJLJ_EXCEPTIONS=m +CT_CC_GCC_LDBL_128=m +# CT_CC_GCC_BUILD_ID is not set +CT_CC_GCC_LNK_HASH_STYLE_DEFAULT=y +# CT_CC_GCC_LNK_HASH_STYLE_SYSV is not set +# CT_CC_GCC_LNK_HASH_STYLE_GNU is not set +# CT_CC_GCC_LNK_HASH_STYLE_BOTH is not set +CT_CC_GCC_LNK_HASH_STYLE="" +CT_CC_GCC_DEC_FLOAT_AUTO=y +# CT_CC_GCC_DEC_FLOAT_BID is not set +# CT_CC_GCC_DEC_FLOAT_DPD is not set +# CT_CC_GCC_DEC_FLOATS_NO is not set +CT_CC_GCC_HAS_ARCH_OPTIONS=y +CT_CC_GCC_mips_llsc=m +CT_CC_GCC_mips_synci=m +CT_CC_GCC_mips_plt=y +CT_ALL_CC_CHOICES="GCC" +CT_CC_LANG_CXX=y +# CT_CC_LANG_FORTRAN is not set +# CT_CC_LANG_ADA is not set +# CT_CC_LANG_OBJC is not set +# CT_CC_LANG_OBJCXX is not set +# CT_CC_LANG_GOLANG is not set +CT_CC_LANG_OTHERS="" +# CT_DEBUG_DUMA is not set +# CT_DEBUG_GDB is not set +# CT_DEBUG_LTRACE is not set +# CT_DEBUG_STRACE is not set +CT_ALL_DEBUG_CHOICES="DUMA GDB LTRACE STRACE" +# CT_COMPLIBS_CHECK is not set +# CT_COMP_LIBS_CLOOG is not set +CT_COMP_LIBS_EXPAT=y +CT_COMP_LIBS_EXPAT_PKG_KSYM="EXPAT" +CT_EXPAT_DIR_NAME="expat" +CT_EXPAT_PKG_NAME="expat" +CT_EXPAT_SRC_RELEASE=y +# CT_EXPAT_SRC_DEVEL is not set +# CT_EXPAT_SRC_CUSTOM is not set +CT_EXPAT_PATCH_GLOBAL=y +# CT_EXPAT_PATCH_BUNDLED is not set +# CT_EXPAT_PATCH_LOCAL is not set +# CT_EXPAT_PATCH_BUNDLED_LOCAL is not set +# CT_EXPAT_PATCH_LOCAL_BUNDLED is not set +# CT_EXPAT_PATCH_NONE is not set +CT_EXPAT_PATCH_ORDER="global" +CT_EXPAT_V_2_2=y +# CT_EXPAT_NO_VERSIONS is not set +CT_EXPAT_VERSION="2.2.9" +CT_EXPAT_MIRRORS="http://downloads.sourceforge.net/project/expat/expat/${CT_EXPAT_VERSION}" +CT_EXPAT_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_EXPAT_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_EXPAT_ARCHIVE_FORMATS=".tar.xz .tar.lz .tar.bz2 .tar.gz" +CT_EXPAT_SIGNATURE_FORMAT="" +# CT_COMP_LIBS_GETTEXT is not set +CT_COMP_LIBS_GMP=y +CT_COMP_LIBS_GMP_PKG_KSYM="GMP" +CT_GMP_DIR_NAME="gmp" +CT_GMP_PKG_NAME="gmp" +CT_GMP_SRC_RELEASE=y +# CT_GMP_SRC_DEVEL is not set +# CT_GMP_SRC_CUSTOM is not set +CT_GMP_PATCH_GLOBAL=y +# CT_GMP_PATCH_BUNDLED is not set +# CT_GMP_PATCH_LOCAL is not set +# CT_GMP_PATCH_BUNDLED_LOCAL is not set +# CT_GMP_PATCH_LOCAL_BUNDLED is not set +# CT_GMP_PATCH_NONE is not set +CT_GMP_PATCH_ORDER="global" +CT_GMP_V_6_2=y +# CT_GMP_V_6_1 is not set +# CT_GMP_NO_VERSIONS is not set +CT_GMP_VERSION="6.2.0" +CT_GMP_MIRRORS="https://gmplib.org/download/gmp https://gmplib.org/download/gmp/archive $(CT_Mirrors GNU gmp)" +CT_GMP_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_GMP_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_GMP_ARCHIVE_FORMATS=".tar.xz .tar.lz .tar.bz2" +CT_GMP_SIGNATURE_FORMAT="packed/.sig" +CT_GMP_later_than_5_1_0=y +CT_GMP_5_1_0_or_later=y +CT_GMP_later_than_5_0_0=y +CT_GMP_5_0_0_or_later=y +CT_GMP_REQUIRE_5_0_0_or_later=y +CT_COMP_LIBS_ISL=y +CT_COMP_LIBS_ISL_PKG_KSYM="ISL" +CT_ISL_DIR_NAME="isl" +CT_ISL_PKG_NAME="isl" +CT_ISL_SRC_RELEASE=y +# CT_ISL_SRC_DEVEL is not set +# CT_ISL_SRC_CUSTOM is not set +CT_ISL_PATCH_GLOBAL=y +# CT_ISL_PATCH_BUNDLED is not set +# CT_ISL_PATCH_LOCAL is not set +# CT_ISL_PATCH_BUNDLED_LOCAL is not set +# CT_ISL_PATCH_LOCAL_BUNDLED is not set +# CT_ISL_PATCH_NONE is not set +CT_ISL_PATCH_ORDER="global" +CT_ISL_V_0_22=y +# CT_ISL_V_0_21 is not set +# CT_ISL_V_0_20 is not set +# CT_ISL_V_0_19 is not set +# CT_ISL_V_0_18 is not set +# CT_ISL_V_0_17 is not set +# CT_ISL_V_0_16 is not set +# CT_ISL_V_0_15 is not set +# CT_ISL_NO_VERSIONS is not set +CT_ISL_VERSION="0.22" +CT_ISL_MIRRORS="http://isl.gforge.inria.fr" +CT_ISL_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_ISL_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_ISL_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz" +CT_ISL_SIGNATURE_FORMAT="" +CT_ISL_later_than_0_18=y +CT_ISL_0_18_or_later=y +CT_ISL_later_than_0_15=y +CT_ISL_0_15_or_later=y +CT_ISL_REQUIRE_0_15_or_later=y +CT_ISL_later_than_0_14=y +CT_ISL_0_14_or_later=y +CT_ISL_REQUIRE_0_14_or_later=y +CT_ISL_later_than_0_13=y +CT_ISL_0_13_or_later=y +CT_ISL_later_than_0_12=y +CT_ISL_0_12_or_later=y +CT_ISL_REQUIRE_0_12_or_later=y +CT_COMP_LIBS_LIBELF=y +CT_COMP_LIBS_LIBELF_PKG_KSYM="LIBELF" +CT_LIBELF_DIR_NAME="libelf" +CT_LIBELF_PKG_NAME="libelf" +CT_LIBELF_SRC_RELEASE=y +# CT_LIBELF_SRC_DEVEL is not set +# CT_LIBELF_SRC_CUSTOM is not set +CT_LIBELF_PATCH_GLOBAL=y +# CT_LIBELF_PATCH_BUNDLED is not set +# CT_LIBELF_PATCH_LOCAL is not set +# CT_LIBELF_PATCH_BUNDLED_LOCAL is not set +# CT_LIBELF_PATCH_LOCAL_BUNDLED is not set +# CT_LIBELF_PATCH_NONE is not set +CT_LIBELF_PATCH_ORDER="global" +CT_LIBELF_V_0_8=y +# CT_LIBELF_NO_VERSIONS is not set +CT_LIBELF_VERSION="0.8.13" +CT_LIBELF_MIRRORS="http://www.mr511.de/software https://fossies.org/linux/misc/old" +CT_LIBELF_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_LIBELF_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_LIBELF_ARCHIVE_FORMATS=".tar.gz" +CT_LIBELF_SIGNATURE_FORMAT="" +# CT_COMP_LIBS_LIBICONV is not set +CT_COMP_LIBS_MPC=y +CT_COMP_LIBS_MPC_PKG_KSYM="MPC" +CT_MPC_DIR_NAME="mpc" +CT_MPC_PKG_NAME="mpc" +CT_MPC_SRC_RELEASE=y +# CT_MPC_SRC_DEVEL is not set +# CT_MPC_SRC_CUSTOM is not set +CT_MPC_PATCH_GLOBAL=y +# CT_MPC_PATCH_BUNDLED is not set +# CT_MPC_PATCH_LOCAL is not set +# CT_MPC_PATCH_BUNDLED_LOCAL is not set +# CT_MPC_PATCH_LOCAL_BUNDLED is not set +# CT_MPC_PATCH_NONE is not set +CT_MPC_PATCH_ORDER="global" +CT_MPC_V_1_1=y +# CT_MPC_V_1_0 is not set +# CT_MPC_NO_VERSIONS is not set +CT_MPC_VERSION="1.1.0" +CT_MPC_MIRRORS="http://www.multiprecision.org/downloads $(CT_Mirrors GNU mpc)" +CT_MPC_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_MPC_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_MPC_ARCHIVE_FORMATS=".tar.gz" +CT_MPC_SIGNATURE_FORMAT="packed/.sig" +CT_MPC_1_1_0_or_later=y +CT_MPC_1_1_0_or_older=y +CT_COMP_LIBS_MPFR=y +CT_COMP_LIBS_MPFR_PKG_KSYM="MPFR" +CT_MPFR_DIR_NAME="mpfr" +CT_MPFR_PKG_NAME="mpfr" +CT_MPFR_SRC_RELEASE=y +# CT_MPFR_SRC_DEVEL is not set +# CT_MPFR_SRC_CUSTOM is not set +CT_MPFR_PATCH_GLOBAL=y +# CT_MPFR_PATCH_BUNDLED is not set +# CT_MPFR_PATCH_LOCAL is not set +# CT_MPFR_PATCH_BUNDLED_LOCAL is not set +# CT_MPFR_PATCH_LOCAL_BUNDLED is not set +# CT_MPFR_PATCH_NONE is not set +CT_MPFR_PATCH_ORDER="global" +CT_MPFR_V_4_0=y +# CT_MPFR_V_3_1 is not set +# CT_MPFR_NO_VERSIONS is not set +CT_MPFR_VERSION="4.0.2" +CT_MPFR_MIRRORS="http://www.mpfr.org/mpfr-${CT_MPFR_VERSION} $(CT_Mirrors GNU mpfr)" +CT_MPFR_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_MPFR_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_MPFR_ARCHIVE_FORMATS=".tar.xz .tar.bz2 .tar.gz .zip" +CT_MPFR_SIGNATURE_FORMAT="packed/.asc" +CT_MPFR_later_than_4_0_0=y +CT_MPFR_4_0_0_or_later=y +CT_MPFR_later_than_3_0_0=y +CT_MPFR_3_0_0_or_later=y +CT_MPFR_REQUIRE_3_0_0_or_later=y +CT_COMP_LIBS_NCURSES=y +CT_COMP_LIBS_NCURSES_PKG_KSYM="NCURSES" +CT_NCURSES_DIR_NAME="ncurses" +CT_NCURSES_PKG_NAME="ncurses" +CT_NCURSES_SRC_RELEASE=y +# CT_NCURSES_SRC_DEVEL is not set +# CT_NCURSES_SRC_CUSTOM is not set +CT_NCURSES_PATCH_GLOBAL=y +# CT_NCURSES_PATCH_BUNDLED is not set +# CT_NCURSES_PATCH_LOCAL is not set +# CT_NCURSES_PATCH_BUNDLED_LOCAL is not set +# CT_NCURSES_PATCH_LOCAL_BUNDLED is not set +# CT_NCURSES_PATCH_NONE is not set +CT_NCURSES_PATCH_ORDER="global" +CT_NCURSES_V_6_2=y +# CT_NCURSES_V_6_1 is not set +# CT_NCURSES_V_6_0 is not set +# CT_NCURSES_NO_VERSIONS is not set +CT_NCURSES_VERSION="6.2" +CT_NCURSES_MIRRORS="ftp://invisible-island.net/ncurses $(CT_Mirrors GNU ncurses)" +CT_NCURSES_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_NCURSES_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_NCURSES_ARCHIVE_FORMATS=".tar.gz" +CT_NCURSES_SIGNATURE_FORMAT="packed/.sig" +# CT_NCURSES_NEW_ABI is not set +CT_NCURSES_HOST_CONFIG_ARGS="" +CT_NCURSES_HOST_DISABLE_DB=y +CT_NCURSES_HOST_FALLBACKS="linux,xterm,xterm-color,xterm-256color,vt100" +CT_NCURSES_TARGET_CONFIG_ARGS="" +# CT_NCURSES_TARGET_DISABLE_DB is not set +CT_NCURSES_TARGET_FALLBACKS="" +CT_COMP_LIBS_ZLIB=y +CT_COMP_LIBS_ZLIB_PKG_KSYM="ZLIB" +CT_ZLIB_DIR_NAME="zlib" +CT_ZLIB_PKG_NAME="zlib" +CT_ZLIB_SRC_RELEASE=y +# CT_ZLIB_SRC_DEVEL is not set +# CT_ZLIB_SRC_CUSTOM is not set +CT_ZLIB_PATCH_GLOBAL=y +# CT_ZLIB_PATCH_BUNDLED is not set +# CT_ZLIB_PATCH_LOCAL is not set +# CT_ZLIB_PATCH_BUNDLED_LOCAL is not set +# CT_ZLIB_PATCH_LOCAL_BUNDLED is not set +# CT_ZLIB_PATCH_NONE is not set +CT_ZLIB_PATCH_ORDER="global" +CT_ZLIB_V_1_2_11=y +# CT_ZLIB_NO_VERSIONS is not set +CT_ZLIB_VERSION="1.2.11" +CT_ZLIB_MIRRORS="http://downloads.sourceforge.net/project/libpng/zlib/${CT_ZLIB_VERSION} https://www.zlib.net/" +CT_ZLIB_ARCHIVE_FILENAME="@{pkg_name}-@{version}" +CT_ZLIB_ARCHIVE_DIRNAME="@{pkg_name}-@{version}" +CT_ZLIB_ARCHIVE_FORMATS=".tar.xz .tar.gz" +CT_ZLIB_SIGNATURE_FORMAT="packed/.asc" +CT_ALL_COMP_LIBS_CHOICES="CLOOG EXPAT GETTEXT GMP ISL LIBELF LIBICONV MPC MPFR NCURSES ZLIB" +# CT_LIBICONV_NEEDED is not set +# CT_GETTEXT_NEEDED is not set +CT_GMP_NEEDED=y +CT_MPFR_NEEDED=y +CT_ISL_NEEDED=y +CT_MPC_NEEDED=y +CT_ZLIB_NEEDED=y +CT_GMP=y +CT_MPFR=y +CT_ISL=y +CT_MPC=y +CT_ZLIB=y +# CT_COMP_TOOLS_FOR_HOST is not set +# CT_COMP_TOOLS_AUTOCONF is not set +# CT_COMP_TOOLS_AUTOMAKE is not set +# CT_COMP_TOOLS_BISON is not set +# CT_COMP_TOOLS_DTC is not set +# CT_COMP_TOOLS_LIBTOOL is not set +# CT_COMP_TOOLS_M4 is not set +# CT_COMP_TOOLS_MAKE is not set +CT_ALL_COMP_TOOLS_CHOICES="AUTOCONF AUTOMAKE BISON DTC LIBTOOL M4 MAKE" +# CT_TEST_SUITE_GCC is not set diff --git a/support/crosstool/templates/fritzOS-uClibc-69x_mips b/support/crosstool/templates/fritzOS-uClibc-69x_mips new file mode 100644 index 0000000..e71ef12 --- /dev/null +++ b/support/crosstool/templates/fritzOS-uClibc-69x_mips @@ -0,0 +1,7 @@ +#toolchain template: FRITZ!OS uClibc Release 6.9x +FREETZ_USER_LEVEL_EXPERT=y +FREETZ_SHOW_ADVANCED=y +FREETZ_SHOW_EXPERT=y +FREETZ_TYPE_FIRMWARE_06_9X=y +FREETZ_TYPE_FIRMWARE_FINAL=y +FREETZ_BUILD_TOOLCHAIN=y diff --git a/support/crosstool/templates/fritzOS-uClibc-71x_mips b/support/crosstool/templates/fritzOS-uClibc-71x_mips new file mode 100644 index 0000000..39dccf9 --- /dev/null +++ b/support/crosstool/templates/fritzOS-uClibc-71x_mips @@ -0,0 +1,7 @@ +#toolchain template: FRITZ!OS uClibc Release 7.1x +FREETZ_USER_LEVEL_EXPERT=y +FREETZ_SHOW_ADVANCED=y +FREETZ_SHOW_EXPERT=y +FREETZ_TYPE_FIRMWARE_07_1X=y +FREETZ_TYPE_FIRMWARE_FINAL=y +FREETZ_BUILD_TOOLCHAIN=y diff --git a/support/functions/_plugin_update_toolchain b/support/functions/_plugin_update_toolchain index 20d6935..ae731f3 100644 --- a/support/functions/_plugin_update_toolchain +++ b/support/functions/_plugin_update_toolchain @@ -3,13 +3,15 @@ #simplebuild_plugin tcupdate tcupdate(){ - pversion="0.12.9"; + pversion="0.13.0"; pname="s3.TUP"; pdesc="Plugin $pname v$pversion"; configname="$configdir/plugin_update_toolchain.config"; ctdir="$sdir/crosstool"; - ctsrcdir="$ctdir/source"; + ctsrcdir="$ctdir/crosstool-ng"; cttpldir="$ctdir/templates"; + fngsrcdir="$ctdir/freetz-ng"; + cpus="$(getconf _NPROCESSORS_ONLN)"; CMDTC="$1"; OPTION1="$2"; @@ -18,12 +20,13 @@ tcupdate(){ tc="$CMDTC"; #check/install prerequisites + [ -d "$ctdir/source" ] && mv -f "$ctdir/source" "$ctsrcdir"; #rename folder for compatibility with pre 0.13.x releases clear && _check_pkg; #backup config if [ "$CMDTC" == "-r" ] || [ "$CMDTC" == "--reset" ];then if [ -f "$configname" ];then - if ! _check_github_api_limits 12; then + if ! _check_github_api_limits 12;then echo -e "$y_l""RESET -> Moving existing config file...""$re_"; bcn="$configname".$(date +"%Y%m%d%H%M%S"); mv "$configname" "$bcn" @@ -64,7 +67,7 @@ tcupdate(){ else CTNG_START_BUILD=0; sp=$(printf '%*s' 9); - CTNG_ROOT_BUILD_ERROR="\nERROR -> The execution of crosstool-NG was aborted because it must not run as root!\n\n""$sp""If you are aware of the danger of running crosstool-NG as root and you\n""$sp""know what you are doing, you can force it with the following command:\n\n"; + CTNG_ROOT_BUILD_ERROR="\nERROR -> The cross toolchain build process was aborted because it must not run as root!\n\n""$sp""If you are aware of the danger of building toolchains as root and you\n""$sp""know what you are doing, you can force it with the following command:\n\n"; CTNG_ROOT_BUILD_CMD="$sp""./s3 tcupdate --config \"CTNG_BUILD_AS_ROOT\" \"1\"\n"; fi; @@ -91,6 +94,9 @@ tcupdate(){ elif [ "$CMDTC" == "-ctng" ] || [ "$CMDTC" == "--crosstool-ng" ];then #croostool-NG menu _ctng_menu "$OPTION1"; bye; + elif [ "$CMDTC" == "-fng" ] || [ "$CMDTC" == "--freetz-ng" ];then #croostool-NG menu + _fng_menu "$OPTION1"; + bye; elif [ -z "$CMDTC" ];then unset menu_close; while [ ! $menu_close ] @@ -102,8 +108,9 @@ tcupdate(){ if [ "$tcempty" == "0" ];then for i in "${INST_TCLIST[@]}";do if [ ! "$i" == "native" ];then - source "$tccfgdir/$i"; - [ -f "$tcdir/$i/build.log.bz2" ] && tcdate=" ct-ng."$(date -r "$tcdir/$i/build.log.bz2" "+%F %T") || tcdate=""; + source "$tccfgdir/$i" && tcdate=""; + [ -f "$tcdir/$i/build.log.bz2" ] && tcdate=" ct-ng."$(date -r "$tcdir/$i/build.log.bz2" "+%F %T"); + [ -f "$tcdir/$i/freetz-ng.log.bz2" ] && tcdate=" freetz-ng."$(date -r "$tcdir/$i/freetz-ng.log.bz2" "+%F %T"); MENU_OPTIONS+=("$_toolchainname" "$_description\Z2$tcdate\Zn" "toolchain folder:$tcdir/$i | config file:$tccfgdir/$i"); counter; fi; @@ -307,18 +314,13 @@ _create_tc(){ case $ret in 0) #Start - Build cross toolchain - #Setup crosstool-NG automatically if not installed - if [ ! -f "$ctsrcdir/ct-ng" ]; then - clear; - echo -e "$r_l""\nCHECK -> crosstool-NG is not setup correctly. Try to fix it automatically...\n""$re_"; - _paktc_timer 5; - _ctng_setup "$CTNG_START_BUILD"; - fi; - + #Setup crosstool-NG and Freetz-NG automatically if not installed + _check_crosstool_setup; + #Build cross toolchains icount=$(echo $opts | wc -w);i=0; for tpl in $opts;do - if [ -f "$cttpldir/$tpl" ]; then + if [ -f "$cttpldir/$tpl" ];then logfile="$ldir/$(date +%F.%H%M%S)_tup_crosstoolchain_"$tpl".log"; ((i++)); @@ -327,48 +329,87 @@ _create_tc(){ echo -e "$pdesc - creating cross toolchain log - $(date +"%F %T")" | tee -a "$logfile"; echo -e "$y_l$sp\nbuild ($i/$icount): command list for cross toolchain $tpl:\n$sp" | tee -a "$logfile"; - #copy template and patching them - echo "rm \"$ctsrcdir/.config\"* 2>/dev/null;cp --no-preserve=mode,ownership -f \"$cttpldir/$tpl\" \"$ctsrcdir/.config\";" | tee -a "$logfile"; - rm "$ctsrcdir/.config"* 2>/dev/null;cp --no-preserve=mode,ownership -f "$cttpldir/$tpl" "$ctsrcdir/.config"; + #copy template + [ $(_get_template_type "$cttpldir/$tpl") == "CTNG" ] && tpltargetdir="$ctsrcdir"; + [ $(_get_template_type "$cttpldir/$tpl") == "FNG" ] && tpltargetdir="$fngsrcdir"; + echo "rm \"$tpltargetdir/.config\"* 2>/dev/null;cp -f \"$cttpldir/$tpl\" \"$tpltargetdir/.config\";" | tee -a "$logfile"; + rm "$tpltargetdir/.config"* 2>/dev/null;cp -f "$cttpldir/$tpl" "$tpltargetdir/.config"; - #CT_LOCAL_TARBALLS_DIR aka cache folder for downloads - echo "sed -i \"s#.*CT_LOCAL_TARBALLS_DIR=.*#CT_LOCAL_TARBALLS_DIR=\"$dldir\"#g\" \"$ctsrcdir/.config\";" | tee -a "$logfile"; - sed -i "s#.*CT_LOCAL_TARBALLS_DIR=.*#CT_LOCAL_TARBALLS_DIR=\"$dldir\"#g" "$ctsrcdir/.config"; - #CT_PREFIX_DIR aka folder that contains the final toolchain - echo "sed -i \"s#.*CT_PREFIX_DIR=.*#CT_PREFIX_DIR=\"$tcdir/$tpl\"#g\" \"$ctsrcdir/.config\";" | tee -a "$logfile"; - sed -i "s#.*CT_PREFIX_DIR=.*#CT_PREFIX_DIR=\"$tcdir/$tpl\"#g" "$ctsrcdir/.config"; - #CT_ALLOW_BUILD_AS_ROOT aka force build as root - _check_root && [ "$CTNG_BUILD_AS_ROOT" == "1" ] && echo "echo -e \"\nCT_EXPERIMENTAL=y\nCT_ALLOW_BUILD_AS_ROOT=y\nCT_ALLOW_BUILD_AS_ROOT_SURE=y\" >>\"$ctsrcdir/.config\";" | tee -a "$logfile"; - _check_root && [ "$CTNG_BUILD_AS_ROOT" == "1" ] && echo -e "\nCT_EXPERIMENTAL=y\nCT_ALLOW_BUILD_AS_ROOT=y\nCT_ALLOW_BUILD_AS_ROOT_SURE=y" >>"$ctsrcdir/.config"; + #patch template + if [ $(_get_template_type "$cttpldir/$tpl") == "CTNG" ];then + #CT_LOCAL_TARBALLS_DIR aka cache folder for downloads + echo "sed -i \"s#.*CT_LOCAL_TARBALLS_DIR=.*#CT_LOCAL_TARBALLS_DIR=\"$dldir\"#g\" \"$tpltargetdir/.config\";" | tee -a "$logfile"; + sed -i "s#.*CT_LOCAL_TARBALLS_DIR=.*#CT_LOCAL_TARBALLS_DIR=\"$dldir\"#g" "$tpltargetdir/.config"; + #CT_PREFIX_DIR aka folder that contains the final toolchain + echo "sed -i \"s#.*CT_PREFIX_DIR=.*#CT_PREFIX_DIR=\"$tcdir/$tpl\"#g\" \"$tpltargetdir/.config\";" | tee -a "$logfile"; + sed -i "s#.*CT_PREFIX_DIR=.*#CT_PREFIX_DIR=\"$tcdir/$tpl\"#g" "$tpltargetdir/.config"; + #CT_PARALLEL_JOBS aka parallel task count for building + echo "echo -e \"\nCT_PARALLEL_JOBS=$cpus\" >>\"$tpltargetdir/.config\";" | tee -a "$logfile"; + echo -e "\nCT_PARALLEL_JOBS=$cpus" >>"$tpltargetdir/.config"; + #CT_ALLOW_BUILD_AS_ROOT aka force build as root + _check_root && [ "$CTNG_BUILD_AS_ROOT" == "1" ] && echo "echo -e \"\nCT_EXPERIMENTAL=y\nCT_ALLOW_BUILD_AS_ROOT=y\nCT_ALLOW_BUILD_AS_ROOT_SURE=y\" >>\"$tpltargetdir/.config\";" | tee -a "$logfile"; + _check_root && [ "$CTNG_BUILD_AS_ROOT" == "1" ] && echo -e "\nCT_EXPERIMENTAL=y\nCT_ALLOW_BUILD_AS_ROOT=y\nCT_ALLOW_BUILD_AS_ROOT_SURE=y" >>"$tpltargetdir/.config"; + elif [ $(_get_template_type "$cttpldir/$tpl") == "FNG" ];then + #FREETZ_JLEVEL aka parallel task count for building + echo "echo -e \"\FREETZ_JLEVEL=$cpus\" >>\"$tpltargetdir/.config\";" | tee -a "$logfile"; + echo -e "\nFREETZ_JLEVEL=$cpus" >>"$tpltargetdir/.config"; + fi; #run build - bcl=$(printf '%s\n' "${CTNG_BUILD_tasks[@]}"); - echo -e "cd \"$ctsrcdir\";\n$(_replace_tokens "$bcl")\n$sp""$re_" | tee -a "$logfile"; + [ $(_get_template_type "$cttpldir/$tpl") == "CTNG" ] && bcl=$(printf '%s\n' "${CTNG_BUILD_tasks[@]}"); + [ $(_get_template_type "$cttpldir/$tpl") == "FNG" ] && bcl=$(printf '%s\n' "${FNG_BUILD_tasks[@]}"); + echo -e "cd \"$tpltargetdir\";\n$(_replace_tokens "$bcl")\n$sp""$re_" | tee -a "$logfile"; sleep 2; - if [ $CTNG_START_BUILD -eq 1 ]; then - cd "$ctsrcdir"; - #print out crosstool-NG version - echo -e "$g_l\n$(./ct-ng | grep 'crosstool-NG version' &2>/dev/null | tail -1)\n""$re_" | tee -a "$logfile"; + if [ $CTNG_START_BUILD -eq 1 ];then + cd "$tpltargetdir"; + #print out crosstool version + [ $(_get_template_type "$cttpldir/$tpl") == "CTNG" ] && echo -e "$g_l\n$(./ct-ng | grep 'crosstool-NG version' &2>/dev/null | tail -1)\n""$re_" | tee -a "$logfile"; + [ $(_get_template_type "$cttpldir/$tpl") == "FNG" ] && echo -e "$g_l\n$(tools/freetz-revision 2>&1 | tail -1)\n""$re_" | tee -a "$logfile"; + #generate build command list unset buildtasks; - for task in "${CTNG_BUILD_tasks[@]}";do - task=$(_replace_tokens "$task"); #replace tokens - buildtasks+=("$task"); - done; + if [ $(_get_template_type "$cttpldir/$tpl") == "CTNG" ];then + for task in "${CTNG_BUILD_tasks[@]}";do + task=$(_replace_tokens "$task"); #replace tokens + buildtasks+=("$task"); + done; + elif [ $(_get_template_type "$cttpldir/$tpl") == "FNG" ];then + [[ ! $(umask) == 0022 ]] && umask 0022; + for task in "${FNG_BUILD_tasks[@]}";do + task=$(_replace_tokens "$task"); #replace tokens + buildtasks+=("$task"); + done; + fi; ( eval "${buildtasks[@]}" ) 2>&1; - err=$(grep '\[ERROR\]' "$ctsrcdir/build.log" | wc -l) - - #save build.log in logs - cat "$ctsrcdir/build.log" >>"$logfile"; + [ $(_get_template_type "$cttpldir/$tpl") == "CTNG" ] && err=$(grep -c '\[ERROR\]' "$tpltargetdir/build.log"); + [ $(_get_template_type "$cttpldir/$tpl") == "FNG" ] && err=$(grep 'Error .*' "$logfile" | grep -vc '(ignored)'); - if [ ! $err -gt 0 ]; then - #get target from build.log - target=$(sed -n -e '/target = / s/.*\= *//p' "$ctsrcdir/build.log"); - - #get CT_BUILD_TOP_DIR aka temporary toolchain build directory from build.log and delete it to save disk space - buildtopdir=$(sed -n -e '/CT_BUILD_TOP_DIR=\// s/.*\= *//p' "$ctsrcdir/build.log"); - [ -d "$buildtopdir" ] && rm -rf "$buildtopdir" 2>/dev/null; + #save build.log in logs + [ $(_get_template_type "$cttpldir/$tpl") == "CTNG" ] && cat "$tpltargetdir/build.log" >>"$logfile"; + + if [ ! $err -gt 0 ];then + if [ $(_get_template_type "$cttpldir/$tpl") == "CTNG" ];then + #get target from build.log + target=$(sed -n -e '/target = / s/.*\= *//p' "$tpltargetdir/build.log"); + + #get CT_BUILD_TOP_DIR aka temporary toolchain build directory from build.log and delete it to save disk space + buildtopdir=$(sed -n -e '/CT_BUILD_TOP_DIR=\// s/.*\= *//p' "$tpltargetdir/build.log"); + [ -d "$buildtopdir" ] && rm -rf "$buildtopdir" 2>/dev/null; + elif [ $(_get_template_type "$cttpldir/$tpl") == "FNG" ];then + #get toolchain and target from logfile + btcbindir=$(grep -i '{ PATH=.*kernel.*' "$logfile" | head -n 1 | awk -F':|"' '{print $2}'); + btcdir=$(realpath "$btcbindir/../"); + target=$(basename "$btcdir"); + + #copy toolchain folder + rm -rf "$tcdir/$tpl"; + cp -rf "$btcdir" "$tcdir/$tpl"; + + #compress log file + cp -f "$logfile" "$tcdir/$tpl/freetz-ng.log"; + bzip2 -zf9 "$tcdir/$tpl/freetz-ng.log"; + fi; #compress toolchain _compress "$dldir/Toolchain-$tpl.tar.xz" "$tcdir/$tpl" | "$gui" "$st_" "$bt_" "$title_ - \Z0$pdesc\Zn" "--colors" "--title" " -[ Compress cross toolchain $tpl to Toolchain-$tpl.tar.xz ]- " "$pb_" "$_lines" "$_cols"; @@ -389,10 +430,12 @@ _create_tc(){ fi; done;; 1) #Setup - Setup crosstool-NG - _ctng_setup "$CTNG_START_BUILD";; + _ctng_setup "$CTNG_START_BUILD"; + _fng_setup "$CTNG_START_BUILD";; 2) #Edit tpl=$(echo "$opts" | awk '{printf $2}';); - _ctng_menu "$tpl";; + [ $(_get_template_type "$cttpldir/$tpl") == "CTNG" ] && _ctng_menu "$tpl"; + [ $(_get_template_type "$cttpldir/$tpl") == "FNG" ] && _fng_menu "$tpl";; 3) #Exit menu_close="1"; return;; @@ -442,7 +485,7 @@ _build(){ #build error message error_on_build=$(grep -cw1 Error "$lf"); - if [ "$error_on_build" -gt "0" ]; then + if [ "$error_on_build" -gt "0" ];then echo -e ""$r_l"ERRORS on build found, details:\n$b_l $lf\n$y_l" >$(tty); _paktc_timer 10; echo -e "$re_$w_l"; @@ -453,7 +496,7 @@ _ctng_menu(){ tc="$1";tpl="$tc";unset configtasks; if [ -f "$cttpldir/$tpl" ];then #copy the existing template to edit it - cp --no-preserve=mode,ownership -f "$cttpldir/$tpl" "$ctsrcdir/.config" + cp -f "$cttpldir/$tpl" "$ctsrcdir/.config" elif [ -n "$tpl" ];then #create an empty template [ -f "$ctsrcdir/.config" ] && rm "$ctsrcdir/.config"* 2>/dev/null; touch "$ctsrcdir/.config"; @@ -469,16 +512,37 @@ _ctng_menu(){ done; ( eval "${configtasks[@]}" ) 2>&1; }; +_fng_menu(){ + tc="$1";tpl="$tc";unset configtasks; + + if [ -f "$cttpldir/$tpl" ];then #copy the existing template to edit it + cp -f "$cttpldir/$tpl" "$fngsrcdir/.config" + elif [ -n "$tpl" ];then #create an empty template + [ -f "$fngsrcdir/.config" ] && rm "$fngsrcdir/.config"* 2>/dev/null; + touch "$fngsrcdir/.config"; + else #use existing (self copied) template + [ ! -f "$fngsrcdir/.config" ] && touch "$fngsrcdir/.config"; + tc="_test$(( $RANDOM % 100 ))";tpl="$tc"; + fi; + + cd "$fngsrcdir"; + for task in "${FNG_CONFIG_tasks[@]}";do + task=$(_replace_tokens "$task"); #replace tokens + configtasks+=("$task"); + done; + ( eval "${configtasks[@]}" ) 2>&1; +}; _ctng_setup(){ - logfile="$ldir/$(date +%F.%H%M%S)_tup_ctng_setup.log" + logfile="$ldir/$(date +%F.%H%M%S)_tup_ctng_setup.log"; + unset setuptasks; ( bcl=$(printf '%s\n' "${CTNG_SETUP_tasks[@]}"); sp=$(printf '%*s' 80 | tr ' ' '=') - echo -e "$pdesc - installing ctng log - $(date +"%F %T")"; + echo -e "$pdesc - installing crosstool-ng log - $(date +"%F %T")"; echo -e "$sp\nbuild command list for crosstool-NG:\n$sp\ncd "$ctsrcdir"\n$(_replace_tokens "$bcl")\n$sp"; sleep 2; - if [ $1 -eq 1 ]; then + if [ $1 -eq 1 ];then # setup crosstool wc echo "Cleanup source directory "$ctsrcdir/"..." rm -rf "$ctsrcdir" 2>/dev/null; @@ -496,6 +560,35 @@ _ctng_setup(){ fi; ) | tee "$logfile" | "$gui" "$st_" "$bt_" "$title_ - \Z0$pdesc\Zn" "--colors" "--title" " -[ Setup crosstool-NG ]- " "$pb_" "$_lines" "$_cols"; }; +_fng_setup(){ + logfile="$ldir/$(date +%F.%H%M%S)_tup_fng_setup.log"; + unset setuptasks; + ( + bcl=$(printf '%s\n' "${FNG_SETUP_tasks[@]}"); + sp=$(printf '%*s' 80 | tr ' ' '=') + echo -e "$pdesc - installing freetz-ng log - $(date +"%F %T")"; + echo -e "$sp\nbuild command list for Freetz-NG:\n$sp\ncd "$fngsrcdir"\n$(_replace_tokens "$bcl")\n$sp"; + sleep 2; + + if [ $1 -eq 1 ];then + # setup freetz-ng wc + echo "Cleanup source directory "$fngsrcdir/"..." + rm -rf "$fngsrcdir" 2>/dev/null; + mkdir --parents "$fngsrcdir"; + cd "$fngsrcdir"; + [[ ! $(umask) == 0022 ]] && umask 0022; + #generate setup command list + for task in "${FNG_SETUP_tasks[@]}";do + task=$(_replace_tokens "$task"); #replace tokens + setuptasks+=("$task"); + done + ( eval "${setuptasks[@]}" ) 2>&1; + else + echo -e "$CTNG_ROOT_BUILD_ERROR$CTNG_ROOT_BUILD_CMD"; + sleep 5; + fi; + ) | tee "$logfile" | "$gui" "$st_" "$bt_" "$title_ - \Z0$pdesc\Zn" "--colors" "--title" " -[ Setup Freetz-NG ]- " "$pb_" "$_lines" "$_cols"; +}; _dl(){ [ -d "$dldir/#tmp" ] && rm --recursive --force "$dldir/#tmp" mkdir --parents "$dldir/#tmp"; @@ -529,7 +622,7 @@ _extract(){ c=''; e=1; - if [[ ! -r $i ]]; then + if [[ ! -r $i ]];then echo "$0: file is unreadable: \`$i'" >&2; continue; fi @@ -570,6 +663,7 @@ _replace_tokens(){ s#@PREFIX@#$prefixdir#g; \ s#@HOST@#$hostname#g; \ s#@CTNGSOURCE@#$ctsrcdir#g; \ + s#@FNGSOURCE@#$fngsrcdir#g; \ s#@VALIDATE@#_check_lib#g; \ s#@COMPRESS@#_compress#g; \ s#@CREATECFG@#_create_toolchaincfg#g; \ @@ -586,42 +680,73 @@ _tidy_tasks(){ _get_template_properties(){ desc=""; if [ -f "$1" ];then - if [ -z "$2" ]; then + if [ -z "$2" ];then desc=$(sed -n -e '/#toolchain template/ s/.*\: *//p' "$1" | awk -F'(' '{print $1}' | xargs); else desc="$2"; fi; [ -z "$desc" ] && desc="missing description"; - + #extract template properties - arch=$(grep '^CT_ARCH=' "$1" | awk -F'"' '{print $2}'); - endian=$(grep '^CT_ARCH_ENDIAN=' "$1" | awk -F'"' '{print $2}'); - end=${endian^}; - bitness=$(grep '^CT_ARCH_BITNESS=' "$1" | awk -F'=' '{print $2}'); - [ "$arch" == "arm" ] && [ "$bitness" == "64" ] && arch="aarch64"; - cpu=$(grep '^CT_ARCH_CPU=' "$1" | awk -F'"' '{print $2}') && [ -n "$cpu" ] && cpu=" $cpu"; - aarch=$(grep '^CT_ARCH_ARCH=' "$1" | awk -F'"' '{print $2}') && [ -n "$aarch" ] && aarch=" $aarch"; - cc=$(grep '^CT_CC=' "$1" | awk -F'"' '{print $2}'); - ccv=$(grep -i "CT_${cc}_VERSION=" "$1" | awk -F'"' '{print $2}'); - libc=$(grep '^CT_LIBC=' "$1" | awk -F'"' '{print $2}'); - libcu=$(grep -i "^CT_${libc}_USE=" "$1" | awk -F'"' '{print $2}'); - [ -n "$libcu" ] && libcv=$(grep -i "CT_${libcu}_VERSION=" "$1" | awk -F'"' '{print $2}'); - [ -z "$libcu" ] && libcv=$(grep -i "CT_${libc}_VERSION=" "$1" | awk -F'"' '{print $2}'); - kernel=$(grep '^CT_KERNEL=' "$1" | awk -F'"' '{print $2}'); - kernelv=$(grep -i "CT_${kernel}_VERSION=" "$1" | awk -F'"' '{print $2}'); + if [ $(_get_template_type "$1") == "CTNG" ];then + arch=$(grep '^CT_ARCH=' "$1" | awk -F'"' '{print $2}'); + endian=$(grep '^CT_ARCH_ENDIAN=' "$1" | awk -F'"' '{print $2}'); + end=${endian^}; + bitness=$(grep '^CT_ARCH_BITNESS=' "$1" | awk -F'=' '{print $2}'); + [ "$arch" == "arm" ] && [ "$bitness" == "64" ] && arch="aarch64"; + cpu=$(grep '^CT_ARCH_CPU=' "$1" | awk -F'"' '{print $2}') && [ -n "$cpu" ] && cpu=" $cpu"; + aarch=$(grep '^CT_ARCH_ARCH=' "$1" | awk -F'"' '{print $2}') && [ -n "$aarch" ] && aarch=" $aarch"; + cc=$(grep '^CT_CC=' "$1" | awk -F'"' '{print $2}'); + ccv=$(grep -i "CT_${cc}_VERSION=" "$1" | awk -F'"' '{print $2}'); + libc=$(grep '^CT_LIBC=' "$1" | awk -F'"' '{print $2}'); + libcu=$(grep -i "^CT_${libc}_USE=" "$1" | awk -F'"' '{print $2}'); + [ -n "$libcu" ] && libcv=$(grep -i "CT_${libcu}_VERSION=" "$1" | awk -F'"' '{print $2}'); + [ -z "$libcu" ] && libcv=$(grep -i "CT_${libc}_VERSION=" "$1" | awk -F'"' '{print $2}'); + kernel=$(grep '^CT_KERNEL=' "$1" | awk -F'"' '{print $2}'); + kernelv=$(grep -i "CT_${kernel}_VERSION=" "$1" | awk -F'"' '{print $2}'); + elif [ $(_get_template_type "$1") == "FNG" ];then + if [ -d "$fngsrcdir" ];then + cp "$1" "$fngsrcdir/.config"; + cd "$fngsrcdir"; + [[ ! $(umask) == 0022 ]] && umask 0022; + make olddefconfig >/dev/null; + arch=$(grep '^FREETZ_TARGET_ARCH=' ".config" | awk -F'"' '{print $2}'); + bitness=$(grep '^FREETZ_GCC_ABI=' ".config" | awk -F'"' '{print $2}'); + [ $(grep -i '^FREETZ_TARGET_ARCH_BE=y' ".config") ] && end="B" || end="L"; + [ $(grep -i '^FREETZ_LIB_libuClibc=y' ".config") ] && libc="uClibc"; + [ $(grep -i '^FREETZ_LIB_libglibc=y' ".config") ] && libc="glibc"; + [ $(grep -i '^FREETZ_LIB_libumusl=y' ".config") ] && libc="musl"; + libcv=$(grep -i "^FREETZ_TARGET_${libc}_VERSION=" ".config" | awk -F'"' '{print $2}'); + [ $(grep -i '^FREETZ_TARGET_GCC_[0-9]=y' ".config") ] && cc="gcc"; + ccv=$(grep -i "^FREETZ_TARGET_${cc}_MAJOR_VERSION=" ".config" | awk -F'"' '{print $2}').$(grep -i "^FREETZ_TARGET_${cc}_MINOR_VERSION=" ".config" | awk -F'"' '{print $2}'); + kernel='linux'; + kernelv=$(grep -i "^FREETZ_KERNEL_VERSION=" ".config" | awk -F'"' '{print $2}'); + rm -f "$fngsrcdir/.config"; + else + setup=0; + desc="$desc (run \Zr\ZR to show details)"; + fi; + fi; #build template property string - desc="$desc ($arch$cpu$aarch $bitness-bit ${end:0:1}E, $libc $libcv, $cc $ccv, $kernel $kernelv)"; + [ -z $setup ] && desc="$desc ($arch$cpu$aarch $bitness-bit ${end:0:1}E, $libc $libcv, $cc $ccv, $kernel $kernelv)"; fi; echo $desc; [ -n "$desc" ] && exit 0 || exit 1; }; +_get_template_type(){ + if [ $(grep -c '^FREETZ_' "$1") -gt 0 ];then + echo "FNG"; + else + echo "CTNG"; + fi; +}; _get_version(){ r=""; if [ -f "$1" ];then content=$(cat "$1"); ver=$(echo "$content" | grep 'Version:' | sed -e "s/Version: //g"); - if [ -z "$2" ]; then + if [ -z "$2" ];then r="$ver"; else (echo "$ver" | grep -qc "$2") && r="$ver"; @@ -689,11 +814,12 @@ _check_lib(){ }; _check_pkg(){ pkgs=( git patch curl jq gcc g++ gperf bison flex makeinfo help2man make file cmp \ - python3-config autoconf automake libtoolize libtool gawk wget bzip2 xz unzip rsync ); - headers=( ncurses ); - libs=( libstdc++.so.6 ); + python3-config autoconf automake libtoolize libtool gawk wget bzip2 xz unzip rsync \ + composite inkscape pkg-config python gettext ruby ); + headers=( ncurses libacl.h sys/capability.h readline.h glib-2.0/glib.h ); + libs=( libstdc++.so.6 libstdc++.a libc\\.a ); if syscheck "" "" "${pkgs[*]}" "${headers[*]}" "${libs[*]}";then - echo -e "$r_l""\nCHECK -> You need to manually install the following packages to use this plugin properly:\n"$y_l"$prefix apt install$packages\n""$re_" && _paktc_timer 10; + echo -e "$r_l""\nCHECK -> You need to manually install the following packages to use this plugin properly:\n"$y_l"$prefix install$packages\n""$re_" && _paktc_timer 10; fi; }; _check_github_api_limits(){ @@ -703,7 +829,7 @@ _check_github_api_limits(){ reset=$(curl --silent "https://api.github.com/rate_limit" | jq -r '.resources.core.reset'); reset_time=$(date -d @$reset); - if [ "$remaining" -lt "$1" ]; then + if [ "$remaining" -lt "$1" ];then echo -e "$y_l""NOTE -> Please wait until "$g_l"$reset_time"$y_l" to reset your configuration file."\ "The most recent versions and download links for the libraries are determined dynamically via the Github API."\ "Exceeding the rate limit on Github API will result in failures on generationg the configuration file."\ @@ -715,13 +841,35 @@ _check_github_api_limits(){ return 1; fi; }; +_check_crosstool_setup(){ + #Setup crosstool-NG automatically if not installed + if [ "$1" == "CTNG" ] || [ -z "$1" ];then + if [ ! -f "$ctsrcdir/ct-ng" ];then + clear; + echo -e "$r_l""\nCHECK -> crosstool-NG is not setup correctly. Try to fix it automatically...\n""$re_"; + [ -z "$1" ] && _paktc_timer 5; + _ctng_setup "$CTNG_START_BUILD"; + fi; + fi; + + #Setup Freetz-NG automatically if not installed + if [ "$1" == "FNG" ] || [ -z "$1" ];then + if [ ! -d "$fngsrcdir/dl" ];then + clear; + echo -e "$r_l""\nCHECK -> Freetz-NG is not setup correctly. Try to fix it automatically...\n""$re_"; + [ -z "$1" ] && _paktc_timer 5; + _fng_setup "$CTNG_START_BUILD"; + fi; + fi; +}; _check_config(){ nok=0; + [ -z ${FNG_REPO_URL+x} ] && nok=1; [ -z ${CTNG_CONFIG_tasks+x} ] && nok=1; [ -z ${CTNG_BUILD_AS_ROOT+x} ] && nok=1; [ -z ${LIBS+x} ] && nok=1; - if [ $nok -eq 1 ]; then + if [ $nok -eq 1 ];then clear; echo -e "$r_l""\nCHECK -> Your config file seems to be outdated. Please restart s3 as follows to recreate an updated config file:\n"$y_l"./s3 tcupdate -r\n""$re_"; _paktc_timer 10; @@ -758,16 +906,7 @@ _create_config(){ fi; ctng_config_tasks=( "('./ct-ng menuconfig;')" - "('TPL_SAVE=\$(\$gui --defaultno --output-fd 1 --ok-label \"Yes\" --cancel-label \"No\" --colors \$bt_ \"\$title_ - \Z0\$pdesc\Zn\" --title \"-[ Save Cross Toolchain Template ]-\" --inputbox \"\\\nWould you like to \ZrSAVE\ZR this toolchain template \Zrnow\ZR?\" 10 55 \"@TEMPLATE@\") && cp \"\$ctsrcdir/.config\" \"\$TPL_SAVE\";')" - "('TC_SAVE=\$(\$gui --defaultno --output-fd 1 --ok-label \"Yes\" --cancel-label \"No\" --colors \$bt_ \"\$title_ - \Z0\$pdesc\Zn\" --title \"-[ Build Cross Toolchain ]-\" --inputbox \"\\\nWould you like to \ZrBUILD\ZR this toolchain \Zrnow\ZR?\" 10 55 \"@TOOLCHAIN@\");')" - "('[ -n \"\$TC_SAVE\" ] && BUILD_TC=\$(basename \"\$TC_SAVE\") && BUILD_LOG=\"\$ldir/\$(date +%F.%H%M%S)_tup_crosstoolchain_\$(basename \"\$TC_SAVE\").log\";')" - "('[ -n \"\$TC_SAVE\" ] && sed -i \"s#.*CT_LOCAL_TARBALLS_DIR=.*#CT_LOCAL_TARBALLS_DIR=\\\"\$dldir\\\"#g\" \"\$ctsrcdir/.config\" && sed -i \"s#.*CT_PREFIX_DIR=.*#CT_PREFIX_DIR=\\\"\$TC_SAVE\\\"#g\" \"\$ctsrcdir/.config\";')" - "('[ -n \"\$TC_SAVE\" ] && clear && ./ct-ng show-config && ./ct-ng build;')" - "('[ -n \"\$TC_SAVE\" ] && cat \"\$ctsrcdir/build.log\" >\"\$BUILD_LOG\";')" - "('[ -n \"\$TC_SAVE\" ] && BUILD_ERROR=\$(grep \"\[ERROR\]\" \"\$ctsrcdir/build.log\" | wc -l);')" - "('[ -n \"\$TC_SAVE\" ] && [ ! \$BUILD_ERROR -gt 0 ] && BUILD_TARGET=\$(sed -n -e \"/target = / s/.*\= *//p\" \"\$ctsrcdir/build.log\") && BUILD_DESC=\$(sed -n -e \"/#toolchain template/ s/.*\: *//p\" \"\$cttpldir/\$BUILD_TC\");')" - "('[ -n \"\$TC_SAVE\" ] && _sz && [ ! \$BUILD_ERROR -gt 0 ] && @COMPRESS@ \"\$dldir/Toolchain-\$BUILD_TC.tar.xz\" \"\$TC_SAVE\" | \$gui \$st_ \$bt_ \"\$title_ - \Z0\$pdesc\Zn\" --colors --title \"-[ Compress cross toolchain \$BUILD_TC to Toolchain-\$BUILD_TC.tar.xz ]-\" \$pb_ \$_lines \$_cols;')" - "('[ -n \"\$TC_SAVE\" ] && [ ! \$BUILD_ERROR -gt 0 ] && @CREATECFG@ \"\$tcdir/\$BUILD_TC\" \"\$BUILD_TC\" \"\$BUILD_TARGET\" \"\" \"\" \"\$BUILD_DESC\" \"\" \"\$dldir/Toolchain-\$BUILD_TC.tar.xz\" \"yes\";')" ); + "('TPL_SAVE=\$(\$gui --defaultno --output-fd 1 --ok-label \"Yes\" --cancel-label \"No\" --colors \$bt_ \"\$title_ - \Z0\$pdesc\Zn\" --title \"-[ Save Cross Toolchain Template ]-\" --inputbox \"\\\nWould you like to \ZrSAVE\ZR this toolchain template \Zrnow\ZR?\" 10 55 \"@TEMPLATE@\") && cp \"\$ctsrcdir/.config\" \"\$TPL_SAVE\";')" ); ctng_config_tasks_comment="#config command"; ctng_build_tasks=( "('./ct-ng show-config | tee -a \"@LOGFILE@\";')" @@ -779,7 +918,20 @@ _create_config(){ "('./configure --enable-local;')" "('make;')" ); ctng_setup_tasks_comment="#setup command"; - + + fng_config_tasks=( "('make menuconfig;')" + "('TPL_SAVE=\$(\$gui --defaultno --output-fd 1 --ok-label \"Yes\" --cancel-label \"No\" --colors \$bt_ \"\$title_ - \Z0\$pdesc\Zn\" --title \"-[ Save Cross Toolchain Template ]-\" --inputbox \"\\\nWould you like to \ZrSAVE\ZR this toolchain template \Zrnow\ZR?\" 10 55 \"@TEMPLATE@\") && cp \"\$fngsrcdir/.config\" \"\$TPL_SAVE\";')" ); + fng_config_tasks_comment="#config command"; + + fng_build_tasks=( "('make olddefconfig | tee -a \"@LOGFILE@\";')" + "('make toolchain-dirclean | tee -a \"@LOGFILE@\";')" + "('make toolchain | tee -a \"@LOGFILE@\";')" ); + fng_build_tasks_comment="#build command"; + + fng_setup_tasks=( "('git clone --progress \"\$FNG_REPO_URL\" \"@FNGSOURCE@\";')" + "('ln -s \"../../downloads\" \"@FNGSOURCE@/dl\";')" ); + fng_setup_tasks_comment="#setup command"; + lib_comments=( "#Enable/Disable (1|0)" "#Displayname" "#Versionnumber" @@ -843,6 +995,26 @@ _create_config(){ ((i++)); done; + echo -e '\nFNG_REPO_URL="https://github.com/Freetz-NG/freetz-ng.git"; #Repository to load freetz-ng from' >>"$configname"; + i=0; + for ct in "${fng_config_tasks[@]}"; + do + echo -e "FNG_CONFIG_tasks"$([ "$i" -gt "0" ] && echo "+")"=$ct; $fng_config_tasks_comment$(($i+1))" >>"$configname"; + ((i++)); + done; + i=0; + for bt in "${fng_build_tasks[@]}"; + do + echo -e "FNG_BUILD_tasks"$([ "$i" -gt "0" ] && echo "+")"=$bt; $fng_build_tasks_comment$(($i+1))" >>"$configname"; + ((i++)); + done; + i=0; + for st in "${fng_setup_tasks[@]}"; + do + echo -e "FNG_SETUP_tasks"$([ "$i" -gt "0" ] && echo "+")"=$st; $fng_setup_tasks_comment$(($i+1))" >>"$configname"; + ((i++)); + done; + echo -e '\n#LIBRARY update build settings\n#List of ordered libraries. Only libraries in this list are available' >>"$configname"; echo "LIBS=(${lib_keys[@]});" >>"$configname"; diff --git a/support/functions/_sys_check b/support/functions/_sys_check index cdd7dfd..6a2680f 100644 --- a/support/functions/_sys_check +++ b/support/functions/_sys_check @@ -130,6 +130,7 @@ then done fi +unset binvars; unset headervars; unset libvars; [ -z ${3+x} ] && binvars=( dialog grep gawk wget tar bzip2 svn xz upx patch gcc make scp sshpass openssl dos2unix ) || binvars=( $(echo "$3" | tr ' ' '\n') ) [ -z ${4+x} ] && headervars=( crypto.h libusb.h pcsclite.h pthread.h ) || headervars=( $(echo "$4" | tr ' ' '\n') ) [ -z ${5+x} ] && libvars=( libccidtwin.so ) || libvars=( $(echo "$5" | tr ' ' '\n') ) diff --git a/support/os/debian_ubuntu.install b/support/os/debian_ubuntu.install index 9247088..fd51381 100644 --- a/support/os/debian_ubuntu.install +++ b/support/os/debian_ubuntu.install @@ -30,8 +30,12 @@ do libtool) inst="libtool-bin"; ;; + composite) + inst="imagemagick"; + ;; cmp) inst="diffutils"; + ;; esac; printf -v pad %40s; e=$e$pad; e=${e:0:15}; echo -e "$w_l select $g_l$e$y_l from: $inst"; @@ -59,6 +63,18 @@ do ncurses) inst="libncurses-dev"; ;; + libacl.h) + inst="libacl1-dev"; + ;; + sys/capability.h) + inst="libcap-dev"; + ;; + readline.h) + inst="libreadline-dev"; + ;; + glib-2.0/glib.h) + inst="libglib2.0-dev"; + ;; esac; printf -v pad %40s; e=$e$pad; e=${e:0:15}; echo -e "$w_l select $g_l$e$y_l from: $inst"; diff --git a/support/os/manjaro.install b/support/os/manjaro.install index df00d84..26209cb 100644 --- a/support/os/manjaro.install +++ b/support/os/manjaro.install @@ -9,7 +9,7 @@ packages=""; echo -n >"$install_log" &2>/dev/null; echo -e "$w_l\n INSTALLATION\n ============\n"; -source /etc/lsb-release +[ -f /etc/lsb-release ] && source /etc/lsb-release; manjaro_version=$DISTRIB_RELEASE # without sudo no user installation allowed @@ -41,6 +41,9 @@ do libtool|libtoolize) inst="libtool"; ;; + composite) + inst="imagemagick"; + ;; cmp) inst="diffutils"; ;; @@ -70,6 +73,18 @@ do ncurses) inst="ncurses"; ;; + libacl.h) + inst="acl"; + ;; + sys/capability.h) + inst="libcap"; + ;; + readline.h) + inst="readline"; + ;; + glib-2.0/glib.h) + inst="glib2"; + ;; esac; echo -e "$w_l select $g_l$e$y_l\tfrom: $inst"; packages="$packages $inst"; diff --git a/support/os/redhat_centos_fedora.install b/support/os/redhat_centos_fedora.install index bc5fba9..6243d3e 100644 --- a/support/os/redhat_centos_fedora.install +++ b/support/os/redhat_centos_fedora.install @@ -72,6 +72,7 @@ do ;; xz) inst="xz-utils"; + [ "$rh_version" -gt 29 ] && inst="xz"; ;; makeinfo) inst="texinfo"; @@ -82,12 +83,18 @@ do libtool|libtoolize) inst="libtool"; ;; - cmp) - inst="diffutils"; - ;; g++) inst="gcc-c++"; ;; + python) + [ "$rh_version" == 8 ] && inst="python3"; + ;; + composite) + inst="ImageMagick"; + ;; + cmp) + inst="diffutils"; + ;; # the following guys have no official packages sshpass) continue; @@ -125,6 +132,18 @@ do ncurses) inst="ncurses-devel"; ;; + libacl.h) + inst="libacl-devel"; + ;; + sys/capability.h) + inst="libcap-devel"; + ;; + readline.h) + inst="readline-devel"; + ;; + glib-2.0/glib.h) + inst="glib2-devel"; + ;; esac; echo -e "$w_l select $g_l$e$y_l\tfrom: $inst"; packages="$packages $inst"; @@ -140,6 +159,12 @@ do inst="ccid"; [ "$rh_version" -gt 6 ] && inst="pcsc-lite-ccid"; ;; + libstdc++.a) + inst="libstdc++-static"; + ;; + libc\\.a) + inst="glibc-static"; + ;; esac; echo -e "$w_l select $g_l$e$y_l\tfrom: $inst"; packages="$packages $inst"; @@ -175,7 +200,7 @@ if ! hash sshpass 2>/dev/null; then [ "$(arch)" == "i686" ] && sshpass_src=$sshpass86_src; echo -e "$w_l install$g_l sshpass$y_l\tfrom: $sshpass_src"; echo "+++ $(date): rpm -i $sshpass_src" >> "$install_log"; - $prefix rpm -i $sshpass_src >> "$install_log" 2>&1 || failed=1; + $prefix rpm --nosignature -i $sshpass_src >> "$install_log" 2>&1 || failed=1; fi [ $failed == 1 ] && echo -e "\n$r_l Installation with errors - see: $install_log"; diff --git a/support/os/suse.install b/support/os/suse.install index b0e8ef5..54b128a 100644 --- a/support/os/suse.install +++ b/support/os/suse.install @@ -61,12 +61,18 @@ do libtool) inst="libtool-bin"; ;; - cmp) - inst="diffutils"; - ;; g++) inst="gcc-c++"; ;; + gettext) + inst="gettext-tools"; + ;; + composite) + inst="ImageMagick"; + ;; + cmp) + inst="diffutils"; + ;; esac; echo -e "$w_l select $g_l$e$y_l\tfrom: $inst"; packages="$packages $inst"; @@ -93,6 +99,18 @@ do ncurses) inst="ncurses-devel"; ;; + libacl.h) + inst="libacl-devel"; + ;; + sys/capability.h) + inst="libcap-devel"; + ;; + readline.h) + inst="readline-devel"; + ;; + glib-2.0/glib.h) + inst="glib2-devel-32bit"; + ;; esac; echo -e "$w_l select $g_l$e$y_l\tfrom: $inst"; packages="$packages $inst"; @@ -110,6 +128,9 @@ do libstdc++.so.6) inst="libstdc++6"; ;; + libc\\.a) + inst="glibc-static"; + ;; esac; echo -e "$w_l select $g_l$e$y_l\tfrom: $inst"; packages="$packages $inst";