This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH 2 of 2] companion_tools/autoconf: add autoconf tool


Richard, All,

On Monday 11 January 2010 14:57:56 Richard Strand wrote:
> # HG changeset patch
> # User Richard Strand <richard.strand@icomera.com>
> # Date 1263218092 0
> # Node ID 8dc1ca6bea93dc1d69ab3b5a12790949ce794d55
> # Parent  2e2ead7d3a6e90bb2015dc87d8e0ca09137b1a44
> companion_tools/autoconf: add autoconf tool
> 
> Initial version of adding autoconf as a companion tool.
> 
> Signed-off-by: Richard Strand <richard.strand@icomera.com>
> 
> diff -r 2e2ead7d3a6e -r 8dc1ca6bea93 config/companion_tools.in
> --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
> +++ b/config/companion_tools.in	Mon Jan 11 13:54:52 2010 +0000
> @@ -0,0 +1,25 @@
> +# Companion tools config options
> +
> +if EXPERIMENTAL
> +
> +menu "Companion tools"
> +
> +config COMP_TOOLS
> +    bool
> +    prompt "READ HELP before you say 'Y' here !!!"
> +    help
> +      No help yet - continue at your peril!

OK, now what about this help text and prompt:

comment "READ HELP before you say 'Y' below !!!"
prompt "Build some companion tools"
help
  Crosstool-NG relies on some external tools to be recent enough, namely:
    autoconf >= 2.65
    blah     >= blah
  
  If your system has older versions, we can build them for you,
  but you are strongly encouraged to update your system instead!

> +
> +if COMP_TOOLS
> +
> +config COMP_TOOLS_autoconf
> +    bool
> +    prompt "autoconf"
> +    help
> +      No help yet

No help needed for each and all entries. The help for COMP_TOOLS
will have to be clear enough. After all, if the user selects this,
then we'll assume that he/she knows what he/she's doin'.

> +
> +endif
> +
> +endmenu
> +
> +endif
> diff -r 2e2ead7d3a6e -r 8dc1ca6bea93 config/config.in
> --- a/config/config.in	Mon Jan 11 13:54:05 2010 +0000
> +++ b/config/config.in	Mon Jan 11 13:54:52 2010 +0000
> @@ -8,3 +8,4 @@
>  source config/debug.in
>  source config/tools.in
>  source config/companion_libs.in
> +source config/companion_tools.in
> diff -r 2e2ead7d3a6e -r 8dc1ca6bea93 scripts/build/companion_tools.sh
> --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
> +++ b/scripts/build/companion_tools.sh	Mon Jan 11 13:54:52 2010 +0000
> @@ -0,0 +1,38 @@
> +# Wrapper to build the companion tools facilities
> +
> +# List all companion tools facilities, and parse their scripts
> +CT_COMP_TOOLS_FACILITY_LIST=
> +for f in "${CT_LIB_DIR}/scripts/build/companion_tools/"*.sh; do
> +    _f="$(basename "${f}" .sh)"
> +    _f="${_f#???-}"
> +    __f="CT_COMP_TOOLS_${_f}"
> +    if [ "${!__f}" = "y" ]; then
> +        CT_DoLog DEBUG "Enabling companion tools '${_f}'"
> +        . "${f}"
> +        CT_COMP_TOOLS_FACILITY_LIST="${CT_COMP_TOOLS_FACILITY_LIST} ${_f}"
> +    else
> +        CT_DoLog DEBUG "Disabling companion tools '${_f}'"
> +    fi
> +done
> +
> +# Download the companion tools facilities
> +do_companion_tools_get() {
> +    for f in ${CT_COMP_TOOLS_FACILITY_LIST}; do
> +        do_companion_tools_${f}_get
> +    done
> +}
> +
> +# Extract and patch the companion tools facilities
> +do_companion_tools_extract() {
> +    for f in ${CT_COMP_TOOLS_FACILITY_LIST}; do
> +        do_companion_tools_${f}_extract
> +    done
> +}
> +
> +# Build the companion tools facilities
> +do_companion_tools() {
> +    for f in ${CT_COMP_TOOLS_FACILITY_LIST}; do
> +        do_companion_tools_${f}_build
> +    done
> +}
> +

