All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 0/2] Allow only downloading sources with crosstool-NG backend
@ 2011-07-12 23:07 Yann E. MORIN
  2011-07-12 23:07 ` [Buildroot] [PATCH 1/2] toolchain/crosstool-ng: allow pre-downloading the sources Yann E. MORIN
  2011-07-12 23:07 ` [Buildroot] [PATCH 2/2] source: print messages when all sources downloaded Yann E. MORIN
  0 siblings, 2 replies; 8+ messages in thread
From: Yann E. MORIN @ 2011-07-12 23:07 UTC (permalink / raw)
  To: buildroot

Hello All!

This patch series allows one to call 'make source' for later off-line build,
even when the toolchain backend is crosstool-NG.

  [PATCH 1/2] toolchain/crosstool-ng: allow pre-downloading the sources
  [PATCH 2/2] source: print messages when all sources downloaded

Regards,
Yann E. MORIN

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Buildroot] [PATCH 1/2] toolchain/crosstool-ng: allow pre-downloading the sources
  2011-07-12 23:07 [Buildroot] [PATCH 0/2] Allow only downloading sources with crosstool-NG backend Yann E. MORIN
@ 2011-07-12 23:07 ` Yann E. MORIN
  2011-07-13  6:36   ` Peter Korsgaard
  2011-07-12 23:07 ` [Buildroot] [PATCH 2/2] source: print messages when all sources downloaded Yann E. MORIN
  1 sibling, 1 reply; 8+ messages in thread
From: Yann E. MORIN @ 2011-07-12 23:07 UTC (permalink / raw)
  To: buildroot

On "make source", just download the required sources, and do not
build the entire toolchain. This requires a new patch against
crosstool-NG (got from upstream).

The "uclibc-source" rule requires an installed and configured
crosstool-NG, so it has to be after the variables declaration.
For consistency, move down the main rule "uclibc".

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
---
 ...-break-on-existing-symlinks-and-build.log.patch |   76 ++++++++++++++++++++
 toolchain/toolchain-crosstool-ng/crosstool-ng.mk   |   17 +++--
 2 files changed, 88 insertions(+), 5 deletions(-)
 create mode 100644 toolchain/toolchain-crosstool-ng/002-dont-break-on-existing-symlinks-and-build.log.patch

diff --git a/toolchain/toolchain-crosstool-ng/002-dont-break-on-existing-symlinks-and-build.log.patch b/toolchain/toolchain-crosstool-ng/002-dont-break-on-existing-symlinks-and-build.log.patch
new file mode 100644
index 0000000..2bb613f
--- /dev/null
+++ b/toolchain/toolchain-crosstool-ng/002-dont-break-on-existing-symlinks-and-build.log.patch
@@ -0,0 +1,76 @@
+
+# HG changeset patch
+# User "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
+# Date 1310507544 -7200
+# Node ID 1ebc2248cc60230cd53ff94ae8f8f1e3261461a3
+# Parent  f1c730da41f3b22ca1a1e1b14592da4b7c078797
+scripts, cc/gcc: do not fail on existing symlinks or build.log
+
+If the user builds a toolchain over an existing one, so, without removing
+CT_PREFIX_DIR, the build fails as the symlinks already exist, as does the
+build.log.
+
+This can also happen (for build.log) if the user first ran in download-
+or extract-only.
+
+Patch (with no SoB) originally from:
+  Phil Wilshire <phil.wilshire@overturenetworks.com>
+
+Modified by me as it did not apply cleanly.
+
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
+
+diff -r f1c730da41f3 -r 1ebc2248cc60 scripts/build/cc/gcc.sh
+--- a/scripts/build/cc/gcc.sh	Tue Jul 12 23:21:27 2011 +0200
++++ b/scripts/build/cc/gcc.sh	Tue Jul 12 23:52:24 2011 +0200
+@@ -386,7 +386,7 @@
+     # check whether compiler has an extension
+     file="$( ls -1 "${core_prefix_dir}/bin/${CT_TARGET}-gcc."* 2>/dev/null || true )"
+     [ -z "${file}" ] || ext=".${file##*.}"
+-    CT_DoExecLog ALL ln -sv "${CT_TARGET}-gcc${ext}" "${core_prefix_dir}/bin/${CT_TARGET}-cc${ext}"
++    CT_DoExecLog ALL ln -sfv "${CT_TARGET}-gcc${ext}" "${core_prefix_dir}/bin/${CT_TARGET}-cc${ext}"
+ 
+     CT_EndStep
+ }
+@@ -630,7 +630,7 @@
+     # check whether compiler has an extension
+     file="$( ls -1 "${CT_PREFIX_DIR}/bin/${CT_TARGET}-gcc."* 2>/dev/null || true )"
+     [ -z "${file}" ] || ext=".${file##*.}"
+-    CT_DoExecLog ALL ln -sv "${CT_TARGET}-gcc${ext}" "${CT_PREFIX_DIR}/bin/${CT_TARGET}-cc${ext}"
++    CT_DoExecLog ALL ln -sfv "${CT_TARGET}-gcc${ext}" "${CT_PREFIX_DIR}/bin/${CT_TARGET}-cc${ext}"
+ 
+     CT_EndStep
+ }
+diff -r f1c730da41f3 -r 1ebc2248cc60 scripts/build/internals.sh
+--- a/scripts/build/internals.sh	Tue Jul 12 23:21:27 2011 +0200
++++ b/scripts/build/internals.sh	Tue Jul 12 23:52:24 2011 +0200
+@@ -86,14 +86,14 @@
+     for t in "${CT_TARGET}-"*; do
+         if [ -n "${CT_TARGET_ALIAS}" ]; then
+             _t=$(echo "$t" |sed -r -e 's/^'"${CT_TARGET}"'-/'"${CT_TARGET_ALIAS}"'-/;')
+-            CT_DoExecLog ALL ln -sv "${t}" "${_t}"
++            CT_DoExecLog ALL ln -sfv "${t}" "${_t}"
+         fi
+         if [ -n "${CT_TARGET_ALIAS_SED_EXPR}" ]; then
+             _t=$(echo "$t" |sed -r -e "${CT_TARGET_ALIAS_SED_EXPR}")
+             if [ "${_t}" = "${t}" ]; then
+                 CT_DoLog WARN "The sed expression '${CT_TARGET_ALIAS_SED_EXPR}' has no effect on '${t}'"
+             else
+-                CT_DoExecLog ALL ln -sv "${t}" "${_t}"
++                CT_DoExecLog ALL ln -sfv "${t}" "${_t}"
+             fi
+         fi
+     done
+diff -r f1c730da41f3 -r 1ebc2248cc60 scripts/crosstool-NG.sh.in
+--- a/scripts/crosstool-NG.sh.in	Tue Jul 12 23:21:27 2011 +0200
++++ b/scripts/crosstool-NG.sh.in	Tue Jul 12 23:52:24 2011 +0200
+@@ -604,7 +604,7 @@
+ # moment... Consign all ouptut to oblivion...
+ CT_DoLog INFO "Finishing installation (may take a few seconds)..."
+ exec >/dev/null 2>&1
+-
++rm -f ${CT_PREFIX_DIR}/build.log.bz2
+ if [ "${CT_LOG_TO_FILE}" = "y" ]; then
+     cp "${tmp_log_file}" "${CT_PREFIX_DIR}/build.log"
+     if [ "${CT_LOG_FILE_COMPRESS}" = y ]; then
+
diff --git a/toolchain/toolchain-crosstool-ng/crosstool-ng.mk b/toolchain/toolchain-crosstool-ng/crosstool-ng.mk
index 2d1b51c..d3fcc65 100644
--- a/toolchain/toolchain-crosstool-ng/crosstool-ng.mk
+++ b/toolchain/toolchain-crosstool-ng/crosstool-ng.mk
@@ -6,11 +6,6 @@
 # except that it is not pre-built.
 
 #-----------------------------------------------------------------------------
-# 'uclibc' is the target to depend on to get the toolchain and prepare
-# the staging directory and co.
-uclibc: dependencies $(STAMP_DIR)/ct-ng-toolchain-installed
-
-#-----------------------------------------------------------------------------
 # Internal variables
 
 # Crostool-NG hard-coded configuration options
@@ -33,6 +28,18 @@ PATH=$(HOST_PATH) $(CTNG_DIR)/ct-ng -C $(CTNG_DIR) --no-print-directory $(1)
 endef
 
 #-----------------------------------------------------------------------------
+# 'uclibc' is the target to depend on to get the toolchain and prepare
+# the staging directory and co.
+uclibc: dependencies $(STAMP_DIR)/ct-ng-toolchain-installed
+
+# 'uclibc-source' is the target used by the infra structure to mean
+# "we just want to download the toolchain's sources, not build it"
+# For crosstool-NG, we need it to be configured before we can download;
+# then we have to override a config option to just do the download
+uclibc-source: $(CTNG_DIR)/.config
+	$(Q)$(call ctng,build CT_ONLY_DOWNLOAD=y)
+
+#-----------------------------------------------------------------------------
 # Installing the libs to target/ and staging/
 
 #--------------
-- 
1.7.2.5

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [Buildroot] [PATCH 2/2] source: print messages when all sources downloaded
  2011-07-12 23:07 [Buildroot] [PATCH 0/2] Allow only downloading sources with crosstool-NG backend Yann E. MORIN
  2011-07-12 23:07 ` [Buildroot] [PATCH 1/2] toolchain/crosstool-ng: allow pre-downloading the sources Yann E. MORIN
