summaryrefslogtreecommitdiff
path: root/package/Makefile.package.in
AgeCommit message (Collapse)Author
2011-09-30Makefile.package.in: SVN/BZR/GIT: don't append $(QUIET)Peter Korsgaard
svn/bzr/git commands don't accept the -q option for quiet operation. Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-09-30Add support for local packages through 'file://' pseudo-protocolDavid Wagner
This can be used this way : <pkg>_VERSION = 42 <pkg>_SITE = file:///some/local/directory <pkg>_SOURCE = mypkg-$(<pkg>_VERSION).tar.bz2 Can be useful to integrate a home-made project or for testing purposes. The default command to retrieve files is 'cp' but 'rsync' could also be used. Through sshfs, it should also be possible to get non-public remote files on a ssh server. [ Thomas Petazzoni: use $(PKG)_SITE and $(PKG)_SOURCE variables instead of $(1) and $(2) ] [ Peter: don't append $(QUIET), cp doesn't handle -q] Signed-off-by: David Wagner <david.wagner@free-electrons.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-09-29package: remove useless arguments from GENTARGETSThomas Petazzoni
Thanks to the pkgparentdir and pkgname functions, we can rewrite the GENTARGETS macro in a way that avoids the need for each package to repeat its name and the directory in which it is present. [Peter: pkgdir->pkgparentdir] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-09-29package: add helper functions to get package name and directory magicallyThomas Petazzoni
This commit adds the functions "pkgname" and "pkgdir", which can then be used to automatically find the name of the package and the directory of the package which does the call to GENTARGETS/AUTOTARGETS/CMAKETARGETS. These functions use the $(MAKEFILE_LIST) variable, which make automatically makes available, and which contains the list of included Makefiles, with the current Makefile being last. Thanks to this variable and a little bit of string manipulation, we can easily find out automatically the package name and the directory it is part of. These functions are used in later commits to simplify the GENTARGETS, AUTOTARGETS and CMAKETARGETS calls. [Peter: Rename to pkgmakefile->pkgdir, pkgdir->pkgparentdir as that's what it is] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-09-29package: implement a 'local' site methodThomas Petazzoni
The new override source directory mechanism allows to tell Buildroot to use a particular directory as the source directory for a package. However, this mechanism works with a local override makefile and not directly within the package recipe itself. For some use cases, it might be desirable to write a package recipe which always refers to a local source directory (and not a http, git, svn or bazaar download). This commit makes this possible by adding the 'local' site method. It allows to write package recipes as follows: MYPKG_SITE = /tmp/mypkg-source-code MYPKG_SITE_METHOD = local [...] $(eval $(call GENTARGETS,package,mypkg)) Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-09-29package: add <pkg>-rebuild and <pkg>-reconfigureThomas Petazzoni
We are often asked "how can I restart the build of a package ?" or "how can I restart the build of package from the configure part ?". Obviously, tweaking with stamp files is possible, but not very user friendly. Therefore this patch adds two new per-package targets: <pkg>-rebuild and <pkg>-reconfigure. They will remove the right stamp files and restart the complete build process (by using the 'all' target, so that not only the package is reconfigured, recompiled and reinstalled, but the root filesystem images are also regenerated). Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-09-29package: enhance infrastructure to support source dir overrideThomas Petazzoni
When a variable <pkg>_OVERRIDE_SRCDIR is defined, then Buildroot will no longer try to download, extract and patch the package. It will simply use the value of this variable as the source directory for the package. The contents of the package sources will be rsynced to the package build directory in $(O)/build/pkg-version/. This can be used to tell Buildroot that the sources for a given package are inside some directory that you control, and which can be versioned in Git/SVN, or handled in whichever way you want. Those <pkg>_OVERRIDE_SRCDIR variables will be defined by a local makefile included by Buildroot, which will be handled in a later commit. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-09-20package: add a PRE_PATCH_HOOKS hook pointThomas Petazzoni
This will be useful to integrate Xenomai and RTAI into Buildroot, so that they can patch the kernel before the normal patching process starts. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-09-18package: change ordering of stepsThomas Petazzoni
Currently, the dependency chain is : configure -> patch patch -> extract extract -> depends depends -> source + dependencies ready This is a problem for RTAI, as : * In linux/linux-ext-rtai.mk, we need the RTAI source code to be extracted/patched by the RTAI package, so we need to have a dependency on RTAI. * The RTAI package cannot have its configure step executed before the Linux kernel is built, because it needs the kernel source code to be extracted and configured. Therefore, we have a sort of circular dependency. We solve this circular dependency by having the RTAI kernel part depending on rtai-patch, and having the RTAI userspace part depending on the linux package. However, for this to work, we have to modify the dependency chain to: configure -> patch + depends patch -> extract extract -> source depends -> dependencies ready Which means that dependencies are guaranteed to be built not when the package is extracted, but when the package is configured. Which is technically more correct that what we were doing in the past. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-09-17support: move patch-kernel.sh and rename itThomas Petazzoni
The name "patch-kernel.sh" is a bit stupid, since this script is used to patch everything in Buildroot, not only kernel trees. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-08-04package: fix <pkg>_DL_VERSION valueThomas Petazzoni
993e51bc22f508fbaf39c5c49fd0595fc5c56013 introduced a <pkg>_DL_VERSION in addition to <pkg>_VERSION. This variable, purely internal to the package infrastructure, allows to store the *raw* version name, as defined in the package .mk file. However, as this version string can contain slashes, it is not appropriate to be part of the build directory name of the package. This is why <pkg>_VERSION is defined to be the same thing as <pkg>_DL_VERSION, except that slashes are replaced by underscores. However, the initial implementation didn't take into account the case of host packages. So 763822e874fd8d39b591feaa9639f76183897fb7 was committed to fix this. But unfortunately, this commit got it wrong again: it forgot the case where <pkg>_VERSION is set, but not HOST_<pkg>_VERSION. In this case, HOST_<pkg>_DL_VERSION remained empty. This can be seen for example by building host-sstrip. This problem has been noticed by Julien Boibessot <julien.boibessot@free.fr>, who also helped in fixing the issue. Thanks! The fix is simply to ensure that <pkg>_DL_VERSION is properly set in all cases: when HOST_<pkg>_VERSION is defined, when only <pkg>_VERSION is defined, and when no version is defined. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-07-18Makefile.package.in: use "" for MESSAGE argumentsPeter Korsgaard
Otherwise we get output like: >>> host-pkg-config 0.25 'Installing to host directory' Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-07-12Makefile.package.in: Add BR2_XZCAT for LZMA compression typeAllan W. Nielsen
Signed-off-by: Allan W. Nielsen <a@awn.dk> Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-07-11Improve TARGETS handling for bootloaders and kernelThomas Petazzoni
As the kernel and bootloaders do not use the normal BR2_PACKAGE_* Kconfig options, their target name was not automatically added to the global TARGETS variable. Each bootloader .mk and the linux.mk had to add their own target manually to TARGETS, and the package infrastructure was making tests on non-existing Kconfig variables. This commit improves the package infrastructure so that it looks at BR2_PACKAGE_<pkg> for packages, BR2_TARGET_<pkg> for bootloaders and at the special BR2_LINUX_KERNEL for the linux package. This allows to simplify a little bit the bootloaders and linux .mk files. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-07-10package: add support for post-download hooksThomas Petazzoni
This will be needed for the Linux kernel package, which needs to download patches in a custom way. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-07-07package: fix patching procedure for host packagesThomas Petazzoni
The patching procedure was using $($(NOHOSTPKG)_NAME) to find the name of the package without the host- prefix for host packages, which is needed to find the package directory and the prefix of the patches. However, this $($(NOHOSTPKG)_NAME) variable is empty when there is only an host variant for the package and no target variant for it. Therefore, instead of using this $($(NOHOSTPKG)_NAME) variable, we now use a new $(RAWNAME) variable, which is always the name of the package without the host- prefix, even for host packages. Thanks to Yann E. Morin for providing the tip on using patsubst instead of subst. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-07-07package: add infrastructure to install things in images/Thomas Petazzoni
This will allow the bootloader makefiles and the kernel makefile to rely on the GENTARGETS infrastructure. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-07-07Fix quoting in default extract commandThomas Petazzoni
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-07-07Makefile.package.in: Makes it possible to override the default extract commandsAllan W. Nielsen
When using GENTARGETS (or macroes depending on it), there is no way of specifying a custom extraction procedure. When using the patch one can simply define $(PACKAGE_NAME)_EXTRACT_CMDS which will override the default. If non is defined it will fall back to the default extract procedure. An example could look like this: === PACKAGE BEGIN === FGLRX_VERSION=11-3 FGLRX_SOURCE:=ati-driver-installer-$(FGLRX_VERSION)-x86.x86_64.run FGLRX_SITE:=http://www2.ati.com/drivers/linux/ define FGLRX_EXTRACT_CMDS sh $(DL_DIR)/$(FGLRX_SOURCE) --extract $(@D) endef $(eval $(call GENTARGETS,package,fglrx)) === PACKAGE END === Signed-off-by: Allan W. Nielsen <a@awn.dk> Cc: Allan W. Nielsen <a@awn.dk> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-07-07Makefile.package.in: extract: only ensure r/w access for userPeter Korsgaard
There's no reason to make the source files writable for everyone. Reported-by: Arnout Vandecappelle <arnout@mind.be> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-07-06infrastructure: remove leftover of old style hooksDaniel Hobi
Commit ae2be8d (infrastructure: remove support for old style hooks) forgot to update an uninstall rule. Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Daniel Hobi <daniel.hobi@schmid-telecom.ch> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-03-16fetch/git: clone the repository as bareJean-Christophe PLAGNIOL-VILLARD
This will reduce the space used and speed up the clone as it is only used to generate an archive, which doesn't need the git working tree. Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Tested-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2011-03-12Makefile.package.in: make <pkg>_SOURCE optionalPeter Korsgaard
For packages where the sources are included in buildroot (E.G. makedevs). We unfortunately already use no <pkg>_SOURCE to mean <pkg>_<version>.tar.gz, in several packages (and for git/svn/bzr support), so you need to define <pkg>_SOURCE to the empty string to use it. Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-12-27package infra: fix versioned patches for host packagesGustavo Zacarias
Without this patch we'd need separate versioned patch directories for target and host packages, thus having unwanted duplication. Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar> Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-12-24infrastructure: only require download tools when neededThomas Petazzoni
Instead of having to require svn, git or bzr unconditionally, only require them when one package needs them to be downloaded. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-12-24package/Makefile.package.in: Added BZR download supportDaniel Nyström
Signed-off-by: Daniel Nyström <daniel.nystrom@timeterminal.se> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-11-05package: move autoreconfigure step to pre configure hookLionel Landwerlin
[Peter: update documentation to match] Signed-off-by: Lionel Landwerlin <llandwerlin@gmail.com> Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-09-20Fix <PKG_NAME>_VERSION variable setupLionel Landwerlin
Commit 993e51bc22f508fbaf39c5c49fd0595fc5c56013 introduced a problem to compute <PKG_NAME>_VERSION variable when PKG_NAME start with 'HOST_'. Signed-off-by: Lionel Landwerlin <llandwerlin@gmail.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-09-17Merge branch 'for-2010.11/download-rework' of ↵Peter Korsgaard
git://git.busybox.net/~tpetazzoni/git/buildroot Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-09-13Revert "Makefile.package.in: allow packages to override download step"Maxime Petazzoni
This reverts commit 48cf66f1a2e2c501abeee98b7a2268b0d6d2010d. Signed-off-by: Maxime Petazzoni <maxime.petazzoni@bulix.org> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-09-13Re-implement the source-check and external-deps targetsMaxime Petazzoni
The new DL_MODE variable dispatches between the various download implementations of each method (Git, Subversion, Wget) to deal with the normal download (default mode, 'DOWNLOAD'), the source-check ('SOURCE_CHECK') and to show the external dependencies for external-deps ('SHOW_EXTERNAL_DEPS'). For the latter, the legacy script wget-show-external-deps.sh is no longer required as $(WGET) isn't called directly anymore but always through the DOWNLOAD helper. Signed-off-by: Maxime Petazzoni <maxime.petazzoni@bulix.org> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-09-13Implement basic non-wget download methodsMaxime Petazzoni
Packages can now be sourced from Git and Subversion repositories. The download method will be autodetected from the URI (git://, svn://, etc). If the repository is accessed through http(s), you can force the download method by setting a _SITE_METHOD variable to either 'git' or 'svn', respectively and without the quotes. The package's _VERSION variable defines which commit, revision, tag or branch should be checked out. For Git, it can be HEAD, a commit ID, a tag name or branch name (anything that can be checked out with `git checkout`). For Subversion, it must be a revision number, or HEAD. Signed-off-by: Maxime Petazzoni <maxime.petazzoni@bulix.org> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-09-13Remove the spider featureMaxime Petazzoni
In preparation for the re-work of the DOWNLOAD helper to support multiple download methods and protocols, the spider feature used with wget is removed for now until it is re-implemented on top of the new download methods. Signed-off-by: Maxime Petazzoni <maxime.petazzoni@bulix.org> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-09-12infrastructure: remove support for old style hooksThomas Petazzoni
Now that all old-style hooks occurences have been converted to new-style hooks, let's get rid of the code needed to support old-style hooks from the package infrastructure. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-07-18Match whole words when changing .config optionsMalte Starostik
Make KCONFIG_{ENABLE,DISABLE,SET}_OPT match whole words only. Fixes that BR_INET_IPV6 enables CONFIG_IPV6 in the kernel's .config, but also nukes everything with "CONFIG_IPV6" in its name, e.g. CONFIG_IPV6_PRIVACY. This in turn causes any IPv6 options in a custom kernel .config to be lost and oldconfig going interactive. Signed-off-by: Malte Starostik <m-starostik@versanet.de> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-07-01Makefile.package.in: allow packages to override download stepPeter Korsgaard
E.G. for checkout from version control instead. Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-06-23Makefile.autotools.in fix typo (s/extrators/extractors/)Peter Korsgaard
Noticed by Michael S. Zick. Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-06-23Makefile.package.in: Add support for *.tbz2 package archivesPaul Jones
Signed-off-by: Paul Jones <paul@pauljones.id.au> Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-06-22Add generic functions to enable/set/disable options in kconfig filesThomas Petazzoni
The KCONFIG_ENABLE_OPT, KCONFIG_SET_OPT and KCONFIG_DISABLE_OPT are new make functions to respectively enable, set and disable options in Kconfig-like files (as used by the kernel, uClibc or Busybox). They can be used as follows : $(call KCONFIG_ENABLE_OPT,CONFIG_FOOBAR,/path/to/.config) $(call KCONFIG_SET_OPT,CONFIG_BARFOO,foobar,/path/to/.config) $(call KCONFIG_DISABLE_OPT,CONFIG_FARBOO,/path/to/.config) Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-05-21package: Add new <pkg>-show-depends to list dependenciesThomas Petazzoni
The new <pkg>-show-depends simply outputs the list of dependencies for the given package. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2010-05-06Makefile.package.in: optimize UPPERCASE macroPeter Korsgaard
As noticed by Thomas, we call the UPPERCASE macro a lot, and it slows down startup quite a bit. Optimize it by implementing it in make, rather than forking a shell + tr. The implementation is heavily based on the 'up' macro from gmsl (http://gmsl.sf.net) With this in place, startup time is ~5 times lower. Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
2010-04-11Do not remove documentation on a per-package basisThomas Petazzoni
Since the documentation cleanup is done by the main Makefile in a global way, there's no need to do that on a per-package basis in the generic package infrastructure. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
2009-12-15Add generic package infrastructureThomas Petazzoni
This new infrastructure allows to write simpler .mk files for packages not using the autotools as their build system, by factorizing many common steps (download, extract, patching), and will more easily allow Buildroot-wide changes in how the packages are handled. The main macro is called GENTARGETS and works similarly to the AUTOTARGETS macro that already exists for autotools-based packages. However, the set of variables to be defined before calling the macro is different. Refer to the documentation for details. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>