summaryrefslogtreecommitdiffstats
path: root/support
Commit message (Collapse)AuthorAgeFilesLines
* Restrict tar transform to regular filesRaptor Engineering Development Team2019-04-181-1/+1
| | | | | | | | | | | | | | Without this restriction, symlinks are rewritten and corrupted. Example without the restriction: Input tree (valid): package-githash/file1 package-githash/link -> ./file1 Output tree (broken): package-githash/file1 package-githash/link -> package-githash/file1
* Update for 2019.02Peter Korsgaard2019-03-041-1/+1
| | | | Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* config-fragments: drop old crosstool-ng toolchainsPeter Korsgaard2019-03-048-83/+1
| | | | | | | | | | | | | | | | These toolchains are very old and cause a number of autobuilder failures that doesn't happen with more recent toolchains: Fixes (glibc 2.18 does not provide O_TMPFILE): http://autobuild.buildroot.net/results/c49e8361a1d4406eefd8fc1b35c8e5b061aa403b Fixes (x86 toolchain built without libquadmath): http://autobuild.buildroot.net/results/2d9724f169ccd60c7feb1cb549f1e2e1e9219ac3/ Use Codesourcery ARM toolchain (GCC 4.8.3) to provide a test with a old GCC version. Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* Revert "testing/tests/download: test git special ref"Ricardo Martincoski2019-03-017-18/+0
| | | | | | | | | | | | | | | | | | | | | | This reverts commit 81771cfcdc40e5909a4ec663e7c88b3a32068c05. The download of sha1 of a special ref currently works or not depending on the git client version in use. With git version 2.11.0 (present in the docker image) it does not work. With git version 2.17.1 it works. For the sake of reproducibility, remove this part of the TestGitRefs test case until some code gets added to the download infra to handle sha1 of a special ref for any git client version. Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/158295269 Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com> Cc: Arnout Vandecappelle <arnout@mind.be> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Cc: Yann E. MORIN <yann.morin.1998@free.fr> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* support/dependencies: require at least CMake 3.8Fabrice Fontaine2019-03-011-8/+3
| | | | | | | | | | | | | | | | | gerbera package in version 1.3 unfortunately now requires CMake >= 3.8 for C++17 macros: https://github.com/gerbera/gerbera/commit/b5fd39f30fb10385ec228b71377685206a609c3a So we need to bump our requirement from 3.1 to 3.8. If the host doesn't have a CMake >= 3.8, Buildroot will build its own host-cmake package. Also drop patch that relax cmake requirement on json-for-modern-cpp Fixes: - http://autobuild.buildroot.org/results/6405647b47b132ff5d0d211b92d407322d52d507 Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* support/config-fragments/autobuild: use external toolchains in RISC-V configsThomas Petazzoni2019-02-145-8/+17
| | | | | | | | | | | | This commit replaces the two RISC-V configurations used for the autobuilders to use pre-built external toolchains rather than internal toolchains. This saves quite a bit of build time in the autobuilders, and also allows people to reproduce build issues in a much more efficient way, since rebuilding the toolchain is not needed. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Cc: Mark Corbin <mark.corbin@embecosm.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* support/config-fragments/autobuild: update all pre-built Buildroot toolchainsThomas Petazzoni2019-02-1429-84/+84
| | | | | | | | | | | | | | | | | | | All toolchains have been rebuilt with Buildroot 2019.02-rc1. Changes: - Toolchains that were using no-longer maintained kernel headers versions have been changed to use a variety of newer kernel headers versions (4.4, 4.9 or 4.14). - Since gcc 7.x is now the default in Buildroot, most toolchains that simply use the default gcc version use 7.x instead of 6.x. - br-arm-cortex-a9-glibc uses gcc 8.x, binutils 2.31 and kernel headers 4.20 Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* support/testing: build a glibc toolchain for docker / docker-compose testsPeter Korsgaard2019-02-121-10/+3
| | | | | | | | | | | | | | | | runc (which is a reverse dependency of docker-engine) is about to gain a !uclibc dependency, so move to a glibc toolchain instead. There are currently no prebuilt x86_64 / core2 / glibc toolchains available, so instead use the internal toolchain backend to build one. While we are at it, drop the infra.basetest.BASIC_TOOLCHAIN_CONFIG reference, as that ARM toolchain configuration doesn't make any sense for this x86-64 based test. add docker / docker-compose tests Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* support/scripts/pkg-stats: fix flake8 errorsArnout Vandecappelle (Essensium/Mind)2019-02-071-3/+5
| | | | | | | | | | | | | | | | | | | | | | Fixes the following flake8 warnings: support/scripts/pkg-stats:34:2: W605 invalid escape sequence '\$' support/scripts/pkg-stats:34:4: W605 invalid escape sequence '\(' support/scripts/pkg-stats:34:11: W605 invalid escape sequence '\$' support/scripts/pkg-stats:34:13: W605 invalid escape sequence '\(' support/scripts/pkg-stats:34:32: W605 invalid escape sequence '\)' support/scripts/pkg-stats:34:34: W605 invalid escape sequence '\)' support/scripts/pkg-stats:35:2: W605 invalid escape sequence '\s' support/scripts/pkg-stats:35:14: W605 invalid escape sequence '\S' support/scripts/pkg-stats:35:17: W605 invalid escape sequence '\s' support/scripts/pkg-stats:42:1: E302 expected 2 blank lines, found 1 support/scripts/pkg-stats:587:133: E501 line too long (157 > 132 characters) Note that the "invalid escape sequence" errors work because Python leaves the \ in place if it doesn't recognise the escape sequence. But it's better practice to use a raw string for regular expressions. Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
* skeleton-custom: use a script to check merged usr structureCarlos Santos2019-02-061-0/+39
| | | | | | | | | | | | | | | | | | | | Introduce support/scripts/check-merged-usr.sh, a script that check if a given path complies to the merged /usr requirements: / /bin -> usr/bin /lib -> usr/lib /sbin -> usr/sbin /usr/bin/ /usr/lib/ /usr/sbin/ Use this script in skeleton-custom.mk instead of a bunch of variables filled by $(shell ...) macros. The same script will be used to check rootfs overlays, in a forthcoming change. Signed-off-by: Carlos Santos <casantos@datacom.ind.br> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
* support/scripts/pkg-stats: add latest upstream version informationThomas Petazzoni2019-02-061-0/+144
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit adds fetching the latest upstream version of each package from release-monitoring.org. The fetching process first tries to use the package mappings of the "Buildroot" distribution [1]. This mapping mechanism allows to tell release-monitoring.org what is the name of a package in a given distribution/build-system. For example, the package xutil_util-macros in Buildroot is named xorg-util-macros on release-monitoring.org. This mapping can be seen in the section "Mappings" of https://release-monitoring.org/project/15037/. If there is no mapping, then it does a regular search, and within the search results, looks for a package whose name matches the Buildroot name. Even though fetching from release-monitoring.org is a bit slow, using multiprocessing.Pool has proven to not be reliable, with some requests ending up with an exception. So we keep a serialized approach, but with a single HTTPSConnectionPool() for all queries. Long term, we hope to be able to use a database dump of release-monitoring.org instead. From an output point of view, the latest version column: - Is green when the version in Buildroot matches the latest upstream version - Is orange when the latest upstream version is unknown because the package was not found on release-monitoring.org - Is red when the version in Buildroot doesn't match the latest upstream version. Note that we are not doing anything smart here: we are just testing if the strings are equal or not. - The cell contains the link to the project on release-monitoring.org if found. - The cell indicates if the match was done using a distro mapping, or through a regular search. [1] https://release-monitoring.org/distro/Buildroot/ Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Tested-by: Matthew Weber <matthew.weber@rockwellcollins.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
* .gitlab-ci.yml: use "extends" keywordRicardo Martincoski2019-02-061-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | Replace all YAML anchors with the new "extends" keyword because it is more readable and more flexible (it works across configuration files combined with the new "include" keyword). Readability is more meaningful in .gitlab-ci.yml.in. In the part of .gitlab-ci.yml that is auto-generated by 'make .gitlab-ci.yml' keep the keyword in the same line of the job name. So instead of this: zynqmp_zcu106_defconfig: extends: .defconfig tests.boot.test_atf.TestATFAllwinner: extends: .runtime_test Use this: zynqmp_zcu106_defconfig: { extends: .defconfig } tests.boot.test_atf.TestATFAllwinner: { extends: .runtime_test } Do this to to keep .gitlab-ci.yml easier to be post-processed by a script. Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com> Cc: Arnout Vandecappelle <arnout@mind.be> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
* testing/tests/download: test git special refRicardo Martincoski2019-02-067-0/+18
| | | | | | | | | | | Add a special ref to the static repo and check on the git refs test case the download of a git package: - with the sha1 of a special ref as version; Signed-off-by: Ricardo Martincoski <ricardo.martincoski@datacom.ind.br> Cc: Arnout Vandecappelle <arnout@mind.be> [Arnout: change to use the sha1 of a special ref instead of the name] Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
* testing/tests/download: test git tagRicardo Martincoski2019-02-0623-0/+103
| | | | | | | | | | | | | | | | | Add a tag to the static repo and check on the git refs test case the download of a git package: - with the name of a tag as version; - with the sha1 of a tag itself as version; - with the partial sha1 of a tag itself as version; - with the sha1 of a commit pointed by a tag as version; - with the partial sha1 of a commit pointed by a tag as version; - with the sha1 of a commit reachable only by a tag as version; - with the partial sha1 of a commit reachable only by a tag as version. Signed-off-by: Ricardo Martincoski <ricardo.martincoski@datacom.ind.br> Cc: Arnout Vandecappelle <arnout@mind.be> Tested-by: Matthew Weber <matthew.weber@rockwellcollins.com> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
* testing/download: GIT use BRConfigTestMatt Weber2019-02-061-1/+1
| | | | | | | | | Enables the test to use the new non-emulator base class which takes significantly less test time. Cc: Ricardo Martincoski <ricardo.martincoski@datacom.ind.br> Signed-off-by: Matthew Weber <matthew.weber@rockwellcollins.com> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
* testing/infra: Add BRConfigTest as superclass of BRTestRicardo Martincoski2019-02-062-15/+27
| | | | | | | | | | | | | | | | | The git tests don't need to do a full build, they only need to do a configure and download and/or legal-info. More tests of that type will be added in the future. Therefore, we want to have a test base class that doesn't automatically do a full build in the setUp(). Add this new class as a superclass of the existing BRTest class, so we don't need to update existing tests. Only the code in run-tests that iterates over all subclasses of BRTest has to be adapted to use BRConfigTest instead. Signed-off-by: Ricardo Martincoski <ricardo.martincoski@datacom.ind.br> Cc: Arnout Vandecappelle <arnout@mind.be> Signed-off-by: Matthew Weber <matthew.weber@rockwellcollins.com> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
* testing/tests/download: test git submodulesRicardo Martincoski2019-02-0640-0/+46
| | | | | | | | | | | | | Add two submodules as static repos, add a branch to the main static repo and check on the git refs test case the download of a git package: - repo with submodule but without support in the package; - repo with recursive submodules with support in the package. Signed-off-by: Ricardo Martincoski <ricardo.martincoski@datacom.ind.br> Cc: Arnout Vandecappelle <arnout@mind.be> [Arnout: remove handling of inconsistent tarball hashes - that's an actual bug that should be fixed] Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
* support/testing: add docker / docker-compose testsPeter Korsgaard2019-02-053-0/+177
| | | | | | | | | | | | | | Build for x86-64 as public containers in general are only available for x86-64. Docker needs a number of kernel options enabled, so use a custom kernel config based on the qemu one. Docker needs entropy at startup, so enable the virtio-rng-pci device to expose entropy to the guest. The default RAM amount (128M) is not enough to run docker / docker-compose, so bump to 512MB. Signed-off-by: Peter Korsgaard <peter@korsgaard.com> Reviewed-by: Matthew Weber <matthew.weber@rockwellcollins.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* support/download/scp: fix download with scheme prefix 'scp://'Thomas De Schampheleire2019-02-051-0/+3
| | | | | | | | | | | | | | | | The scp download helper is broken when the server URL starts with 'scp://'. Such prefix is used in two situations: 1. to let FOO_SITE point to an scp location without explicitly having to set 'FOO_SITE_METHOD = scp' 2. when BR2_PRIMARY_SITE or BR2_BACKUP_SITE points to an scp location. In this case, there is no equivalent of 'SITE_METHOD'. Strip out the scheme prefix, similarly to how the 'file' download helper does it. That helper has the same cases as above. Signed-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* support/testing: test_dropbear.py: drop ssh port forward to the hostPeter Korsgaard2019-02-051-1/+1
| | | | | | | It is not used and may conflict with other services running on port 2222 on the host machine. Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* support/testing: test_dropbear.py: add test for ssh connection to localhostPeter Korsgaard2019-02-051-3/+5
| | | | | | Use sshpass to pass the password on the command line. Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* support/testing: test_dropbear.py: use a constant for the passwordPeter Korsgaard2019-02-051-3/+4
| | | | | | | The password is used in multiple places, so add a constant for it instead of hardcoding it multiple times. Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* testing/tests/download: test git branchRicardo Martincoski2019-02-0516-1/+65
| | | | | | | | | | | | | | | | | | Add a branch to the static repo and check on the git refs test case the download of a git package: - with a sha1 reachable by a branch name, but not pointed by it, as version. This is the most common use case for git refs in the tree; - with a partial sha1 of a commit reachable by a branch as version; - with a sha1 of the commit head of a branch as version; - with a partial sha1 of the commit head of a branch as version; Enforce the download always occurs by removing the BR2_DL_DIR used for the tarballs generated by the git download infra. Signed-off-by: Ricardo Martincoski <ricardo.martincoski@datacom.ind.br> Cc: Arnout Vandecappelle <arnout@mind.be> Tested-by: Matthew Weber <matthew.weber@rockwellcollins.com> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
* support/scripts/setlocalversion: ignore user settings for MercurialThomas De Schampheleire2019-02-041-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | setlocalversion will use 'hg id' to determine whether or not the current revision is tagged. If there is no tag, the Mercurial revision is printed, otherwise nothing is printed. The problem is that the user may have custom configuration settings (in their ~/.hgrc file or similar) that changes the output of 'hg id' in a way that the script does not expect. In such cases, the Mercurial revision may not be printed or printed incorrectly. It is good practice to ignore the user environment when calling Mercurial commands from a well-defined script, by setting the environment variable HGRCPATH to the empty string. See also 'hg help environment'. In the particular case of Nokia, a custom extension adds dynamic tags in the repository, i.e. tags that are stored in a file external to the repository and only visible when the extension is active. These tags should not influence the behavior of setlocalversion as they are not official Buildroot tags, i.e. even if a revision is tagged, the Mercurial revision should still be printed. Note that this still does not solve the problem where an organization adds _real_ tags in their Buildroot repository. For example, there might be a moving tag 'last-validated' or tags indicating in which product release that Buildroot revision was used. In these cases, setlocalversion will still not behave as expected, i.e. show the Mercurial revision. Signed-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
* support/scripts/setlocalversion: fix detection of hg revision when _not_ on ↵Thomas De Schampheleire2019-02-041-1/+1
| | | | | | | | | | | | | | | | | | | | | branch 'default' When Buildroot is stored in a Mercurial repository on a branch other than 'default' ('master' in git terms), setlocalversion (used to populate /etc/os-release) will incorrectly think that this is a tagged version and will NOT print out the revision hash. This is due to the fact that the output of 'hg id' is assumed to be "<revision> <tags-if-any>" but when on a branch it actually is: "<revision> (<branch>) <tags-if-any>" To let setlocalversion receive the output it expects, explicitly ask 'hg id' to retrieve only the revision hash and any tags, ommitting any branch information. Signed-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
* testing/tests/download: test case for git refsRicardo Martincoski2019-02-047-0/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | All upcoming tests for git refs will rely on the return code of make to determine whether a git ref can be downloaded or not and also to determine whether the downloaded content is correct (all of this taking advantage of the check-hash mechanism already in place for git packages). So to avoid false results i.e. in the case the check-hash mechanism become broken in the master branch, add some sanity checks before the actual test of download git refs. Add the minimum test case for git refs containing only sanity checks. Reuse the commit in the static repo. Add a br2-external with two packages to check that: - trying to download an invalid sha1 generates an error; - downloading a valid sha1 that contains unexpected content generates an error. In order to ease the maintenance and review, each upcoming patch adding checks to this test case will add at same time the commits to the static repo, the equivalent packages to the br2-external and code to the test case. Signed-off-by: Ricardo Martincoski <ricardo.martincoski@datacom.ind.br> Cc: Arnout Vandecappelle <arnout@mind.be> Tested-by: Matthew Weber <matthew.weber@rockwellcollins.com> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
* support/testing/tests/download/gitremote: remove trailing whitespaceThomas Petazzoni2019-02-041-2/+2
| | | | | | | | | Fixes the following flake8 warnings: support/testing/tests/download/gitremote.py:29:67: W291 trailing whitespace support/testing/tests/download/gitremote.py:30:60: W291 trailing whitespace Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
* testing/tests/download: add git hash testRicardo Martincoski2019-02-0418-0/+135
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add one test case to ensure the hash is checked for git packages: - correct hash; - wrong hash; - no hash file. Add required infra: - a GitRemote class, that can start a git server in the host machine to emulate a remote git server under the control of the test; - a new base class, called GitTestBase, that inherits from BRTest and must be subclassed by all git test cases. Its setUp() method takes care of configuring the build with a br2-external, avoiding to hit http://sources.buildroot.net by using an empty BR2_BACKUP_SITE. It also avoids downloading not pre-installed dependencies (i.e. lzip) every time by calling 'make dependencies' using the common dl directory, and it instantiates the GitRemote object. Besides the Python scripts, add some fixtures used during the tests: - a br2-external (git-hash) with one package for each part of the test case; - a static git bare repo (repo.git) to be served using GitRemote class. Neither the br2-external nor the check hash functionalities are the subject of these tests per se, so for simplicity limit the check to the error codes and don't look for the messages in the log. Thanks to Arnout for the hint about how to add a bare repo to test. Signed-off-by: Ricardo Martincoski <ricardo.martincoski@datacom.ind.br> Cc: Arnout Vandecappelle <arnout@mind.be> Tested-by: Matthew Weber <matthew.weber@rockwellcollins.com> [Arnout: split long line; reorder imports to satisfy flake8] Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
* infra: add force build flag for host dependenciesBryce Ferguson2019-02-041-0/+6
| | | | | | | | | | | | | | | This commit adds a config option which will force buildroot to build all host dependencies even if they are already present on the host system. This may be a desirable option if different hosts are used to build the same source. In this case, some packages will be built on one host that are not built on another. This is problematic if build source archives are cached afterwards for offline builds. Cc: Peter Korsgaard <peter@korsgaard.com> Signed-off-by: Bryce Ferguson <bryce.ferguson@rockwellcollins.com> Signed-off-by: Matt Weber <matthew.weber@rockwellcollins.com> [Peter: reword, drop exit 1, reshuffle] Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* support/scripts/graph-build-time: replace confusing colorsThomas De Schampheleire2019-02-041-1/+1
| | | | | | | | | | | The color for 'extract' is very similar to the one for 'install-images'. Both are cyan-like. Replace the former by a pale blue to make all colors sufficiently distinct. Signed-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com> Tested-by: Matthew Weber <matthew.weber@rockwellcollins.com> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
* support/scripts/graph-build-time: add download timesMathias De Mare2019-02-041-3/+3
| | | | | | | | | | | | | | | Total build time also involves download. Getting a visibility on the impact of that step can be important for users/admins, e.g. to evaluate different methods of BR2_PRIMARY_SITE. Colors used are some kind of purple (primary scheme) and light orange (alternate scheme). Signed-off-by: Mathias De Maré <mathias.de_mare@nokia.com> [ThomasDS: rebase and update colors to avoid confusion] Signed-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com> Tested-by: Matthew Weber <matthew.weber@rockwellcollins.com> Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
* dependencies.sh: Check for a host python version >= 2.7Adam Duskett2019-02-041-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Older distributions such as CentOS6 come with python2.6, which causes build failures in packages such as host-libglib2 because they require python2.7 and above. host-libglib2 will produce the error message: /bin/sh: python2.7: command not found Python2.7 is a hard-coded value in configure.ac. If one changes the value to just "python," the following stack trace is produced: Traceback (most recent call last): File "./gdbus-2.0/codegen/gdbus-codegen.in", line 55, in <module> self.outfile.write(LICENSE_STR.format(config.VERSION)) ValueError : sys.exit(codegen_main.codegen_main()) zero length field name in format Instead of supporting an ancient version of Python that had its support ended in October os 2013, it would be more pragmatic only to support Python2.7 and above. Luckily; CentOS6 has the centos-release-scl repository, which allows users to install python2.7, and Debian 8 comes with Python2.7 already, making this patch relatively low impact. Signed-off-by: Adam Duskett <Aduskett@gmail.com> [Peter: only look at major.minor to handle x.y.z with z < 10] Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* support/testing/infra/basetest: support br2-externalRicardo Martincoski2019-01-291-1/+2
| | | | | | | | | | | | | | | | | | Some upcoming test cases can use one or more br2-external trees as fixtures that provide packages used only in runtime tests. Add support for br2-external into the BRTest class. Any test case can then provide a list of paths for being used as br2-external trees during the build of the image to test. Signed-off-by: Ricardo Martincoski <ricardo.martincoski@datacom.ind.br> Cc: Arnout Vandecappelle <arnout@mind.be> Signed-off-by: Matt Weber <matthew.weber@rockwellcollins.com> Signed-off-by: Daniel J. Leach <dleach@belcan.com> Signed-off-by: Adam Duskett <Aduskett@gmail.com> Tested-by: Matthew Weber <matthew.weber@rockwellcollins.com> [Thomas: use named argument for make_extra_opts.] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
* support/testing/infra/builder: configure and build with make target and ↵Ricardo Martincoski2019-01-291-4/+32
| | | | | | | | | | | | | | | | | | | | | | environment Make the builder able to call 'VAR1=1 make VAR2=2 target'. Allow sending extra parameters to be added to the end of make command line. Uses for these purposes: - to configure a br2-external, using the 'BR2_EXTERNAL="dir" variable. - to specify a make target, such as 'foo-source.' Allow adding variables to the environment when calling make. These added variables allow a user to override default values from BuildRoot, such as 'BR2_DL_DIR="dl"'. Signed-off-by: Ricardo Martincoski <ricardo.martincoski@datacom.ind.br> Cc: Arnout Vandecappelle <arnout@mind.be> Signed-off-by: Matt Weber <matthew.weber@rockwellcollins.com> Signed-off-by: Daniel J. Leach <dleach@belcan.com> Signed-off-by: Adam Duskett <Aduskett@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
* support/testing: add atop testRicardo Martincoski2019-01-281-0/+40
| | | | | Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* support/scripts/check-host-rpath: document existing functionsThomas Petazzoni2019-01-171-0/+12
| | | | | | | | | | | As suggested by Arnout Vandecappelle, let's document the elf_needs_rpath() and check_elf_has_rpath() functions, before we make them a bit more complicated with per-package directory support. Suggested-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> 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>
* infra/pkg-cmake: use an obviously-invalid value for CMAKE_SYSTEM_VERSIONYann E. MORIN2019-01-161-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In 36568732e4, we expanded toolchain.cmake to also define the value for CMAKE_SYSTEM_VERSION, as the cmake documentation states that it must be manually defined when doing cross-compilation [0]: When the CMAKE_SYSTEM_NAME variable is set explicitly to enable cross compiling then the value of CMAKE_SYSTEM_VERSION must also be set explicitly to specify the target system version. However, the fix in 36568732e4 uses the version of the kernel headers, assuming that would be the oldest kernel we could run on. Yet, this is not the case, because glibc (for example) has fallbacks to support running on kernels older than the headers it was built against. The cmake official wiki [1] additionally states: * CMAKE_SYSTEM_VERSION : optional, version of your target system, not used very much. Folllowed a little bit below, by: * CMAKE_TOOLCHAIN_FILE : absolute or relative path to a cmake script which sets up all the toolchain related variables mentioned above For instance for crosscompiling from Linux to Embedded Linux on PowerPC this file could look like this: # this one is important SET(CMAKE_SYSTEM_NAME Linux) #this one not so much SET(CMAKE_SYSTEM_VERSION 1) [...] Furthermore, using the kernel headers version can be a bit misleading (as it really looks like is is the correct version to use when it is not), while it is obvious that 1 is not really the output of `uname -r` and thus is definitely not misleading. Finally, random searches [2] about CMAKE_SYSTEM_VERSION, mostly only turns up issues related with Windows, Mac-OS, and to a lesser extent, Android (where it is forcibly set to 1), with issues realted to running under just Linux (as opposed to Adnroid) mostly non-existent. Consequently, we revert to using the value that is suggested in the cmake WiKi, i.e. 1, and which is basically what we also used as a workaround in the azure-iot-sdk-c paclkage up until d300b1d3b1. A case were we will need to have a real kernel version, is if we one day have a cmake-based pacakge that builds and installs a kernel module [3], because it will need the _running_ kernel version to install it in /lib/modules/VERSION/, but in that case it will anyway most probably not be the headers version. [0] https://cmake.org/cmake/help/v3.8/variable/CMAKE_SYSTEM_VERSION.html [1] https://gitlab.kitware.com/cmake/community/wikis/doc/cmake/CrossCompiling [2] https://duckduckgo.com/?q=CMAKE_SYSTEM_VERSION [3] https://stackoverflow.com/questions/38205745/cmake-system-version-not-updated-for-new-kernel Signed-off-by: "Yann E. MORIN" <yann.morin.1998@free.fr> Cc: Arnout Vandecappelle <arnout@mind.be> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Cc: Samuel Martin <s.martin49@gmail.com> Acked-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* package/pkg-cmake: add CMAKE_SYSTEM_VERSION to toolchainfile.cmakeArnout Vandecappelle (Essensium/Mind)2019-01-121-0/+1
| | | | | | | | | | | | | | | | | | | Quoting the CMake documentation: When the CMAKE_SYSTEM_NAME variable is set explicitly to enable cross compiling then the value of CMAKE_SYSTEM_VERSION must also be set explicitly to specify the target system version. Thus, we should also set CMAKE_SYSTEM_VERSION in toolchainfile.cmake. It is supposed to be set to the value of `uname -r` on the target. We don't have that exact value available (unless we build the kernel), but the value of BR2_TOOLCHAIN_HEADERS_AT_LEAST contains the (minimum) version of the kernel it will run on, so it should be OK for all practical purposes. Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> Cc: Samuel Martin <s.martin49@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
* support/config-fragments: add RISC-V 32-bit to autobuild configsMark Corbin2019-01-102-0/+4
| | | | | | | | | Add a minimal RISC-V 32-bit autobuild configuration for the internal toolchain with glibc. Signed-off-by: Mark Corbin <mark.corbin@embecosm.com> Reviewed-by: Matt Weber <matthew.weber@rockwellcollins.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
* arch: add support for RISC-V 32-bit (riscv32) architectureMark Corbin2019-01-061-0/+1
| | | | | | | | | | | | | | | | This enables a riscv32 system to be built with a Buildroot generated toolchain (gcc >= 7.x, binutils >= 2.30, glibc only). This requires a custom version of glibc 2.26 from the riscv-glibc repository. Note that there are no tags in this repository, so the glibc version just consists of the 40 character commit id string. Thanks to Fabrice Bellard for pointing me towards the 32-bit glibc repository and for providing the necessary patch to get it to build. Signed-off-by: Mark Corbin <mark.corbin@embecosm.com> Reviewed-by: Matt Weber <matthew.weber@rockwellcollins.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
* support/download: fix scp downloadsThomas De Schampheleire2019-01-031-2/+4
| | | | | | | | | | | | | | | | | | | | | | scp download is broken, because scp is called without filename argument and only the server is specified. The call is: scp <server> <outputfile> but should be: scp <server>/<filename> <outputfile> Instead of assuming '-u' lists a full URL including filename (which it is not), align with the wget helper where -u is the server URL and -f gives the filename. With this commit, an scp download can work if FOO_SITE_METHOD is explicitly set to 'scp' and the server does not have a scheme prefix 'scp://'. The next commit will handle the case where a scheme prefix is present. Signed-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr> [Thomas: s/URL/URI/, as noticed by Yann.] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
* Makefile: offload .gitlab-ci.yml generationRicardo Martincoski2018-12-091-0/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | GitLab has severe limitations imposed to triggers. Using a variable in a regexp is not allowed: | only: | - /-$CI_JOB_NAME$/ | - /-\$CI_JOB_NAME$/ | - /-%CI_JOB_NAME%$/ Using the key 'variables' always lead to an AND with 'refs', so: | only: | refs: | - branches | - tags | variables: | - $CI_JOB_NAME == $CI_COMMIT_REF_NAME would make the push of a tag not to trigger all jobs anymore. Inheritance is used only for the second level of keys, so: |.runtime_test: &runtime_test | only: | - tags |tests.package.test_python_txaio.TestPythonPy2Txaio: | <<: *runtime_test | only: | - /-TestPythonPy2Txaio$/ would override the entire key 'only', making the push of a tag not to trigger all jobs anymore. So, in order to have a trigger per job and still allow the push of a tag to trigger all jobs (all this in a follow up patch), the regexp for each job must be hardcoded in the .gitlab-ci.yml and also the inherited values for key 'only' must be repeated for every job. This is not a big issue, .gitlab-ci.yml is already automatically generated from a template and there will be no need to hand-editing it when jobs are added or removed. Since the logic to generate the yaml file from the template will become more complex, move the commands from the main Makefile to a script. Using Python or other advanced scripting language for that script would be the most versatile solution, but that would bring another dependency on the host machine, pyyaml if Python is used. So every developer that needs to run 'make .gitlab-ci.yml' and also the docker image used in the GitLab pipelines would need to have pyyaml pre-installed. Instead of adding the mentioned dependency, keep using a bash script. While moving the commands to the script: - mimic the behavior of the previous make target and fail on any command that fails, by using 'set -e'; - break the original lines in one command per line, making the diff for any patch to be applied to this file to look nicer; - keep the script as simple as possible, without functions, just a script that executes from the top to bottom; - do not perform validations on the input parameters, any command that fails already makes the script to fail; - do not add an usage message, the script is not intended to be called directly. This patch does not change functionality. Signed-off-by: Ricardo Martincoski <ricardo.martincoski@gmail.com> Cc: Arnout Vandecappelle <arnout@mind.be> [Thomas: make the script output on stdout rather than take the output file name as second argument.] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
* support/download/dl-wrapper: fix urlencode option never being sent to backendDamien Thébault2018-12-091-1/+1
| | | | | | | | | | | | | | Since commit 38de434123 ("download: fix file:// BR2_PRIMARY_SITE (download cache)"), the urlencode option is no longer passed to the download backend, because we use ${backend} instead of ${backend_urlencode}. We must get the urlencode information from backend_urlencode. Signed-off-by: Damien Thébault <damien.thebault@vitec.com> Reviewed-by: "Yann E. MORIN" <yann.morin.1998@free.fr> [Thomas: rework commit log] Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
* support/testing: drop docstring in TestPythonPackageBase::test_run()Thomas Petazzoni2018-12-081-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | Having a docstring in the test_run() method clutters the "run-tests -l" output: test_run (tests.package.test_python_crossbar.TestPythonPy3Crossbar) Test a python package. ... ok [...] test_run (tests.package.test_python_pexpect.TestPythonPy2Pexpect) Test a python package. ... ok test_run (tests.package.test_python_pexpect.TestPythonPy3Pexpect) Test a python package. ... ok test_run (tests.package.test_python_twisted.TestPythonPy2Twisted) Test a python package. ... ok test_run (tests.package.test_python_twisted.TestPythonPy3Twisted) Test a python package. ... ok test_run (tests.package.test_python_pynacl.TestPythonPy2Pynacl) Test a python package. ... ok test_run (tests.package.test_python_pynacl.TestPythonPy3Pynacl) Test a python package. ... ok So let's simply drop this docstring that is not particularly useful. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
* support/testing: add prosody testFrancois Perrad2018-12-061-0/+48
| | | | | Signed-off-by: Francois Perrad <francois.perrad@gadz.org> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
* support/testing: add lua testFrancois Perrad2018-12-061-0/+59
| | | | | | | Signed-off-by: Francois Perrad <francois.perrad@gadz.org> Reviewed-by: Ricardo Martincoski <ricardo.martincoski@gmail.com> Tested-by: Ricardo Martincoski <ricardo.martincoski@gmail.com> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
* support/testing: add perl-io-socket-ssl testFrancois Perrad2018-12-061-0/+21
| | | | | Signed-off-by: Francois Perrad <francois.perrad@gadz.org> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
* support/testing: add perl-io-socket-multicast testFrancois Perrad2018-12-061-0/+21
| | | | | Signed-off-by: Francois Perrad <francois.perrad@gadz.org> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
* support/testing: add perl-encode-decode testFrancois Perrad2018-12-061-0/+20
| | | | | Signed-off-by: Francois Perrad <francois.perrad@gadz.org> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
* support/testing: add perl-dbd-mysql testFrancois Perrad2018-12-061-0/+21
| | | | | Signed-off-by: Francois Perrad <francois.perrad@gadz.org> Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
OpenPOWER on IntegriCloud