Xfce Forum

Sub domains
 

You are not logged in.

#1 2013-12-22 17:43:54

Slesa
Member
From: Saarbrücken
Registered: 2013-12-22
Posts: 10

Compile batch for XFCE

Hi,

Xfce 4.10
Distri Xubuntu 13.10

I am currently trying to compile parts of XFCE. As lazy as I am, I typed everything twice. One to see that it doesn't work, second time to have a batch. Maybe I should add the commands to install necessary packages...


#!/bin/bash
export XFCE_PATH="/home/slesa/work/xfce/deploy"
export PKG_CONFIG_PATH="$XFCE_PATH/lib/pkgconfig:$PKG_CONFIG_PATH"
export CFLAGS="-O2 -pipe -Wno-deprecated-declarations"
export XFCE_BRANCH="master"
#export XFCE_BRANCH="xfce-4.10"
export PATH=$XFCE_PATH/bin:$PATH
export LD_LIBRARY_PATH=$XFCE_PATH/lib:$LD_LIBRARY_PATH

#declare -a XFCE_MODULES=("xfce4-docs")
declare -a XFCE_MODULES=(
"xfce4-dev-tools" "libxfce4util" "xfconf" "libxfce4ui" "garcon" "exo" 
"xfce4-panel"
"xfdesktop" "xfwm4" 
"xfce4-appfinder"
##"xfce4-session"
"xfce4-settings" 
"thunar"
##"thunar-desktop-plugin"
"thunar-volman"
"tumbler"
#"xfce4-docs"
)

declare -a XFCE_APPS=(
"xfce4-screenshooter"
"xfce4-taskmanager" "xfce4-terminal" 
"orage" 
#"parole"
"ristretto" "xfbib" "mousepad"
"xfce4-dict" "xfce4-profile-manager"
)

declare -a XFCE_PLUGINS=(
"xfce4-battery-plugin"
"xfce4-clipman-plugin"
"xfce4-xkb-plugin"
"xfce4-weather-plugin"
"xfce4-indicator-plugin"
"xfce4-mailwatch-plugin"
"xfce4-eyes-plugin"
"xfce4-cpufreq-plugin"
"xfce4-cpugraph-plugin"
"xfce4-datetime-plugin"
##"xfce4-taskbar-plugin"
)

declare -a XFCE_ART=(
##"xfce4-artwork"
"xfce4-icon-theme"
"xfwm4-themes"
)

declare -a XFCE_ADDONS=(
"xfdashboard-0.0.1-alpha_20131224"
)

declare -a DEPENDENCIES=("libtool" "automake" "libglib2.0-dev"
#libxfce4util
"intltool" "gtk-doc-tools"
#xfconf
"libdbus-1-dev" "libdbus-glib-1-dev"
#libxfce4ui
"libx11-dev" "libgtk-3-dev"
##"libgtk2.0-dev"
#xfce4-panel
"libwnck-dev"
#xfce4-docs
"gnome-doc-utils"
#thunar-volman
"libgudev-1.0-dev"
#xfce4-screenshooter
"libsoup2.4-dev"
#xfce4-terminal
"libvte-dev"
#parole
"libgstreamer1.0-dev"
#ristretto
"libexif-dev"
#mousepad
"libgtksourceview2.0-dev"
#xfce-clipman-plugin
"libxtst-dev"
#xfce4-xkb-plugin
"libxklavier-dev" "librsvg2-dev"
#xfce-indicator-plugin
"libindicator3-dev"
#xfce-mailwatch-plugin
"libgcrypt11-dev"
#xfdashboard
#warning, big "libclutter-1.0-dev"
)

autogen=false
cleanup=false
aptcalled=false
buildmodules=true
buildapps=true
buildplugins=true
buildart=true
buildaddons=true

if [ ! -d $XFCE_PATH ]; then
    mkdir $XFCE_PATH
fi

function color_red {
    echo -e '\E[0;31m'"\033[1m$1\033[0m"    # Red
}

function color_green {
    echo -e '\E[0;32m'"\033[1m$1\033[0m"  # Green
}

function color_off {
    tput sgr0
}

function checkout {
    local part=$1
    local module=$2
    pushd . > /dev/null

    if [ -d $module ]; then
        cd $module
        git pull 
    else
        git clone git://git.xfce.org/$part/$module
        cd $module
        git checkout -b devel origin/$XFCE_BRANCH
    fi

    popd > /dev/null
}

function call_apt {
    color_green "Probably there are some packages missing. Calling apt to install..."

    local packages=""
    for dep in ${DEPENDENCIES[@]}
    do
        packages="$packages $dep"
    done
    sudo apt-get --yes install $packages >> build.log   
    #sudo apt-get --yes install $dep    

    aptcalled=true
}


