xmms2 / promoe

A client with a WinAmp / XMMS 1 look
GNU General Public License v2.0
7 stars 3 forks source link

Add more travis targets #2

Open dsvensson opened 8 years ago

dsvensson commented 8 years ago

Now that there's a basic travis configuration, additional targets ought to be added.

Reasonable permutations:

For Qt5, there's a PPA at LaunchPad available via: sudo add-apt-repository --yes ppa:ubuntu-sdk-team/ppa

To get clang builds, on Linux at least, we need to compile against xmms2-devel, or perform some header patching at build time as there has been clang related fixes since last stable release. Another crazy thing would be to release a new xmms2-stable :)

When adding this complexity, the actual build script should be broken out into a separate file rather than the .travis.yml. The script should also implemented in an expressive language, maybe Python, as dependencies should be conditionally installed to keep the build time down as much as possible.

Malvineous commented 8 years ago

If it helps, for OSX only, I needed a custom version of Boost for my own projects. I couldn't get this under Travis/OSX unless I compiled from source which took a really long time, almost the time limit of the Travis instance. Not having access to a Mac, I created travis-homebrew-bottle which would compile a project in an OSX instance, then package it up in a Homebrew Bottle (binary package) and upload it as a Github release.

You could use this either as a separate project or as part of xmms2-devel to, upon a successful build under OSX, upload the binary package to Github. Promoe could then download and install this package during the build process to get the latest version of xmms2-devel without needing to compile anything extra.

I guess you could do the same thing for Linux, doing a ./waf --destdir="temp" install in xmms2-devel then packaging up that directory and uploading it, extracting it again at the start of Promoe's build process, so you're always compiling against the latest code.

dsvensson commented 8 years ago

homebrew sucks :) for xmms2 we're just installing macports and going with that instead

MACPORTS_PKGS=(
   "pkg1"
   "pkg2"
   ....
)

function darwin_install {
    filename=MacPorts-2.3.4-10.11-ElCapitan.pkg
    curl -O "https://distfiles.macports.org/MacPorts/$filename"
    sudo installer -pkg $filename -target /

    export PATH=/opt/local/bin:$PATH
    export COLUMNS=2048

    sudo port selfupdate
    for pkg in "${MACPORTS_PKGS[@]}"
    do
        sudo port install --no-rev-upgrade $pkg
    done

    sudo port select --set python python27
    sudo port select --set cython cython27
}

Performance hurts a bit but I find macports a very stable and large repository. Too bad Travis don't have macports as a first class citizen - local http cache for its binaries and so on.

As for installing latest libxmmsclient snapshot, cloning and building is so fast, it's not worth adding some binary publishing anywhere else as it cannot drive downstream promoe travis builds on its own (pushing new code to xmms2 for example).