Name Date Size #Lines LOC

..17-Apr-2024-

READMEH A D03-Feb-20222.7 KiB5842

__init__.pyH A D13-Apr-202474.1 KiB2,1131,657

az.pyH A D06-Apr-20213.3 KiB9450

bzr.pyH A D07-Mar-20214 KiB12988

clearcase.pyH A D07-Mar-20218.8 KiB248186

crate.pyH A D26-Nov-20234.3 KiB14289

cvs.pyH A D07-Mar-20215 KiB158116

gcp.pyH A D07-Dec-20233.4 KiB10269

git.pyH A D13-Apr-202439.4 KiB948710

gitannex.pyH A D07-Mar-20212.3 KiB7855

gitsm.pyH A D26-Nov-202311.6 KiB277183

hg.pyH A D26-Nov-202310.3 KiB265194

local.pyH A D09-Jun-20233 KiB9370

npm.pyH A D26-Nov-202310.8 KiB316234

npmsw.pyH A D26-Nov-202311.1 KiB314232

osc.pyH A D09-Sep-20225.4 KiB166123

perforce.pyH A D24-Jan-20229.4 KiB268193

repo.pyH A D07-Mar-20212.9 KiB8860

s3.pyH A D27-May-20214 KiB12584

sftp.pyH A D01-Apr-20233.4 KiB11374

ssh.pyH A D02-Oct-20224.4 KiB156114

svn.pyH A D05-Oct-20217.5 KiB213147

wget.pyH A D13-Apr-202427.1 KiB659446

README

1There are expectations of users of the fetcher code. This file attempts to document
2some of the constraints that are present. Some are obvious, some are less so. It is
3documented in the context of how OE uses it but the API calls are generic.
4
5a) network access for sources is only expected to happen in the do_fetch task.
6   This is not enforced or tested but is required so that we can:
7
8   i) audit the sources used (i.e. for license/manifest reasons)
9   ii) support offline builds with a suitable cache
10   iii) allow work to continue even with downtime upstream
11   iv) allow for changes upstream in incompatible ways
12   v) allow rebuilding of the software in X years time
13
14b) network access is not expected in do_unpack task.
15
16c) you can take DL_DIR and use it as a mirror for offline builds.
17
18d) access to the network is only made when explicitly configured in recipes
19   (e.g. use of AUTOREV, or use of git tags which change revision).
20
21e) fetcher output is deterministic (i.e. if you fetch configuration XXX now it
22   will match in future exactly in a clean build with a new DL_DIR).
23   One specific pain point example are git tags. They can be replaced and change
24   so the git fetcher has to resolve them with the network. We use git revisions
25   where possible to avoid this and ensure determinism.
26
27f) network access is expected to work with the standard linux proxy variables
28   so that access behind firewalls works (the fetcher sets these in the
29   environment but only in the do_fetch tasks).
30
31g) access during parsing has to be minimal, a "git ls-remote" for an AUTOREV
32   git recipe might be ok but you can't expect to checkout a git tree.
33
34h) we need to provide revision information during parsing such that a version
35   for the recipe can be constructed.
36
37i) versions are expected to be able to increase in a way which sorts allowing
38   package feeds to operate (see PR server required for git revisions to sort).
39
40j) API to query for possible version upgrades of a url is highly desireable to
41   allow our automated upgrage code to function (it is implied this does always
42   have network access).
43
44k) Where fixes or changes to behaviour in the fetcher are made, we ask that
45   test cases are added (run with "bitbake-selftest bb.tests.fetch"). We do
46   have fairly extensive test coverage of the fetcher as it is the only way
47   to track all of its corner cases, it still doesn't give entire coverage
48   though sadly.
49
50l) If using tools during parse time, they will have to be in ASSUME_PROVIDED
51   in OE's context as we can't build git-native, then parse a recipe and use
52   git ls-remote.
53
54Not all fetchers support all features, autorev is optional and doesn't make
55sense for some. Upgrade detection means different things in different contexts
56too.
57
58