@ 2011-07-12 23:07 ` Yann E. MORIN
  2011-07-13  6:37   ` Peter Korsgaard
  1 sibling, 1 reply; 8+ messages in thread
From: Yann E. MORIN @ 2011-07-12 23:07 UTC (permalink / raw)
  To: buildroot

When downloading all sources for later off-line build (eg. make source),
and the toolchain backend is crosstool-NG, the last messages the user
wil see is something like:
  [INFO ]  Retrieving needed toolchain components' tarballs: done in 98.02s (at 01:39)
  [INFO ]  Build completed at 20110713.000605
  [INFO ]  (elapsed: 1:39.21)
  [INFO ]  Finishing installation (may take a few seconds)...

which is pretty uninformative, here; crosstool-NG is just saying that
it just finished what it was asked for, that is download the sources,
but there is no separate message for that.

To avoid confusion, add an explicit message that makes it clear that
downloading the sources was sucessful, and nothing more.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
---
 Makefile |    3 +++
 1 files changed, 3 insertions(+), 0 deletions(-)

diff --git a/Makefile b/Makefile
index 2f3802c..3021add 100644
--- a/Makefile
+++ b/Makefile
@@ -487,6 +487,9 @@ target-purgelocales:
 endif
 
 source: $(TARGETS_SOURCE) $(HOST_SOURCE)