function call_autogen {
    local module=$1

    color_green "Calling autogen for $module"
    local params="--prefix=$XFCE_PATH --enable-maintainer-mode"
    
    if [ "$module" == "xfce4-docs" ]; then
        params="$params --enable-gen-doc"
#    elif [ "$module" == "libxfce4util" ]; then
#        params="$params --disable-debug --enable-gtk3"
#    elif [ "$module" == "libxfce4ui" ]; then
#        params="$params --disable-debug --enable-gtk3"
    else
        params="$params --disable-debug --enable-gtk3"
    fi

    ./autogen.sh $params
    result=$?
    if [ ! $result -eq 0 ];
    then
        if $aptcalled
        then
            color_red "Error calling autogen for $module"
            exit -2
        fi
        call_apt
        call_autogen $module
    fi
}

function build {
    local module=$1

    color_green "Calling build for $module"
    pushd .

    cd $module

    if $autogen 
    then
        call_autogen $module
    elif [ ! -f "config.status" ]; then
        call_autogen $module
    fi

    make
    result=$?
    if [ ! $result -eq 0 ];
    then
        color_red "Error while calling make"
        exit -1
    fi

    if [ "$module" != "xfce4-docs" ]; then
        make install 
        result=$?
        if [ ! $result -eq 0 ];
        then
            color_red "Error while calling install"
            exit -1
        fi
    fi

    popd
}



while getopts "acdmprx?" optname
do
    case "$optname" in
        "a")
            echo "Calling autogen.sh"
            autogen=true
            ;;
        "c")
            cleanup=true
            ;;
        "d")
            buildaddons=false
            ;;
        "m")
            buildmodules=false
            ;;
        "p")
            buildplugins=false
            ;;
        "r")
            buildart=false
            ;;
        "x")
            buildapps=false
            ;;
        "?")
            echo "Build XFCE from scratch. Available parameters:"
            echo "-a  call autogen.sh even if config.status already exists"
            echo "-c  remove all outputs and directories"
            echo "-d  do not build the addons"
            echo "-m  do not build the modules"
            echo "-p  do not build the plugins"
            echo "-r  do not build the art"
            echo "-x  do not build the applications"
            exit 2
            ;;
        ":")
            echo "No argument value for option $OPTARG"
            ;;
        *)
            # Should not occur
            echo "Unknown error while processing options"
            exit 1
            ;;
    esac
done

if $cleanup 
then
    echo "Cleaning up..."
    for module in ${XFCE_MODULES[@]}
    do
        if [ -d "$module" ]; then
            echo "Removing $module"
            rm -rf $module
        fi
    done
    for app in ${XFCE_APPS[@]}
    do
        if [ -d "$app" ]; then
            echo "Removing $app"
            rm -rf $app
        fi
    done
    for plugin in ${XFCE_PLUGINS[@]}
    do
        if [ -d "$plugin" ]; then
            echo "Removing $plugin"
            rm -rf $plugin
        fi
    done
    for art in ${XFCE_ART[@]}
    do
        if [ -d "$art" ]; then
            echo "Removing $art"
            rm -rf $art
        fi
    done
    echo "Removing $XFCE_PATH"
    rm -rf $XFCE_PATH
    echo "ready"
    exit 0
fi

if $buildmodules
then
    for module in ${XFCE_MODULES[@]}
    do
        color_green "Processing $module"
        
        checkout "xfce" $module
        build $module 
    done
fi

if $buildapps
then
    for app in ${XFCE_APPS[@]}
    do
        color_green "Processing $app"
    
        checkout "apps" $app
        build $app 
    done
fi

if $buildplugins
then
    for plugin in ${XFCE_PLUGINS[@]}
    do
        color_green "Processing $plugin"
    
        checkout "panel-plugins" $plugin
        build $plugin 
    done
fi

if $buildart
then
    for art in ${XFCE_ART[@]}
    do
        color_green "Processing $art"
    
        checkout "art" $art
        build $art 
    done
fi

if $buildaddons
then
    for addon in ${XFCE_ADDONS[@]}
    do
        color_green "Processing $addon"
    
        if [ -d "$addon" ]; then
            build $addon 
        else
            color_red "$addon not found"
        fi
    done
fi

(Updated)
Now even with colors...

Last edited by Slesa (2013-12-25 20:50:55)

Offline

#2 2013-12-23 20:48:08

ToZ
Administrator
From: Canada
Registered: 2011-06-02
Posts: 10,932

Re: Compile batch for XFCE

Looking forward to see you develop this script as it would sure make compilation easier. As an enhancement request, can you script in the ability to clone/pull and build plugins as well? They sit in a different directory ("plugins" instead of "xfce").


Please remember to mark your thread [SOLVED] to make it easier for others to find
--- How To Ask For Help | FAQ | Developer Wiki  |  Community | Contribute ---

Offline

#3 2013-12-23 21:22:40

Slesa
Member
From: Saarbrücken
Registered: 2013-12-22
Posts: 10

Re: Compile batch for XFCE

Oh, thank you for that hint. The reason why I'm writing that script is to see if I can change the IBus plugin - but did not find it yet ;-)

Offline

#4 2013-12-23 22:48:19

Slesa
Member
From: Saarbrücken
Registered: 2013-12-22
Posts: 10

Re: Compile batch for XFCE

New version:
- installs all missing dependencies on the fly (as far as I know them)
- supports now apps and plugins

