common-chromium-browser.sh 3.26 KB
Newer Older
1 2 3 4 5 6 7 8 9
#!/bin/sh

# common functions for repack chromium based browsers
# used BUILDROOT, SPEC, PRODUCT, PRODUCTCUR and PRODUCTDIR variables
# example
# PRODUCT=mybrowser
# PRODUCTCUR=mybrowser-nightly
# PRODUCTDIR=/opt/my/browser

10 11
. $(dirname $0)/common.sh

12 13 14 15
set_alt_alternatives()
{
    local priority="$1"
    # needed alternatives
Vitaly Lipatov's avatar
Vitaly Lipatov committed
16
    subst '1iProvides: webclient' $SPEC
17 18 19 20 21 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

    subst "s|%files|%files\n/etc/alternatives/packages.d/$PRODUCT|" $SPEC
    mkdir -p $BUILDROOT/etc/alternatives/packages.d/
    cat <<EOF >$BUILDROOT/etc/alternatives/packages.d/$PRODUCT
/usr/bin/xbrowser	/usr/bin/$PRODUCT	$priority
/usr/bin/x-www-browser	/usr/bin/$PRODUCT	$priority
EOF
}


copy_icons_to_share()
{
    local iconname=$PRODUCT

    # try get icon name from desktopfile
    local desktopfile=$BUILDROOT/usr/share/applications/$PRODUCT.desktop
    [ -r $desktopfile ] || desktopfile=$BUILDROOT/usr/share/applications/$PRODUCTCUR.desktop
    if [ -r $desktopfile ] ; then
        iconname="$(cat $desktopfile | grep "^Icon" | head -n1 | sed -e 's|Icon=||')"
    fi

    for i in 16 24 32 48 64 128 256 ; do
        [ -r $BUILDROOT/$PRODUCTDIR/product_logo_$i*.png ] || continue
        mkdir -p $BUILDROOT/usr/share/icons/hicolor/${i}x${i}/apps/
        cp $BUILDROOT/$PRODUCTDIR/product_logo_$i*.png $BUILDROOT/usr/share/icons/hicolor/${i}x${i}/apps/$iconname.png
    done

    subst "s|%files|%files\n/usr/share/icons/hicolor/*x*/apps/$iconname.png|" $SPEC
}


cleanup()
{
Vitaly Lipatov's avatar
Vitaly Lipatov committed
50
    subst '1iAutoProv: no' $SPEC
51 52

    # remove cron update
Vitaly Lipatov's avatar
Vitaly Lipatov committed
53 54
    remove_file /etc/cron.daily/$PRODUCTCUR
    remove_file /etc/cron.daily/$PRODUCT
55 56

    # remove unsupported file
Vitaly Lipatov's avatar
Vitaly Lipatov committed
57
    remove_file /usr/share/menu/$PRODUCT.menu
58
    remove_file /usr/share/menu/$PRODUCTCUR.menu
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
}


use_system_xdg()
{
    # replace embedded xdg tools
    for i in $PRODUCTDIR/{xdg-mime,xdg-settings} ; do
        [ -s $BUILDROOT$i ] || continue
        rm -v $BUILDROOT$i
        ln -s /usr/bin/$(basename $i) $BUILDROOT$i
    done
}


install_deps()
{
    # install all requires packages before packing (the list have got with rpmreqs package | xargs echo)
76 77 78
    epm install --skip-installed at-spi2-atk file GConf glib2 grep libatk libat-spi2-core libalsa libcairo libcups libdbus libdrm libexpat libgbm libgdk-pixbuf libgio libgtk+3 libnspr libnss libpango \
            libX11 libxcb libXcomposite libXcursor libXdamage libXext libXfixes libXi libXrandr libXrender libXtst sed which xdg-utils xprop \
            libsecret
79 80 81
}


82
# FIXME: too many heruistic due https://bugzilla.altlinux.org/42189
83 84
add_bin_commands()
{
Vitaly Lipatov's avatar
Vitaly Lipatov committed
85
    mkdir -p $BUILDROOT/usr/bin
86

87 88 89 90 91 92 93 94 95 96 97 98
    if [ -L $BUILDROOT/usr/bin/$PRODUCTCUR ] ; then
        rm -fv $BUILDROOT/usr/bin/$PRODUCTCUR
    else
        subst "s|%files|%files\n/usr/bin/$PRODUCTCUR|" $SPEC
    fi

    if [ -r $BUILDROOT$PRODUCTDIR/$PRODUCTCUR ] ; then
        ln -rs $BUILDROOT$PRODUCTDIR/$PRODUCTCUR $BUILDROOT/usr/bin/$PRODUCTCUR
    else
        ln -rs $BUILDROOT$PRODUCTDIR/$PRODUCT $BUILDROOT/usr/bin/$PRODUCTCUR
    fi

99
    # fix links in $PRODUCTDIR (may be broken due https://bugzilla.altlinux.org/42189)
100 101 102 103 104 105
    if [ ! -r $BUILDROOT$(readlink $BUILDROOT$PRODUCTDIR/$PRODUCT) ] ; then
        rm -fv $BUILDROOT$PRODUCTDIR/$PRODUCT
        ln -s $PRODUCTCUR $BUILDROOT$PRODUCTDIR/$PRODUCT
    fi

    # short command for run
106
    add_bin_link_command $PRODUCT $PRODUCTCUR
107
}
108