+	@echo ""
+	@echo "*"
+	@echo "* Finished downloading the required packages' sources"
 
 _source-check:
 	$(MAKE) DL_MODE=SOURCE_CHECK $(EXTRAMAKEARGS) source
-- 
1.7.2.5

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [Buildroot] [PATCH 1/2] toolchain/crosstool-ng: allow pre-downloading the sources
  2011-07-12 23:07 ` [Buildroot] [PATCH 1/2] toolchain/crosstool-ng: allow pre-downloading the sources Yann E. MORIN
@ 2011-07-13  6:36   ` Peter Korsgaard
  0 siblings, 0 replies; 8+ messages in thread
From: Peter Korsgaard @ 2011-07-13  6:36 UTC (permalink / raw)
  To: buildroot

>>>>> "Yann" == Yann E MORIN <yann.morin.1998@anciens.enib.fr> writes:

 Yann> On "make source", just download the required sources, and do not
 Yann> build the entire toolchain. This requires a new patch against
 Yann> crosstool-NG (got from upstream).

 Yann> The "uclibc-source" rule requires an installed and configured
 Yann> crosstool-NG, so it has to be after the variables declaration.
 Yann> For consistency, move down the main rule "uclibc".

Committed, thanks.

-- 
Bye, Peter Korsgaard

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Buildroot] [PATCH 2/2] source: print messages when all sources downloaded
  2011-07-12 23:07 ` [Buildroot] [PATCH 2/2] source: print messages when all sources downloaded Yann E. MORIN
@ 2011-07-13  6:37   ` Peter Korsgaard
  2011-07-13 18:11     ` Yann E. MORIN
  0 siblings, 1 reply; 8+ messages in thread
From: Peter Korsgaard @ 2011-07-13  6:37 UTC (permalink / raw)
  To: buildroot

>>>>> "Yann" == Yann E MORIN <yann.morin.1998@anciens.enib.fr> writes:

 Yann> When downloading all sources for later off-line build (eg. make source),
 Yann> and the toolchain backend is crosstool-NG, the last messages the user
 Yann> wil see is something like:
 Yann>   [INFO ]  Retrieving needed toolchain components' tarballs: done in 98.02s (at 01:39)
 Yann>   [INFO ]  Build completed at 20110713.000605
 Yann>   [INFO ]  (elapsed: 1:39.21)
 Yann>   [INFO ]  Finishing installation (may take a few seconds)...

 Yann> which is pretty uninformative, here; crosstool-NG is just saying that
 Yann> it just finished what it was asked for, that is download the sources,
 Yann> but there is no separate message for that.

 Yann> To avoid confusion, add an explicit message that makes it clear that
 Yann> downloading the sources was sucessful, and nothing more.

I agree it isn't optimal, but this breaks E.G. make external-deps

-- 
Bye, Peter Korsgaard

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Buildroot] [PATCH 2/2] source: print messages when all sources downloaded
  2011-07-13  6:37   ` Peter Korsgaard
