aboutsummaryrefslogtreecommitdiff
path: root/Makefile
Commit message (Collapse)AuthorAgeFilesLines
* Makefile: Ensure BASE_TARGET_DIR exists, not TARGET_DIRGravatar Peter Korsgaard2018-03-311-1/+1
| | | | | | | | This was present in Yann's original patch, but got dropped when I rebased commit 7e9870ce32 (core: introduce intermediate BASE_TARGET_DIR variable) to fix the Makefile conflicts. Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* fs: remove intermediate artefactsGravatar Yann E. MORIN2018-03-311-0/+1
| | | | | | | | | | | | | | | | | | | | Each of the intermediate, per-rootfs target directories, as well as the intermediate tarball, can take quite some place, and is mostly a duplication of what's already in target/. The only delta, if any, would be the tweaks made by the filesystem image generations, but those tweaks are most probably only meaningful when seen as root. We normally do not remove intermediate files, but those can be quite large, and are not directly usable by, nor accessible to the user. So, get rid of them once the filesystem has been generated. This does not need to be done in fakeroot. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Cc: Arnout Vandecappelle <arnout@mind.be> Tested-by: Matt Weber <matthew.weber@rockwellcollins.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* fs: introduce per-rootfs TARGET_DIR variableGravatar Yann E. MORIN2018-03-311-1/+3
| | | | | | | | | | ... which for now still points to the base target directory, but this is a step forward. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Cc: Arnout Vandecappelle <arnout@mind.be> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* fs: set per-rootfs variable nameGravatar Yann E. MORIN2018-03-311-0/+3
| | | | | | | | | | | | | | | | | | | | Like we do for packages with the PKG variable, set ROOTFS to contain the upper-case name of the rootfs currently being generated. This will be useful in later patches, when we need more per-rootfs variables, like a per-rootfs TARGET_DIR for example. In Makefiles, per-rule variables trickle down the dependency chain, to all dependencies of that rule, so we have to stop ROOTFS as soon as we're not in a rootfs. This means we have to stop it at target-finalize (which is a dependency of all filesystems), and for each package individually, since some packages (host or target) can be direct dependencies of filesystems as well. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Cc: Arnout Vandecappelle <arnout@mind.be> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* core: introduce intermediate BASE_TARGET_DIR variableGravatar Yann E. MORIN2018-03-311-4/+5
| | | | | | | | | | | | | | | | | | | | | This new BASE_TARGET_DIR variable is set in stone to point to the real location where packages will be installed. Its name is modelled after its definition: it is located in $(BASE_DIR), and it is named 'target/', hence BASE_TARGET_DIR. The already-existing TARGET_DIR variable now simply points to the same location, except that it is recursively expanded, so that we can later change it depending on the context. All locations that really need to reference the existing target/ directory, are changed to use BASE_TARGET_DIR; surprinsigly enough, they all seem to be located in the main Makefile. :-) The rest is left with using good-old TARGET_DIR. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Cc: Arnout Vandecappelle <arnout@mind.be> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* Makefile: create symlink to non-default HOST_DIRGravatar Arnout Vandecappelle (Essensium/Mind)2018-03-311-2/+8
| | | | | | | | | | | | | | | | | | | If BR2_HOST_DIR is not the default, it can be difficult to find the host directory (i.e., HOST_DIR always has to be passed explicitly in addition to the output directory). For example, the Eclipse plugin assumes that HOST_DIR=BASE_DIR/host. Create a symlink from $(BASE_DIR)/host to $(HOST_DIR) if it is not the default. Also remove it in the clean target. When BR2_HOST_DIR is the default, HOST_DIR_SYMLINK will be empty so there will be no additional dependency to dirs and nothing to remove in clean. Fixes https://bugs.busybox.net/show_bug.cgi?id=10151 Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
* Makefile: move mkdir rule to after HOST_DIR is definedGravatar Arnout Vandecappelle (Essensium/Mind)2018-03-311-9/+5
| | | | | | | | | | | | | | | | | HOST_DIR is defined twice: once to its default value before .config is included, and once more to BR2_HOST_DIR after .config is included. However, the rule that defines the mkdir for HOST_DIR comes between these two, so it will always use the default definition. Therefore, if a non-default BR2_HOST_DIR is used, there will be no rule to create that directory, while the dirs target depends on it. This happens to work at the moment, because in the dirs target, $(STAGING_DIR) comes before $(HOST_DIR), so $(HOST_DIR) will be created implicitly. However, this will fail in top-level parallel builds where both will be created in parallel. Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
* Makefile: fix build break in sdk targetGravatar Stefan Becker2018-03-261-0/+1
| | | | | | | | | | | | After commit 6729050f3a49dba42d2d881d31dbefd6b82b8dad nothing creates $(HOST_DIR)/share/buildroot anymore, causing sdk to fail with: /bin/bash: .../output/host/share/buildroot/sdk-location: No such file or directory Add creation of that directory to the "sdk" build steps itself. Signed-off-by: Stefan Becker <chemobejk@gmail.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* core: kill DEPENDENCIES_HOST_PREREQGravatar Thomas Petazzoni2018-03-251-2/+0
| | | | | | | | | Now that DEPENDENCIES_HOST_PREREQ is no longer used anywhere, we can kill it. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* package/pkg-generic: handle host-fakedate as a regular dependencyGravatar Thomas Petazzoni2018-03-251-1/+0
| | | | | | | | | | | | | | | | | | | This commit moves the host-fakedate dependency handling from DEPENDENCIES_HOST_PREREQ to a proper regular dependency handled by the package infrastructure. host-fakedate is added as dependency to all packages, except host-skeleton, because we depend on it. In addition, we make sure that host-fakedate does not grow a dependency on host-{tar,xz,lzip,ccache} to avoid circular dependencies. host-fakedate does not need any extraction tool and does not need to build C/C++ code (the source code is just a shell script available in Buildroot). Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* Makefile, skeleton: move the host skeleton logic to host-skeleton packageGravatar Thomas Petazzoni2018-03-251-12/+1
| | | | | | | | | | | | | | | | | | | | | As part of the per-package SDK work, we want to avoid having logic that installs files to the global HOST_DIR, and instead do it inside packages. One thing that gets installed to the global HOST_DIR is the minimal "skeleton" that we create in host: - the "usr" symbolic link for backward compatibility - the "lib" directory, and its lib64 or lib32 symbolic links This commit moves this logic to a new host-skeleton package, and makes all packages (except itself) depend on it. While at it, use $(Q) instead of @ in the HOST_SKELETON_INSTALL_CMDS. [Peter: drop host-patchelf reference in commit message] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* Kickoff 2018.05 cycleGravatar Peter Korsgaard2018-03-051-1/+1
| | | | Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* Update for 2018.022018.02Gravatar Peter Korsgaard2018-03-041-2/+2
| | | | Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* core: find a host UTF-8 localeGravatar Yann E. MORIN2018-03-041-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | Some packages really want to use an UTF-8 locale, or they break. However, there is no guarantee that any given locale is available on a system. For example,, while most mainstream distros (Debian and derivatives, Fedora...) do have the generic, language-agnostic C.UTF-8 locale, Gentoo does not provide it. So, find the first UTF-8 locale available on the system, and take any that is available. We however do favour using the user-set current locale, then using the language-agnostic C.UTF-8, and eventually any random UTF-8 locale. Note: we only need to enforce LC_ALL, because setting it implies everything else: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap08.html#tag_08_02 """ 1. If the LC_ALL environment variable is defined and is not null, the value of LC_ALL shall be used. """ [Peter: use same regexp as in dependencies.sh] Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* Update for 2018.02-rc32018.02-rc3Gravatar Peter Korsgaard2018-02-271-2/+2
| | | | Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* Update for 2018.02-rc22018.02-rc2Gravatar Peter Korsgaard2018-02-151-2/+2
| | | | Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* Update for 2018.02-rc12018.02-rc1Gravatar Peter Korsgaard2018-02-051-2/+2
| | | | Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* Makefile, manual, website: Bump copyright yearGravatar Peter Korsgaard2018-02-011-1/+1
| | | | | | Happy 2018! Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* Makefile: Store OS release in /usr/lib/os-releaseGravatar Chris Lesiak2018-01-281-1/+2
| | | | | | | | | | | | | | It is recommended that vendor trees store OS release information in /usr/lib/os-release and that /etc/os-release should be a relative symlink to /usr/lib/os-release. For more details, see: http://0pointer.de/public/systemd-man/os-release.html [Peter: don't hide command, simplify ln invocation] Signed-off-by: Chris Lesiak <chris.lesiak@licor.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* pkg-{download, generic}: remove source-checkGravatar Maxime Hadjinlian2018-01-081-6/+1
| | | | | | | | | | | | This feature is not used by anyone in the core developpers and makes a drastic simplification of the pkg-download infrastructure harder. The future patch will move much of what's in the current pkg-download.mk file into the dl-wrapper which is a shell script. Signed-off-by: Maxime Hadjinlian <maxime.hadjinlian@gmail.com> Acked-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* Merge branch 'next'Gravatar Thomas Petazzoni2017-12-011-1/+5
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This merges the next branch accumulated during the 2017.11 release cycle back into the master branch. A few conflicts had to be resolved: - In the DEVELOPERS file, because Fabrice Fontaine was added as a developer for libupnp in master, and for libupnp18 in next. Resolution is simple: add him for both. - linux/Config.in, because we updated the 4.13.x release used by default in master, while we moved to 4.14 in next. Resolution: use 4.14. - package/libupnp/libupnp.hash: a hash for the license file was added in master, while the package was bumped into next. Resolution: keep the hash for the license file, and keep the hash for the newest version of libupnp. - package/linux-headers/Config.in.host: default version of the kernel headers for 4.13 was bumped to the latest 4.13.x in master, but was changed to 4.14 in next. Resolution: use 4.14. - package/samba4/: samba was bumped to 4.6.11 in master for security reasons, but was bumped to 4.7.3 in next. Resolution: keep 4.7.3. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
| * core: sort packages and eliminate duplicates in show-targetsGravatar Yann E. MORIN2017-11-301-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, enabling more than one filesystem image will make 'show-targets' list a few host packages more than once. This is because all filesystem images add the same set of host-packages to their dependencies, which are then added as-is to the package list. Thus, host-fakeroot, host-makedevs and, if needed, host-mkpasswd will appear as many times as there are filesystem images enabled. Fix that by sorting the package list, thus eliminating duplicates from that list. Also sort the rootfs list for good measure. Sort the two separately, so that rootfses are last. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Arnout Vandecappelle <arnout@mind.be> Cc: Peter Korsgaard <jacmet@uclibc.org> Reviewed-by: Romain Naour <romain.naour@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
| * core: check files are not touched by more than one packageGravatar Yann E. MORIN2017-11-271-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, we do nothing about packages that touch the same file: given a specific configuration, the result is reproducible (even though it might not be what the user expected) because the build order is guaranteed. However, when we later introduce top-level parallel build, we will no longer be able to guarantee a build order, by the mere way of it being parallel. Reconciliating all those modified files will be impossible to do automatically. The only way will be to refuse such situations. As a preliminary step, introduce a helper script that detects files that are being moified by two or more packages, and reports them and the impacted packages, at the end of the build. The list being reported at the end of the build will make it prominently visible in autobuilder results, so we can assess the problem, if any. Later on, calling that helper script can be done right after the package installation step, to bail out early. Thanks Arnout for the pythonist way to write default dictionaries! ;-) Note: doing it in python rather than a shell script is impressively faster: where the shell script takes ~1.2s on a minimalist build, the python script only takes ~0.015s, that is about 80 times faster. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Arnout Vandecappelle <arnout@mind.be> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Peter Korsgaard <peter@korsgaard.com> Cc: Baruch Siach <baruch@tkos.co.il> Cc: Peter Seiderer <ps.report@gmx.net> [Thomas: rename script without .py extension.] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* | Kickoff 2018.02 cycleGravatar Peter Korsgaard2017-12-011-1/+1
| | | | | | | | Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* | Update for 2017.112017.11Gravatar Peter Korsgaard2017-11-301-2/+2
| | | | | | | | Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* | Fix makefile include order by using sort/wildcard.Gravatar Peter Seiderer2017-11-241-4/+4
|/ | | | | | | | | | | | | | | | | | | | | | | | The 'include' directive in GNU make supports wildcards, but their expansion has no defined sort order (GLOB_NOSORT is passed to glob()). Usually this doesn't matter. However, there is at least one case where it does make a difference: toolchain/*/*.mk includes both the definitions of the external toolchain packages and pkg-toolchain-external.mk, but pkg-toolchain-external.mk must be included first. For predictability, use ordered 'include $(sort $(wildcard ...))' instead of unordered direct 'include */*.mk' everywhere. Fixes [1] reported by Petr Vorel: make: *** No rule to make target 'toolchain-external-custom', needed by '.../build/toolchain-external/.stamp_configured'. Stop. [1] http://lists.busybox.net/pipermail/buildroot/2017-November/206969.html Signed-off-by: Peter Seiderer <ps.report@gmx.net> Tested-by: Petr Vorel <petr.vorel@gmail.com> [Arnout: also sort the one remaining include, of the external docs] Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
* Update for 2017.11-rc22017.11-rc2Gravatar Peter Korsgaard2017-11-131-2/+2
| | | | Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* Update for 2017.11-rc12017.11-rc1Gravatar Peter Korsgaard2017-11-061-2/+2
| | | | Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* core/reproducible: do not override SOURCE_DATE_EPOCHGravatar Yann E. MORIN2017-11-051-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | SOURCE_DATE_EPOCH is currently forcibly set (to either the git commit date, or the last release date). However, the spec mandates that it should not be modified if already set: https://reproducible-builds.org/specs/source-date-epoch/ Build systems MUST NOT overwrite this variable for child processes to consume if it is already present. Abide by the rule, and only set it if not already set. This will allow users to pass it from an upper-layer buildsystem (e.g. a jenkins or gitlab-ci job, for example), when they have a reson to do so. Reported-by: Peter Korsgaard <peter@korsgaard.com> Reported-by: Einar Jón Gunnarsson <tolvupostur@gmail.com> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Peter Korsgaard <peter@korsgaard.com> Cc: Einar Jón Gunnarsson <tolvupostur@gmail.com> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> Cc: Arnout Vandecappelle <arnout@mind.be> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* Add DEPENDENCIES_HOST_PREREQ to the list of packagesGravatar Alfredo Alvarez Fernandez2017-10-221-0/+2
| | | | | | | | | That way packages included in that list like ccache will also be regarded as a normal packages for targets like external-deps, show-targets or legal-info Signed-off-by: Alfredo Alvarez Fernandez <alfredo.alvarez_fernandez@nokia.com> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
* HOST_DIR/lib: symlink respectively to lib32/64Gravatar Matt Weber2017-10-051-1/+8
| | | | | | | | | | | | | | | | Discovered the issue on a RHEL7.4 machine where the cmake build dynamically selected HOST_DIR/lib64 as the installation path for the lzo2 library. Fixes failures like the following: host-mtd http://autobuild.buildroot.net/results/d31/d31581d2e60f35cf70312683df99c768e2ea8516/ host-squashfs http://autobuild.buildroot.net/results/d9c/d9c95231ac774ed71580754a15ebb3b121764310/ Signed-off-by: Matthew Weber <matthew.weber@rockwellcollins.com> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
* Kickoff 2017.11 cycleGravatar Thomas Petazzoni2017-09-021-1/+1
| | | | Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* Update for 2017.082017.08Gravatar Peter Korsgaard2017-09-021-2/+2
| | | | Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* Update for 2017.08-rc32017.08-rc3Gravatar Thomas Petazzoni2017-08-231-2/+2
| | | | Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* Update for 2017.08-rc22017.08-rc2Gravatar Thomas Petazzoni2017-08-111-2/+2
| | | | Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* Update for 2017.08-rc12017.08-rc1Gravatar Thomas Petazzoni2017-08-021-2/+2
| | | | Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* Makefile: add alldefconfig targetGravatar Arnout Vandecappelle2017-07-251-2/+3
| | | | | | | | | | It is used by Kconfig's merge_config.sh. No alldefpackageconfig is added, since it's rather pointless: it would only enable busybox. Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* Makefile: refactor *config targetsGravatar Arnout Vandecappelle2017-07-251-36/+6
| | | | | | | | The rules for the *config targets are all very similar, so factor them together using $@. Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* system: provide package-wide system variables and macrosGravatar Yann E. MORIN2017-07-221-0/+1
| | | | | | | | | | | | | | | | | | | | | Some macros, soon some variables, currently defined in the skeleton are going to be used by other packages. Some of those variables will be used as Makefile conditions (e.g. in ifeq() conditions), so they *must* be defined before being used. Since the skeleton package, starting with an 's', is included quite late, those variables would not be available to most packages. Offload the existing macros into the new system/system.mk file, that is included early, before any package is. Rename the macros to appropriate names. Future commits will add new macros and variables in that file. Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* core: introduce "sdk" target to make a relocatable SDKGravatar Wolfgang Grandegger2017-07-221-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We use a separate make target to build a relocatable SDK. We first sanitize the RPATH in host tree. Next we also sanitize the staging tree. Therefore "sdk" must depend on world. Sanitizing staging is not really needed, in the sense that any rpath in there is simply not going to be used. We want to sanitize staging for the following reasons: - To avoid leaking references to the original output directory. This way, we can validate that the SDK is relocatable by running a simple "grep -r ${BASE_DIR} ${HOST_DIR}". Obviously RPATH sanitization is not sufficient (e.g. also the references to source files have to be stripped), but it's a step in the right direction. This reason is obviously only relevant for the SDK. - To make sure that when an executable is copied to target that it actually executes correctly. Since within Buildroot we never copy stuff from staging to target, this is clearly only relevant for the SDK. Finally we install the script "relocate-sdk.sh" into the top directory of the SDK (HOST_DIR) and the SDK location path is stored in the file "HOST_DIR/share/buildroot/sdk-location"- Signed-off-by: Wolfgang Grandegger <wg@grandegger.com> Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* core: sanitize RPATH in target tree before copying the overlayGravatar Wolfgang Grandegger2017-07-201-0/+3
| | | | | | | | | | | | | | We sanitize the RPATH of ELF files in the target tree to deal with stupid packages that don't correctly use --prefix/DESTDIR and that end up putting the full absolute build-time directory in the RPATH. We do it before copying the overlay and calling the post-build script. The user is completely responsible for what happens in the last two steps, and it should never be touched by us. Signed-off-by: Wolfgang Grandegger <wg@grandegger.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* Makefile: properly create $(HOST_DIR)/usr compatibility symlinkGravatar Arnout Vandecappelle2017-07-101-7/+6
| | | | | | | | | | | | | | | | | Up to now we created the $(HOST_DIR)/usr compatibility symlink as part of the creation of $(HOST_DIR) itself. However, when the user specifies a custom BR2_HOST_DIR, it is possible that the directory already exists so this rule will never trigger. Therefore, add an explicit rule for creating $(HOST_DIR)/usr and add this rule to the dependencies of the dirs target. HOST_DIR itself goes back to the standard rule for directories. The order-only dependency of STAGING_DIR isn't needed any more either: HOST_DIR is implicitly created if needed by mkdir -p, and we don't need to trigger the HOST_DIR rule any more if the directory already exists. Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* legal-info: add hash for our own license fileGravatar Yann E. MORIN2017-07-051-2/+2
| | | | | | | | | | | | This silences the annoying warning that there is no hash file for our own COPYING file. Also change the message so that it is more obvious what we're doing. Reported-by: Peter Korsgaard <peter@korsgaard.com> Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Luca Ceresoli <luca@lucaceresoli.net> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* Globally replace $(HOST_DIR)/usr/bin with $(HOST_DIR)/binGravatar Arnout Vandecappelle2017-07-051-2/+2
| | | | | | | | | | | Since things are no longer installed in $(HOST_DIR)/usr, the callers should also not refer to it. This is a mechanical change with git grep -l '$(HOST_DIR)/usr/bin' | xargs sed -i 's%$(HOST_DIR)/usr/bin%$(HOST_DIR)/bin%g' Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* Makefile: remove $(HOST_DIR)/usr from BR_PATHGravatar Arnout Vandecappelle2017-07-051-1/+1
| | | | | | | | | Now $(HOST_DIR)/usr is a symlink to $(HOST_DIR), it makes no sense to still have it in BR_PATH. Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Reviewed-by: Romain Naour <romain.naour@smile.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* Eliminate $(HOST_DIR)/usrGravatar Arnout Vandecappelle2017-07-051-4/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We currently use $(HOST_DIR)/usr as the prefix for host packages. That has a few disadvantages: - There are some things installed in $(HOST_DIR)/etc and $(HOST_DIR)/sbin, which is inconsistent. - To pack a buildroot-built toolchain into a tarball for use as an external toolchain, you have to pack output/host/usr instead of the more obvious output/host. - Because of the above, the internal toolchain wrapper breaks which forces us to work around it (call the actual toolchain executable directly). This is OK for us, but when used in another build system, that's a problem. - Paths are four characters longer. To allow us to gradually eliminate $(HOST_DIR)/usr while building packages, replace it with a symlink to . The symlinks from $(HOST_DIR)/usr/$(GNU_TARGET_NAME) and $(HOST_DIR)/usr/lib that were added previously are removed again. Note that the symlink creation will break when $(HOST_DIR)/usr already exists as a directory, i.e. when rebuilding in an existing output directory. This is necessary: if we don't break it now, the following commits (which remove the usr part from various variables) _will_ break it. At the same time as creating this symlink, we have to update the external toolchain wrapper and the external toolchain symlinks to go one directory less up. Indeed, $(HOST_DIR) is one level less up than it was before. Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Reviewed-by: Romain Naour <romain.naour@smile.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* Move $(HOST_DIR)/usr/lib to $(HOST_DIR)/libGravatar Arnout Vandecappelle2017-07-051-3/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a step towards eliminating $(HOST_DIR)/usr. It allows us to convert all packages installing things into $(HOST_DIR)/usr/lib without affecting the rest. To allow compatibility with packages that still use $(HOST_DIR)/usr as the prefix, create a symlink from usr/lib to ../lib. Note that the symlink creation will break when $(HOST_DIR)/usr/lib already exists as a directory, i.e. when rebuilding in an existing output directory. This is necessary: if we don't break it now, the following commits (which remove the usr part from various variables) _will_ break it. At the same time as creating this symlink, we also have to update the check-host-rpath script to accept both $(HOST_DIR)/usr/lib and $(HOST_DIR)/lib, because depending on how the package derives the path, it may be different. Since there are some dependency chains that involve $(STAGING_DIR), $(STAGING_DIR) may in fact be created before $(HOST_DIR). Since $(STAGING_DIR) is a subdirectory of $(HOST_DIR), it is possible that the newly added rule for $(HOST_DIR) never triggers. To make sure that the rule does trigger, add an order-only dependency from $(STAGING_DIR) to $(HOST_DIR). Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Reviewed-by: Romain Naour <romain.naour@smile.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* Move $(HOST_DIR)/usr/$(GNU_TARGET_NAME) one level up.Gravatar Arnout Vandecappelle2017-07-051-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | This is a step towards eliminating $(HOST_DIR)/usr. It allows us to convert all packages installing things into $(HOST_DIR)/usr/$(GNU_TARGET_NAME) (i.e., binutils and gcc) without affecting the rest. To allow compatibility with packages that still use $(HOST_DIR)/usr as the prefix, create a symlink from usr/$(GNU_TARGET_NAME) to ../$(GNU_TARGET_NAME). Note that the symlink creation will break when $(HOST_DIR)/usr/lib already exists as a directory, i.e. when rebuilding in an existing output directory. This is necessary: if we don't break it now, the following commits (which remove the usr part from various variables) _will_ break it. Effectively, the usr/ part is removed from $(STAGING_SUBDIR) (and therefore from $(STAGING_DIR)), so update the definition of that variable right away. Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Reviewed-by: Romain Naour <romain.naour@smile.fr> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
* core/pkg-util: pass package directory and name when saving license filesGravatar Yann E. MORIN2017-07-031-1/+1
| | | | | | | | | | | This will be useful when checking the hashes of the license files. [Peter: use '.' as buildroot directory so /buildroot.hash isn't checked] Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Luca Ceresoli <luca@lucaceresoli.net> Cc: Peter Korsgaard <peter@korsgaard.com> Cc: Rahul Bedarkar <rahulbedarkar89@gmail.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* Makefile: generate wrapper makefile when running make without a .configGravatar Peter Korsgaard2017-07-031-1/+1
| | | | | | | | | | | | | | | The recent change to error out instead of running menuconfig when no .config is available broke an existing use case: make O=output-foo; cd output-foo; br-init-conf (or similar to get a sensible .config); make As there is no wrapper makefile in output-foo. Fix it by ensuring the wrapper gets created if needed. Signed-off-by: Peter Korsgaard <peter@korsgaard.com> Reviewed-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>