summaryrefslogtreecommitdiff
path: root/scripts/functions
AgeCommit message (Collapse)AuthorFilesLines
2011-12-13scripts: fix dumping execution backtraceYann E. MORIN"1-43/+43
Dumping the backtrace has been broken since changeset #652e56d6d35a: scripts: execute each steps in a subshell We can spawn sub-sub-shells in some cases. The way the fault handler works is to dump the backtrace, but to avoid printing it once for every sub-shell (which could get quite confusing), it simply exits when it detects that it is being run in a sub-shell, leaving to the top-level shell the work to dump the backtrace. Because each step is executed in its own sub-shell, the variable arrays that contain the step name, the source file and line number, are lost when exiting the per-step sub-shell. Hence, the backtrace is currently limited to printing only the top-level main procedure of the shell. Fix this thus: - when dumping the bckatraces for the steps & the functions, remember it was dumped, and only dump it if it was not already dumped - at the top-level shell, print the hints Also, rename the top-level step label. Reported-by: Benoît Thébaudeau <benoit.thebaudeau@advansee.com> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr> (transplanted from 4193d6e6a17430a177fa88c287879c2c35e319f3)
2011-11-22scripts/functions: extract: portable call for old and defective tarsTitus von Boxberg1-6/+6
Instead of using -J, --lzma, --use-compress-program or the like use <compressor> -dc <file> | tar -f - Signed-off-by: Titus von Boxberg <titus@v9g.de> (transplanted from 49af7802dcd538ec3cb64337030b03ac2c6344d2)
2011-10-07scripts/functions: Fix CT_ExtractGit function.Yann E. MORIN"1-12/+15
Change CT_ExtractGit so that it clones the repository, instead of just symlinking it. After cloning, any given ref is checked out, or if no ref is given, the HEAD of the repository is checked out. This makes CT_Extract behave similar for git repositories as it does for tarballs, so that it for example can be used for passing glibc-ports as a git repository. Signed-off-by: "Esben Haabendal" <esben.haabendal@prevas.dk> [yann.morin.1998@anciens.enib.fr: fix incomplete var rename] Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-09-09scripts/functions: only use passive FTPYann E. MORIN"1-6/+8
Virtually all FTP server available on-line support passive FTP. At least, this is the case for the servers crosstool-NG needs to connect to. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-09-09scripts/functions: only use one download programYann E. MORIN"1-12/+4
Currently, we use either wget or curl, whichever is installed. In case both are installed, both are used. This means that it takes a while trying all extensions. Remove use of wget, and use only curl. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-08-25configure: xz-utils alone can also handle LZMA-compressed tarballsYann E. MORIN"1-2/+15
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-08-25configure: check for lzmaYann E. MORIN"1-0/+4
Some packages are available as LZMA tarballs. LZMA is a relatively recent compression algorithm; it's slightly better than bzip2, but offers much faster decompression. LZMA is now deprecated in favor of XZ, but some packages switched to LZMA when XZ was not yet available, or still in its infancy. Latest XZ (which totaly obsoletes LZMA) offers a backward LZMA- compatible utility, so we can check for 'lzma' nonetheless. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-08-14scripts/functions: add xz supportYann E. MORIN"1-0/+4
Add support for the new XZ-compressed tarballs. At least glibc uses that new format. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-05-03scripts/functions: test for decompressors before useYann E. MORIN"1-6/+14
./configure does check for the presence of gz and bzip2, so we can safely use them in the build scripts. On the other hand, more recent formats (eg. XZ) are not yet widely available, and we do not want, and can't, force the user to install them as a pre-requisite. So, build up a list of allowed tarball formats based on the available decompressors. For no, this is a static list, but the upcoming XZ support will conditionnaly add to this list. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-08-14scripts/functions: commonalise tar options in CT_EXtractYann E. MORIN"1-3/+7
This shortens command lines, so it's good! :-) Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-08-10scripts/functions: remove messages about failed downloadsYann E. MORIN"1-3/+4
When downloading via svn/cvs/... an attempt to retrieve from the mirror is made. If the mirror does not have the required tarball, an error message is printed. This is misleading, as the download may later succeed via svn/cvs/... Remove the messages about failed downloads altogether. At the same time, use "if ... then ... fi" instead of "... && ..." Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-08-02scripts: try the mirror even if downloads are forbiddenYann E. MORIN"1-1/+18
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-08-02scripts/functions: use array variables for URLs listYann E. MORIN"1-4/+6
This is needed later, when we'll conditionnally use both the upstream and the mirror URLs. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-08-02scripts/functions: always prefer the mirrorYann E. MORIN"1-14/+4
Currently, the mirror can be used either: - as a fallback in case upstream is unavailable (default behavior) - as the preferred source for downloads But the most common use-case seems to provide a truely-LAN mirror to speed up downloads in big corpos', and/or provide a 'trusted' source for the tarballs. So, make the following changes; - if a mirror is specified, always try that before trying upstream Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-08-02scripts/functions: cvs retrieval first tries the mirror for tarballsYann E. MORIN"1-5/+5
The cvs download helper looks for the local tarballs dir to see if it can find a pre-downloaded tarball, and if it does not find it, does the actual fetch to upstream via cvs. In the process, it does not even try to get a tarball from the local mirror, which can be useful if the mirror has been pre-populated manually (or with a previously downloaded tree). Fake a tarball get with the standard tarball-download helper, but without specifying any upstream URL, which makes the helper directly try the LAN mirror. Of course, if no mirror is specified, no URL wil be available, and the standard cvs retrieval will kick in. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-08-02scripts/functions: svn retrieval first tries the mirror for tarballsYann E. MORIN"1-5/+5
The svn download helper looks for the local tarballs dir to see if it can find a pre-downloaded tarball, and if it does not find it, does the actual fetch to upstream via svn. In the process, it does not even try to get a tarball from the local mirror, which can be useful if the mirror has been pre-populated manually (or with a previously downloaded tree). Fake a tarball get with the standard tarball-download helper, but without specifying any upstream URL, which makes the helper directly try the LAN mirror. Of course, if no mirror is specified, no URL wil be available, and the standard svn retrieval will kick in. Reported-by: ANDY KENNEDY <ANDY.KENNEDY@adtran.com> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-08-01scripts/functions: if no upstream URL is given, silently ignore thatYann E. MORIN"1-0/+1
When retrieving tarballs from upstream, if no URL was given, do not fail; simmply ignore that fact. This will be used later when the SVN helper will call the standard helper to try the LAN mirror before trying svn. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-07-29scripts/functions: force extract folder to archive basenameBenoît THÉBAUDEAU"1-3/+4
Some archives like those of the 2011.07 revisions of Linaro GCC contain a folder name different from the archive basename, which leads to errors afterwards, e.g. when patching. E.g.: gcc-linaro-4.5-2011.07.tar.bz2 extracts to gcc-linaro-4.5-2011.07-0/ This patch changes CT_Extract() to force the extraction of all archives to a folder named like the archive basename. E.g.: gcc-linaro-4.5-2011.07.tar.bz2 now extracts to gcc-linaro-4.5-2011.07/ Signed-off-by: "Benoît THÉBAUDEAU" <benoit.thebaudeau@advansee.com>
2011-06-02functions: save & restore the static companion libraries install dirYann E. MORIN"1-0/+2
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-06-02functions: fix downloading filesYann E. MORIN"1-5/+6
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-05-30scripts/functions: do not abort on failed svnYann E. MORIN"1-1/+4
In case of eglibc, some add-ons that were previously external are now internal (bundled with the main sources). So we do not want to fail if an add-on can't be downloaded; we want to post-pone the check until we can extract the main archive. So: - try to retrieve the add-on - if it fails, print a warning instead of calling CT_Abort - return 1 So, components that want to catch the error and want to handle it can, while components that do not will gracefuly fail thanks to our catching every errors. Bonus: it works without changing any existing retrieval procedure! :-) Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-05-30scripts/functions: do not abort on failed extractYann E. MORIN"1-2/+5
For glibc/eglibc, if the add-on can not be extracted, we want to catch the error to print a meaningful error message. So: - try to extract the tarball - if it fails, print a waring instead of calling CT_Abort - return 1 So, components that want to catch the error and want to handle it can, while components that do not will gracefuly fail thanks to our catching every errors. Bonus: it works without changing any existing extract procedure! :-) Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-05-30scripts/functions: do not abort on failed downloadYann E. MORIN"1-5/+6
In case of glibc/eglibc, some add-ons that were previously external are now internal (bundled with the main sources). So we do not want to fail if an add-on tarball can't be downloaded; we want to post-pone the check until we can extract the main archive. So: - try to download the tarball - if it fails, print a warning instead of calling CT_Abort - return 1 So, components that want to catch the error and want to handle it can, while components that do not will gracefuly fail thanks to our catching every errors. Bonus: it works without changing any existing retrieval procedure! :-) Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-04-07functions: pretty print error messagesYann E. MORIN"1-9/+43
Reformat the error messages: - strip ${CT_LIB_DIR} from scripts path names - strip ${CT_TOP_DIR} from build.log path and docs path - overall shorter lines - point to the known-issues file Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-04-07functions: fix date calculationsYann E. MORIN"1-1/+1
In case date(1) does not support nanosecond resolution, it does not interpret '%N', and leave it as-is. So we have to remove it. Note that some versions replaces '%N' with 'N', so we have to take this into account as well. Reported-by: Kyle Grieb <grieb.kyle@gmail.com> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-04-07functions: avoid CR when progress bar is not enabledJavier Viguera1-1/+1
Using CT-NG with progress bar disabled, still prints CR ('\r') characters on the output. When you capture the output to a file as part of an automated build, it shows extra empty lines. For example: ------------------------------------------------------------ [INFO ] Performing some trivial sanity checks [INFO ] Build started 20110404.113619 [INFO ] Building environment variables [EXTRA] Preparing working directories [EXTRA] Installing user-supplied crosstool-NG configuration ------------------------------------------------------------ Signed-off-by: Javier Viguera <javier.viguera@digi.com>
2011-04-06complibs: disable building shared libsYann E. MORIN"1-6/+0
Managing the shared version of the companion libraries has become cumbersome. Also, it will one day be possible to use the companion libraries from the host distribution, and then we will be able to easily use either shared or static libs. As a side note, while working on the canadian-rework series, it has become quite more complex to properly handle shared companion libraries, as they need to be built both for the build and gost systems. That's not easy to handle. At all. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-03-15scripts: allow logging of commands with variablesYann E. MORIN"1-2/+16
In a lot of places, we need to call some commands with specific variable settings, a-la: var1=val1 var2=val2 /foo/bar/buz opt1 opt2 Unfortunately, we currently can not log the variable settings. Enhance CT_DoExecLog with a crude heuristic that works pretty well and that can also log setting variables. Reported-by: ANDY KENNEDY <ANDY.KENNEDY@adtran.com> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-03-19scripts: leave changelog in build dir, copy to install dirYann E. MORIN"1-23/+20
Users tend to look for the build log in the current working directory, rather than in the toolchain's installation dir. While bundling the build log in the toolchain installation dir is nice for distribution and review, it can be easier to have the build log readily available in the working directory, as it is quicker to get to it. So, the build log stays in the working directory until the toolchain is completely and successfully built, and then a (compressed) copy is made. Reported-by: Trevor Woerner <twoerner@gmail.com> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-03-03scripts: do not chmod u+w the whole source directoryYann E. MORIN"1-5/+0
Doing a chmod on the whole source dir after every packages are extracted can take a hell of a lot of time. The offending packages are far from legion, and they now have their own chmod u+w to cleanup their own mess... Reported-by: ANDY KENNEDY <ANDY.KENNEDY@adtran.com> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2010-12-19buildtools: the buildtools dir is in fact a prefixYann E. MORIN"1-2/+2
Consider the buildtools install directory as a prefix directory, that is, install buildtools in prefix/bin/, not in prefix/. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2010-12-23buildtools: move to working directoryYann E. MORIN"1-0/+2
There is absolutely *no* reason for the buildtools (wrappers to gcc, g++, as, ld... for the local machine) to be in the toolchain directory. Moreover, they are removed after the build completes. Move them out of the toolchain directory, and into the build directory (but yet the part specific to the current toolchain). This means we no longer need to explicitly remove them either, BTW, but we need to save/restore them for the restart feature. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2011-01-25scripts: fix double slash in pathsYann E. MORIN"1-0/+18
Computed paths may contain double slashes. This is not an issue but it is just ugly to look at. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2010-11-28scripts: recover on partially downloaded filesYann E. MORIN"1-5/+16
Download to an intermediate temp file, and rename it to its final name only of download succeeds. This catches both a failed download, and also the case where the user interrupts the download. Thus, the a partial download gets discarded, and we no longer try to extract a partial tarball, which we would previously have done. Suggested by Thomas PETAZZONI. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2010-11-16scripts: call curl and wget in sequenceYann E. MORIN"1-41/+24
It can happen, in some circumpstances, than one can succeed where the other would fail. Those cases involves convoluted enterprise networks with proxies playing tricks. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2010-11-16scripts: remove aria2c as downloader, retain only curl and wgetYann E. MORIN"1-16/+1
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2010-10-22scripts: add STATE logging level for state save/restore output.Anthony Foiani1-13/+15
The save/restore state output is voluminous; using this flag allows us to quickly see or ignore when something is just being saved. [Yann E. MORIN: this is a blind log level, and is used only to search in the build-log afterward.] Signed-off-by: Anthony Foiani <anthony.foiani@gmail.com>
2010-10-22scripts: add "FILE" and "CFG" debug levels.Anthony Foiani1-6/+10
I ran into some minor difficulties looking through the build log for a particular file: I wasn't interested in seeing it unpacked, but only when it is built or installed. Adding these two levels allows me to differentiate between those cases. [Yann E. MORIN: Those are blind log levels, and are used only to search in the build-log afterward.] Signed-off-by: Anthony Foiani <anthony.foiani@gmail.com>
2010-10-03complibs: better deduce whether to backup complibs or notYann E. MORIN"1-6/+2
To decide whether we need to backup the companion libraries, do not rely on the !shared case. In the future other cases may require not to save the companion libraries (eg. if using the ones provided by the host distro). Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2010-08-26scripts/log: do not interpret log string as printf formatYann E. MORIN"1-1/+1
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2010-08-11scripts: in case of failed download, remove partial filesYann E. MORIN"1-2/+2
It happens from time to time that the server mis-behaves, and breaks the connection right in the middle of nowhere, for no good reason, leaving us with a partial file, on which the extract pass would choke. Remove partial downloads, to fail early. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2010-08-11scripts: when downloading, use aria2 only when //Yann E. MORIN"1-1/+1
Even when // downloads are not enabled, aria2 can fail on some servers (eg. uclibc.org). Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2010-07-30Fix CT_SanitizePathJohannes Stezenbach1-7/+5
Replace the over-engineered and buggy test in CT_SanitizePath with a straight forward string pattern match, and also handle empty PATH elements which are qeuivalent to ".". Thanks-To: Arnaud Lacombe <lacombar@gmail.com> Signed-off-by: Johannes Stezenbach <js@sig21.net>
2010-07-29scripts: remove . from $PATHYann E. MORIN"1-0/+18
Add CT_SanitizePath function which removes entries referring to ., /tmp and non-existing directories from $PATH, and call it early in the build script. If . is in PATH, gcc-4.4.4 build breaks: [ALL ] checking what assembler to use... /tmp/build/targets/arm-unknown-linux-uclibcgnueabi/build/gcc-core-static/arm-unknown-linux-uclibcgnueabi/bin/as ... [ALL ] config.status: creating as i.e. "as" is supposed to be the arm-unknown-linux-uclibcgnueabi cross assembler, but config.status creates a local "as" script which is calling the host assembler. Signed-off-by: Johannes Stezenbach <js@sig21.net> [Yann E. MORIN: style fixes + explanations] Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
2010-07-17scripts/functions: recognise Cygwin build hostsYann E. MORIN"1-1/+1
2010-05-19scripts/functions: Use stat correctly on non-GNU (BSD/Darwin) systems.Titus von Boxberg1-1/+11
Call to get the directory mode depending on $CT_SYS_OS yann.morin.1998@anciens.enib.fr: CT_SYS_OS has changed on Linuxsystem, it only gets the kernel name "Linux", and not the system name, 'GNU/'.
2010-04-13scripts/functions: log the test stringsYann E. MORIN"1-0/+3
2010-04-13scripts/functions: compress with gzip level 3, as stated in the documentationYann E. MORIN"1-8/+12
Thanks to Bruno Tarquini <btarquini@gmail.com> for the report.
2010-04-13scripts/functions: add a save/restore handlerYann E. MORIN"1-62/+62
Saving and restoring the steps requires saving/restoring multiple directories. Depending on the configuration, some may not exist. Add a wrapper that checks before creating/extracting the tarballs.
2010-04-13scripts/functions: fix CT_Patch againYann E. MORIN"1-4/+6