Offline

#5 2013-12-24 14:37:10

Slesa
Member
From: Saarbrücken
Registered: 2013-12-22
Posts: 10

Re: Compile batch for XFCE

Update:
- added xfce-art
- added the possibility to not build modules

Packages marked with ## do not build on my system. So far, I found the following problems:
- xfce4-docs:
    cp xfhelp4.desktop.in xfhelp4.desktop
- apps/xfce4-taskmanager:
    doc/Makefile, install: line missing
- plugins/xfce4-indicator-plugin
    libxfce4panel2 not found
- plugins/xfce4-mailwatch-plugin
    libgcrypt conditional does not work
- plugins/xfce4-eyes-plugin
    ltmain.sh missing
    cp xfce4-indicator-plugin/ltmain.sh xfce4-eyes-plugin/
- plugin/xfce4-cpufreq-plugin
    mkdir xfce4-cpufreq-plugin/m4
- plugin/xfce4-taskbar-plugin
    no autogen.sh

Offline

#6 2013-12-24 15:34:09

ToZ
Administrator
From: Canada
Registered: 2011-06-02
Posts: 10,932

Re: Compile batch for XFCE

Slesa wrote:

Packages marked with ## do not build on my system. So far, I found the following problems:

- xfce4-docs:
    cp xfhelp4.desktop.in xfhelp4.desktop

...I think this package has been deprecated. There hasn't been any real activity for over 2 years and all Xfce documentation has been moved to the wiki. From within the apps, all(?) help links lead directly to the wiki.


- apps/xfce4-taskmanager:
    doc/Makefile, install: line missing

...Also doesn't seem to be much activity here for some time. I wonder if its been deprecated as well.


- plugins/xfce4-indicator-plugin
    libxfce4panel2 not found

...you need to build libxfce4util with the "--enable-gtk3" parameter to make it available. I believe this parameter also makes parole build.


- plugins/xfce4-mailwatch-plugin
    libgcrypt conditional does not work

...it's a warning that doesn't affect the build. Plugin builds and works fine.


- plugins/xfce4-eyes-plugin
    ltmain.sh missing
    cp xfce4-indicator-plugin/ltmain.sh xfce4-eyes-plugin/

...Yes, same here. Might be worth creating a bug report for.


- plugin/xfce4-cpufreq-plugin
    mkdir xfce4-cpufreq-plugin/m4

...maybe another bug report.


- plugin/xfce4-taskbar-plugin
    no autogen.sh

...README file has different build instructions.


Please remember to mark your thread [SOLVED] to make it easier for others to find
--- How To Ask For Help | FAQ | Developer Wiki  |  Community | Contribute ---

Offline

#7 2013-12-25 01:25:37

Slesa
Member
From: Saarbrücken
Registered: 2013-12-22
Posts: 10

Re: Compile batch for XFCE

ToZ wrote:

- xfce4-docs:
...I think this package has been deprecated.

Either it should be moved to archive, or the missing file should be added. But to have a package which does not compile is not really an option, is it?

ToZ wrote:

- apps/xfce4-taskmanager:
...Also doesn't seem to be much activity here for some time. I wonder if its been deprecated as well.

Well, it is the taskmanager. May I can have a look at the open issues. Maybe start with the one-instance-only thing.

ToZ wrote:

- plugins/xfce4-indicator-plugin
...you need to build libxfce4util with the "--enable-gtk3" parameter to make it available. I believe this parameter also makes parole build.

Good point. I am wondering wht gtk3 is not the default... And it is hard to get hints for such optional parameters...

ToZ wrote:

- plugins/xfce4-mailwatch-plugin
    libgcrypt conditional does not work
...it's a warning that doesn't affect the build. Plugin builds and works fine.

No, it is an error. because of

configure.ac:93: error: possibly undefined macro: AM_PATH_LIBGCRYPT
 
ToZ wrote:

- plugins/xfce4-eyes-plugin:  ltmain.sh missing
...Yes, same here. Might be worth creating a bug report for.

Bug report initiated.

ToZ wrote:

- plugin/xfce4-cpufreq-plugin: m4

Update: Bug fixed.

ToZ wrote:

- plugin/xfce4-taskbar-plugin:  no autogen.sh
...README file has different build instructions.

Right now I only support autogen.sh. Thunar-desktop-plugin has the same problem. IMHO all XFCE modules should rely on the same behaviours.

Edit: Parole does not build because of dependencies I cannot resolve: libgstreamer-video.

Last edited by Slesa (2013-12-25 15:13:15)

Offline

#8 2013-12-25 01:58:37

Slesa
Member
From: Saarbrücken
Registered: 2013-12-22
Posts: 10

Re: Compile batch for XFCE

Update: added a few modules, apps, plugins  and their dependencies.

Offline

#9 2013-12-25 15:14:45

Slesa
Member
From: Saarbrücken
Registered: 2013-12-22
Posts: 10

Re: Compile batch for XFCE

Update:
- added support for alpha versions which are deployed as source code.
- added sfdashboard as such an addon

Offline

Board footer

Powered by FluxBB