diff options
-rw-r--r-- | .hgtags | 32 | ||||
-rw-r--r-- | config/kernel/linux.in | 67 | ||||
-rw-r--r-- | docs/overview.txt | 53 | ||||
-rw-r--r-- | samples/arm-beagle-linux-gnueabi/crosstool.config | 406 | ||||
-rw-r--r-- | samples/arm-beagle-linux-gnueabi/reported.by | 3 | ||||
-rw-r--r-- | scripts/populate.in | 74 |
6 files changed, 542 insertions, 93 deletions
@@ -0,0 +1,32 @@ +1161124240eecdd9985ed8bb1f656f73e11ac7f5 crosstool-ng-1.0.0 +1853cda9d5fcc8f00c1b8825a3cdd35ab186f5a2 crosstool-ng-1.4.1 +1ee5aab4c728e9af94d978c6beb722804ec6445e crosstool-ng-0.1.1 +26c0b9e2925f2517d1e245c2f851195926e55402 crosstool-ng-1.2.4 +29233430562ffa6fa2c6c1231df0a42893ed1a8d crosstool-ng-1.1.2 +2be7232a73ac3fe09d2fb73b9c01678d3b14e577 crosstool-ng-0.2.2 +30c199c6c1d883bce387079c5008f6fc88575ad4 crosstool-ng-1.2.5 +35aaf07763d1e5d0736ca32e307e6c1d6a54947a crosstool-ng-1.1.3 +39b1c755f19bfd5b714ca85cc7640d976dcefdff crosstool-ng-1.4.0 +4150b61102e471c4fbc08f107e863505eff77864 crosstool-ng-1.3.3 +535c6e0a057c64a88b5bba9a3f57f2bbff5657c3 crosstool-ng-1.3.0 +565d6d12f13974dbec80ae83c9af8311d7baa845 crosstool-ng-0.0.1 +5d14c00467ab59eabe9b1066f3d32fb893c2cda3 crosstool-ng-0.2.0 +60e62e0a90e249fc010065838e0c5be96d744af7 crosstool-ng-0.0.5 +696c97af4379cdcdaad1ac14875385cfeee8ca00 crosstool-ng-0.3.1 +6ca745eb9aaa1a91cb3721210749d1105a6b1b81 crosstool-ng-0.2.1 +6d8384a866925ab311d1c096e260512752f22528 crosstool-ng-0.3.2 +6ed7374c84784e677bbfcbb783bc14db619e9205 crosstool-ng-1.3.1 +6f4ad1b466b57c90259f82e4540df21e99a99881 crosstool-ng-1.2.2 +78e3bf9373e2d80c0ffde27f9462b12cfe787eb6 crosstool-ng-1.3.2 +8031c8ac452a2d3e66862f914127831c1dca895e crosstool-ng-1.1.1 +8451e5083069718465430c6fe7b3e0b192f40d75 crosstool-ng-1.2.0 +88cc5f5c0807c349e37d889b4ad58ede4f09ee68 crosstool-ng-0.1.2 +a393e449f6ba3987298a1154ca48b15c8f66f2fa crosstool-ng-0.0.3 +a44f2ee18392a60c6097c32dbd7ad28dc67e28fe crosstool-ng-1.1.0 +a8cd2d0d06bd0a9233c897c165bd8dfc927fa317 crosstool-ng-0.3.0 +b48b98717e16ebb58235c106e048bad729e79bbb crosstool-ng-1.2.1 +b8de3e11c8b49fd290c15e576cd6611db35ab3dd crosstool-ng-1.2.3 +c71b4f4da4b46aa83e6c013208731edfffd249a1 crosstool-ng-0.0.4 +ce34b7cd6509906de6885c084dbef7ddecd603c6 crosstool-ng-1.1.3a +e016efb7036c14f86e1592114e621cfadeaf714c crosstool-ng-0.0.2 +fec15dd785b1ab52e15a350665362c3f58852931 crosstool-ng-0.1.0 diff --git a/config/kernel/linux.in b/config/kernel/linux.in index f08076d..988ab21 100644 --- a/config/kernel/linux.in +++ b/config/kernel/linux.in @@ -76,50 +76,9 @@ config KERNEL_V_2_6_26_8 prompt "2.6.26.8 (OBSOLETE)" depends on OBSOLETE -config KERNEL_V_2_6_27_22 +config KERNEL_V_2_6_27_24 bool - prompt "2.6.27.22 (OBSOLETE)" - depends on OBSOLETE - -config KERNEL_V_2_6_28 - bool - prompt "2.6.28" - -config KERNEL_V_2_6_28_1 - bool - prompt "2.6.28.1" - -config KERNEL_V_2_6_28_2 - bool - prompt "2.6.28.2" - -config KERNEL_V_2_6_28_3 - bool - prompt "2.6.28.3" - -config KERNEL_V_2_6_28_4 - bool - prompt "2.6.28.4" - -config KERNEL_V_2_6_28_5 - bool - prompt "2.6.28.5" - -config KERNEL_V_2_6_28_6 - bool - prompt "2.6.28.6" - -config KERNEL_V_2_6_28_7 - bool - prompt "2.6.28.7" - -config KERNEL_V_2_6_28_8 - bool - prompt "2.6.28.8" - -config KERNEL_V_2_6_28_9 - bool - prompt "2.6.28.9" + prompt "2.6.27.24" config KERNEL_V_2_6_28_10 bool @@ -137,6 +96,14 @@ config KERNEL_V_2_6_29_2 bool prompt "2.6.29.2" +config KERNEL_V_2_6_29_3 + bool + prompt "2.6.29.3" + +config KERNEL_V_2_6_29_4 + bool + prompt "2.6.29.4" + # CT_INSERT_VERSION_ABOVE # Don't remove above line! @@ -159,21 +126,13 @@ config KERNEL_VERSION default "2.6.24.7" if KERNEL_V_2_6_24_7 default "2.6.25.20" if KERNEL_V_2_6_25_20 default "2.6.26.8" if KERNEL_V_2_6_26_8 - default "2.6.27.22" if KERNEL_V_2_6_27_22 - default "2.6.28" if KERNEL_V_2_6_28 - default "2.6.28.1" if KERNEL_V_2_6_28_1 - default "2.6.28.2" if KERNEL_V_2_6_28_2 - default "2.6.28.3" if KERNEL_V_2_6_28_3 - default "2.6.28.4" if KERNEL_V_2_6_28_4 - default "2.6.28.5" if KERNEL_V_2_6_28_5 - default "2.6.28.6" if KERNEL_V_2_6_28_6 - default "2.6.28.7" if KERNEL_V_2_6_28_7 - default "2.6.28.8" if KERNEL_V_2_6_28_8 - default "2.6.28.9" if KERNEL_V_2_6_28_9 + default "2.6.27.24" if KERNEL_V_2_6_27_24 default "2.6.28.10" if KERNEL_V_2_6_28_10 default "2.6.29" if KERNEL_V_2_6_29 default "2.6.29.1" if KERNEL_V_2_6_29_1 default "2.6.29.2" if KERNEL_V_2_6_29_2 + default "2.6.29.3" if KERNEL_V_2_6_29_3 + default "2.6.29.4" if KERNEL_V_2_6_29_4 # CT_INSERT_VERSION_STRING_ABOVE # Don't remove above line! help diff --git a/docs/overview.txt b/docs/overview.txt index 3fd7b6f..740ac0a 100644 --- a/docs/overview.txt +++ b/docs/overview.txt @@ -412,6 +412,9 @@ eg. /your/root. This directory is the /image/ of what would be in the root file system of your target, and will contain all that your programs/packages have installed. +The 'populate' script | +----------------------+ + When your root directory is ready, it is still missing some important bits: the toolchain's libraries. To populate your root directory with those libs, just run: @@ -425,23 +428,59 @@ contains only those things you install in it. You can then use /your/root-populated to build up your file system image, a tarball, or to NFS-mount it from your target, or whatever you need. -populate accepts the following options: +The populate script accepts the following options: + + -s src_dir + Use 'src_dir' as the un-populated root directory. + + -d dst_dir + Put the populated root directory in 'dst_dir'. - -s [src_dir] - Use 'src_dir' as the 'source', un-populated root directory + -l lib1 [...] + Always add specified libraries. - -d [dst_dir] - Put the 'destination', populated root directory in 'dst_dir' + -L file + Always add libraries listed in 'file'. -f - Remove 'dst_dir' if it previously existed + Remove 'dst_dir' if it previously existed; continue even if any library + specified with -l or -L is missing. -v Be verbose, and tell what's going on (you can see exactly where libs are coming from). -h - Print the help + Print the help. + +See 'your-target-tuple-populate -h' for more information on the options. + +Here is how populate works: + + 1) performs some sanity checks: + - src_dir and dst_dir are specified + - src_dir exists + - unless forced, dst_dir does not exist + - src_dir != dst_dir + + 2) copy src_dir to dst_dir + + 3) add forced libraries to dst_dir + - build the list from -l and -L options + - get forced libraries from the sysroot (see below for heuristics) + - abort on the first missing library, unless -f is specified + + 4) add all missing libraries to dst_dir + - scan dst_dir for every ELF files that are 'executable' or + 'shared object' + - list the "NEEDED Shared library" fields + - check if the library is already in dst_dir/lib or dst_dir/usr/lib + - if not, get the library from the sysroot + - if it's in sysroot/lib, copy it to dst_dir/lib + - if it's in sysroot/usr/lib, copy it to dst_dir/usr/lib + - in both cases, use the SONAME of the library to create the file + in dst_dir + - if it was not found in the sysroot, this is an error. ___________________ / diff --git a/samples/arm-beagle-linux-gnueabi/crosstool.config b/samples/arm-beagle-linux-gnueabi/crosstool.config new file mode 100644 index 0000000..4d8e999 --- /dev/null +++ b/samples/arm-beagle-linux-gnueabi/crosstool.config @@ -0,0 +1,406 @@ +# +# Automatically generated make config: don't edit +# crosstool-NG version: svn_trunk@1549M +# Sun May 24 18:20:58 2009 +# + +# +# Paths and misc options +# + +# +# crosstool-NG behavior +# +# CT_OBSOLETE is not set +# CT_EXPERIMENTAL is not set +# CT_DEBUG_CT is not set + +# +# Paths +# +CT_LOCAL_TARBALLS_DIR="${HOME}/src" +CT_SAVE_TARBALLS=y +CT_WORK_DIR="${CT_TOP_DIR}/targets" +CT_PREFIX_DIR="${HOME}/x-tools/${CT_TARGET}" +CT_INSTALL_DIR="${CT_PREFIX_DIR}" +# CT_CUSTOM_PATCH is not set +# CT_REMOVE_DOCS is not set +CT_INSTALL_DIR_RO=y + +# +# Downloading +# +# CT_FORBID_DOWNLOAD is not set +# CT_FORCE_DOWNLOAD is not set +CT_USE_MIRROR=y +# CT_PREFER_MIRROR is not set +CT_MIRROR_BASE_URL="http://ymorin.is-a-geek.org/mirrors/" +CT_CONNECT_TIMEOUT=10 +# CT_ONLY_DOWNLOAD is not set + +# +# Extracting +# +# CT_FORCE_EXTRACT is not set +CT_OVERIDE_CONFIG_GUESS_SUB=y +# CT_ONLY_EXTRACT is not set + +# +# Build behavior +# +CT_PARALLEL_JOBS=1 +CT_LOAD=0 +CT_NICE=0 +CT_USE_PIPES=y +# CT_CONFIG_SHELL_ASH is not set + +# +# Logging +# +# CT_LOG_ERROR is not set +# CT_LOG_WARN is not set +# CT_LOG_INFO is not set +CT_LOG_EXTRA=y +# CT_LOG_DEBUG is not set +# CT_LOG_ALL 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 + +# +# Target options +# +CT_ARCH="arm" +# CT_ARCH_64 is not set +# CT_ARCH_SUPPORTS_BOTH_MMU is not set +CT_ARCH_SUPPORTS_BOTH_ENDIAN=y +CT_ARCH_SUPPORT_ARCH=y +# CT_ARCH_SUPPORT_ABI is not set +CT_ARCH_SUPPORT_CPU=y +CT_ARCH_SUPPORT_TUNE=y +CT_ARCH_SUPPORT_FPU=y +# CT_ARCH_DEFAULT_HAS_MMU is not set +# CT_ARCH_DEFAULT_BE is not set +CT_ARCH_DEFAULT_LE=y +CT_ARCH_ARCH="" +CT_ARCH_CPU="cortex-a8" +CT_ARCH_TUNE="cortex-a8" +CT_ARCH_FPU="" +# CT_ARCH_BE is not set +CT_ARCH_LE=y +# CT_ARCH_FLOAT_HW is not set +CT_ARCH_FLOAT_SW=y +CT_TARGET_CFLAGS="" +CT_TARGET_LDFLAGS="" + +# +# General target options +# +# CT_ARCH_alpha is not set +CT_ARCH_arm=y +# CT_ARCH_ia64 is not set +# CT_ARCH_mips is not set +# CT_ARCH_powerpc is not set +# CT_ARCH_powerpc64 is not set +# CT_ARCH_sh is not set +# CT_ARCH_x86 is not set +# CT_ARCH_x86_64 is not set +CT_ARCH_ARM_EABI=y +CT_ARCH_USE_MMU=y + +# +# Target optimisations +# + +# +# Toolchain options +# + +# +# General toolchain options +# +CT_USE_SYSROOT=y +CT_SYSROOT_DIR_PREFIX="" +CT_SHARED_LIBS=y + +# +# Tuple completion and aliasing +# +CT_TARGET_VENDOR="beagle" +CT_TARGET_ALIAS_SED_EXPR="" +CT_TARGET_ALIAS="" + +# +# Toolchain type +# +# CT_NATIVE is not set +CT_CROSS=y +# CT_CROSS_NATIVE is not set +# CT_CANADIAN is not set +CT_TOOLCHAIN_TYPE="cross" + +# +# Build system +# +CT_BUILD="" +CT_BUILD_PREFIX="" +CT_BUILD_SUFFIX="" + +# +# Operating System +# +# CT_BARE_METAL is not set +CT_KERNEL="linux" +CT_KERNEL_VERSION="2.6.29.4" +# CT_KERNEL_bare_metal is not set +CT_KERNEL_linux=y +CT_KERNEL_LINUX_INSTALL=y +CT_KERNEL_LINUX_INSTALL_CHECK=y +# CT_KERNEL_V_2_6_18_8 is not set +# CT_KERNEL_V_2_6_19_7 is not set +# CT_KERNEL_V_2_6_20_21 is not set +# CT_KERNEL_V_2_6_21_7 is not set +# CT_KERNEL_V_2_6_22_19 is not set +# CT_KERNEL_V_2_6_23_17 is not set +# CT_KERNEL_V_2_6_24_7 is not set +# CT_KERNEL_V_2_6_25_20 is not set +# CT_KERNEL_V_2_6_26_8 is not set +# CT_KERNEL_V_2_6_27_24 is not set +# CT_KERNEL_V_2_6_28_10 is not set +# CT_KERNEL_V_2_6_29 is not set +# CT_KERNEL_V_2_6_29_1 is not set +# CT_KERNEL_V_2_6_29_2 is not set +# CT_KERNEL_V_2_6_29_3 is not set +CT_KERNEL_V_2_6_29_4=y +# CT_KERNEL_V_select is not set +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_USE_CUSTOM_HEADERS is not set + +# +# Companion libraries +# +CT_GMP_MPFR=y +CT_GMP_MPFR_TARGET=y +# CT_GMP_V_4_2_2 is not set +CT_GMP_V_4_2_4=y +CT_GMP_VERSION="4.2.4" +CT_GMP_CHECK=y +# CT_MPFR_V_2_3_1 is not set +# CT_MPFR_V_2_3_2 is not set +# CT_MPFR_V_2_4_0 is not set +CT_MPFR_V_2_4_1=y +CT_MPFR_VERSION="2.4.1" +CT_MPFR_CHECK=y +# CT_PPL_CLOOG is not set + +# +# Binary utilities +# +CT_ARCH_BINFMT_ELF=y +# CT_ARCH_BINFMT_FLAT is not set + +# +# GNU binutils +# +CT_BINUTILS_VERSION="2.19.1" +# CT_BINUTILS_V_2_14 is not set +# CT_BINUTILS_V_2_15 is not set +# CT_BINUTILS_V_2_16_1 is not set +# CT_BINUTILS_V_2_17 is not set +# CT_BINUTILS_V_2_18 is not set +# CT_BINUTILS_V_2_18_50_0_4 is not set +# CT_BINUTILS_V_2_18_50_0_6 is not set +# CT_BINUTILS_V_2_18_50_0_7 is not set +# CT_BINUTILS_V_2_18_50_0_8 is not set +# CT_BINUTILS_V_2_18_50_0_9 is not set +# CT_BINUTILS_V_2_18_90 is not set +# CT_BINUTILS_V_2_18_91 is not set +# CT_BINUTILS_V_2_18_92 is not set +# CT_BINUTILS_V_2_18_93 is not set +# CT_BINUTILS_V_2_19 is not set +CT_BINUTILS_V_2_19_1=y +# CT_BINUTILS_V_2_19_50_0_1 is not set +# CT_BINUTILS_V_2_19_51_0_1 is not set +# CT_BINUTILS_V_2_19_51_0_2 is not set +CT_BINUTILS_EXTRA_CONFIG="" +CT_BINUTILS_FOR_TARGET=y +CT_BINUTILS_FOR_TARGET_IBERTY=y +CT_BINUTILS_FOR_TARGET_BFD=y + +# +# C compiler +# +CT_CC="gcc" +CT_CC_VERSION="4.3.3" +CT_CC_gcc=y +# CT_CC_V_3_2_3 is not set +# CT_CC_V_3_3_6 is not set +# CT_CC_V_3_4_6 is not set +# CT_CC_V_4_0_0 is not set +# CT_CC_V_4_0_1 is not set +# CT_CC_V_4_0_2 is not set +# CT_CC_V_4_0_3 is not set +# CT_CC_V_4_0_4 is not set +# CT_CC_V_4_1_0 is not set +# CT_CC_V_4_1_1 is not set +# CT_CC_V_4_1_2 is not set +# CT_CC_V_4_2_0 is not set +# CT_CC_V_4_2_1 is not set +# CT_CC_V_4_2_2 is not set +# CT_CC_V_4_2_3 is not set +# CT_CC_V_4_2_4 is not set +# CT_CC_V_4_3_0 is not set +# CT_CC_V_4_3_1 is not set +# CT_CC_V_4_3_2 is not set +CT_CC_V_4_3_3=y +# CT_CC_V_4_4_0 is not set +CT_CC_GCC_4_3_or_later=y +# CT_CC_GCC_4_4_or_later is not set +CT_CC_CXA_ATEXIT=y +# CT_CC_SJLJ_EXCEPTIONS_CONFIGURE is not set +# CT_CC_SJLJ_EXCEPTIONS_USE is not set +CT_CC_SJLJ_EXCEPTIONS_DONT_USE=y +CT_CC_CORE_EXTRA_CONFIG="" +CT_CC_EXTRA_CONFIG="" +CT_CC_PKGVERSION="crosstool-NG-${CT_VERSION}" +CT_CC_BUGURL="" +CT_CC_SUPPORT_CXX=y +CT_CC_SUPPORT_FORTRAN=y +CT_CC_SUPPORT_JAVA=y +CT_CC_SUPPORT_ADA=y +CT_CC_SUPPORT_OBJC=y +CT_CC_SUPPORT_OBJCXX=y + +# +# Additional supported languages: +# +CT_CC_LANG_CXX=y +# CT_CC_LANG_FORTRAN is not set +# CT_CC_LANG_JAVA is not set +CT_LIBC="glibc" + +# +# C-library +# +CT_LIBC_VERSION="2.9" +# CT_LIBC_eglibc is not set +CT_LIBC_glibc=y +# CT_LIBC_uClibc is not set +# CT_LIBC_V_2_3_6 is not set +# CT_LIBC_V_2_5 is not set +# CT_LIBC_V_2_5_1 is not set +# CT_LIBC_V_2_6 is not set +# CT_LIBC_V_2_6_1 is not set +# CT_LIBC_V_2_7 is not set +# CT_LIBC_V_2_8 is not set +CT_LIBC_V_2_9=y +# CT_LIBC_V_LATEST is not set +# CT_LIBC_V_date is not set +CT_LIBC_GLIBC_2_8_or_later=y +# CT_LIBC_GLIBC_TARBALL is not set +CT_LIBC_GLIBC_CVS=y +CT_LIBC_GLIBC_CVS_date="2009-03-29" + +# +# glibc/eglibc common options +# +CT_LIBC_GLIBC_EXTRA_CONFIG="" +CT_LIBC_GLIBC_CONFIGPARMS="" +CT_LIBC_GLIBC_EXTRA_CFLAGS="" +CT_LIBC_EXTRA_CC_ARGS="" +CT_LIBC_GLIBC_USE_PORTS=y +CT_LIBC_ADDONS_LIST="" + +# +# WARNING!!! +# + +# +# For glibc >= 2.8, addons are only available via a CVS checkout. +# + +# +# Be sure to review the associated options, above. +# +# CT_LIBC_GLIBC_KERNEL_VERSION_NONE is not set +CT_LIBC_GLIBC_KERNEL_VERSION_AS_HEADERS=y +# CT_LIBC_GLIBC_KERNEL_VERSION_CHOSEN is not set +CT_LIBC_GLIBC_MIN_KERNEL="2.6.29.4" + +# +# Common C library options +# +CT_LIBC_SUPPORT_NPTL=y +CT_LIBC_SUPPORT_LINUXTHREADS=y +CT_THREADS="nptl" +CT_THREADS_NPTL=y +# CT_THREADS_LINUXTHREADS is not set +# CT_THREADS_NONE is not set + +# +# Tools facilities +# +CT_TOOL_libelf=y +CT_LIBELF_V_0_8_10=y +CT_LIBELF_VERSION="0.8.10" +CT_TOOL_sstrip=y +CT_SSTRIP_BUILDROOT=y +# CT_SSTRIP_ELFKICKERS is not set +CT_SSTRIP_FROM="buildroot" + +# +# Debug facilities +# +CT_DEBUG_dmalloc=y +# CT_DMALLOC_V_5_4_3 is not set +CT_DMALLOC_V_5_5_2=y +CT_DMALLOC_VERSION="5.5.2" +CT_DEBUG_duma=y +CT_DUMA_A=y +CT_DUMA_SO=y +# CT_DUMA_V_2_5_1 is not set +# CT_DUMA_V_2_5_8 is not set +# CT_DUMA_V_2_5_12 is not set +CT_DUMA_V_2_5_14=y +CT_DUMA_VERSION="2_5_14" +CT_DEBUG_gdb=y +CT_GDB_CROSS=y +# CT_GDB_CROSS_STATIC is not set +CT_GDB_NATIVE=y +# CT_GDB_NATIVE_STATIC is not set +CT_GDB_NATIVE_USE_GMP_MPFR=y +CT_GDB_GDBSERVER=y +CT_GDB_GDBSERVER_STATIC=y +# CT_GDB_V_6_4 is not set +# CT_GDB_V_6_5 is not set +# CT_GDB_V_6_6 is not set +# CT_GDB_V_6_7 is not set +# CT_GDB_V_6_7_1 is not set +CT_GDB_V_6_8=y +# CT_GDB_V_snapshot is not set +CT_GDB_VERSION="6.8" + +# +# Native gdb needs a native ncurses library +# +# CT_NCURSES_V_5_6 is not set +CT_NCURSES_V_5_7=y +CT_NCURSES_VERSION="5.7" +CT_DEBUG_ltrace=y +# CT_LTRACE_V_0_4 is not set +CT_LTRACE_V_0_5=y +# CT_LTRACE_V_0_5_1 is not set +CT_LTRACE_VERSION="0.5" +CT_DEBUG_strace=y +# CT_STRACE_V_4_5 is not set +# CT_STRACE_V_4_5_14 is not set +# CT_STRACE_V_4_5_15 is not set +# CT_STRACE_V_4_5_16 is not set +CT_STRACE_V_4_5_17=y +# CT_STRACE_V_4_5_18 is not set +CT_STRACE_VERSION="4.5.17" diff --git a/samples/arm-beagle-linux-gnueabi/reported.by b/samples/arm-beagle-linux-gnueabi/reported.by new file mode 100644 index 0000000..329b4ed --- /dev/null +++ b/samples/arm-beagle-linux-gnueabi/reported.by @@ -0,0 +1,3 @@ +reporter_name="Yann E. MORIN" +reporter_url="http://ymorin.is-a-geek.org/" +reporter_comment="This toolchain is pre-configured to target the BeagleBoard: http://beagleboard.org/" diff --git a/scripts/populate.in b/scripts/populate.in index 53c764e..9bb5afb 100644 --- a/scripts/populate.in +++ b/scripts/populate.in @@ -59,7 +59,7 @@ OPTIONS -f force execution: if destination directory already exists, it will be removed first; if a specified library (above) was not found, continue. - -v Be verbose + -v Be verbose. By default, populate is absolutely silent. _EOF_ } @@ -69,7 +69,7 @@ CT_ROOT_DST_DIR= CT_LIB_LIST= CT_LIB_FILE= CT_FORCE=no -CT_ECHO=true +CT_PRINTF=: OPTIND=1 while getopts ":s:d:l:L:fvh" CT_OPT; do case "${CT_OPT}" in @@ -78,7 +78,7 @@ while getopts ":s:d:l:L:fvh" CT_OPT; do l) CT_LIB_LIST="${CT_LIB_LIST}:${OPTARG}";; L) CT_LIB_FILE="${OPTARG}";; f) CT_FORCE=y;; - v) CT_ECHO=echo;; + v) CT_PRINTF=printf;; h) doHelp exit 0 ;; @@ -104,9 +104,9 @@ if [ -d "${CT_ROOT_DST_DIR}" -a "${CT_FORCE}" != "y" ]; then echo "$myname: '${CT_ROOT_DST_DIR}': already exists" exit 1 fi -src_inode=$(ls -di "${CT_ROOT_SRC_DIR}") -dst_inode=$(ls -di "${CT_ROOT_DST_DIR}" 2>/dev/null) -if [ "${src_inode}" = "${dst_inode}" ]; then +src_inode=$(stat -c '%i' "${CT_ROOT_SRC_DIR}/.") +dst_inode=$(stat -c '%i' "${CT_ROOT_DST_DIR}/." 2>/dev/null || true) +if [ "${src_inode}" -eq "$((dst_inode+0))" ]; then echo "$myname: source and destination are the same!" exit 1 fi @@ -129,7 +129,7 @@ CT_ROOT_DST_DIR=$(cd "${CT_ROOT_DST_DIR}"; pwd) # Populate the destination directory with files form the source directory pushd "${CT_ROOT_SRC_DIR}" >/dev/null -tar cf - . |(cd "${CT_ROOT_DST_DIR}"; tar xf -) +tar cf - . |tar xf - -C "${CT_ROOT_DST_DIR}" popd >/dev/null # A function do search for a library @@ -139,18 +139,24 @@ do_add_lib() { local libname="$1" local true_libname local dir + local mode + for dir in lib usr/lib; do - ${CT_ECHO} -n " trying in '${dir}'" + ${CT_PRINTF} " trying in '%s'" "${dir}" libfile="${CT_SYSROOT_DIR}/${dir}/${libname}" - ${CT_ECHO} ": '${libfile}'" + ${CT_PRINTF} ": '%s'\n" "${libfile}" if [ -e "${libfile}" ]; then mkdir -p "${dir}" true_libname=$("${CT_READELF}" -d "${libfile}" \ |"${grep}" "Library soname:" \ |"${sed}" -r -e 's,.+\[(.+)\] *$,\1,;' \ ) - ${CT_ECHO} " installing as '${dir}/${true_libname}'" - "${install}" -m 0644 "${libfile}" "${dir}/${true_libname}" + case "${libfile}" in + */ld*) mode=0755;; + *) mode=0644;; + esac + ${CT_PRINTF} " installing as '%s/%s', mode='%s'\n" "${dir}" "${true_libname}" "${mode}" + "${install}" -m "${mode}" "${libfile}" "${dir}/${true_libname}" return 0 break fi @@ -158,6 +164,9 @@ do_add_lib() { return 1 } +# We'll work in the copied rootfs +pushd "${CT_ROOT_DST_DIR}" >/dev/null + # First of, copy the forced libraries into the working copy if [ -n "${CT_LIB_FILE}" ]; then lib_list=$("${sed}" -r -e ':loop; s/#.*//;' \ @@ -173,44 +182,43 @@ fi CT_LIB_LIST=$(echo "${CT_LIB_LIST}:${lib_list}" \ |"${sed}" -r -e 's/^:+//; s/:+$//; s/:+/ /g;' \ ) -${CT_ECHO} "Installing forced libraries..." -pushd "${CT_ROOT_DST_DIR}" >/dev/null -for name in ${CT_LIB_LIST}; do - [ -z "${name}" ] && continue - found=0 - for libname in "lib${name}.so" "${name}.so" "${name}"; do - ${CT_ECHO} " searching for '${libname}'" - if do_add_lib "${libname}"; then - found=1 - break +if [ -n "${CT_LIB_LIST}" ]; then + ${CT_PRINTF} "Installing forced libraries...\n" + for name in ${CT_LIB_LIST}; do + [ -z "${name}" ] && continue + found=0 + for libname in "lib${name}.so" "${name}.so" "${name}"; do + ${CT_PRINTF} " searching for '%s'\n" "${libname}" + if do_add_lib "${libname}"; then + found=1 + break + fi + done + if [ ${found} -eq 0 ]; then + echo "$myname: library '${libname}' not found!" + [ "${CT_FORCE}" = y ] || exit 1 fi done - if [ ${found} -eq 0 ]; then - echo "$myname: library '${libname}' not found!" - [ "${CT_FORCE}" = y ] || exit 1 - fi -done -popd >/dev/null +fi # Parse the working copy for executables and libraries -pushd "${CT_ROOT_DST_DIR}" >/dev/null still_needed=1 while [ ${still_needed} -eq 1 ]; do - ${CT_ECHO} "Looping..." + ${CT_PRINTF} "Looping...\n" still_needed=0 for f in $(find . -type f -exec file {} \; \ |"${grep}" -E ': ELF [[:digit:]]+-bit (L|M)SB (executable|shared object),' \ |cut -d ":" -f 1 \ ); do - ${CT_ECHO} "Scanning '${f}'" + ${CT_PRINTF} "Scanning '%s'\n" "${f}" for libname in $("${CT_READELF}" -d "${f}" \ |"${grep}" -E '\(NEEDED\)[[:space:]]+Shared library:' \ |"${sed}" -r -e 's,.+\[(.+)\] *$,\1,;' \ ); do - ${CT_ECHO} " searching for '${libname}'" + ${CT_PRINTF} " searching for '%s'\n" "${libname}" if [ -e "lib/${libname}" \ -o -e "usr/lib/${libname}" ]; then - ${CT_ECHO} " already present" + ${CT_PRINTF} " already present\n" continue fi if do_add_lib "${libname}"; then @@ -221,4 +229,6 @@ while [ ${still_needed} -eq 1 ]; do done done done + +# OK, we're done. Back off. popd >/dev/null |