Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: John Stile <john@stilen.com>
To: buildroot@busybox.net
Subject: [Buildroot] adding dhcpcd
Date: Wed, 06 Mar 2013 11:50:17 -0800	[thread overview]
Message-ID: <1362599417.20183.159.camel@genx> (raw)
In-Reply-To: <20130306195844.2f8c14b6@skate>

Dear Thomas,
On Wed, 2013-03-06 at 19:58 +0100, Thomas Petazzoni wrote:
> Dear John Stile,
> 
> On Wed, 06 Mar 2013 10:01:56 -0800, John Stile wrote:
> 
> > If I'm going to rebuild a good package I might as well use the latest
> > version of dhcpcd, so I'll start with 5.6.7.
> 
> Good idea.
> 
> > I am not sure if
> > http://roy.marples.name/downloads/dhcpcd/dhcpcd-5.6.7.tar.bz2
> > uses cmake or automake.  The tarball contains a Makefile, and their
> > configure script has the comment, "Try and be like autotools configure,
> > but without autotools", so I assume it is just using gnu make.
> 
> Your analysis is correct. It has an hand-crafted configure script that
> writes values into a config.mk, which presumably, gets read by the
> Makefile. So it's neither autotools nor CMake, so you have to use the
> "generic-package" infrastructure.
> 
> >  It does
> > contain a Makefile... but I don't see how to use it from:
> > http://buildroot.org/downloads/manual/manual.html#generic-package-tutorial
> > 
> > So I tried to make a pacakge using 
> > $(eval $(generic-package))
> 
> Good.
> 
> Your file below has been line-wrapped by your e-mail client. Not a big
> issue just to discuss, but if you want to submit a patch, you'll have
> to fix your e-mail client, or better, use 'git send-email'.
> 
> > When I run make in buildroot, the package is not downloaded, or built.
> > Below is my package file so far.
> 
> Please send a complete patch. The main reason is usually that your
> BR2_PACKAGE_<foo> option is misnamed, or that the package is not
> located in the proper directory.
> 
> When creating a package named "foo", it is very important that:
> 
>  * The option in Config.in is BR2_PACKAGE_FOO.
> 
>  * The package is located in package/foo/.
> 
> > #############################################################
> > #
> > # dhcpcd
> > #
> > #############################################################
> > 
> > DHCPCD_VERSION = 5.6.7
> > DHCPCD_SOURCE = dhcpcd-$(DHCPCD_VERSION).tar.bz2
> > DHCPCD_SITE = http://roy.marples.name/downloads/dhcpcd
> > DHCPCD_LICENSE = GPLv3+
> > DHCPCD_LICENSE_FILES = COPYING
> 
> The license is not GPLv3+, it's BSD-2c, and there is no COPYING file.
> 
> > DHCPCD_INSTALL_STAGING = YES
> 
> No, it's just installing an application, so setting
> DHCPD_INSTALL_STAGING to YES is not necessary.
> 
> > DHCPCD_CONFIG_SCRIPTS = configure
> 
> No, the configure script is not a <foo>-config script.
> 
> > DHCPCD_DEPENDENCIES = 
> 
> Not needed, it is empty by default.
> 
> > DHCPCD_SITE_METHOD = wget
> 
> Not needed, it is guessed automatically from the URL (which starts by
> http://).
> 
> Before the BUILD_CMDS, you should have a:
> 
> define DHCPD_CONFIGURE_CMDS
> 	(cd $(@D);
> 		...some environment variables...
> 		./configure
> 		...some options...)
> endef
> 
> This will call the configure script.
> 
> > define DHCPCD_BUILD_CMDS
> > 	$(MAKE) CC="$(TARGET_CC)" LD="$(TARGET_LD)" -C $(@D) all
> > endef
> 
> If you run the configure script, then the CC and LD are defined in
> config.mk, so there should be no need to pass them in the environment
> anymore.
> 
> > define DHCPCD_INSTALL_STAGING_CMDS
> > 	$(INSTALL) -D -m 0644 $(@D)/dhcpcd.conf
> > $(STAGING_DIR)/etc/dhcpcd.conf 
> > 	$(INSTALL) -D -m 0755 $(@D)/dhcpcd $(STAGING_DIR)/usr/bin/dhcpcd
> > endef
> 
> Not needed as we should not be installing dhcpcd in the staging area.
> 
> > define DHCPCD_INSTALL_TARGET_CMDS
> > 	$(INSTALL) -D -m 0755 $(@D)/dhcpcd $(TARGET_DIR)/usr/bin
> 
> This should be:
> 
> 	$(INSTALL) -D -m 0755 $(@D)/dhcpcd $(TARGET_DIR)/usr/bin/dhcpcd
> 
> > 	$(INSTALL) -d -m 0755 $(TARGET_DIR)/etc/dhcpcd.conf
> 
> Are you you want to create the /etc/dhcpcd.conf file? It would have
> thought you wanted to copy the default dhcpcd.conf configuration file,
> no? If so:
> 
> 	$(INSTALL) -D -m 0644 $(@D)/dhcpcd.conf $(TARGET_DIR)/etc/dhcpcd.conf
> 
> > endef
> > 
> > define DHCPCD_PERMISSIONS
> > 	/usr/bin/dhcpcd  f  4755  0  0  -  -  -  -  -
> > endef
> 
> I'm not sure, does dhcpcd needs to be installed setuid-root?
> 
> Anyway, despite those comments, you are definitely on the right track
> to create a proper package!

> Thanks,
> 
> Thomas

I think I have addressed the problem with the make file, but it still
silently does not build.  I am attaching a complete patch.

------------------
Begin dhcpcd.patch
------------------

Adding package dhcpcd to buildroot

signed-off-by: John Stile <john@stilen.com>

--- a/buildroot-2011.11/package/Config.in	2013-03-06 11:40:52.000000000 -0800
+++ b/buildroot-2011.11/package/Config.in	2013-02-28 14:59:32.000000000 -0800
@@ -409,6 +409,7 @@ if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
 source "package/dhcp/Config.in"
 endif
 source "package/dhcpdump/Config.in"
+source "package/dhcpcd/Config.in"
 source "package/dnsmasq/Config.in"
 source "package/dropbear/Config.in"
 source "package/ebtables/Config.in"

--- a/buildroot-2011.11/package/dhcpcd/Config.in	2013-03-06 11:44:03.000000000 -0800
+++ b/buildroot-2011.11/package/dhcpcd/Config.in	2013-03-06 07:55:53.000000000 -0800
@@ -0,0 +1,5 @@
+config BR2_PACKAGE_DHCPCD
+	bool "dhcpcd"
+	depends on BR2_INET_IPV6
+	help
+	an RFC2131 compliant DHCP client

--- a/buildroot-2011.11/package/dhcpcd/dhcpcd.mk	2013-03-06 11:44:03.000000000 -0800
+++ b/buildroot-2011.11/package/dhcpcd/dhcpcd.mk	2013-03-06 11:38:17.000000000 -0800
@@ -0,0 +1,43 @@
+#############################################################
+#
+# dhcpcd
+#
+#############################################################
+
+DHCPCD_VERSION = 5.6.7
+DHCPCD_SOURCE = dhcpcd-$(DHCPCD_VERSION).tar.bz2
+DHCPCD_SITE = http://roy.marples.name/downloads/dhcpcd/
+DHCPCD_LICENSE = BSD-2c
+DHCPCD_INSTALL_STAGING = NO
+
+CONFIG_ARGS = $(BR2_GCC_TARGET_ARCH)
+
+ifeq ($(BR2_USE_MMU),n)
+    CONFIG_ARGS =: --disable-fork
+endif 
+
+define DHCPD_CONFIGURE_CMDS
+	(cd $(@D);
+	...some environment variables...
+	./configure \
+	$(CONFIG_ARGS) )
+endef
+
+define DHCPCD_BUILD_CMDS
+	$(MAKE) -C $(@D) all
+endef
+
+define DHCPCD_INSTALL_TARGET_CMDS
+	$(INSTALL) -D -m 0755 $(@D)/dhcpcd $(TARGET_DIR)/usr/bin/dhcpcd
+	$(INSTALL) -D -m 0644 $(@D)/dhcpcd.conf $(TARGET_DIR)/etc/dhcpcd.conf
+endef
+
+define DHCPCD_DEVICES
+	#/dev/foo  c  666  0  0  42  0  -  -  -
+endef
+
+define DHCPCD_PERMISSIONS
+	/usr/bin/dhcpcd  f  4755  0  0  -  -  -  -  -
+endef
+
+$(eval $(generic-package))

  reply	other threads:[~2013-03-06 19:50 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-01 18:37 [Buildroot] adding dhcpcd John Stile
2013-03-01 18:47 ` Gustavo Zacarias
2013-03-05 16:21   ` John Stile
2013-03-05 18:47     ` Thomas Petazzoni
2013-03-06 18:01       ` John Stile
2013-03-06 18:58         ` Thomas Petazzoni
2013-03-06 19:50           ` John Stile [this message]
2013-03-06 20:05             ` Reuben Dowle
2013-03-06 20:08               ` Thomas Petazzoni
2013-03-06 20:41                 ` John Stile
2013-03-06 20:54                   ` Thomas Petazzoni
2013-03-06 21:02                     ` John Stile
2013-03-06 21:14                       ` Thomas Petazzoni
2013-03-06 21:20                         ` John Stile
2013-03-06 21:29                           ` Thomas Petazzoni
2013-03-06 22:57                             ` John Stile
2013-03-06 23:48                               ` Gilles Talis
2013-03-07  1:44                                 ` John Stile
2013-03-07  4:51                                   ` Gilles Talis
2013-03-07  7:31                                     ` John Stile
2013-03-07  8:53                                       ` Gilles Talis
2013-03-07 14:53                                         ` John Stile
2013-03-07 15:03                                           ` Thomas Petazzoni
2013-03-07 15:30                                             ` John Stile
2013-03-07 17:15                                               ` Thomas Petazzoni
2013-03-06 20:06             ` Thomas Petazzoni

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1362599417.20183.159.camel@genx \
    --to=john@stilen.com \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox