Message ID | 4d1c400c76a061ef1e5f.1349325989@localhost.localdomain |
---|---|
State | Superseded |
Headers | show |
Hi David, On Thursday 04 October 2012 14:46:29 David Holsgrove wrote: > # HG changeset patch > # User David Holsgrove <david.holsgrove@xilinx.com> > # Date 1349321174 -36000 > # Node ID 4d1c400c76a061ef1e5f8c3f28f1f8712e903e2d > # Parent 43ace4bb005eef085437e3d4fbaef528ef0ef005 > config+scripts: Custom gcc, binutils, libc, gdb version > > Extract CUSTOM / CUSTOM_LOCATION functionality currently in linux.sh > and generalise in scripts/functions as GetCustom > > Add CUSTOM version and CUSTOM_LOCATION config options, along with call > to GetCustom for; > * gcc > * binutils > * glibc > * eglibc > * newlib > * gdb This sounds like an useful feature, especially when bisecting one of listed software component, could you also please consider adding uClibc in the list of supported "custom" locations? Thanks! > > CUSTOM_LOCATION config options only presented in menuconfig if component > CUSTOM version selected. > > Add CUSTOM_LOCATION_ROOT_DIR to config/paths.in as a root directory > which will be used if CUSTOM is selected as version, and no CUSTOM_LOCATION > given for a component. > > Allows a developer to have a source directory (eg ~/src) containing under- > developement source components (eg ~/src/gcc, ~/src/binutils, etc) > > Will also take a custom tarball via CUSTOM_LOCATION, link into > CT_TARBALLS_DIR and extract as usual. > > Bundled patches will not apply, as the version 'custom' will not match any > bundled patch directory. (Same as with custom linux currently) > > If a user wishes patches to be applied, they can create the directory > ${CT_LOCAL_PATCH_DIR}/${pkgname}/custom and insert manually any patches > which they have not applied to their custom source already. > > Selecting CUSTOM version for gcc, binutils, eglibc, gdb also assumes > latest of these versions. > > diff -r 43ace4bb005e -r 4d1c400c76a0 config/binutils/binutils.in > --- a/config/binutils/binutils.in Wed Sep 26 16:37:31 2012 +0200 > +++ b/config/binutils/binutils.in Thu Oct 04 13:26:14 2012 +1000 > @@ -50,8 +50,26 @@ > prompt "2.16.1a (OBSOLETE)" > depends on OBSOLETE > > +config BINUTILS_CUSTOM > + bool > + prompt "Custom binutils" > + depends on EXPERIMENTAL > + select BINUTILS_2_22_or_later > + > endchoice > > +if BINUTILS_CUSTOM > + > +config BINUTILS_CUSTOM_LOCATION > + string > + prompt "full path to custom binutils source" > + default "" > + help > + Enter the path to the directory (or tarball) of your source for binutils, > + or leave blank to use default CT_CUSTOM_LOCATION_ROOT_DIR/binutils > + > +endif # BINUTILS_CUSTOM > + > config BINUTILS_VERSION > string > # Don't remove next line > @@ -64,6 +82,7 @@ > default "2.18a" if BINUTILS_V_2_18a > default "2.17a" if BINUTILS_V_2_17a > default "2.16.1a" if BINUTILS_V_2_16_1a > + default "custom" if BINUTILS_CUSTOM > > config BINUTILS_2_22_or_later > bool > diff -r 43ace4bb005e -r 4d1c400c76a0 config/cc/gcc.in > --- a/config/cc/gcc.in Wed Sep 26 16:37:31 2012 +0200 > +++ b/config/cc/gcc.in Thu Oct 04 13:26:14 2012 +1000 > @@ -239,6 +239,12 @@ > prompt "3.4.6 (OBSOLETE)" > depends on OBSOLETE > > +config CC_CUSTOM > + bool > + prompt "Custom gcc" > + depends on EXPERIMENTAL > + select CC_GCC_latest > + > endchoice > > if CC_V_SVN > @@ -297,6 +303,18 @@ > > endif > > +if CC_CUSTOM > + > +config CC_CUSTOM_LOCATION > + string > + prompt "full path to custom gcc source" > + default "" > + help > + Enter the path to the directory (or tarball) of your source for gcc, > + or leave blank to use default CT_CUSTOM_LOCATION_ROOT_DIR/gcc > + > +endif #CC_CUSTOM > + > config CC_GCC_4_2 > bool > select CC_GCC_4_2_or_later > @@ -484,6 +502,7 @@ > default "4.1.2" if CC_V_4_1_2 > default "4.0.4" if CC_V_4_0_4 > default "3.4.6" if CC_V_3_4_6 > + default "custom" if CC_CUSTOM > > config CC_LANG_JAVA_USE_ECJ > bool > diff -r 43ace4bb005e -r 4d1c400c76a0 config/debug/gdb.in > --- a/config/debug/gdb.in Wed Sep 26 16:37:31 2012 +0200 > +++ b/config/debug/gdb.in Thu Oct 04 13:26:14 2012 +1000 > @@ -119,6 +119,13 @@ > bool > prompt "6.8a" > > +config GDB_CUSTOM > + bool > + prompt "Custom gdb" > + depends on EXPERIMENTAL > + select GDB_7_0_or_later > + select GDB_7_2_or_later > + > endchoice > > config GDB_7_2_or_later > @@ -152,5 +159,19 @@ > default "7.0.1a" if GDB_V_7_0_1a > default "7.0a" if GDB_V_7_0a > default "6.8a" if GDB_V_6_8a > + default "custom" if GDB_CUSTOM > + > +if GDB_CUSTOM > + > +config GDB_CUSTOM_LOCATION > + string > + prompt "full path to custom gdb source" > + default "" > + help > + Enter the path to the directory (or tarball) of your source for gdb, > + or leave blank to use default CT_CUSTOM_LOCATION_ROOT_DIR/gdb > + > +endif # GDB_CUSTOM > > endif > + > diff -r 43ace4bb005e -r 4d1c400c76a0 config/global/paths.in > --- a/config/global/paths.in Wed Sep 26 16:37:31 2012 +0200 > +++ b/config/global/paths.in Thu Oct 04 13:26:14 2012 +1000 > @@ -60,6 +60,15 @@ > # The reason you might also want to install elsewhere is if you are going > # to package your shinny new toolchain for distribution. > > + > +config CUSTOM_LOCATION_ROOT_DIR > + string > + depends on EXPERIMENTAL > + prompt "directory containing custom source components" > + help > + This is the path CT-NG will attempt to use as a root for locating > + local copies of source components (CUSTOM_LOCATION_ROOT_DIR/component) > + > config RM_RF_PREFIX_DIR > bool > prompt "| Remove the prefix dir prior to building" > diff -r 43ace4bb005e -r 4d1c400c76a0 config/libc/eglibc.in > --- a/config/libc/eglibc.in Wed Sep 26 16:37:31 2012 +0200 > +++ b/config/libc/eglibc.in Thu Oct 04 13:26:14 2012 +1000 > @@ -85,6 +85,13 @@ > help > Selecting this will export the trunk of the eglibc subversion repository. > > +config LIBC_EGLIBC_CUSTOM > + bool > + prompt "Custom eglibc" > + depends on EXPERIMENTAL > + select LIBC_EGLIBC_2_16_or_later > + select LIBC_CUSTOM > + > endchoice > > config LIBC_VERSION > @@ -104,6 +111,7 @@ > default "2_6" if LIBC_EGLIBC_V_2_6 > default "2_5" if LIBC_EGLIBC_V_2_5 > default "trunk" if LIBC_EGLIBC_V_TRUNK > + default "custom" if LIBC_EGLIBC_CUSTOM > > config LIBC_EGLIBC_2_16_or_later > bool > @@ -140,6 +148,22 @@ > config LIBC_EGLIBC_HAS_PKGVERSION_BUGURL > bool > > +config LIBC_CUSTOM > + bool > + > +if LIBC_EGLIBC_CUSTOM > + > +config LIBC_EGLIBC_CUSTOM_LOCATION > + string > + prompt "full path to custom eglibc source" > + default "" > + help > + Enter the path to the directory (or tarball) of your source for eglibc, > + or leave blank to use default CT_CUSTOM_LOCATION_ROOT_DIR/eglibc > + > +endif # LIBC_EGLIBC_CUSTOM > +if ! LIBC_EGLIBC_CUSTOM > + > if CONFIGURE_has_svn > > config EGLIBC_REVISION > @@ -189,6 +213,7 @@ > comment "otherwise you won't be able to download eglibc" > > endif # ! CONFIGURE_has_svn > +endif # ! LIBC_EGLIBC_CUSTOM > > config EGLIBC_OPT_SIZE > bool > diff -r 43ace4bb005e -r 4d1c400c76a0 config/libc/glibc.in > --- a/config/libc/glibc.in Wed Sep 26 16:37:31 2012 +0200 > +++ b/config/libc/glibc.in Thu Oct 04 13:26:14 2012 +1000 > @@ -9,34 +9,6 @@ > > choice > bool > - prompt "Retrieval method" > - default LIBC_GLIBC_TARBALL > - > -config LIBC_GLIBC_TARBALL > - bool > - prompt "Released tarball" > - help > - Until end of Februrary 2009, there was no tarball for glibc releases > - 2.8 and later. This was intentional. > - > - Then, all of a sudden, tarballs for those releases have appeared at the > - traditional download place (ftp.gnu.org). > - > - Some of the glibc people argue that fixes are committed to the maintenance > - branch, and thus it is the best plac e to retrieve the glibc from. > - On the other hand, it might be preferable to always generate a toolchain > - using a known code-base, so the toolchain can be reproducible. > - > - For version prior to 2.8, tarballs were readily available. > - > - If you want your toolchain to really be reproducible, say 'Y' here. > - If you can live with a moving code-base, look at the other choice > - entries, below. > - > -endchoice > - > -choice > - bool > prompt "glibc version" > # Don't remove next line > # CT_INSERT_VERSION_BELOW > @@ -109,8 +81,60 @@ > depends on OBSOLETE > select LIBC_SUPPORT_LINUXTHREADS > > +config LIBC_GLIBC_CUSTOM > + bool > + prompt "Custom glibc" > + depends on EXPERIMENTAL > + select LIBC_CUSTOM > + > endchoice > > +config LIBC_CUSTOM > + bool > + > +if LIBC_GLIBC_CUSTOM > + > +config LIBC_GLIBC_CUSTOM_LOCATION > + string > + prompt "full path to custom glibc source" > + default "" > + help > + Enter the path to the directory (or tarball) of your source for glibc, > + or leave blank to use default CT_CUSTOM_LOCATION_ROOT_DIR/glibc > + > +endif # LIBC_GLIBC_CUSTOM > +if ! LIBC_GLIBC_CUSTOM > + > +choice > + bool > + prompt "Retrieval method" > + default LIBC_GLIBC_TARBALL > + > +config LIBC_GLIBC_TARBALL > + bool > + prompt "Released tarball" > + help > + Until end of Februrary 2009, there was no tarball for glibc releases > + 2.8 and later. This was intentional. > + > + Then, all of a sudden, tarballs for those releases have appeared at the > + traditional download place (ftp.gnu.org). > + > + Some of the glibc people argue that fixes are committed to the maintenance > + branch, and thus it is the best plac e to retrieve the glibc from. > + On the other hand, it might be preferable to always generate a toolchain > + using a known code-base, so the toolchain can be reproducible. > + > + For version prior to 2.8, tarballs were readily available. > + > + If you want your toolchain to really be reproducible, say 'Y' here. > + If you can live with a moving code-base, look at the other choice > + entries, below. > + > +endchoice > + > +endif # ! LIBC_GLIBC_CUSTOM > + > config LIBC_VERSION > string > # Don't remove next line > @@ -130,3 +154,4 @@ > default "2.6" if LIBC_GLIBC_V_2_6 > default "2.5.1" if LIBC_GLIBC_V_2_5_1 > default "2.5" if LIBC_GLIBC_V_2_5 > + default "custom" if LIBC_GLIBC_CUSTOM > diff -r 43ace4bb005e -r 4d1c400c76a0 config/libc/newlib.in > --- a/config/libc/newlib.in Wed Sep 26 16:37:31 2012 +0200 > +++ b/config/libc/newlib.in Thu Oct 04 13:26:14 2012 +1000 > @@ -52,8 +52,25 @@ > > In a word: use the CVS snapshot at your own risk! > > +config LIBC_NEWLIB_CUSTOM > + bool > + prompt "Custom newlib" > + depends on EXPERIMENTAL > + > endchoice > > +if LIBC_NEWLIB_CUSTOM > + > +config LIBC_NEWLIB_CUSTOM_LOCATION > + string > + prompt "full path to custom newlib source" > + default "" > + help > + Enter the path to the directory (or tarball) of your source for newlib, > + or leave blank to use default CT_CUSTOM_LOCATION_ROOT_DIR/newlib > + > +endif # LIBC_NEWLIB_CUSTOM > + > config LIBC_VERSION > string > prompt "use CVS tag" if LIBC_NEWLIB_CVS > @@ -63,6 +80,7 @@ > default "1.19.0" if LIBC_NEWLIB_V_1_19_0 > default "1.18.0" if LIBC_NEWLIB_V_1_18_0 > default "1.17.0" if LIBC_NEWLIB_V_1_17_0 > + default "custom" if LIBC_NEWLIB_CUSTOM > help > Enter the tag you want to use. > Leave empty to use the 'head' of the repository. > diff -r 43ace4bb005e -r 4d1c400c76a0 scripts/build/binutils/binutils.sh > --- a/scripts/build/binutils/binutils.sh Wed Sep 26 16:37:31 2012 +0200 > +++ b/scripts/build/binutils/binutils.sh Thu Oct 04 13:26:14 2012 +1000 > @@ -4,14 +4,26 @@ > > # Download binutils > do_binutils_get() { > - CT_GetFile "binutils-${CT_BINUTILS_VERSION}" \ > - {ftp,http}://{ftp.gnu.org/gnu,ftp.kernel.org/pub/linux/devel}/binutils \ > - ftp://gcc.gnu.org/pub/binutils/{releases,snapshots} > + if [ "${CT_BINUTILS_CUSTOM}" = "y" ]; then > + CT_TestAndAbort "Custom binutils: CT_CUSTOM_LOCATION_ROOT_DIR or CT_BINUTILS_CUSTOM_LOCATION must be set." \ > + -z "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_BINUTILS_CUSTOM_LOCATION}" > + if [ -n "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_BINUTILS_CUSTOM_LOCATION}" ]; then > + CT_BINUTILS_CUSTOM_LOCATION="${CT_CUSTOM_LOCATION_ROOT_DIR}/binutils" > + fi > + CT_GetCustom "binutils-${CT_BINUTILS_VERSION}" "${CT_BINUTILS_CUSTOM_LOCATION}" > + else > + CT_GetFile "binutils-${CT_BINUTILS_VERSION}" \ > + {ftp,http}://{ftp.gnu.org/gnu,ftp.kernel.org/pub/linux/devel}/binutils \ > + ftp://gcc.gnu.org/pub/binutils/{releases,snapshots} > + fi > } > > # Extract binutils > do_binutils_extract() { > - CT_Extract "binutils-${CT_BINUTILS_VERSION}" > + if [ "${CT_BINUTILS_CUSTOM}" != "y" \ > + -o ! -d "${CT_BINUTILS_CUSTOM_LOCATION}" ]; then > + CT_Extract "binutils-${CT_BINUTILS_VERSION}" > + fi > CT_Patch "binutils" "${CT_BINUTILS_VERSION}" > } > > diff -r 43ace4bb005e -r 4d1c400c76a0 scripts/build/cc/gcc.sh > --- a/scripts/build/cc/gcc.sh Wed Sep 26 16:37:31 2012 +0200 > +++ b/scripts/build/cc/gcc.sh Thu Oct 04 13:26:14 2012 +1000 > @@ -4,7 +4,14 @@ > > # Download gcc > do_cc_get() { > - if [ -n "${CT_CC_V_SVN}" ]; then > + if [ "${CT_CC_CUSTOM}" = "y" ]; then > + CT_TestAndAbort "Custom gcc: CT_CUSTOM_LOCATION_ROOT_DIR or CT_CC_CUSTOM_LOCATION must be set." \ > + -z "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_CC_CUSTOM_LOCATION}" > + if [ -n "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_CC_CUSTOM_LOCATION}" ]; then > + CT_CC_CUSTOM_LOCATION="${CT_CUSTOM_LOCATION_ROOT_DIR}/gcc" > + fi > + CT_GetCustom "gcc-${CT_CC_VERSION}" "${CT_CC_CUSTOM_LOCATION}" > + elif [ -n "${CT_CC_V_SVN}" ]; then > # Get gcc from SVN! > local svn_base > > @@ -59,7 +66,10 @@ > > # Extract gcc > do_cc_extract() { > - CT_Extract "gcc-${CT_CC_VERSION}" > + if [ "${CT_CC_CUSTOM}" != "y" \ > + -o ! -d "${CT_CC_CUSTOM_LOCATION}" ]; then > + CT_Extract "gcc-${CT_CC_VERSION}" > + fi > CT_Patch "gcc" "${CT_CC_VERSION}" > > # Copy ecj-latest.jar to ecj.jar at the top of the GCC source tree > diff -r 43ace4bb005e -r 4d1c400c76a0 scripts/build/debug/300-gdb.sh > --- a/scripts/build/debug/300-gdb.sh Wed Sep 26 16:37:31 2012 +0200 > +++ b/scripts/build/debug/300-gdb.sh Thu Oct 04 13:26:14 2012 +1000 > @@ -48,10 +48,19 @@ > do_debug_gdb_parts > > if [ "${do_gdb}" = "y" ]; then > - CT_GetFile "gdb-${CT_GDB_VERSION}" \ > - {ftp,http}://ftp.gnu.org/pub/gnu/gdb \ > - ftp://sources.redhat.com/pub/gdb/{,old-}releases \ > - "${linaro_base_url}/${linaro_series}/${linaro_version}/+download" > + if [ "${CT_GDB_CUSTOM}" = "y" ]; then > + CT_TestAndAbort "Custom gdb: CT_CUSTOM_LOCATION_ROOT_DIR or CT_GDB_CUSTOM_LOCATION must be set." \ > + -z "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_GDB_CUSTOM_LOCATION}" > + if [ -n "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_GDB_CUSTOM_LOCATION}" ]; then > + CT_GDB_CUSTOM_LOCATION="${CT_CUSTOM_LOCATION_ROOT_DIR}/gdb" > + fi > + CT_GetCustom "gdb-${CT_GDB_VERSION}" "${CT_GDB_CUSTOM_LOCATION}" > + else > + CT_GetFile "gdb-${CT_GDB_VERSION}" \ > + {ftp,http}://ftp.gnu.org/pub/gnu/gdb \ > + ftp://sources.redhat.com/pub/gdb/{,old-}releases \ > + "${linaro_base_url}/${linaro_series}/${linaro_version}/+download" > + fi > fi > > if [ "${do_ncurses}" = "y" ]; then > @@ -70,7 +79,10 @@ > do_debug_gdb_parts > > if [ "${do_gdb}" = "y" ]; then > - CT_Extract "gdb-${CT_GDB_VERSION}" > + if [ "${CT_GDB_CUSTOM}" != "y" \ > + -o ! -d "${CT_GDB_CUSTOM_LOCATION}" ]; then > + CT_Extract "gdb-${CT_GDB_VERSION}" > + fi > CT_Patch "gdb" "${CT_GDB_VERSION}" > fi > > diff -r 43ace4bb005e -r 4d1c400c76a0 scripts/build/kernel/linux.sh > --- a/scripts/build/kernel/linux.sh Wed Sep 26 16:37:31 2012 +0200 > +++ b/scripts/build/kernel/linux.sh Thu Oct 04 13:26:14 2012 +1000 > @@ -29,23 +29,12 @@ > fi > > if [ "${CT_KERNEL_LINUX_CUSTOM}" = "y" ]; then > - if [ ! -d "${CT_KERNEL_LINUX_CUSTOM_LOCATION}" ]; then > - # Wee need to know the custom tarball extension, > - # so we can create a properly-named symlink, which > - # we use later on in 'extract' > - case "${CT_KERNEL_LINUX_CUSTOM_LOCATION}" in > - *.tar.bz2) custom_name="linux-custom.tar.bz2";; > - *.tar.gz|*.tgz) custom_name="linux-custom.tar.gz";; > - *.tar) custom_name="linux-custom.tar";; > - *) CT_Abort "Unknown extension for custom linux tarball '${CT_KERNEL_LINUX_CUSTOM_LOCATION}'";; > - esac > - CT_DoExecLog DEBUG ln -sf "${CT_KERNEL_LINUX_CUSTOM_LOCATION}" \ > - "${CT_TARBALLS_DIR}/${custom_name}" > - else > - custom_name="linux-custom" > - CT_DoExecLog DEBUG ln -sf "${CT_KERNEL_LINUX_CUSTOM_LOCATION}" \ > - "${CT_SRC_DIR}/${custom_name}" > + CT_TestAndAbort "Custom linux: CT_CUSTOM_LOCATION_ROOT_DIR or CT_KERNEL_LINUX_CUSTOM_LOCATION must be set." \ > + -z "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_KERNEL_LINUX_CUSTOM_LOCATION}" > + if [ -n "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_KERNEL_LINUX_CUSTOM_LOCATION}" ]; then > + CT_KERNEL_LINUX_CUSTOM_LOCATION="${CT_CUSTOM_LOCATION_ROOT_DIR}/linux" > fi > + CT_GetCustom "linux-${CT_KERNEL_VERSION}" "${CT_KERNEL_LINUX_CUSTOM_LOCATION}" > else # Not a custom tarball > case "${CT_KERNEL_VERSION}" in > 2.6.*.*|3.*.*) > diff -r 43ace4bb005e -r 4d1c400c76a0 scripts/build/libc/eglibc.sh > --- a/scripts/build/libc/eglibc.sh Wed Sep 26 16:37:31 2012 +0200 > +++ b/scripts/build/libc/eglibc.sh Thu Oct 04 13:26:14 2012 +1000 > @@ -28,9 +28,19 @@ > *) svn_base+="/branches/eglibc-${CT_LIBC_VERSION}";; > esac > > - CT_GetSVN "eglibc-${CT_LIBC_VERSION}" \ > - "${svn_base}/libc" \ > - "${CT_EGLIBC_REVISION:-HEAD}" > + if [ "${CT_LIBC_CUSTOM}" = "y" ]; then > + CT_TestAndAbort "Custom eglibc: CT_CUSTOM_LOCATION_ROOT_DIR or CT_LIBC_EGLIBC_CUSTOM_LOCATION must be set." \ > + -z "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_LIBC_EGLIBC_CUSTOM_LOCATION}" > + CT_LIBC_CUSTOM_LOCATION="${CT_LIBC_EGLIBC_CUSTOM_LOCATION}" > + if [ -n "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_LIBC_EGLIBC_CUSTOM_LOCATION}" ]; then > + CT_LIBC_CUSTOM_LOCATION="${CT_CUSTOM_LOCATION_ROOT_DIR}/eglibc" > + fi > + CT_GetCustom "eglibc-${CT_LIBC_VERSION}" "${CT_LIBC_CUSTOM_LOCATION}" > + else > + CT_GetSVN "eglibc-${CT_LIBC_VERSION}" \ > + "${svn_base}/libc" \ > + "${CT_EGLIBC_REVISION:-HEAD}" > + fi > > if [ "${CT_LIBC_LOCALES}" = "y" ]; then > extra_addons+=("localedef") > diff -r 43ace4bb005e -r 4d1c400c76a0 scripts/build/libc/glibc-eglibc.sh- common > --- a/scripts/build/libc/glibc-eglibc.sh-common Wed Sep 26 16:37:31 2012 +0200 > +++ b/scripts/build/libc/glibc-eglibc.sh-common Thu Oct 04 13:26:14 2012 +1000 > @@ -5,7 +5,10 @@ > local addon > > # Extract the main tarball > - CT_Extract "${CT_LIBC}-${CT_LIBC_VERSION}" > + if [ "${CT_LIBC_CUSTOM}" != "y" \ > + -o ! -d "${CT_LIBC_CUSTOM_LOCATION}" ]; then > + CT_Extract "${CT_LIBC}-${CT_LIBC_VERSION}" > + fi > CT_Pushd "${CT_SRC_DIR}/${CT_LIBC}-${CT_LIBC_VERSION}" > CT_Patch nochdir "${CT_LIBC}" "${CT_LIBC_VERSION}" > > diff -r 43ace4bb005e -r 4d1c400c76a0 scripts/build/libc/glibc.sh > --- a/scripts/build/libc/glibc.sh Wed Sep 26 16:37:31 2012 +0200 > +++ b/scripts/build/libc/glibc.sh Thu Oct 04 13:26:14 2012 +1000 > @@ -20,10 +20,20 @@ > addons_list=($(do_libc_add_ons_list " ")) > > # Main source > - CT_GetFile "glibc-${CT_LIBC_VERSION}" \ > - {ftp,http}://ftp.gnu.org/gnu/glibc \ > - ftp://gcc.gnu.org/pub/glibc/releases \ > - ftp://gcc.gnu.org/pub/glibc/snapshots > + if [ "${CT_LIBC_CUSTOM}" = "y" ]; then > + CT_TestAndAbort "Custom glibc: CT_CUSTOM_LOCATION_ROOT_DIR or CT_LIBC_GLIBC_CUSTOM_LOCATION must be set." \ > + -z "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_LIBC_GLIBC_CUSTOM_LOCATION}" > + CT_LIBC_CUSTOM_LOCATION="${CT_LIBC_GLIBC_CUSTOM_LOCATION}" > + if [ -n "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_LIBC_GLIBC_CUSTOM_LOCATION}" ]; then > + CT_LIBC_CUSTOM_LOCATION="${CT_CUSTOM_LOCATION_ROOT_DIR}/glibc" > + fi > + CT_GetCustom "glibc-${CT_LIBC_VERSION}" "${CT_LIBC_CUSTOM_LOCATION}" > + else > + CT_GetFile "glibc-${CT_LIBC_VERSION}" \ > + {ftp,http}://ftp.gnu.org/gnu/glibc \ > + ftp://gcc.gnu.org/pub/glibc/releases \ > + ftp://gcc.gnu.org/pub/glibc/snapshots > + fi > > # C library addons > for addon in "${addons_list[@]}"; do > diff -r 43ace4bb005e -r 4d1c400c76a0 scripts/build/libc/newlib.sh > --- a/scripts/build/libc/newlib.sh Wed Sep 26 16:37:31 2012 +0200 > +++ b/scripts/build/libc/newlib.sh Thu Oct 04 13:26:14 2012 +1000 > @@ -20,7 +20,14 @@ > libc_src="ftp://sources.redhat.com/pub/newlib" > avr32headers_src="http://dev.doredevelopment.dk/avr32- toolchain/sources" > > - if [ -z "${CT_LIBC_NEWLIB_CVS}" ]; then > + if [ "${CT_LIBC_NEWLIB_CUSTOM}" = "y" ]; then > + CT_TestAndAbort "Custom newlib: CT_CUSTOM_LOCATION_ROOT_DIR or CT_LIBC_NEWLIB_CUSTOM_LOCATION must be set." \ > + -z "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_LIBC_NEWLIB_CUSTOM_LOCATION}" > + if [ -n "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_LIBC_NEWLIB_CUSTOM_LOCATION}" ]; then > + CT_LIBC_NEWLIB_CUSTOM_LOCATION="${CT_CUSTOM_LOCATION_ROOT_DIR}/newlib" > + fi > + CT_GetCustom "newlib-${CT_LIBC_VERSION}" "${CT_LIBC_NEWLIB_CUSTOM_LOCATION}" > + elif [ -z "${CT_LIBC_NEWLIB_CVS}" ]; then > CT_GetFile "newlib-${CT_LIBC_VERSION}" ${libc_src} > else > CT_GetCVS "newlib-$(libc_newlib_version)" \ > @@ -36,7 +43,10 @@ > } > > do_libc_extract() { > - CT_Extract "newlib-$(libc_newlib_version)" > + if [ "${CT_LIBC_NEWLIB_CUSTOM}" != "y" \ > + -o ! -d "${CT_LIBC_NEWLIB_CUSTOM_LOCATION}" ]; then > + CT_Extract "newlib-$(libc_newlib_version)" > + fi > CT_Patch "newlib" "$(libc_newlib_version)" > > if [ "${CT_ATMEL_AVR32_HEADERS}" = "y" ]; then > diff -r 43ace4bb005e -r 4d1c400c76a0 scripts/functions > --- a/scripts/functions Wed Sep 26 16:37:31 2012 +0200 > +++ b/scripts/functions Thu Oct 04 13:26:14 2012 +1000 > @@ -516,6 +516,32 @@ > return 1 > } > > +# This function gets the custom source from either a tarball or directory > +# Usage: CT_GetCustom custom_name <custom_location> > +CT_GetCustom() { > + local custom_name="$1" > + local custom_location="$2" > + > + if [ ! -d "${custom_location}" ]; then > + # We need to know the custom tarball extension, > + # so we can create a properly-named symlink, which > + # we use later on in 'extract' > + case "${custom_location}" in > + *.tar.bz2) custom_name="${custom_name}.tar.bz2";; > + *.tar.gz|*.tgz) custom_name="${custom_name}.tar.gz";; > + *.tar) custom_name="${custom_name}.tar";; > + *) CT_Abort "Unknown extension for custom tarball '${custom_location}'";; > + esac > + CT_DoLog EXTRA "Using '${custom_name}' from local storage" > + CT_DoExecLog DEBUG ln -sf "${custom_location}" \ > + "${CT_TARBALLS_DIR}/${custom_name}" > + else > + CT_DoLog EXTRA "Using '${custom_name}' from local storage" > + CT_DoExecLog DEBUG ln -snf "${custom_location}" \ > + "${CT_SRC_DIR}/${custom_name}" > + fi > +} > + > # This function saves the specified to local storage if possible, > # and if so, symlinks it for later usage > # Usage: CT_SaveLocal </full/path/file.name> > > -- > For unsubscribe information see http://sourceware.org/lists.html#faq > -- For unsubscribe information see http://sourceware.org/lists.html#faq
diff -r 43ace4bb005e -r 4d1c400c76a0 config/binutils/binutils.in --- a/config/binutils/binutils.in Wed Sep 26 16:37:31 2012 +0200 +++ b/config/binutils/binutils.in Thu Oct 04 13:26:14 2012 +1000 @@ -50,8 +50,26 @@ prompt "2.16.1a (OBSOLETE)" depends on OBSOLETE +config BINUTILS_CUSTOM + bool + prompt "Custom binutils" + depends on EXPERIMENTAL + select BINUTILS_2_22_or_later + endchoice +if BINUTILS_CUSTOM + +config BINUTILS_CUSTOM_LOCATION + string + prompt "full path to custom binutils source" + default "" + help + Enter the path to the directory (or tarball) of your source for binutils, + or leave blank to use default CT_CUSTOM_LOCATION_ROOT_DIR/binutils + +endif # BINUTILS_CUSTOM + config BINUTILS_VERSION string # Don't remove next line @@ -64,6 +82,7 @@ default "2.18a" if BINUTILS_V_2_18a default "2.17a" if BINUTILS_V_2_17a default "2.16.1a" if BINUTILS_V_2_16_1a + default "custom" if BINUTILS_CUSTOM config BINUTILS_2_22_or_later bool diff -r 43ace4bb005e -r 4d1c400c76a0 config/cc/gcc.in --- a/config/cc/gcc.in Wed Sep 26 16:37:31 2012 +0200 +++ b/config/cc/gcc.in Thu Oct 04 13:26:14 2012 +1000 @@ -239,6 +239,12 @@ prompt "3.4.6 (OBSOLETE)" depends on OBSOLETE +config CC_CUSTOM + bool + prompt "Custom gcc" + depends on EXPERIMENTAL + select CC_GCC_latest + endchoice if CC_V_SVN @@ -297,6 +303,18 @@ endif +if CC_CUSTOM + +config CC_CUSTOM_LOCATION + string + prompt "full path to custom gcc source" + default "" + help + Enter the path to the directory (or tarball) of your source for gcc, + or leave blank to use default CT_CUSTOM_LOCATION_ROOT_DIR/gcc + +endif #CC_CUSTOM + config CC_GCC_4_2 bool select CC_GCC_4_2_or_later @@ -484,6 +502,7 @@ default "4.1.2" if CC_V_4_1_2 default "4.0.4" if CC_V_4_0_4 default "3.4.6" if CC_V_3_4_6 + default "custom" if CC_CUSTOM config CC_LANG_JAVA_USE_ECJ bool diff -r 43ace4bb005e -r 4d1c400c76a0 config/debug/gdb.in --- a/config/debug/gdb.in Wed Sep 26 16:37:31 2012 +0200 +++ b/config/debug/gdb.in Thu Oct 04 13:26:14 2012 +1000 @@ -119,6 +119,13 @@ bool prompt "6.8a" +config GDB_CUSTOM + bool + prompt "Custom gdb" + depends on EXPERIMENTAL + select GDB_7_0_or_later + select GDB_7_2_or_later + endchoice config GDB_7_2_or_later @@ -152,5 +159,19 @@ default "7.0.1a" if GDB_V_7_0_1a default "7.0a" if GDB_V_7_0a default "6.8a" if GDB_V_6_8a + default "custom" if GDB_CUSTOM + +if GDB_CUSTOM + +config GDB_CUSTOM_LOCATION + string + prompt "full path to custom gdb source" + default "" + help + Enter the path to the directory (or tarball) of your source for gdb, + or leave blank to use default CT_CUSTOM_LOCATION_ROOT_DIR/gdb + +endif # GDB_CUSTOM endif + diff -r 43ace4bb005e -r 4d1c400c76a0 config/global/paths.in --- a/config/global/paths.in Wed Sep 26 16:37:31 2012 +0200 +++ b/config/global/paths.in Thu Oct 04 13:26:14 2012 +1000 @@ -60,6 +60,15 @@ # The reason you might also want to install elsewhere is if you are going # to package your shinny new toolchain for distribution. + +config CUSTOM_LOCATION_ROOT_DIR + string + depends on EXPERIMENTAL + prompt "directory containing custom source components" + help + This is the path CT-NG will attempt to use as a root for locating + local copies of source components (CUSTOM_LOCATION_ROOT_DIR/component) + config RM_RF_PREFIX_DIR bool prompt "| Remove the prefix dir prior to building" diff -r 43ace4bb005e -r 4d1c400c76a0 config/libc/eglibc.in --- a/config/libc/eglibc.in Wed Sep 26 16:37:31 2012 +0200 +++ b/config/libc/eglibc.in Thu Oct 04 13:26:14 2012 +1000 @@ -85,6 +85,13 @@ help Selecting this will export the trunk of the eglibc subversion repository. +config LIBC_EGLIBC_CUSTOM + bool + prompt "Custom eglibc" + depends on EXPERIMENTAL + select LIBC_EGLIBC_2_16_or_later + select LIBC_CUSTOM + endchoice config LIBC_VERSION @@ -104,6 +111,7 @@ default "2_6" if LIBC_EGLIBC_V_2_6 default "2_5" if LIBC_EGLIBC_V_2_5 default "trunk" if LIBC_EGLIBC_V_TRUNK + default "custom" if LIBC_EGLIBC_CUSTOM config LIBC_EGLIBC_2_16_or_later bool @@ -140,6 +148,22 @@ config LIBC_EGLIBC_HAS_PKGVERSION_BUGURL bool +config LIBC_CUSTOM + bool + +if LIBC_EGLIBC_CUSTOM + +config LIBC_EGLIBC_CUSTOM_LOCATION + string + prompt "full path to custom eglibc source" + default "" + help + Enter the path to the directory (or tarball) of your source for eglibc, + or leave blank to use default CT_CUSTOM_LOCATION_ROOT_DIR/eglibc + +endif # LIBC_EGLIBC_CUSTOM +if ! LIBC_EGLIBC_CUSTOM + if CONFIGURE_has_svn config EGLIBC_REVISION @@ -189,6 +213,7 @@ comment "otherwise you won't be able to download eglibc" endif # ! CONFIGURE_has_svn +endif # ! LIBC_EGLIBC_CUSTOM config EGLIBC_OPT_SIZE bool diff -r 43ace4bb005e -r 4d1c400c76a0 config/libc/glibc.in --- a/config/libc/glibc.in Wed Sep 26 16:37:31 2012 +0200 +++ b/config/libc/glibc.in Thu Oct 04 13:26:14 2012 +1000 @@ -9,34 +9,6 @@ choice bool - prompt "Retrieval method" - default LIBC_GLIBC_TARBALL - -config LIBC_GLIBC_TARBALL - bool - prompt "Released tarball" - help - Until end of Februrary 2009, there was no tarball for glibc releases - 2.8 and later. This was intentional. - - Then, all of a sudden, tarballs for those releases have appeared at the - traditional download place (ftp.gnu.org). - - Some of the glibc people argue that fixes are committed to the maintenance - branch, and thus it is the best plac e to retrieve the glibc from. - On the other hand, it might be preferable to always generate a toolchain - using a known code-base, so the toolchain can be reproducible. - - For version prior to 2.8, tarballs were readily available. - - If you want your toolchain to really be reproducible, say 'Y' here. - If you can live with a moving code-base, look at the other choice - entries, below. - -endchoice - -choice - bool prompt "glibc version" # Don't remove next line # CT_INSERT_VERSION_BELOW @@ -109,8 +81,60 @@ depends on OBSOLETE select LIBC_SUPPORT_LINUXTHREADS +config LIBC_GLIBC_CUSTOM + bool + prompt "Custom glibc" + depends on EXPERIMENTAL + select LIBC_CUSTOM + endchoice +config LIBC_CUSTOM + bool + +if LIBC_GLIBC_CUSTOM + +config LIBC_GLIBC_CUSTOM_LOCATION + string + prompt "full path to custom glibc source" + default "" + help + Enter the path to the directory (or tarball) of your source for glibc, + or leave blank to use default CT_CUSTOM_LOCATION_ROOT_DIR/glibc + +endif # LIBC_GLIBC_CUSTOM +if ! LIBC_GLIBC_CUSTOM + +choice + bool + prompt "Retrieval method" + default LIBC_GLIBC_TARBALL + +config LIBC_GLIBC_TARBALL + bool + prompt "Released tarball" + help + Until end of Februrary 2009, there was no tarball for glibc releases + 2.8 and later. This was intentional. + + Then, all of a sudden, tarballs for those releases have appeared at the + traditional download place (ftp.gnu.org). + + Some of the glibc people argue that fixes are committed to the maintenance + branch, and thus it is the best plac e to retrieve the glibc from. + On the other hand, it might be preferable to always generate a toolchain + using a known code-base, so the toolchain can be reproducible. + + For version prior to 2.8, tarballs were readily available. + + If you want your toolchain to really be reproducible, say 'Y' here. + If you can live with a moving code-base, look at the other choice + entries, below. + +endchoice + +endif # ! LIBC_GLIBC_CUSTOM + config LIBC_VERSION string # Don't remove next line @@ -130,3 +154,4 @@ default "2.6" if LIBC_GLIBC_V_2_6 default "2.5.1" if LIBC_GLIBC_V_2_5_1 default "2.5" if LIBC_GLIBC_V_2_5 + default "custom" if LIBC_GLIBC_CUSTOM diff -r 43ace4bb005e -r 4d1c400c76a0 config/libc/newlib.in --- a/config/libc/newlib.in Wed Sep 26 16:37:31 2012 +0200 +++ b/config/libc/newlib.in Thu Oct 04 13:26:14 2012 +1000 @@ -52,8 +52,25 @@ In a word: use the CVS snapshot at your own risk! +config LIBC_NEWLIB_CUSTOM + bool + prompt "Custom newlib" + depends on EXPERIMENTAL + endchoice +if LIBC_NEWLIB_CUSTOM + +config LIBC_NEWLIB_CUSTOM_LOCATION + string + prompt "full path to custom newlib source" + default "" + help + Enter the path to the directory (or tarball) of your source for newlib, + or leave blank to use default CT_CUSTOM_LOCATION_ROOT_DIR/newlib + +endif # LIBC_NEWLIB_CUSTOM + config LIBC_VERSION string prompt "use CVS tag" if LIBC_NEWLIB_CVS @@ -63,6 +80,7 @@ default "1.19.0" if LIBC_NEWLIB_V_1_19_0 default "1.18.0" if LIBC_NEWLIB_V_1_18_0 default "1.17.0" if LIBC_NEWLIB_V_1_17_0 + default "custom" if LIBC_NEWLIB_CUSTOM help Enter the tag you want to use. Leave empty to use the 'head' of the repository. diff -r 43ace4bb005e -r 4d1c400c76a0 scripts/build/binutils/binutils.sh --- a/scripts/build/binutils/binutils.sh Wed Sep 26 16:37:31 2012 +0200 +++ b/scripts/build/binutils/binutils.sh Thu Oct 04 13:26:14 2012 +1000 @@ -4,14 +4,26 @@ # Download binutils do_binutils_get() { - CT_GetFile "binutils-${CT_BINUTILS_VERSION}" \ - {ftp,http}://{ftp.gnu.org/gnu,ftp.kernel.org/pub/linux/devel}/binutils \ - ftp://gcc.gnu.org/pub/binutils/{releases,snapshots} + if [ "${CT_BINUTILS_CUSTOM}" = "y" ]; then + CT_TestAndAbort "Custom binutils: CT_CUSTOM_LOCATION_ROOT_DIR or CT_BINUTILS_CUSTOM_LOCATION must be set." \ + -z "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_BINUTILS_CUSTOM_LOCATION}" + if [ -n "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_BINUTILS_CUSTOM_LOCATION}" ]; then + CT_BINUTILS_CUSTOM_LOCATION="${CT_CUSTOM_LOCATION_ROOT_DIR}/binutils" + fi + CT_GetCustom "binutils-${CT_BINUTILS_VERSION}" "${CT_BINUTILS_CUSTOM_LOCATION}" + else + CT_GetFile "binutils-${CT_BINUTILS_VERSION}" \ + {ftp,http}://{ftp.gnu.org/gnu,ftp.kernel.org/pub/linux/devel}/binutils \ + ftp://gcc.gnu.org/pub/binutils/{releases,snapshots} + fi } # Extract binutils do_binutils_extract() { - CT_Extract "binutils-${CT_BINUTILS_VERSION}" + if [ "${CT_BINUTILS_CUSTOM}" != "y" \ + -o ! -d "${CT_BINUTILS_CUSTOM_LOCATION}" ]; then + CT_Extract "binutils-${CT_BINUTILS_VERSION}" + fi CT_Patch "binutils" "${CT_BINUTILS_VERSION}" } diff -r 43ace4bb005e -r 4d1c400c76a0 scripts/build/cc/gcc.sh --- a/scripts/build/cc/gcc.sh Wed Sep 26 16:37:31 2012 +0200 +++ b/scripts/build/cc/gcc.sh Thu Oct 04 13:26:14 2012 +1000 @@ -4,7 +4,14 @@ # Download gcc do_cc_get() { - if [ -n "${CT_CC_V_SVN}" ]; then + if [ "${CT_CC_CUSTOM}" = "y" ]; then + CT_TestAndAbort "Custom gcc: CT_CUSTOM_LOCATION_ROOT_DIR or CT_CC_CUSTOM_LOCATION must be set." \ + -z "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_CC_CUSTOM_LOCATION}" + if [ -n "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_CC_CUSTOM_LOCATION}" ]; then + CT_CC_CUSTOM_LOCATION="${CT_CUSTOM_LOCATION_ROOT_DIR}/gcc" + fi + CT_GetCustom "gcc-${CT_CC_VERSION}" "${CT_CC_CUSTOM_LOCATION}" + elif [ -n "${CT_CC_V_SVN}" ]; then # Get gcc from SVN! local svn_base @@ -59,7 +66,10 @@ # Extract gcc do_cc_extract() { - CT_Extract "gcc-${CT_CC_VERSION}" + if [ "${CT_CC_CUSTOM}" != "y" \ + -o ! -d "${CT_CC_CUSTOM_LOCATION}" ]; then + CT_Extract "gcc-${CT_CC_VERSION}" + fi CT_Patch "gcc" "${CT_CC_VERSION}" # Copy ecj-latest.jar to ecj.jar at the top of the GCC source tree diff -r 43ace4bb005e -r 4d1c400c76a0 scripts/build/debug/300-gdb.sh --- a/scripts/build/debug/300-gdb.sh Wed Sep 26 16:37:31 2012 +0200 +++ b/scripts/build/debug/300-gdb.sh Thu Oct 04 13:26:14 2012 +1000 @@ -48,10 +48,19 @@ do_debug_gdb_parts if [ "${do_gdb}" = "y" ]; then - CT_GetFile "gdb-${CT_GDB_VERSION}" \ - {ftp,http}://ftp.gnu.org/pub/gnu/gdb \ - ftp://sources.redhat.com/pub/gdb/{,old-}releases \ - "${linaro_base_url}/${linaro_series}/${linaro_version}/+download" + if [ "${CT_GDB_CUSTOM}" = "y" ]; then + CT_TestAndAbort "Custom gdb: CT_CUSTOM_LOCATION_ROOT_DIR or CT_GDB_CUSTOM_LOCATION must be set." \ + -z "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_GDB_CUSTOM_LOCATION}" + if [ -n "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_GDB_CUSTOM_LOCATION}" ]; then + CT_GDB_CUSTOM_LOCATION="${CT_CUSTOM_LOCATION_ROOT_DIR}/gdb" + fi + CT_GetCustom "gdb-${CT_GDB_VERSION}" "${CT_GDB_CUSTOM_LOCATION}" + else + CT_GetFile "gdb-${CT_GDB_VERSION}" \ + {ftp,http}://ftp.gnu.org/pub/gnu/gdb \ + ftp://sources.redhat.com/pub/gdb/{,old-}releases \ + "${linaro_base_url}/${linaro_series}/${linaro_version}/+download" + fi fi if [ "${do_ncurses}" = "y" ]; then @@ -70,7 +79,10 @@ do_debug_gdb_parts if [ "${do_gdb}" = "y" ]; then - CT_Extract "gdb-${CT_GDB_VERSION}" + if [ "${CT_GDB_CUSTOM}" != "y" \ + -o ! -d "${CT_GDB_CUSTOM_LOCATION}" ]; then + CT_Extract "gdb-${CT_GDB_VERSION}" + fi CT_Patch "gdb" "${CT_GDB_VERSION}" fi diff -r 43ace4bb005e -r 4d1c400c76a0 scripts/build/kernel/linux.sh --- a/scripts/build/kernel/linux.sh Wed Sep 26 16:37:31 2012 +0200 +++ b/scripts/build/kernel/linux.sh Thu Oct 04 13:26:14 2012 +1000 @@ -29,23 +29,12 @@ fi if [ "${CT_KERNEL_LINUX_CUSTOM}" = "y" ]; then - if [ ! -d "${CT_KERNEL_LINUX_CUSTOM_LOCATION}" ]; then - # Wee need to know the custom tarball extension, - # so we can create a properly-named symlink, which - # we use later on in 'extract' - case "${CT_KERNEL_LINUX_CUSTOM_LOCATION}" in - *.tar.bz2) custom_name="linux-custom.tar.bz2";; - *.tar.gz|*.tgz) custom_name="linux-custom.tar.gz";; - *.tar) custom_name="linux-custom.tar";; - *) CT_Abort "Unknown extension for custom linux tarball '${CT_KERNEL_LINUX_CUSTOM_LOCATION}'";; - esac - CT_DoExecLog DEBUG ln -sf "${CT_KERNEL_LINUX_CUSTOM_LOCATION}" \ - "${CT_TARBALLS_DIR}/${custom_name}" - else - custom_name="linux-custom" - CT_DoExecLog DEBUG ln -sf "${CT_KERNEL_LINUX_CUSTOM_LOCATION}" \ - "${CT_SRC_DIR}/${custom_name}" + CT_TestAndAbort "Custom linux: CT_CUSTOM_LOCATION_ROOT_DIR or CT_KERNEL_LINUX_CUSTOM_LOCATION must be set." \ + -z "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_KERNEL_LINUX_CUSTOM_LOCATION}" + if [ -n "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_KERNEL_LINUX_CUSTOM_LOCATION}" ]; then + CT_KERNEL_LINUX_CUSTOM_LOCATION="${CT_CUSTOM_LOCATION_ROOT_DIR}/linux" fi + CT_GetCustom "linux-${CT_KERNEL_VERSION}" "${CT_KERNEL_LINUX_CUSTOM_LOCATION}" else # Not a custom tarball case "${CT_KERNEL_VERSION}" in 2.6.*.*|3.*.*) diff -r 43ace4bb005e -r 4d1c400c76a0 scripts/build/libc/eglibc.sh --- a/scripts/build/libc/eglibc.sh Wed Sep 26 16:37:31 2012 +0200 +++ b/scripts/build/libc/eglibc.sh Thu Oct 04 13:26:14 2012 +1000 @@ -28,9 +28,19 @@ *) svn_base+="/branches/eglibc-${CT_LIBC_VERSION}";; esac - CT_GetSVN "eglibc-${CT_LIBC_VERSION}" \ - "${svn_base}/libc" \ - "${CT_EGLIBC_REVISION:-HEAD}" + if [ "${CT_LIBC_CUSTOM}" = "y" ]; then + CT_TestAndAbort "Custom eglibc: CT_CUSTOM_LOCATION_ROOT_DIR or CT_LIBC_EGLIBC_CUSTOM_LOCATION must be set." \ + -z "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_LIBC_EGLIBC_CUSTOM_LOCATION}" + CT_LIBC_CUSTOM_LOCATION="${CT_LIBC_EGLIBC_CUSTOM_LOCATION}" + if [ -n "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_LIBC_EGLIBC_CUSTOM_LOCATION}" ]; then + CT_LIBC_CUSTOM_LOCATION="${CT_CUSTOM_LOCATION_ROOT_DIR}/eglibc" + fi + CT_GetCustom "eglibc-${CT_LIBC_VERSION}" "${CT_LIBC_CUSTOM_LOCATION}" + else + CT_GetSVN "eglibc-${CT_LIBC_VERSION}" \ + "${svn_base}/libc" \ + "${CT_EGLIBC_REVISION:-HEAD}" + fi if [ "${CT_LIBC_LOCALES}" = "y" ]; then extra_addons+=("localedef") diff -r 43ace4bb005e -r 4d1c400c76a0 scripts/build/libc/glibc-eglibc.sh-common --- a/scripts/build/libc/glibc-eglibc.sh-common Wed Sep 26 16:37:31 2012 +0200 +++ b/scripts/build/libc/glibc-eglibc.sh-common Thu Oct 04 13:26:14 2012 +1000 @@ -5,7 +5,10 @@ local addon # Extract the main tarball - CT_Extract "${CT_LIBC}-${CT_LIBC_VERSION}" + if [ "${CT_LIBC_CUSTOM}" != "y" \ + -o ! -d "${CT_LIBC_CUSTOM_LOCATION}" ]; then + CT_Extract "${CT_LIBC}-${CT_LIBC_VERSION}" + fi CT_Pushd "${CT_SRC_DIR}/${CT_LIBC}-${CT_LIBC_VERSION}" CT_Patch nochdir "${CT_LIBC}" "${CT_LIBC_VERSION}" diff -r 43ace4bb005e -r 4d1c400c76a0 scripts/build/libc/glibc.sh --- a/scripts/build/libc/glibc.sh Wed Sep 26 16:37:31 2012 +0200 +++ b/scripts/build/libc/glibc.sh Thu Oct 04 13:26:14 2012 +1000 @@ -20,10 +20,20 @@ addons_list=($(do_libc_add_ons_list " ")) # Main source - CT_GetFile "glibc-${CT_LIBC_VERSION}" \ - {ftp,http}://ftp.gnu.org/gnu/glibc \ - ftp://gcc.gnu.org/pub/glibc/releases \ - ftp://gcc.gnu.org/pub/glibc/snapshots + if [ "${CT_LIBC_CUSTOM}" = "y" ]; then + CT_TestAndAbort "Custom glibc: CT_CUSTOM_LOCATION_ROOT_DIR or CT_LIBC_GLIBC_CUSTOM_LOCATION must be set." \ + -z "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_LIBC_GLIBC_CUSTOM_LOCATION}" + CT_LIBC_CUSTOM_LOCATION="${CT_LIBC_GLIBC_CUSTOM_LOCATION}" + if [ -n "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_LIBC_GLIBC_CUSTOM_LOCATION}" ]; then + CT_LIBC_CUSTOM_LOCATION="${CT_CUSTOM_LOCATION_ROOT_DIR}/glibc" + fi + CT_GetCustom "glibc-${CT_LIBC_VERSION}" "${CT_LIBC_CUSTOM_LOCATION}" + else + CT_GetFile "glibc-${CT_LIBC_VERSION}" \ + {ftp,http}://ftp.gnu.org/gnu/glibc \ + ftp://gcc.gnu.org/pub/glibc/releases \ + ftp://gcc.gnu.org/pub/glibc/snapshots + fi # C library addons for addon in "${addons_list[@]}"; do diff -r 43ace4bb005e -r 4d1c400c76a0 scripts/build/libc/newlib.sh --- a/scripts/build/libc/newlib.sh Wed Sep 26 16:37:31 2012 +0200 +++ b/scripts/build/libc/newlib.sh Thu Oct 04 13:26:14 2012 +1000 @@ -20,7 +20,14 @@ libc_src="ftp://sources.redhat.com/pub/newlib" avr32headers_src="http://dev.doredevelopment.dk/avr32-toolchain/sources" - if [ -z "${CT_LIBC_NEWLIB_CVS}" ]; then + if [ "${CT_LIBC_NEWLIB_CUSTOM}" = "y" ]; then + CT_TestAndAbort "Custom newlib: CT_CUSTOM_LOCATION_ROOT_DIR or CT_LIBC_NEWLIB_CUSTOM_LOCATION must be set." \ + -z "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_LIBC_NEWLIB_CUSTOM_LOCATION}" + if [ -n "${CT_CUSTOM_LOCATION_ROOT_DIR}" -a -z "${CT_LIBC_NEWLIB_CUSTOM_LOCATION}" ]; then + CT_LIBC_NEWLIB_CUSTOM_LOCATION="${CT_CUSTOM_LOCATION_ROOT_DIR}/newlib" + fi + CT_GetCustom "newlib-${CT_LIBC_VERSION}" "${CT_LIBC_NEWLIB_CUSTOM_LOCATION}" + elif [ -z "${CT_LIBC_NEWLIB_CVS}" ]; then CT_GetFile "newlib-${CT_LIBC_VERSION}" ${libc_src} else CT_GetCVS "newlib-$(libc_newlib_version)" \ @@ -36,7 +43,10 @@ } do_libc_extract() { - CT_Extract "newlib-$(libc_newlib_version)" + if [ "${CT_LIBC_NEWLIB_CUSTOM}" != "y" \ + -o ! -d "${CT_LIBC_NEWLIB_CUSTOM_LOCATION}" ]; then + CT_Extract "newlib-$(libc_newlib_version)" + fi CT_Patch "newlib" "$(libc_newlib_version)" if [ "${CT_ATMEL_AVR32_HEADERS}" = "y" ]; then diff -r 43ace4bb005e -r 4d1c400c76a0 scripts/functions --- a/scripts/functions Wed Sep 26 16:37:31 2012 +0200 +++ b/scripts/functions Thu Oct 04 13:26:14 2012 +1000 @@ -516,6 +516,32 @@ return 1 } +# This function gets the custom source from either a tarball or directory +# Usage: CT_GetCustom custom_name <custom_location> +CT_GetCustom() { + local custom_name="$1" + local custom_location="$2" + + if [ ! -d "${custom_location}" ]; then + # We need to know the custom tarball extension, + # so we can create a properly-named symlink, which + # we use later on in 'extract' + case "${custom_location}" in + *.tar.bz2) custom_name="${custom_name}.tar.bz2";; + *.tar.gz|*.tgz) custom_name="${custom_name}.tar.gz";; + *.tar) custom_name="${custom_name}.tar";; + *) CT_Abort "Unknown extension for custom tarball '${custom_location}'";; + esac + CT_DoLog EXTRA "Using '${custom_name}' from local storage" + CT_DoExecLog DEBUG ln -sf "${custom_location}" \ + "${CT_TARBALLS_DIR}/${custom_name}" + else + CT_DoLog EXTRA "Using '${custom_name}' from local storage" + CT_DoExecLog DEBUG ln -snf "${custom_location}" \ + "${CT_SRC_DIR}/${custom_name}" + fi +} + # This function saves the specified to local storage if possible, # and if so, symlinks it for later usage # Usage: CT_SaveLocal </full/path/file.name>