@ 2011-07-13 18:11     ` Yann E. MORIN
  2011-07-13 18:42       ` Peter Korsgaard
  0 siblings, 1 reply; 8+ messages in thread
From: Yann E. MORIN @ 2011-07-13 18:11 UTC (permalink / raw)
  To: buildroot

Peter, All,

On Wednesday 13 July 2011 08:37:26 Peter Korsgaard wrote:
> >>>>> "Yann" == Yann E MORIN <yann.morin.1998@anciens.enib.fr> writes:
[--SNIP--]
>  Yann> To avoid confusion, add an explicit message that makes it clear that
>  Yann> downloading the sources was sucessful, and nothing more.
> 
> I agree it isn't optimal, but this breaks E.G. make external-deps

Indeed. We could print the message only if DL_MODE==DOWNLOAD. Would that
be OK with you?

Incidentally, external-deps and source-check will not be really complete
when crostool-NG is the backend, as there is no way to ask such a thing
to crosstool-NG.

Note that source-check is currently borked due to some unconfigured
defconfig files for bootloaders and kernel. Eg. for barebox:
  $ make -C ../br.upstream O=$(pwd) source-check
  [--SNIP-]
  make O=/home/ymorin/dev/buildroot/O _source-check
  make[1]: Entering directory `/home/ymorin/dev/buildroot/br.upstream'
  boot/barebox/barebox.mk:60: *** No Barebox defconfig file. Check your
  BR2_TARGET_BAREBOX_BOARD_DEFCONFIG setting.  Stop.
  make[1]: Leaving directory `/home/ymorin/dev/buildroot/br.upstream'
  make: *** [source-check] Error 2
  make: Leaving directory `/home/ymorin/dev/buildroot/br.upstream'

Setting the barebox defconfig to non-empty now breaks on u-boot, still
because the defconfig entry is empty. And then it is the Linux kernel
that breaks for the same reason. :-/

I'll push a patch shortly...

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.  |
'------------------------------^-------^------------------^--------------------'

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Buildroot] [PATCH 2/2] source: print messages when all sources downloaded
  2011-07-13 18:11     ` Yann E. MORIN
@ 2011-07-13 18:42       ` Peter Korsgaard
  2011-07-13 20:46         ` Yann E. MORIN
  0 siblings, 1 reply; 8+ messages in thread
From: Peter Korsgaard @ 2011-07-13 18:42 UTC (permalink / raw)
  To: buildroot

>>>>> "Yann" == Yann E MORIN <yann.morin.1998@anciens.enib.fr> writes:

Hi,

 Yann> Indeed. We could print the message only if DL_MODE==DOWNLOAD. Would that
 Yann> be OK with you?

We could, but I'm not really sure if we should. We don't do anything
like that for any of the other make targets.

 Yann> Incidentally, external-deps and source-check will not be really complete
 Yann> when crostool-NG is the backend, as there is no way to ask such a thing
 Yann> to crosstool-NG.

