summaryrefslogtreecommitdiffstats
path: root/classes
diff options
context:
space:
mode:
authorNathan Rossi <nathan@nathanrossi.com>2017-08-21 18:57:47 +1000
committerNathan Rossi <nathan@nathanrossi.com>2017-08-28 23:51:51 +1000
commit9bb4337aca9c71b18d6dbd9c11032aba68d09d27 (patch)
tree0e42b299ac56edd1eaab98d9941b17df71916391 /classes
parent39f025e07644c59cd5bf55194334230f319afd55 (diff)
downloadmeta-xilinx-9bb4337aca9c71b18d6dbd9c11032aba68d09d27.tar.gz
xilinx-fetch-restricted.bbclass: Custom fetch task for restricted files
This class overrides the default fetch task available from base.bbclass. This overridden task prevents the downloading from URLs that match against the 'xilinx.com/member/forms/download' which require user credentials and may require agreement with EULAs, licenses, export compliance, etc. The overridden task does however allow fetching from PREMIRRORs, which allows for pre-downloaded content to be accessed in an automated way. When attempting to fetch the non-accessible files the fetch task will error and present the user with a message informing them that they need to manually download the content and the url which to download the content from. The purpose of this is to reduce the reliance on manual documentation and or processes which instruct users to complete manual steps which can be error prone, ambiguous and or just tedious. This also aims to make automation easier by allowing use of pre-downloaded content or user PREMIRRORs to access downloads. Signed-off-by: Nathan Rossi <nathan@nathanrossi.com> Tested-by: Alistair Francis <alistair.francis@xilinx.com> Acked-by: Alistair Francis <alistair.francis@xilinx.com> Acked-by: Manjukumar Matha <manjukumar.harthikote-matha@xilinx.com>
Diffstat (limited to 'classes')
-rw-r--r--classes/xilinx-fetch-restricted.bbclass35
1 files changed, 35 insertions, 0 deletions
diff --git a/classes/xilinx-fetch-restricted.bbclass b/classes/xilinx-fetch-restricted.bbclass
new file mode 100644
index 00000000..a778ec7d
--- /dev/null
+++ b/classes/xilinx-fetch-restricted.bbclass
@@ -0,0 +1,35 @@
1# This class is setup to override the default fetching for the target recipe.
2# When fetching it forces PREMIRROR only fetching so that no attempts are made
3# to fetch the Xilinx downloads that are restricted to authenticated users only.
4#
5# The purpose of this class is to allow for automatation with pre-downloaded
6# content or content that is available with curated/user defined pre-mirrors
7# and or pre-populated downloads/ directories.
8
9python do_fetch() {
10 xilinx_restricted_url = "xilinx.com/member/forms/download"
11
12 src_uri = (d.getVar('SRC_URI') or "").split()
13 if len(src_uri) == 0:
14 return
15
16 for i in src_uri:
17 if xilinx_restricted_url in i:
18 # force the use of premirrors only, do not attempt download from xilinx.com
19 d.setVar("BB_FETCH_PREMIRRORONLY", "1")
20 break
21
22 try:
23 fetcher = bb.fetch2.Fetch(src_uri, d)
24 fetcher.download()
25 except bb.fetch2.NetworkAccess as e:
26 if xilinx_restricted_url in e.url:
27 # fatal on access to xilinx.com restricted downloads, print the url for manual download
28 bb.fatal("The following download cannot be fetched automatically. " \
29 "Please manually download the file and place it in the 'downloads' directory (or on an available PREMIRROR).\n" \
30 " %s" % (e.url.split(";")[0]))
31 else:
32 bb.fatal(str(e))
33 except bb.fetch2.BBFetchException as e:
34 bb.fatal(str(e))
35}