OK.

> diff -r 2e2ead7d3a6e -r 8dc1ca6bea93 scripts/build/companion_tools/200-autoconf.sh
> --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
> +++ b/scripts/build/companion_tools/200-autoconf.sh	Mon Jan 11 13:54:52 2010 +0000
> @@ -0,0 +1,25 @@
> +# Build script for autoconf
> +
> +CT_AUTOCONF_VERSION=2.65

Yes, good.

> +
> +do_companion_tools_autoconf_get() {
> +    CT_GetFile "autoconf-${CT_AUTOCONF_VERSION}" {ftp,http}://ftp.gnu.org/gnu/autoconf/

I know it's not the case everywhere, but could you try to keep lines
shorter than 80 columns?

> +}
> +
> +do_companion_tools_autoconf_extract() {
> +    CT_Extract "autoconf-${CT_AUTOCONF_VERSION}"
> +    CT_Patch "autoconf-${CT_AUTOCONF_VERSION}"
> +}
> +
> +do_companion_tools_autoconf_build() {
> +    CT_DoStep INFO "Installing autoconf"

INFO --> EXTRA

> +    mkdir -p "${CT_BUILD_DIR}/build-autoconf"
> +    CT_Pushd "${CT_BUILD_DIR}/build-autoconf"
> +    CT_DoExecLog ALL ${CONFIG_SHELL} \

Directly call ./configure, do not use CT_CONFIG_SHELL. It's the
responsibility of ./configure to use CONFIG_SHELL (note there's
no leading CT_) internally. CONFIG_SHELL is correctly set and
exported.

> +    "${CT_SRC_DIR}/autoconf-${CT_AUTOCONF_VERSION}/configure" \
> +        --prefix="${CT_WORK_DIR}/tools"
> +    CT_DoExecLog ALL make
> +    CT_DoExecLog ALL make install
> +    CT_Popd
> +    CT_EndStep
> +}

I don't know if this build procedure works, and I'll trust you on that.

> diff -r 2e2ead7d3a6e -r 8dc1ca6bea93 scripts/crosstool-NG.sh.in
> --- a/scripts/crosstool-NG.sh.in	Mon Jan 11 13:54:05 2010 +0000
> +++ b/scripts/crosstool-NG.sh.in	Mon Jan 11 13:54:52 2010 +0000
> @@ -114,6 +114,7 @@
>  # export any variable, nor re-parse the configuration and functions files.
>  . "${CT_LIB_DIR}/scripts/build/internals.sh"
>  . "${CT_LIB_DIR}/scripts/build/arch/${CT_ARCH}.sh"
> +. "${CT_LIB_DIR}/scripts/build/companion_tools.sh"
>  . "${CT_LIB_DIR}/scripts/build/kernel/${CT_KERNEL}.sh"
>  . "${CT_LIB_DIR}/scripts/build/companion_libs/gmp.sh"
>  . "${CT_LIB_DIR}/scripts/build/companion_libs/mpfr.sh"
> @@ -493,6 +494,7 @@
>          CT_DoLog INFO "Downloading forbidden by configuration, skipping downloads"
>      else
>          CT_DoStep INFO "Retrieving needed toolchain components' tarballs"
> +        do_companion_tools_get
>          do_kernel_get
>          do_gmp_get
>          do_mpfr_get
> @@ -512,6 +514,14 @@
>              CT_DoForceRmdir "${CT_SRC_DIR}"
>              CT_DoExecLog ALL mkdir -p "${CT_SRC_DIR}"
>          fi
> +
> +        if [ "${CT_COMP_TOOLS}" = "y" ]; then
> +          CT_DoStep INFO "Extracting, patching and installing companion tools"
> +          do_companion_tools_extract
> +          do_companion_tools
> +          CT_EndStep
> +        fi
> +
>          CT_DoStep INFO "Extracting and patching toolchain components"
>          do_kernel_extract
>          do_gmp_extract
> 
> 

Could you please address the few remaining issues?
Otherwise, looks good! :-)

Regards,
Yann E. MORIN.

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
`------------------------------^-------^------------------^--------------------'



--
For unsubscribe information see http://sourceware.org/lists.html#faq


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]