Ok, also not by playing games with a replacement wget/curl/whatever that
just prints basename $1 or similar?

 Yann> Note that source-check is currently borked due to some unconfigured
 Yann> defconfig files for bootloaders and kernel. Eg. for barebox:
 Yann>   $ make -C ../br.upstream O=$(pwd) source-check
 Yann>   [--SNIP-]
 Yann>   make O=/home/ymorin/dev/buildroot/O _source-check
 Yann>   make[1]: Entering directory `/home/ymorin/dev/buildroot/br.upstream'
 Yann>   boot/barebox/barebox.mk:60: *** No Barebox defconfig file. Check your
 Yann>   BR2_TARGET_BAREBOX_BOARD_DEFCONFIG setting.  Stop.
 Yann>   make[1]: Leaving directory `/home/ymorin/dev/buildroot/br.upstream'
 Yann>   make: *** [source-check] Error 2
 Yann>   make: Leaving directory `/home/ymorin/dev/buildroot/br.upstream'

Yes, we currently require a buildable .config for make
source/source-check/external-deps, which I don't really think is big
issue for normal use cases. I do hit it when I update the
sources.buildroot.net mirror using make allyesconfig && make source, so
we could try to get rid of that restriction if it doesn't make the
linux/barebox/uboot Makefiles too ugly.

-- 
Bye, Peter Korsgaard

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [Buildroot] [PATCH 2/2] source: print messages when all sources downloaded
  2011-07-13 18:42       ` Peter Korsgaard
@ 2011-07-13 20:46         ` Yann E. MORIN
  0 siblings, 0 replies; 8+ messages in thread
From: Yann E. MORIN @ 2011-07-13 20:46 UTC (permalink / raw)
  To: buildroot

Peter, All,

On Wednesday 13 July 2011 20:42:05 Peter Korsgaard wrote:
> >>>>> "Yann" == Yann E MORIN <yann.morin.1998@anciens.enib.fr> writes:
>  Yann> Indeed. We could print the message only if DL_MODE==DOWNLOAD. Would that
>  Yann> be OK with you?
> 
> We could, but I'm not really sure if we should. We don't do anything
> like that for any of the other make targets.

OK, I'll ditch this change, then...

>  Yann> Incidentally, external-deps and source-check will not be really complete
>  Yann> when crostool-NG is the backend, as there is no way to ask such a thing
>  Yann> to crosstool-NG.
> 
> Ok, also not by playing games with a replacement wget/curl/whatever that
> just prints basename $1 or similar?

Nope, there's curently no way.

I could add that, but I'm not sure how much it would make sense in the
crosstool-NG case by itself.

Also, if buildroot wanted crosstool-NG to print the list of its required
sources, it would mean building crosstool-NG, which first requires building
host-gawk and host-automake anyway... Which I find ugly...

>  Yann> Note that source-check is currently borked due to some unconfigured
>  Yann> defconfig files for bootloaders and kernel. Eg. for barebox:
[--SNIP--]
> Yes, we currently require a buildable .config for make
> source/source-check/external-deps, which I don't really think is big
> issue for normal use cases. I do hit it when I update the
> sources.buildroot.net mirror using make allyesconfig && make source, so
> we could try to get rid of that restriction if it doesn't make the
> linux/barebox/uboot Makefiles too ugly.

What I'm doing here is to have the _DEFCONFIG options to default to
'(none)' so it satisfies the checks.

It is the responsibility of the user to set correct values in place of the
defaults. But that does not really change from what's required today, the
user is already responsible for that.

Of course, it'll be up to you to accept or ditch such a change, if you don't
mind setting those manually. After all, it's only three options. For now...
:-)

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.  |
'------------------------------^-------^------------------^--------------------'

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2011-07-13 20:46 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-07-12 23:07 [Buildroot] [PATCH 0/2] Allow only downloading sources with crosstool-NG backend Yann E. MORIN
2011-07-12 23:07 ` [Buildroot] [PATCH 1/2] toolchain/crosstool-ng: allow pre-downloading the sources Yann E. MORIN
2011-07-13  6:36   ` Peter Korsgaard
2011-07-12 23:07 ` [Buildroot] [PATCH 2/2] source: print messages when all sources downloaded Yann E. MORIN
2011-07-13  6:37   ` Peter Korsgaard
2011-07-13 18:11     ` Yann E. MORIN
2011-07-13 18:42       ` Peter Korsgaard
2011-07-13 20:46         ` Yann E. MORIN

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.