common.sh 3.4 KB
Newer Older
1 2 3 4 5 6
#!/bin/sh

# Usage: remove_file <path_to_file>
remove_file()
{
    local file="$1"
7
    [ -n "$file" ] || return
8
    [ -e "$BUILDROOT$file" ] || [ -L "$BUILDROOT$file" ] || return
9

10
    rm -v "$BUILDROOT$file"
11 12 13
    subst "s|.*$file.*||" $SPEC
}

14 15 16
remove_dir()
{
    local file="$1"
17
    [ -n "$file" ] || return
18
    [ -d "$BUILDROOT$file/" ] || return
19

20 21
    echo "Removeing $file dir ..."
    rm -r "$BUILDROOT$file/"
22 23 24
    subst "s|.*$file/.*||" $SPEC
    subst "s|.*$file\"$||" $SPEC
    subst "s|.*$file$||" $SPEC
25 26
}

27 28 29 30

# Usage: pack_file <path_to_file>
pack_file()
{
31 32 33 34 35
    local file="$1"
    [ -n "$file" ] || return
    grep -q "^$file$" $SPEC && return
    grep -q "\"$file\"" $SPEC && return
    subst "s|%files|%files\n$file|" $SPEC
36 37
}

38 39 40 41 42 43 44 45 46 47
# Usage: pack_dir <path_to_dir>
pack_dir()
{
    local file="$1"
    [ -n "$file" ] || return
    grep -q "^%dir[[:space:]]$file$" $SPEC && return
    grep -q "^%dir[[:space:]]\"$file\"$" $SPEC && return
    subst "s|%files|%files\n%dir $file|" $SPEC
}

48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71

add_bin_link_command()
{
    local name="$1"
    local target="$2"
    [ -n "$name" ] || name="$PRODUCT"
    [ -n "$target" ] || target="$PRODUCTDIR/$name"
    [ -e $BUILDROOT/usr/bin/$name ] && return

    mkdir -p $BUILDROOT/usr/bin/
    ln -s $target $BUILDROOT/usr/bin/$name
    pack_file /usr/bin/$name
}


add_bin_exec_command()
{
    local name="$1"
    local target="$2"
    [ -n "$name" ] || name="$PRODUCT"
    [ -n "$target" ] || target="$PRODUCTDIR/$name"
    [ -e $BUILDROOT/usr/bin/$name ] && return

    mkdir -p $BUILDROOT/usr/bin/
72 73
    cat <<EOF > $BUILDROOT/usr/bin/$name
#!/bin/sh
74
exec $target "\$@"
75
EOF
76 77 78 79 80 81 82
    chmod 0755 $BUILDROOT/usr/bin/$name
    pack_file /usr/bin/$name
}

# move files to $PRODUCTDIR
move_to_opt()
{
83
    local from="$*"
84
    if [ -z "$from" ] ; then
85 86
        from="/usr/share/$PRODUCTCUR"
        [ -d "$BUILDROOT$from" ] || from="/usr/share/$PRODUCT"
87 88
        [ -d "$BUILDROOT$from" ] || from="/usr/lib/$PRODUCT"
    fi
89
    mkdir -p $BUILDROOT$PRODUCTDIR/
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104

    local sdir rdir i
    for i in $from ; do
        # workaround for wildcards in from
        sdir="$(echo $BUILDROOT$i)"
        [ -d "$sdir" ] || continue
        rdir="$(echo $sdir | sed -e "s|^$BUILDROOT||")"
        [ -n "$rdir" ] || return 1 #fatal "Can't resolve $from in $BUILDROOT"
        [ -d "$BUILDROOT$rdir" ] || fatal "Can't resolve $from in $BUILDROOT"
        break
    done
    [ -d "$sdir" ] || return 1 #fatal "Can't find any dir from $from list"

    mv $BUILDROOT$rdir/* $BUILDROOT$PRODUCTDIR/
    subst "s|$rdir|$PRODUCTDIR|g" $SPEC
105 106
}

107 108 109 110 111 112 113 114 115 116

fix_chrome_sandbox()
{
    local sandbox="$1"
    # Set SUID for chrome-sandbox if userns_clone is not supported
    # CHECKME: Also userns can be enabled via sysctl-conf-userns package install
    userns_path='/proc/sys/kernel/unprivileged_userns_clone'
    userns_val="$(cat $userns_path 2>/dev/null)"
    [ "$userns_val" = '1' ] && return
    [ -n "$sandbox" ] || sandbox=$PRODUCTDIR/chrome-sandbox
117 118
    [ -e "$BUILDROOT$sandbox" ] || return 0
    chmod -v 4711 $BUILDROOT$sandbox
119
}
120

121 122 123 124 125 126 127 128
filter_from_requires()
{
    local i
    for i in "$@" ; do
        subst "1i%filter_from_requires /^$i.*/d" $SPEC
    done
}

129 130 131
# ignore embedded libs
drop_embedded_reqs()
{
132
    filter_from_requires "libGLESv2.so()" "libEGL.so()" "libffmpeg.so()"
133
}
134

135 136
if [ -n "$PRODUCT" ] ; then
    [ -n "$PRODUCTCUR" ] || PRODUCTCUR="$PRODUCT"
137
    [ -n "$PRODUCTDIR" ] || PRODUCTDIR="/opt/$PRODUCTCUR"
138 139 140

    [ -d "$BUILDROOT$PRODUCTDIR" ] && pack_dir $PRODUCTDIR
fi