blob: d66513372c4db1d4724576a9c8096f486e63684f [file] [log] [blame]
Mike Frysinger4ed918e2012-05-09 15:44:12 -04001# Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
Kenneth Waters512eb162010-06-02 10:19:12 -07002# Distributed under the terms of the GNU General Public License v2
3
4#
5# Original Author: The Chromium OS Authors <chromium-os-dev@chromium.org>
6# Purpose: Install binary packages for Chromium OS
7#
8
Mike Frysinger7483e862015-11-30 16:44:40 -05009# Reject old users of cros-binary eclass that expected us to download files
10# directly rather than going through SRC_URI.
11cros-binary_dead_usage() {
12 die "You must add files to SRC_URI now"
13}
14if [[ ${CROS_BINARY_STORE_DIR:+set} == "set" ||
15 ${CROS_BINARY_SUM:+set} == "set" ||
16 ${CROS_BINARY_FETCH_REQUIRED:+set} == "set" ]]; then
17 cros-binary_dead_usage
18fi
Brian Harringcf0c7662012-12-19 23:06:44 -080019
20# @ECLASS-FUNCTION: cros-binary_add_uri
21# @DESCRIPTION:
22# Add a fetch uri to SRC_URI for the given uri. See
23# CROS_BINARY_URI for what is accepted. Note you cannot
24# intermix a non-rewritten ssh w/ (http|https|gs).
25cros-binary_add_uri()
26{
27 if [[ $# -ne 1 ]]; then
28 die "cros-binary_add_uri takes exactly one argument; $# given."
29 fi
30 local uri="$1"
31 if [[ "${uri}" =~ ^ssh://([^@]+)@git.chromium.org[^/]*/(.*)$ ]]; then
32 uri="gs://chromeos-binaries/HOME/${BASH_REMATCH[1]}/${BASH_REMATCH[2]}"
33 fi
34 case "${uri}" in
35 http://*|https://*|gs://*)
36 SRC_URI+=" ${uri}"
Brian Harringcf0c7662012-12-19 23:06:44 -080037 ;;
38 *)
39 die "Unknown protocol: ${uri}"
40 ;;
41 esac
Mike Frysinger6300c4b2013-04-06 22:48:39 -040042 RESTRICT+=" mirror"
Brian Harringcf0c7662012-12-19 23:06:44 -080043}
44
45# @ECLASS-FUNCTION: cros-binary_add_gs_uri
46# @DESCRIPTION:
47# Wrapper around cros-binary_add_uri. Invoked with 3 arguments;
48# the bcs user, the overlay, and the filename (or bcs://<uri> for
49# backwards compatibility).
50cros-binary_add_gs_uri() {
51 if [[ $# -ne 3 ]]; then
52 die "cros-binary_add_bcs_uri needs 3 arguments; $# given."
53 fi
54 # Strip leading bcs://...
55 [[ "${3:0:6}" == "bcs://" ]] && set -- "${1}" "${2}" "${3#bcs://}"
56 cros-binary_add_uri "gs://chromeos-binaries/HOME/$1/$2/$3"
57}
58
59# @ECLASS-FUNCTION: cros-binary_add_overlay_uri
60# @DESCRIPTION:
61# Wrapper around cros-binary_add_bcs_uri. Invoked with 2 arguments;
62# the basic board target (x86-alex for example), and the filename; that filename
63# is automatically prefixed with "${CATEGORY}/${PN}/" .
64cros-binary_add_overlay_uri() {
65 if [[ $# -ne 2 ]]; then
66 die "cros-binary_add_bcs_uri_simple needs 2 arguments; $# given."
67 fi
68 cros-binary_add_gs_uri bcs-"$1" overlay-"$1" "${CATEGORY}/${PN}/$2"
69}
70
Kenneth Waters512eb162010-06-02 10:19:12 -070071# @ECLASS-VARIABLE: CROS_BINARY_URI
72# @DESCRIPTION:
73# URI for the binary may be one of:
74# http://
75# https://
76# ssh://
Brian Harringcf0c7662012-12-19 23:06:44 -080077# gs://
Kenneth Waters512eb162010-06-02 10:19:12 -070078# file:// (file is relative to the files directory)
Brian Harringcf0c7662012-12-19 23:06:44 -080079# Additionally, all bcs ssh:// urls are rewritten to gs:// automatically
80# the appropriate GS bucket- although cros-binary_add_uri is the preferred
81# way to do that.
82# TODO: Deprecate this variable's support for ssh and http/https.
Kenneth Waters512eb162010-06-02 10:19:12 -070083: ${CROS_BINARY_URI:=}
Brian Harringcf0c7662012-12-19 23:06:44 -080084if [[ -n "${CROS_BINARY_URI}" ]]; then
85 cros-binary_add_uri "${CROS_BINARY_URI}"
86fi
Kenneth Waters512eb162010-06-02 10:19:12 -070087
Puneet Kumar0cc9c652010-08-25 13:35:17 -070088# @ECLASS-VARIABLE: CROS_BINARY_INSTALL_FLAGS
89# @DESCRIPTION:
90# Optional Flags to use while installing the binary
91: ${CROS_BINARY_INSTALL_FLAGS:=}
92
Allen Martin967a8242012-03-27 04:51:34 +000093# @ECLASS-VARIABLE: CROS_BINARY_LOCAL_URI_BASE
94# @DESCRIPTION:
95# Optional URI to override CROS_BINARY_URI location. If this variable
96# is used the filename from CROS_BINARY_URI will be used, but the path
97# to the binary will be changed.
98: ${CROS_BINARY_LOCAL_URI_BASE:=}
99
Mike Frysinger4ed918e2012-05-09 15:44:12 -0400100# Check for EAPI 2+
Kenneth Waters512eb162010-06-02 10:19:12 -0700101case "${EAPI:-0}" in
Mike Frysingerde80d302015-12-23 12:24:05 -05001022|3|4|5|6) ;;
103*) die "unsupported EAPI (${EAPI}) in eclass (${ECLASS})" ;;
Kenneth Waters512eb162010-06-02 10:19:12 -0700104esac
105
106cros-binary_check_file() {
Mike Frysingerc8e92f52017-06-08 20:50:34 -0400107 cros-binary_dead_usage
Kenneth Waters512eb162010-06-02 10:19:12 -0700108}
109
110cros-binary_fetch() {
Mike Frysinger7483e862015-11-30 16:44:40 -0500111 cros-binary_dead_usage
Kenneth Waters512eb162010-06-02 10:19:12 -0700112}
113
114cros-binary_src_unpack() {
Mike Frysinger7483e862015-11-30 16:44:40 -0500115 cros-binary_dead_usage
Kenneth Waters512eb162010-06-02 10:19:12 -0700116}
117
118cros-binary_src_install() {
Mike Frysingerfdd64d52017-08-02 01:03:30 -0400119 local target="${DISTDIR}/${CROS_BINARY_URI##*/}"
Kenneth Waters512eb162010-06-02 10:19:12 -0700120 local extension="${CROS_BINARY_URI##*.}"
121 local flags
122
123 case "${CROS_BINARY_URI##*.}" in
124 gz|tgz) flags="z";;
125 bz2|tbz2) flags="j";;
126 *) die "Unsupported binary file format ${CROS_BINARY_URI##*.}"
127 esac
128
129 cd "${D}" || die
Mike Frysingerb39ef8a2017-06-08 20:51:35 -0400130 tar "${flags}xpf" "${target}" --no-same-owner ${CROS_BINARY_INSTALL_FLAGS} || die "Failed to unpack"
Kenneth Waters512eb162010-06-02 10:19:12 -0700131}
132
Mike Frysinger7483e862015-11-30 16:44:40 -0500133EXPORT_FUNCTIONS src_install
Kenneth Waters512eb162010-06-02 10:19:12 -0700134