diff mbox

[1/2] dos2unix: add target support

Message ID d04d05bf5fb09fd02747689fe348375cdff4fc6a.1441089817.git.baruch@tkos.co.il
State Superseded
Headers show

Commit Message

Baruch Siach Sept. 1, 2015, 6:43 a.m. UTC
From: James Knight <james.knight@rockwellcollins.com>

Allow the `dos2unix` utility to be built and installed on the target
system.

[baruch: properly handle target gettext]
Signed-off-by: James Knight <james.knight@rockwellcollins.com>
Signed-off-by: Baruch Siach <baruch@tkos.co.il>
---
v2:
   * Fix static build with gettext
   * Support build without locale support
---
 package/Config.in            |  3 +++
 package/dos2unix/Config.in   | 11 +++++++++++
 package/dos2unix/dos2unix.mk | 24 +++++++++++++++++++++---
 3 files changed, 35 insertions(+), 3 deletions(-)
 create mode 100644 package/dos2unix/Config.in

Comments

Vicente Olivert Riera Sept. 1, 2015, 10:57 a.m. UTC | #1
Dear Baruch Siach and James Knight,

On 09/01/2015 07:43 AM, Baruch Siach wrote:
> From: James Knight <james.knight@rockwellcollins.com>
> 
> Allow the `dos2unix` utility to be built and installed on the target
> system.
> 
> [baruch: properly handle target gettext]
> Signed-off-by: James Knight <james.knight@rockwellcollins.com>
> Signed-off-by: Baruch Siach <baruch@tkos.co.il>
> ---
> v2:
>    * Fix static build with gettext
>    * Support build without locale support
> ---

I guess Baruch forgot to add v2 the subject line and James forgot to
mark its previous patch as superseded in Patchwork.

Regards,

Vincent.
Baruch Siach Sept. 1, 2015, 11:30 a.m. UTC | #2
Hi Vicent,

On Tue, Sep 01, 2015 at 11:57:10AM +0100, Vicente Olivert Riera wrote:
> On 09/01/2015 07:43 AM, Baruch Siach wrote:
> > From: James Knight <james.knight@rockwellcollins.com>
> > 
> > Allow the `dos2unix` utility to be built and installed on the target
> > system.
> > 
> > [baruch: properly handle target gettext]
> > Signed-off-by: James Knight <james.knight@rockwellcollins.com>
> > Signed-off-by: Baruch Siach <baruch@tkos.co.il>
> > ---
> > v2:
> >    * Fix static build with gettext
> >    * Support build without locale support
> > ---
> 
> I guess Baruch forgot to add v2 the subject line and James forgot to
> mark its previous patch as superseded in Patchwork.

You are correct on the former, my fault. As for the latter I guess James has 
not seen the v2 patch yet, given the timezone difference.

baruch
Peter Korsgaard Sept. 1, 2015, 9:37 p.m. UTC | #3
>>>>> "Baruch" == Baruch Siach <baruch@tkos.co.il> writes:

 > From: James Knight <james.knight@rockwellcollins.com>
 > Allow the `dos2unix` utility to be built and installed on the target
 > system.

 > [baruch: properly handle target gettext]
 > Signed-off-by: James Knight <james.knight@rockwellcollins.com>
 > Signed-off-by: Baruch Siach <baruch@tkos.co.il>
 > ---
 > v2:
 >    * Fix static build with gettext
 >    * Support build without locale support
 > ---
 >  package/Config.in            |  3 +++
 >  package/dos2unix/Config.in   | 11 +++++++++++
 >  package/dos2unix/dos2unix.mk | 24 +++++++++++++++++++++---
 >  3 files changed, 35 insertions(+), 3 deletions(-)
 >  create mode 100644 package/dos2unix/Config.in

 > diff --git a/package/Config.in b/package/Config.in
 > index 914b83833d3e..7c5fe4ec36b2 100644
 > --- a/package/Config.in
 > +++ b/package/Config.in
 > @@ -115,6 +115,9 @@ menu "Development tools"
 >  	source "package/cvs/Config.in"
 >  if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
 >  	source "package/diffutils/Config.in"
 > +endif
 > +	source "package/dos2unix/Config.in"
 > +if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS

Busybox does have a dos2unix applet, so this should also be inside the
conditional.


 >  	source "package/findutils/Config.in"
 >  endif
 >  	source "package/flex/Config.in"
 > diff --git a/package/dos2unix/Config.in b/package/dos2unix/Config.in
 > new file mode 100644
 > index 000000000000..fdcd0700509b
 > --- /dev/null
 > +++ b/package/dos2unix/Config.in
 > @@ -0,0 +1,11 @@
 > +config BR2_PACKAGE_DOS2UNIX
 > +	select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT_IF_LOCALE
 > +	depends on BR2_USE_WCHAR # gettext

