Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH v3] package/tvheadend: unbreak
@ 2013-12-04  0:08 Yann E. MORIN
  2013-12-04  7:45 ` Thomas Petazzoni
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Yann E. MORIN @ 2013-12-04  0:08 UTC (permalink / raw)
  To: buildroot

From: "Yann E. MORIN" <yann.morin.1998@free.fr>

tvheadend tries to impersonate an autotools package, when it is not.
This breaks the build.

tvheadend's ./configure tries to run compiled code.
This breaks the build.

Switch tvheadend over to using the generic-package infrastructure,
and provide carefully-crafted _CMDS for each steps.

We still keep a post-install hook to install our "DB" since it is not
part of tvheadend, but an addition of our own packaging of tvheadend.

Fixes:
    http://autobuild.buildroot.net/results/3ea/3eaa17b94975477263fe12e201eec9cbeeb2912c/
    http://autobuild.buildroot.net/results/7c8/7c85db0dfab98808c97a5ef17dec9d1071dc0d49/
and a few others as well.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
Changes v2->v3:
  - use $(MAKE) not make  (Thomas)

Changes v1->v2:
 - add references to (some) autobuild failures
---
 .../tvheadend-004-dont-run-compiled-code.patch     | 21 +++++++++++++++++
 package/tvheadend/tvheadend.mk                     | 27 ++++++++++++++++++----
 2 files changed, 44 insertions(+), 4 deletions(-)
 create mode 100644 package/tvheadend/tvheadend-004-dont-run-compiled-code.patch

diff --git a/package/tvheadend/tvheadend-004-dont-run-compiled-code.patch b/package/tvheadend/tvheadend-004-dont-run-compiled-code.patch
new file mode 100644
index 0000000..caa6e2a
--- /dev/null
+++ b/package/tvheadend/tvheadend-004-dont-run-compiled-code.patch
@@ -0,0 +1,21 @@
+support: don't try to run compiled code
+
+When cross-compiling, we can't run the compiled code.
+
+Consider the compiler besing successfull as an indication
+it is working.
+
+Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
+
+diff -durN tvheadend.orig/support/configure.inc tvheadend-c7d0335eb10d02b780423bef8e7c740e422fff13/support/configure.inc
+--- tvheadend.orig/support/configure.inc	2013-12-01 01:24:26.000000000 +0100
++++ tvheadend-c7d0335eb10d02b780423bef8e7c740e422fff13/support/configure.inc	2013-12-03 22:34:57.547762178 +0100
+@@ -265,8 +265,6 @@
+ EOF
+   $CC $CFLAGS $LDFLAGS $TMPDIR/$$.c -o $TMPDIR/$$.bin $opt #&> /dev/null
+   RET=$?
+-  [ $RET -eq 0 ] && $TMPDIR/$$.bin
+-  RET=$?
+   rm -f $TMPDIR/$$.{c,bin}
+   return $RET
+ }
diff --git a/package/tvheadend/tvheadend.mk b/package/tvheadend/tvheadend.mk
index 1713d58..43bc382 100644
--- a/package/tvheadend/tvheadend.mk
+++ b/package/tvheadend/tvheadend.mk
@@ -22,6 +22,28 @@ endif
 # scan files installed by the dvb-apps package
 TVHEADEND_DEPENDENCIES     += dvb-apps
 
+define TVHEADEND_CONFIGURE_CMDS
+	(cd $(@D);				\
+	 $(TARGET_CONFIGURE_OPTS)		\
+	 $(TARGET_CONFIGURE_ARGS)		\
+	 ./configure				\
+	 --prefix=/usr				\
+	 --cc="$(TARGET_CC)"			\
+	 --cflags="$(TARGET_CFLAGS)"		\
+	 --arch="$(ARCH)"			\
+	 --cpu="$(BR2_GCC_TARGET_CPU)"		\
+	 --python="$(HOST_DIR)/usr/bin/python"	\
+	)
+endef
+
+define TVHEADEND_BUILD_CMDS
+	$(MAKE) -C $(@D)
+endef
+
+define TVHEADEND_INSTALL_TARGET_CMDS
+	$(MAKE) -C $(@D) DESTDIR="$(TARGET_DIR)" install
+endef
+
 #----------------------------------------------------------------------------
 # To run tvheadend, we need:
 #  - a startup script, and its config file
@@ -43,7 +65,4 @@ define TVHEADEND_USERS
 tvheadend -1 tvheadend -1 * /home/tvheadend - video TVHeadend daemon
 endef
 
-#----------------------------------------------------------------------------
-# tvheadend is not an autotools-based package, but it is possible to
-# call its ./configure script as if it were an autotools one.
-$(eval $(autotools-package))
+$(eval $(generic-package))
-- 
1.8.1.2

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

* [Buildroot] [PATCH v3] package/tvheadend: unbreak
  2013-12-04  0:08 [Buildroot] [PATCH v3] package/tvheadend: unbreak Yann E. MORIN
@ 2013-12-04  7:45 ` Thomas Petazzoni
  2013-12-04 21:31   ` Yann E. MORIN
  2013-12-04  9:13 ` Peter Korsgaard
  2013-12-05 15:14 ` Arnout Vandecappelle
  2 siblings, 1 reply; 6+ messages in thread
From: Thomas Petazzoni @ 2013-12-04  7:45 UTC (permalink / raw)
  To: buildroot

Dear Yann E. MORIN,

On Wed,  4 Dec 2013 01:08:41 +0100, Yann E. MORIN wrote:

> diff --git a/package/tvheadend/tvheadend-004-dont-run-compiled-code.patch b/package/tvheadend/tvheadend-004-dont-run-compiled-code.patch
> new file mode 100644
> index 0000000..caa6e2a
> --- /dev/null
> +++ b/package/tvheadend/tvheadend-004-dont-run-compiled-code.patch
> @@ -0,0 +1,21 @@
> +support: don't try to run compiled code
> +
> +When cross-compiling, we can't run the compiled code.
> +
> +Consider the compiler besing successfull as an indication
> +it is working.

What does "the compiler being successful" means?

And also:

 besing -> being
 successfull -> successful

Thanks!

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com

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

* [Buildroot] [PATCH v3] package/tvheadend: unbreak
  2013-12-04  0:08 [Buildroot] [PATCH v3] package/tvheadend: unbreak Yann E. MORIN
  2013-12-04  7:45 ` Thomas Petazzoni
@ 2013-12-04  9:13 ` Peter Korsgaard
  2013-12-05 15:14 ` Arnout Vandecappelle
  2 siblings, 0 replies; 6+ messages in thread
From: Peter Korsgaard @ 2013-12-04  9:13 UTC (permalink / raw)
  To: buildroot

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

 > From: "Yann E. MORIN" <yann.morin.1998@free.fr>
 > tvheadend tries to impersonate an autotools package, when it is not.
 > This breaks the build.

 > tvheadend's ./configure tries to run compiled code.
 > This breaks the build.

 > Switch tvheadend over to using the generic-package infrastructure,
 > and provide carefully-crafted _CMDS for each steps.

 > We still keep a post-install hook to install our "DB" since it is not
 > part of tvheadend, but an addition of our own packaging of tvheadend.

 > Fixes:
 >     http://autobuild.buildroot.net/results/3ea/3eaa17b94975477263fe12e201eec9cbeeb2912c/
 >     http://autobuild.buildroot.net/results/7c8/7c85db0dfab98808c97a5ef17dec9d1071dc0d49/
 > and a few others as well.

 > Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr>
 > Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>

Sorry, this was the one I committed, not v1 (with the patch commit
message tweaked).

-- 
Bye, Peter Korsgaard

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

* [Buildroot] [PATCH v3] package/tvheadend: unbreak
  2013-12-04  7:45 ` Thomas Petazzoni
@ 2013-12-04 21:31   ` Yann E. MORIN
  0 siblings, 0 replies; 6+ messages in thread
From: Yann E. MORIN @ 2013-12-04 21:31 UTC (permalink / raw)
  To: buildroot

Thomas, All,

