[Buildroot] adding dhcpcd
Thomas Petazzoni
thomas.petazzoni at free-electrons.com
Wed Mar 6 18:58:44 UTC 2013
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
--
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
More information about the buildroot
mailing list