This looks odd - If wchar is only for gettext then we should allow
non-locale builds without wchar. A quick test shows that dos2unix uses
wchar several places, but this can be disabled if UCS= is passed on the
make line (wchar_t is still referred in 3 error prints though).


 >  DOS2UNIX_VERSION = 7.0
 >  DOS2UNIX_SITE = http://waterlan.home.xs4all.nl/dos2unix
 > -DOS2UNIX_DEPENDENCIES = host-gettext
 >  DOS2UNIX_LICENSE = BSD-2c
 >  DOS2UNIX_LICENSE_FILES = COPYING.txt
 > +HOST_DOS2UNIX_DEPENDENCIES = host-gettext

If gettext is optional for target builds, why do we then force it for
host builds?
Baruch Siach Sept. 2, 2015, 5:49 a.m. UTC | #4
Hi Peter,

On Tue, Sep 01, 2015 at 11:37:51PM +0200, Peter Korsgaard wrote:
> >>>>> "Baruch" == Baruch Siach <baruch@tkos.co.il> writes:
> 
>  > From: James Knight <james.knight@rockwellcollins.com>
>  > Allow the `dos2unix` utility to be built and installed on the target
>  > system.
> 
>  > [baruch: properly handle target gettext]
>  > Signed-off-by: James Knight <james.knight@rockwellcollins.com>
>  > Signed-off-by: Baruch Siach <baruch@tkos.co.il>
>  > ---
>  > v2:
>  >    * Fix static build with gettext
>  >    * Support build without locale support
>  > ---
>  >  package/Config.in            |  3 +++
>  >  package/dos2unix/Config.in   | 11 +++++++++++
>  >  package/dos2unix/dos2unix.mk | 24 +++++++++++++++++++++---
>  >  3 files changed, 35 insertions(+), 3 deletions(-)
>  >  create mode 100644 package/dos2unix/Config.in
> 
>  > diff --git a/package/Config.in b/package/Config.in
>  > index 914b83833d3e..7c5fe4ec36b2 100644
>  > --- a/package/Config.in
>  > +++ b/package/Config.in
>  > @@ -115,6 +115,9 @@ menu "Development tools"
>  >  	source "package/cvs/Config.in"
>  >  if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
>  >  	source "package/diffutils/Config.in"
>  > +endif
>  > +	source "package/dos2unix/Config.in"
>  > +if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
> 
> Busybox does have a dos2unix applet, so this should also be inside the
> conditional.

Will fix.

>  >  	source "package/findutils/Config.in"
>  >  endif
>  >  	source "package/flex/Config.in"
>  > diff --git a/package/dos2unix/Config.in b/package/dos2unix/Config.in
>  > new file mode 100644
>  > index 000000000000..fdcd0700509b
>  > --- /dev/null
>  > +++ b/package/dos2unix/Config.in
>  > @@ -0,0 +1,11 @@
>  > +config BR2_PACKAGE_DOS2UNIX
>  > +	select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT_IF_LOCALE
>  > +	depends on BR2_USE_WCHAR # gettext
> 
> This looks odd - If wchar is only for gettext then we should allow
> non-locale builds without wchar. A quick test shows that dos2unix uses
> wchar several places, but this can be disabled if UCS= is passed on the
> make line (wchar_t is still referred in 3 error prints though).

