blob: fa44458953e38075054ca6bc6c2ac8d6dbda5ce5 [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"
Brian Harringcf0c7662012-12-19 23:06:44 -080031 case "${uri}" in
32 http://*|https://*|gs://*)
33 SRC_URI+=" ${uri}"
Brian Harringcf0c7662012-12-19 23:06:44 -080034 ;;
35 *)
36 die "Unknown protocol: ${uri}"
37 ;;
38 esac
Mike Frysinger6300c4b2013-04-06 22:48:39 -040039 RESTRICT+=" mirror"
Brian Harringcf0c7662012-12-19 23:06:44 -080040}
41
42# @ECLASS-FUNCTION: cros-binary_add_gs_uri
43# @DESCRIPTION:
44# Wrapper around cros-binary_add_uri. Invoked with 3 arguments;
45# the bcs user, the overlay, and the filename (or bcs://<uri> for
46# backwards compatibility).
47cros-binary_add_gs_uri() {
48 if [[ $# -ne 3 ]]; then
49 die "cros-binary_add_bcs_uri needs 3 arguments; $# given."
50 fi
51 # Strip leading bcs://...
52 [[ "${3:0:6}" == "bcs://" ]] && set -- "${1}" "${2}" "${3#bcs://}"
53 cros-binary_add_uri "gs://chromeos-binaries/HOME/$1/$2/$3"
54}
55
56# @ECLASS-FUNCTION: cros-binary_add_overlay_uri
57# @DESCRIPTION:
58# Wrapper around cros-binary_add_bcs_uri. Invoked with 2 arguments;
59# the basic board target (x86-alex for example), and the filename; that filename
60# is automatically prefixed with "${CATEGORY}/${PN}/" .
61cros-binary_add_overlay_uri() {
62 if [[ $# -ne 2 ]]; then
63 die "cros-binary_add_bcs_uri_simple needs 2 arguments; $# given."
64 fi
65 cros-binary_add_gs_uri bcs-"$1" overlay-"$1" "${CATEGORY}/${PN}/$2"
66}
67
Kenneth Waters512eb162010-06-02 10:19:12 -070068# @ECLASS-VARIABLE: CROS_BINARY_URI
69# @DESCRIPTION:
70# URI for the binary may be one of:
71# http://
72# https://
73# ssh://
Brian Harringcf0c7662012-12-19 23:06:44 -080074# gs://
Kenneth Waters512eb162010-06-02 10:19:12 -070075# file:// (file is relative to the files directory)
Brian Harringcf0c7662012-12-19 23:06:44 -080076# Additionally, all bcs ssh:// urls are rewritten to gs:// automatically
77# the appropriate GS bucket- although cros-binary_add_uri is the preferred
78# way to do that.
79# TODO: Deprecate this variable's support for ssh and http/https.
Kenneth Waters512eb162010-06-02 10:19:12 -070080: ${CROS_BINARY_URI:=}
Brian Harringcf0c7662012-12-19 23:06:44 -080081if [[ -n "${CROS_BINARY_URI}" ]]; then
82 cros-binary_add_uri "${CROS_BINARY_URI}"
83fi
Kenneth Waters512eb162010-06-02 10:19:12 -070084
Puneet Kumar0cc9c652010-08-25 13:35:17 -070085# @ECLASS-VARIABLE: CROS_BINARY_INSTALL_FLAGS
86# @DESCRIPTION:
87# Optional Flags to use while installing the binary
88: ${CROS_BINARY_INSTALL_FLAGS:=}
89
Allen Martin967a8242012-03-27 04:51:34 +000090# @ECLASS-VARIABLE: CROS_BINARY_LOCAL_URI_BASE
91# @DESCRIPTION:
92# Optional URI to override CROS_BINARY_URI location. If this variable
93# is used the filename from CROS_BINARY_URI will be used, but the path
94# to the binary will be changed.
95: ${CROS_BINARY_LOCAL_URI_BASE:=}
96
Mike Frysinger4ed918e2012-05-09 15:44:12 -040097# Check for EAPI 2+
Kenneth Waters512eb162010-06-02 10:19:12 -070098case "${EAPI:-0}" in
Mike Frysingerde80d302015-12-23 12:24:05 -0500992|3|4|5|6) ;;
100*) die "unsupported EAPI (${EAPI}) in eclass (${ECLASS})" ;;
Kenneth Waters512eb162010-06-02 10:19:12 -0700101esac
102
103cros-binary_check_file() {
Mike Frysingerc8e92f52017-06-08 20:50:34 -0400104 cros-binary_dead_usage
Kenneth Waters512eb162010-06-02 10:19:12 -0700105}
106
107cros-binary_fetch() {
Mike Frysinger7483e862015-11-30 16:44:40 -0500108 cros-binary_dead_usage
Kenneth Waters512eb162010-06-02 10:19:12 -0700109}
110
111cros-binary_src_unpack() {
Mike Frysinger7483e862015-11-30 16:44:40 -0500112 cros-binary_dead_usage
Kenneth Waters512eb162010-06-02 10:19:12 -0700113}
114
115cros-binary_src_install() {
Mike Frysinger08938db2017-08-02 01:07:51 -0400116 ewarn "cros-binary_src_install is deprecated."
117 ewarn "Please convert this ebuild to src_install and install files manually."
118
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