On 2013-12-04 08:45 +0100, Thomas Petazzoni spake thusly:
> On Wed,  4 Dec 2013 01:08:41 +0100, Yann E. MORIN wrote:
> 
> > diff --git a/package/tvheadend/tvheadend-004-dont-run-compiled-code.patch b/package/tvheadend/tvheadend-004-dont-run-compiled-code.patch
> > new file mode 100644
> > index 0000000..caa6e2a
> > --- /dev/null
> > +++ b/package/tvheadend/tvheadend-004-dont-run-compiled-code.patch
> > @@ -0,0 +1,21 @@
> > +support: don't try to run compiled code
> > +
> > +When cross-compiling, we can't run the compiled code.
> > +
> > +Consider the compiler besing successfull as an indication
> > +it is working.
> 
> What does "the compiler being successful" means?

It means we are content with the compiler being able to compile.

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] 6+ messages in thread

* [Buildroot] [PATCH v3] package/tvheadend: unbreak
  2013-12-04  0:08 [Buildroot] [PATCH v3] package/tvheadend: unbreak Yann E. MORIN
  2013-12-04  7:45 ` Thomas Petazzoni
  2013-12-04  9:13 ` Peter Korsgaard
@ 2013-12-05 15:14 ` Arnout Vandecappelle
  2013-12-05 17:53   ` Yann E. MORIN
  2 siblings, 1 reply; 6+ messages in thread
From: Arnout Vandecappelle @ 2013-12-05 15:14 UTC (permalink / raw)
  To: buildroot

On 04/12/13 01:08, Yann E. MORIN wrote:
> +	 --cc="$(TARGET_CC)"			\
> +	 --cflags="$(TARGET_CFLAGS)"		\

  It looks like the configure script is broken and fails if these 
variables contain spaces (like e.g. when ccache is used).

 From support/configure.inc:

function parse_args
{
   local opt= val=
   for opt do
     val=${opt#*=}
     opt=${opt%=*}
     opt=${opt#*--}
     case "$opt" in
       cc|cflags|arch|cpu|platform|python)
         eval "`toupper $opt`=$val"
         ;;

  Since the $val isn't quoted, a value with spaces will expand to e.g.:

eval "CC=ccache gcc"

which will execute

CC=ccache gcc

so it will try to run gcc...

  In addition, parse_args is called from configure as:

parse_args $*

which will expand to:

parse_args --cc=ccache gcc --cflags=-DFOO -DBAR

so we only get the ccache and -DFOO in CC and CFLAGS. The unknown 
arguments gcc and -DBAR are ignored.

  Two options:

- fix the scripts;

- don't use --cc and --cflags but just pass them in the environment 
(assuming that this works).

  Regards,
  Arnout
-- 
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F

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

* [Buildroot] [PATCH v3] package/tvheadend: unbreak
  2013-12-05 15:14 ` Arnout Vandecappelle
@ 2013-12-05 17:53   ` Yann E. MORIN
  0 siblings, 0 replies; 6+ messages in thread
From: Yann E. MORIN @ 2013-12-05 17:53 UTC (permalink / raw)
  To: buildroot

Arnout, All,

On 2013-12-05 16:14 +0100, Arnout Vandecappelle spake thusly:
> On 04/12/13 01:08, Yann E. MORIN wrote:
> >+	 --cc="$(TARGET_CC)"			\
> >+	 --cflags="$(TARGET_CFLAGS)"		\
> 
>  It looks like the configure script is broken and fails if these variables
> contain spaces (like e.g. when ccache is used).

Doh... :-(

[--SNIP--]
>  Two options:
> - fix the scripts;
> - don't use --cc and --cflags but just pass them in the environment
> (assuming that this works).

I'll look what can be done with this. Thanks for the report.

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] 6+ messages in thread

end of thread, other threads:[~2013-12-05 17:53 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-12-04  0:08 [Buildroot] [PATCH v3] package/tvheadend: unbreak Yann E. MORIN
2013-12-04  7:45 ` Thomas Petazzoni
2013-12-04 21:31   ` Yann E. MORIN
2013-12-04  9:13 ` Peter Korsgaard
2013-12-05 15:14 ` Arnout Vandecappelle
2013-12-05 17:53   ` Yann E. MORIN

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox