Browse Source

Improve travis CI setup (#823)

Signed-off-by: falkTX <falktx@gmail.com>
tags/v2.1-alpha2
Filipe Coelho GitHub 5 years ago
parent
commit
f7ea7061dd
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 230 additions and 96 deletions
  1. +36
    -8
      .travis.yml
  2. +8
    -3
      .travis/before_install.sh
  3. +77
    -37
      .travis/install.sh
  4. +33
    -0
      .travis/script-linux-strict.sh
  5. +1
    -1
      .travis/script-linux.sh
  6. +2
    -0
      source/Makefile.mk
  7. +22
    -5
      source/backend/engine/CarlaEngineOscSend.cpp
  8. +5
    -5
      source/backend/plugin/CarlaPluginLV2.cpp
  9. +15
    -10
      source/bridges-ui/CarlaBridgeToolkitQt.cpp
  10. +3
    -0
      source/bridges-ui/Makefile
  11. +24
    -24
      source/discovery/carla-discovery.cpp
  12. +1
    -0
      source/libjack/Makefile
  13. +3
    -3
      source/utils/CarlaOscUtils.hpp

+ 36
- 8
.travis.yml View File

@@ -1,18 +1,46 @@
os:
- linux
language:
- cpp

sudo: required
dist: trusty

languages: c++
compiler: gcc
matrix:
include:
# linux with default, builds native and bridges
- os: linux
compiler: gcc
env:
- TARGET="linux"

# linux with macOS cross-compilation
- os: linux
compiler: gcc
env:
- TARGET="macos"

# linux with win32 cross-compilation
- os: linux
compiler: gcc
env:
- TARGET="win32"

# linux with win64 cross-compilation
- os: linux
compiler: gcc
env:
- TARGET="win64"

# linux with gcc 8, strict build
- os: linux
compiler: gcc
env:
- TARGET="linux-strict"

before_install:
- sh ${TRAVIS_BUILD_DIR}/.travis/before_install.sh

install:
- sh ${TRAVIS_BUILD_DIR}/.travis/install.sh

script:
- sh ${TRAVIS_BUILD_DIR}/.travis/script-linux.sh
- sh ${TRAVIS_BUILD_DIR}/.travis/script-macos.sh
- sh ${TRAVIS_BUILD_DIR}/.travis/script-win32.sh
- sh ${TRAVIS_BUILD_DIR}/.travis/script-win64.sh
- sh ${TRAVIS_BUILD_DIR}/.travis/script-${TARGET}.sh

+ 8
- 3
.travis/before_install.sh View File

@@ -2,9 +2,14 @@

set -e

sudo add-apt-repository ppa:kxstudio-debian/kxstudio -y
sudo add-apt-repository ppa:kxstudio-debian/mingw -y
sudo add-apt-repository ppa:kxstudio-debian/toolchain -y
sudo add-apt-repository -y ppa:kxstudio-debian/kxstudio
sudo add-apt-repository -y ppa:kxstudio-debian/mingw
sudo add-apt-repository -y ppa:kxstudio-debian/toolchain

if [ "${TARGET}" = "linux-strict" ]; then
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
fi

sudo apt-get update -qq
sudo apt-get install kxstudio-repos
sudo apt-get update -qq

+ 77
- 37
.travis/install.sh View File

@@ -2,30 +2,83 @@

set -e

sudo apt-get install -y \
g++-multilib \
pkg-config \
pyqt5-dev-tools \
python3-pyqt5.qtsvg \
python3-rdflib \
libgtk2.0-dev \
libgtk-3-dev \
libqt4-dev \
qtbase5-dev \
libasound2-dev \
libpulse-dev \
libmagic-dev \
libgl1-mesa-dev \
libx11-dev \
libx11-6:i386 \
liblo-static \
fluidsynth-static \
apple-x86-setup \
mingw32-x-gcc \
mingw32-x-pkgconfig \
mingw64-x-gcc \
mingw64-x-pkgconfig \
wine-rt-dev
if [ "${TARGET}" = "linux" ]; then
sudo apt-get install -y \
g++-multilib \
pkg-config \
pyqt5-dev-tools \
python3-pyqt5.qtsvg \
python3-rdflib \
libgtk2.0-dev \
libgtk-3-dev \
libqt4-dev \
qtbase5-dev \
libasound2-dev \
libpulse-dev \
libmagic-dev \
libgl1-mesa-dev \
libx11-dev \
libx11-6:i386 \
liblo-static \
fluidsynth-static \
mingw32-x-gcc \
mingw32-x-pkgconfig \
mingw64-x-gcc \
mingw64-x-pkgconfig \
wine-rt-dev

# Fix for 32bit bridge link
sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so

elif [ "${TARGET}" = "linux-strict" ]; then
sudo apt-get install -y \
g++-8 \
pkg-config \
pyqt5-dev-tools \
python3-pyqt5.qtsvg \
python3-rdflib \
libgtk2.0-dev \
libgtk-3-dev \
libqt4-dev \
qtbase5-dev \
libasound2-dev \
libpulse-dev \
libmagic-dev \
libgl1-mesa-dev \
libx11-dev \
libx11-6:i386 \
liblo-static \
fluidsynth-static

elif [ "${TARGET}" = "macos" ]; then
sudo apt-get install -y \
pkg-config \
apple-x86-setup

# mkdir /tmp/osx-macports-pkgs
# cd /tmp/osx-macports-pkgs
# wget https://launchpad.net/~kxstudio-team/+archive/ubuntu/builds/+files/apple-macports-flac_1.2.1-1_all.deb
# wget https://launchpad.net/~kxstudio-team/+archive/ubuntu/builds/+files/apple-macports-libiconv_1.14-0_all.deb
# wget https://launchpad.net/~kxstudio-team/+archive/ubuntu/builds/+files/apple-macports-liblo_0.26-1_all.deb
# wget https://launchpad.net/~kxstudio-team/+archive/ubuntu/builds/+files/apple-macports-libogg_1.3.0-1_all.deb
# wget https://launchpad.net/~kxstudio-team/+archive/ubuntu/builds/+files/apple-macports-libsndfile_1.0.25-0_all.deb
# wget https://launchpad.net/~kxstudio-team/+archive/ubuntu/builds/+files/apple-macports-libvorbis_1.3.3-0_all.deb
# cd ~
# rm -r /tmp/osx-macports-pkgs

elif [ "${TARGET}" = "win32" ]; then
sudo apt-get install -y \
mingw32-x-gcc \
mingw32-x-pkgconfig

elif [ "${TARGET}" = "win64" ]; then
sudo apt-get install -y \
mingw32-x-gcc \
mingw32-x-pkgconfig \
mingw64-x-gcc \
mingw64-x-pkgconfig

fi

# mingw32-x-fluidsynth
# mingw32-x-fftw
@@ -37,16 +90,3 @@ sudo apt-get install -y \
# mingw64-x-liblo
# mingw64-x-mxml
# mingw64-x-zlib

mkdir /tmp/osx-macports-pkgs
cd /tmp/osx-macports-pkgs
wget https://launchpad.net/~kxstudio-team/+archive/ubuntu/builds/+files/apple-macports-flac_1.2.1-1_all.deb
wget https://launchpad.net/~kxstudio-team/+archive/ubuntu/builds/+files/apple-macports-libiconv_1.14-0_all.deb
wget https://launchpad.net/~kxstudio-team/+archive/ubuntu/builds/+files/apple-macports-liblo_0.26-1_all.deb
wget https://launchpad.net/~kxstudio-team/+archive/ubuntu/builds/+files/apple-macports-libogg_1.3.0-1_all.deb
wget https://launchpad.net/~kxstudio-team/+archive/ubuntu/builds/+files/apple-macports-libsndfile_1.0.25-0_all.deb
wget https://launchpad.net/~kxstudio-team/+archive/ubuntu/builds/+files/apple-macports-libvorbis_1.3.3-0_all.deb
cd ~
rm -r /tmp/osx-macports-pkgs

sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so

+ 33
- 0
.travis/script-linux-strict.sh View File

@@ -0,0 +1,33 @@
#!/bin/bash

set -e

# Preparation
export CC=gcc-8
export CXX=g++-8
export PKG_CONFIG_PATH=/opt/kxstudio/lib/pkgconfig:${PKG_CONFIG_PATH}
unset CFLAGS
unset CXXFLAGS
unset LDFLAGS

# Start clean
make distclean >/dev/null

# Print available features
make features

# Build things that we skip strict tests for
make -C source/modules/audio_decoder
make -C source/modules/dgl
make -C source/modules/hylia
make -C source/modules/rtaudio
make -C source/modules/rtmidi
make -C source/modules/sfzero
make -C source/modules/water
make -C source/theme all qt4 qt5

# FIXME
make -C source/libjack

# Build native stuff
make TESTBUILD=true

+ 1
- 1
.travis/script-linux.sh View File

@@ -3,7 +3,7 @@
set -e

# Preparation
_FLAGS="-I/opt/kxstudio/include -Werror"
_FLAGS="-Werror"
export CFLAGS="${_FLAGS}"
export CXXFLAGS="${_FLAGS}"
export LDFLAGS="-L/opt/kxstudio/lib"


+ 2
- 0
source/Makefile.mk View File

@@ -571,11 +571,13 @@ LINK := ln -sf
# ---------------------------------------------------------------------------------------------------------------------

ifneq ($(DEBUG),true)
ifneq ($(TESTBUILD),true)
ifneq (,$(wildcard $(CWD)/native-plugins/external/Makefile.mk))
EXTERNAL_PLUGINS = true
BASE_FLAGS += -DHAVE_EXTERNAL_PLUGINS
include $(CWD)/native-plugins/external/Makefile.mk
endif
endif
endif

# ---------------------------------------------------------------------------------------------------------------------

+ 22
- 5
source/backend/engine/CarlaEngineOscSend.cpp View File

@@ -209,7 +209,12 @@ void CarlaEngine::oscSend_control_set_parameter_ranges1(const uint pluginId, con
char targetPath[std::strlen(pData->oscData->path)+24];
std::strcpy(targetPath, pData->oscData->path);
std::strcat(targetPath, "/set_parameter_ranges1");
try_lo_send(pData->oscData->target, targetPath, "iifff", static_cast<int32_t>(pluginId), static_cast<int32_t>(index), def, min, max);
try_lo_send(pData->oscData->target, targetPath, "iifff",
static_cast<int32_t>(pluginId),
static_cast<int32_t>(index),
static_cast<double>(def),
static_cast<double>(min),
static_cast<double>(max));
}

void CarlaEngine::oscSend_control_set_parameter_ranges2(const uint pluginId, const uint32_t index, const float step, const float stepSmall, const float stepLarge) const noexcept
@@ -226,7 +231,12 @@ void CarlaEngine::oscSend_control_set_parameter_ranges2(const uint pluginId, con
char targetPath[std::strlen(pData->oscData->path)+24];
std::strcpy(targetPath, pData->oscData->path);
std::strcat(targetPath, "/set_parameter_ranges2");
try_lo_send(pData->oscData->target, targetPath, "iifff", static_cast<int32_t>(pluginId), static_cast<int32_t>(index), step, stepSmall, stepLarge);
try_lo_send(pData->oscData->target, targetPath, "iifff",
static_cast<int32_t>(pluginId),
static_cast<int32_t>(index),
static_cast<double>(step),
static_cast<double>(stepSmall),
static_cast<double>(stepLarge));
}

void CarlaEngine::oscSend_control_set_parameter_midi_cc(const uint pluginId, const uint32_t index, const int16_t cc) const noexcept
@@ -269,12 +279,16 @@ void CarlaEngine::oscSend_control_set_parameter_value(const uint pluginId, const
CARLA_SAFE_ASSERT_RETURN(pluginId <= pData->curPluginCount,);
CARLA_SAFE_ASSERT_RETURN(index < 50,);
CARLA_SAFE_ASSERT_RETURN(index != PARAMETER_NULL,);
carla_debug("CarlaEngine::oscSend_control_set_parameter_value(%i, %i:%s, %f)", pluginId, index, (index < 0) ? InternalParameterIndex2Str(static_cast<InternalParameterIndex>(index)) : "(none)", value);
carla_debug("CarlaEngine::oscSend_control_set_parameter_value(%i, %i:%s, %f)", pluginId, index,
(index < 0) ? InternalParameterIndex2Str(static_cast<InternalParameterIndex>(index)) : "(none)", value);

char targetPath[std::strlen(pData->oscData->path)+21];
std::strcpy(targetPath, pData->oscData->path);
std::strcat(targetPath, "/set_parameter_value");
try_lo_send(pData->oscData->target, targetPath, "iif", static_cast<int32_t>(pluginId), index, value);
try_lo_send(pData->oscData->target, targetPath, "iif",
static_cast<int32_t>(pluginId),
index,
static_cast<double>(value));
}

void CarlaEngine::oscSend_control_set_default_value(const uint pluginId, const uint32_t index, const float value) const noexcept
@@ -289,7 +303,10 @@ void CarlaEngine::oscSend_control_set_default_value(const uint pluginId, const u
char targetPath[std::strlen(pData->oscData->path)+19];
std::strcpy(targetPath, pData->oscData->path);
std::strcat(targetPath, "/set_default_value");
try_lo_send(pData->oscData->target, targetPath, "iif", static_cast<int32_t>(pluginId), static_cast<int32_t>(index), value);
try_lo_send(pData->oscData->target, targetPath, "iif",
static_cast<int32_t>(pluginId),
static_cast<int32_t>(index),
static_cast<double>(value));
}

void CarlaEngine::oscSend_control_set_current_program(const uint pluginId, const int32_t index) const noexcept


+ 5
- 5
source/backend/plugin/CarlaPluginLV2.cpp View File

@@ -1015,7 +1015,7 @@ public:
}
else
{
rindex -= fRdfDescriptor->PortCount;
rindex -= static_cast<int32_t>(fRdfDescriptor->PortCount);

if (rindex < static_cast<int32_t>(fRdfDescriptor->ParameterCount))
{
@@ -1198,7 +1198,7 @@ public:

if (pData->param.data[parameterId].rindex >= static_cast<int32_t>(fRdfDescriptor->PortCount))
{
const uint32_t rparamId = pData->param.data[parameterId].rindex - fRdfDescriptor->PortCount;
const uint32_t rparamId = static_cast<uint32_t>(pData->param.data[parameterId].rindex) - fRdfDescriptor->PortCount;
CARLA_SAFE_ASSERT_UINT2_RETURN(rparamId < fRdfDescriptor->ParameterCount,
rparamId, fRdfDescriptor->PortCount,);

@@ -1218,10 +1218,10 @@ public:
lv2_atom_forge_bool(&fAtomForge, fixedValue > 0.5f);
break;
case LV2_PARAMETER_INT:
lv2_atom_forge_int(&fAtomForge, fixedValue + 0.5f);
lv2_atom_forge_int(&fAtomForge, static_cast<int32_t>(fixedValue + 0.5f));
break;
case LV2_PARAMETER_LONG:
lv2_atom_forge_long(&fAtomForge, fixedValue + 0.5f);
lv2_atom_forge_long(&fAtomForge, static_cast<int64_t>(fixedValue + 0.5f));
break;
case LV2_PARAMETER_FLOAT:
lv2_atom_forge_float(&fAtomForge, fixedValue);
@@ -1391,7 +1391,7 @@ public:
lv2_atom_forge_urid(&fAtomForge, getCustomURID(fFilePathURI));

lv2_atom_forge_key(&fAtomForge, kUridPatchValue);
lv2_atom_forge_path(&fAtomForge, path, std::strlen(path));
lv2_atom_forge_path(&fAtomForge, path, static_cast<uint32_t>(std::strlen(path)));

lv2_atom_forge_pop(&fAtomForge, &forgeFrame);



+ 15
- 10
source/bridges-ui/CarlaBridgeToolkitQt.cpp View File

@@ -256,17 +256,21 @@ private:
#endif
};

// -------------------------------------------------------------------------

#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant"
#endif

#if (QT_VERSION >= QT_VERSION_CHECK(5, 0, 0))
# include "CarlaBridgeToolkitQt5.moc"
#else
# if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
# pragma GCC diagnostic push
# pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant"
# endif
# include "CarlaBridgeToolkitQt4.moc"
# if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
# pragma GCC diagnostic pop
# endif
#endif

#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
# pragma GCC diagnostic pop
#endif

// -------------------------------------------------------------------------
@@ -282,12 +286,13 @@ CARLA_BRIDGE_UI_END_NAMESPACE

// -------------------------------------------------------------------------

#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
# include "resources.qt5.cpp"
#else
// missing declaration
int qInitResources();
int qCleanupResources();

#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
# include "resources.qt5.cpp"
#else
# include "resources.qt4.cpp"
#endif



+ 3
- 0
source/bridges-ui/Makefile View File

@@ -56,8 +56,11 @@ endif

ifeq ($(TESTBUILD),true)
BUILD_GTK2_FLAGS += -isystem /usr/include/glib-2.0
BUILD_GTK2_FLAGS += -isystem /usr/include/gtk-2.0
BUILD_GTK3_FLAGS += -isystem /usr/include/glib-2.0
BUILD_GTK3_FLAGS += -isystem /usr/include/gtk-3.0
BUILD_QT4_FLAGS += -isystem /usr/include/qt4
BUILD_QT5_FLAGS += -isystem /usr/include/qt5
BUILD_QT5_FLAGS += -isystem /usr/include/x86_64-linux-gnu/qt5
endif



+ 24
- 24
source/discovery/carla-discovery.cpp View File

@@ -221,12 +221,12 @@ static void do_ladspa_check(lib_t& libHandle, const char* const filename, const
}

uint hints = 0x0;
int audioIns = 0;
int audioOuts = 0;
int audioTotal = 0;
int parametersIns = 0;
int parametersOuts = 0;
int parametersTotal = 0;
uint audioIns = 0;
uint audioOuts = 0;
uint audioTotal = 0;
uint parametersIns = 0;
uint parametersOuts = 0;
uint parametersTotal = 0;

if (LADSPA_IS_HARD_RT_CAPABLE(descriptor->Properties))
hints |= PLUGIN_IS_RTSAFE;
@@ -479,13 +479,13 @@ static void do_dssi_check(lib_t& libHandle, const char* const filename, const bo
}

uint hints = 0x0;
int audioIns = 0;
int audioOuts = 0;
int audioTotal = 0;
int midiIns = 0;
int parametersIns = 0;
int parametersOuts = 0;
int parametersTotal = 0;
uint audioIns = 0;
uint audioOuts = 0;
uint audioTotal = 0;
uint midiIns = 0;
uint parametersIns = 0;
uint parametersOuts = 0;
uint parametersTotal = 0;

if (LADSPA_IS_HARD_RT_CAPABLE(ldescriptor->Properties))
hints |= PLUGIN_IS_RTSAFE;
@@ -1116,11 +1116,11 @@ static void do_vst_check(lib_t& libHandle, const char* const filename, const boo

// get everything else
uint hints = 0x0;
int audioIns = effect->numInputs;
int audioOuts = effect->numOutputs;
int midiIns = 0;
int midiOuts = 0;
int parameters = effect->numParams;
uint audioIns = static_cast<uint>(std::max(0, effect->numInputs));
uint audioOuts = static_cast<uint>(std::max(0, effect->numOutputs));
uint midiIns = 0;
uint midiOuts = 0;
uint parameters = static_cast<uint>(std::max(0, effect->numParams));

if (effect->flags & effFlagsHasEditor)
hints |= PLUGIN_HAS_CUSTOM_UI;
@@ -1154,8 +1154,8 @@ static void do_vst_check(lib_t& libHandle, const char* const filename, const boo
midiIns = 1;
}

float* bufferAudioIn[std::max(1, audioIns)];
float* bufferAudioOut[std::max(1, audioOuts)];
float* bufferAudioIn[std::max(1U, audioIns)];
float* bufferAudioOut[std::max(1U, audioOuts)];

if (audioIns == 0)
{
@@ -1163,7 +1163,7 @@ static void do_vst_check(lib_t& libHandle, const char* const filename, const boo
}
else
{
for (int j=0; j < audioIns; ++j)
for (uint j=0; j < audioIns; ++j)
{
bufferAudioIn[j] = new float[kBufferSize];
carla_zeroFloats(bufferAudioIn[j], kBufferSize);
@@ -1176,7 +1176,7 @@ static void do_vst_check(lib_t& libHandle, const char* const filename, const boo
}
else
{
for (int j=0; j < audioOuts; ++j)
for (uint j=0; j < audioOuts; ++j)
{
bufferAudioOut[j] = new float[kBufferSize];
carla_zeroFloats(bufferAudioOut[j], kBufferSize);
@@ -1236,9 +1236,9 @@ static void do_vst_check(lib_t& libHandle, const char* const filename, const boo
if (gVstNeedsIdle)
effect->dispatcher(effect, DECLARE_VST_DEPRECATED(effIdle), 0, 0, nullptr, 0.0f);

for (int j=0; j < audioIns; ++j)
for (uint j=0; j < audioIns; ++j)
delete[] bufferAudioIn[j];
for (int j=0; j < audioOuts; ++j)
for (uint j=0; j < audioOuts; ++j)
delete[] bufferAudioOut[j];
}



+ 1
- 0
source/libjack/Makefile View File

@@ -48,6 +48,7 @@ OBJS = \
TARGET = $(BINDIR)/jack/libjack.so.0
else
OBJS =
TARGET =
endif

# ----------------------------------------------------------------------------------------------------------------------


+ 3
- 3
source/utils/CarlaOscUtils.hpp View File

@@ -1,6 +1,6 @@
/*
* Carla OSC utils
* Copyright (C) 2012-2014 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2012-2019 Filipe Coelho <falktx@falktx.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
@@ -128,7 +128,7 @@ void osc_send_control(const CarlaOscData& oscData, const int32_t index, const fl
char targetPath[std::strlen(oscData.path)+9];
std::strcpy(targetPath, oscData.path);
std::strcat(targetPath, "/control");
try_lo_send(oscData.target, targetPath, "if", index, value);
try_lo_send(oscData.target, targetPath, "if", index, static_cast<double>(value));
}

static inline
@@ -209,7 +209,7 @@ void osc_send_sample_rate(const CarlaOscData& oscData, const float sampleRate) n
char targetPath[std::strlen(oscData.path)+13];
std::strcpy(targetPath, oscData.path);
std::strcat(targetPath, "/sample-rate");
try_lo_send(oscData.target, targetPath, "f", sampleRate);
try_lo_send(oscData.target, targetPath, "f", static_cast<double>(sampleRate));
}

static inline


Loading…
Cancel
Save