It seems like most packages conditionally selecting BR2_PACKAGE_GETTEXT do not 
depend on BR2_USE_WCHAR. But then, how do you prevent gettext build when the 
toolchain has no wchar support? The autobuilder 
(http://autobuild.buildroot.net/?reason=gettext-0.19.5.1) shows no gettext 
build failure.

>  >  DOS2UNIX_VERSION = 7.0
>  >  DOS2UNIX_SITE = http://waterlan.home.xs4all.nl/dos2unix
>  > -DOS2UNIX_DEPENDENCIES = host-gettext
>  >  DOS2UNIX_LICENSE = BSD-2c
>  >  DOS2UNIX_LICENSE_FILES = COPYING.txt
>  > +HOST_DOS2UNIX_DEPENDENCIES = host-gettext
> 
> If gettext is optional for target builds, why do we then force it for
> host builds?

Do we care about host packages binaries size?

In any case, this is a matter for another patch.

Thanks for reviewing,
baruch
Peter Korsgaard Sept. 2, 2015, 6:45 a.m. UTC | #5
>>>>> "Baruch" == Baruch Siach <baruch@tkos.co.il> writes:

Hi,

>> This looks odd - If wchar is only for gettext then we should allow
 >> non-locale builds without wchar. A quick test shows that dos2unix uses
 >> wchar several places, but this can be disabled if UCS= is passed on the
 >> make line (wchar_t is still referred in 3 error prints though).

 > It seems like most packages conditionally selecting BR2_PACKAGE_GETTEXT do not 
 > depend on BR2_USE_WCHAR. But then, how do you prevent gettext build when the 
 > toolchain has no wchar support? The autobuilder 
 > (http://autobuild.buildroot.net/?reason=gettext-0.19.5.1) shows no gettext 
 > build failure.

I believe it is because locale support (in uClibc) implies wchar
support, so BR2_NEEDS_GETTEXT_IF_LOCALE will only be true if locale
support (and hence wchar) is enabled.


 >> >  DOS2UNIX_VERSION = 7.0
 >> >  DOS2UNIX_SITE = http://waterlan.home.xs4all.nl/dos2unix
 >> > -DOS2UNIX_DEPENDENCIES = host-gettext
 >> >  DOS2UNIX_LICENSE = BSD-2c
 >> >  DOS2UNIX_LICENSE_FILES = COPYING.txt
 >> > +HOST_DOS2UNIX_DEPENDENCIES = host-gettext
 >> 
 >> If gettext is optional for target builds, why do we then force it for
 >> host builds?

 > Do we care about host packages binaries size?

No, not very much - But we do care about build time. If there's no need
to build host-gettext then we shouldn't do so.


 > In any case, this is a matter for another patch.

Agreed.
diff mbox

Patch

diff --git a/package/Config.in b/package/Config.in
index 914b83833d3e..7c5fe4ec36b2 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -115,6 +115,9 @@  menu "Development tools"
 	source "package/cvs/Config.in"
 if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
 	source "package/diffutils/Config.in"
+endif
+	source "package/dos2unix/Config.in"
+if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
 	source "package/findutils/Config.in"
 endif
 	source "package/flex/Config.in"
diff --git a/package/dos2unix/Config.in b/package/dos2unix/Config.in
new file mode 100644
index 000000000000..fdcd0700509b
--- /dev/null
+++ b/package/dos2unix/Config.in
@@ -0,0 +1,11 @@ 
+config BR2_PACKAGE_DOS2UNIX
+	select BR2_PACKAGE_GETTEXT if BR2_NEEDS_GETTEXT_IF_LOCALE
+	depends on BR2_USE_WCHAR # gettext
+	bool "dos2unix"
+	help
+	  dos2unix converts text file line endings between CRLF and LF
+
+	  http://freshmeat.net/projects/dos2unix
+
+comment "dos2unix needs a toolchain w/ wchar"
+	depends on !BR2_USE_WCHAR
diff --git a/package/dos2unix/dos2unix.mk b/package/dos2unix/dos2unix.mk
index 2d7fcbbc6958..34777d0bceda 100644
--- a/package/dos2unix/dos2unix.mk
+++ b/package/dos2unix/dos2unix.mk
@@ -6,17 +6,35 @@ 
 
 DOS2UNIX_VERSION = 7.0
 DOS2UNIX_SITE = http://waterlan.home.xs4all.nl/dos2unix
-DOS2UNIX_DEPENDENCIES = host-gettext
 DOS2UNIX_LICENSE = BSD-2c
 DOS2UNIX_LICENSE_FILES = COPYING.txt
+HOST_DOS2UNIX_DEPENDENCIES = host-gettext
+
+ifeq ($(BR2_ENABLE_LOCALE),)
+DOS2UNIX_MAKE_OPTS += ENABLE_NLS=
+endif
+
+ifeq ($(BR2_NEEDS_GETTEXT_IF_LOCALE),y)
+DOS2UNIX_DEPENDENCIES += gettext
+DOS2UNIX_MAKE_OPTS += LIBS_EXTRA=-lintl
+endif
+
+define DOS2UNIX_BUILD_CMDS
+	$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) $(DOS2UNIX_MAKE_OPTS)
+endef
+
+define DOS2UNIX_INSTALL_TARGET_CMDS
+	$(TARGET_CONFIGURE_OPTS) $(MAKE) -C $(@D) DESTDIR=$(TARGET_DIR) \
+		$(DOS2UNIX_MAKE_OPTS) install
+endef
 
 define HOST_DOS2UNIX_BUILD_CMDS
 	$(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D)
 endef
 
 define HOST_DOS2UNIX_INSTALL_CMDS
-	$(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) \
-		install DESTDIR=$(HOST_DIR)
+	$(HOST_CONFIGURE_OPTS) $(MAKE) -C $(@D) DESTDIR=$(HOST_DIR) install
 endef
 
+$(eval $(generic-package))
 $(eval $(host-generic-package))