From patchwork Thu Oct 4 04:46:29 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Holsgrove X-Patchwork-Id: 189047 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id 1621C2C0332 for ; Thu, 4 Oct 2012 14:47:16 +1000 (EST) Comment: DKIM? See http://www.dkim.org DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d=sourceware.org; s=default; x=1349930837; h=Comment: DomainKey-Signature:Received:Received:Received:Received:Received: Received:Content-Type:MIME-Version:Content-Transfer-Encoding: Subject:Message-Id:In-Reply-To:References:User-Agent:Date:From: To:Cc:Mailing-List:Precedence:List-Id:List-Unsubscribe: List-Subscribe:List-Archive:List-Post:List-Help:Sender: Delivered-To; bh=6sCNfEwne7H5TfNiH2+KfoqMcTw=; b=oRs9C1usi64XME6 v9yzyrOzD7O/I4wW3X87ZXmF7G8EEVXYP6f7fIxrpxdCAlspDm+JUqJObzS9jiBI ejvoN1X6y8zjxEZtnJzrzXezl4bqUuoKxzVFTavSCirWBhUc1ifVPKSTP3vzM/w+ KxYoElNMsvbCfuhdzC/elhWVRicU= Comment: DomainKeys? See http://antispam.yahoo.com/domainkeys DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=default; d=sourceware.org; h=Received:Received:X-SWARE-Spam-Status:X-Spam-Check-By:Received:Received:X-Google-DKIM-Signature:Received:Received:Content-Type:MIME-Version:Content-Transfer-Encoding:Subject:X-Mercurial-Node:Message-Id:In-Reply-To:References:User-Agent:Date:From:To:Cc:X-Gm-Message-State:X-IsSubscribed:Mailing-List:Precedence:List-Id:List-Unsubscribe:List-Subscribe:List-Archive:List-Post:List-Help:Sender:Delivered-To; b=W9IbiZxNeTD0LOQ5x003yJ9wCMAYheCsHbrJpVWCkRY7vMMiLXfGhBFANkRDTs NxafOenaX3dlERgN0zdkvgs4hNYTkGU+cdOemo8lacxGNGCfLhTuKNoCwFyIEfpa j08PWDKNhwk1pj1CVEql3kJgmGxfN2AAnqBvX4vmTXvP8=; Received: (qmail 15323 invoked by alias); 4 Oct 2012 04:47:03 -0000 Received: (qmail 15021 invoked by uid 22791); 4 Oct 2012 04:46:51 -0000 X-SWARE-Spam-Status: No, hits=-2.2 required=5.0 tests=AWL, BAYES_05, KHOP_RCVD_UNTRUST, KHOP_THREADED, RCVD_IN_DNSWL_LOW, RCVD_IN_HOSTKARMA_YE, TW_SV X-Spam-Check-By: sourceware.org Received: from mail-da0-f41.google.com (HELO mail-da0-f41.google.com) (209.85.210.41) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 04 Oct 2012 04:46:40 +0000 Received: by mail-da0-f41.google.com with SMTP id i14so58450dad.0 for ; Wed, 03 Oct 2012 21:46:39 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=sender:content-type:mime-version:content-transfer-encoding:subject :x-mercurial-node:message-id:in-reply-to:references:user-agent:date :from:to:cc:x-gm-message-state; bh=z4JVyli0ht7Ieh6e4WCGnCCpZ/rpEdi7VmLXd7fvNJU=; b=PwnTzWg5vfXlEEFKWnOVQDcSzqXYHj8uCUrarONKxsy/z5yAlAnPHNDBkySuEDL+YD txNCFSVP1JA3iK6SgxryVLjQlOfyIquPlJ2ZpLF7rasYm3tAAdL/ZSPHz7JA0Y7HlUum quKBOf8vedgYrwHzSM7lbCr2j9ZgGuiS0SLOn9U1s/9SR1MO993hklqp11K3X93qALlD prEA+HufasSqr57j1KK9iOpFzaLTwBuK8ZSEqlju+o2cs9c2uFdM1ZHYpkt3qGkXP/RT V+z49LiwvzquUDq7R/QqOhCBxqXPe9kYmVfJepKOhjPC8ut82Vnv7fjdgKtcbJZOSAAB 0UtA== Received: by 10.68.240.36 with SMTP id vx4mr18553863pbc.89.1349325999827; Wed, 03 Oct 2012 21:46:39 -0700 (PDT) Received: from localhost ([124.148.20.9]) by mx.google.com with ESMTPS id x8sm3603549paw.16.2012.10.03.21.46.36 (version=TLSv1/SSLv3 cipher=OTHER); Wed, 03 Oct 2012 21:46:39 -0700 (PDT) MIME-Version: 1.0 Subject: [PATCH 1 of 1] config+scripts: Custom gcc, binutils, libc, gdb version X-Mercurial-Node: 4d1c400c76a061ef1e5f8c3f28f1f8712e903e2d Message-Id: <4d1c400c76a061ef1e5f.1349325989@localhost.localdomain> In-Reply-To: References: User-Agent: Mercurial-patchbomb/2.3.1 Date: Thu, 04 Oct 2012 14:46:29 +1000 From: David Holsgrove To: yann.morin.1998@free.fr Cc: crossgcc@sourceware.org X-Gm-Message-State: ALoCoQmQtqoHES6gzWI4OYVMpwVWiMA5NPw8JT5wyubjh3f0VpdX8ouvNdlr4PlAGRPh1/GMGCGF X-IsSubscribed: yes Mailing-List: contact crossgcc-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: crossgcc-owner@sourceware.org Delivered-To: mailing list crossgcc@sourceware.org # HG changeset patch # User David Holsgrove # 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 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. --- 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 +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