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

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

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

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

    rm -rv "$BUILDROOT$file"
    subst "s|.*$file.*||" $SPEC
}

22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69

# Usage: pack_file <path_to_file>
pack_file()
{
    grep -q "^$1$" $SPEC && return
    grep -q "\"$1\"" $SPEC && return
    subst "s|%files|%files\n$1|" $SPEC
}


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/
    echo "exec $target \"\$@\"" > $BUILDROOT/usr/bin/$name
    chmod 0755 $BUILDROOT/usr/bin/$name
    pack_file /usr/bin/$name
}

# move files to $PRODUCTDIR
move_to_opt()
{
    local from="$1"
    [ -n "$from" ] || from="/usr/share/$PRODUCT"
    mkdir -p $BUILDROOT$PRODUCTDIR/
    mv $BUILDROOT/$from/* $BUILDROOT$PRODUCTDIR/
    subst "s|$from|$PRODUCTDIR|g" $SPEC
}

70 71 72 73 74 75 76 77 78 79

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
80 81
    [ -e "$BUILDROOT$sandbox" ] || return 0
    chmod -v 4711 $BUILDROOT$sandbox
82
}
83 84 85 86 87 88 89 90

# ignore embedded libs
drop_embedded_reqs()
{
    subst '1i%filter_from_requires /^libGLESv2.so().*/d' $SPEC
    subst '1i%filter_from_requires /^libEGL.so().*/d' $SPEC
    subst '1i%filter_from_requires /^libffmpeg.so().*/d' $SPEC
}