...
 
Commits (9)

Too many changes to show.

To preserve performance only 1000 of 1000+ files are displayed.

......@@ -8,8 +8,7 @@ https://github.com/umlaeute/Gem
if you want to compile the newest (bleeding edge, and possibly unstable) source
code yourself, you can get a copy from the public git repository:
read-only access: https://git.iem.at/pd/Gem.git
read-write access: ssh://git@git.iem.at:pd/Gem.git
https://git.iem.at/pd/Gem.git
There is also a mirror on github:
https://github.com/umlaeute/Gem
......
General:
osx: carbon/QuickTime not supported anymore since 10.6
Optimization:
use a more performant float2int conversion as described in
http://www.mega-nerd.com/FPcast/
Output:
multiple output
"external" windows
alpha in gemwindow?
linux: sometimes window freezes on "destroy"; (JMZ: i experience this sometimes on improper shutdown, but after some (up to 30) seconds, the window finally gets destroyed and pd exits fine; if this is the same as the reported bug, than it is rather an inconvenience than a real bug; does this also happens with Output/ objects or only with the old code?)
linux: resizing the window yields weird results
osx: [gemcocoawindow] compatible with [gemmacwindow]?
Controls:
selectables
Geos:
vertex stuff
Manips:
Nongeos:
add other light-types
check for the maximum number of lights during runtime
Pixes:
windows movie loader (have a look at guliverkli?; use gmerlin?)
upsidedown: pix_rectangle does not respect the upside-down flag and thus sometimes the rectangle appears in the upper-left corner and sometimes in the lower-left corner
generally all images on all platforms should have the same (upsidedown!) orientation
see http://stackoverflow.com/questions/443086/opengl-topdown-bottomup-textures
pix_rtx: flickering on OSX/ppc in mode#0;
how to prevent execessive memory usage?
pix_threshold: intial arguments
pix_crop: arguments/inlets differ!
pix_freeframe not supported on x86_64 architectures (newer versions of FF support x86_64; check whether this is compatible)
videopipes:
W32:AVIsynth/frameserver (http://www.debugmode.com/frameserver/)
W32:VirtualCamera
OSX:Syphon (http://syphon.v002.info/)
osx: pix_movie flickers (check whether this is still true)
w32: [pix_share_*] does not exist since the shared-memory concept has not made it to redmond yet
w32: crashes when texturing movies (related to GLEW?)
dreaming:
Pd-callbacks:
remove the entire callback-stuff for Pd-messages from the obj_realSetup()
instead this should be handled centrally in CPPExtern
- each member function called <name>Mess() provides a method for "<name>"
- dispatching can be done by Pd or Gem (the latter being easier)
info/ideas
- http://www.codeproject.com/KB/winsdk/callback_adapter.aspx
- Qt slot concept (http://sigslot.sourceforge.net/)
- reflection/inspection
- function-name demangling: http://publib.boulder.ibm.com/infocenter/comphelp/v8v101/index.jsp?topic=/com.ibm.xlcpp8a.doc/proguide/ref/rkcxxflt.htm
wrap the entire Pd thing into C++:
GemOutlet()->send(int val);
BUGS:
look into flext conflict (i guess it's related to "new/delete")
single-object externals will run the setup-function twice; this gives nasty warnings in Pd-0.42
AUTOMAKE_OPTIONS = foreign
SUFFIXES = .pd
.SUFFIXES = .pd
gemabsdir=$(pkglibdir)
......
This diff is collapsed.
## include this at the beginning of your travis-scripts
## with something like
## test -r ${0%/*}/common.source && . ${0%/*}/common.source
## helper functions
error() {
echo "$@" 1>&2
}
debug() {
error "$@"
$@
}
getbin() {
for i in $@
do
if which "${i}" >/dev/null 2>&1
then
echo "${i}"
return
fi
done
}
READLINK=$(getbin greadlink readlink)
if [ "x$(${READLINK} -f . 2>/dev/null)" = "x" ]; then
READLINK=""
fi
SCRIPTDIR=${0%/*}
if [ "x${READLINK}" != "x" ]; then
SCRIPTDIR=$(${READLINK} -f "${SCRIPTDIR}")
GEMDIR=$(${READLINK} -f "${SCRIPTDIR}/../..")
else
## try to get full path of SCRIPTDIR
# if SCRIPTDIR starts with a slash, it's an absolute path (leave it as it is)
# else we append it to the current working directory
if [ "x${SCRIPTDIR#/}" = "x${SCRIPTDIR}" ]; then
SCRIPTDIR=$(pwd)/${SCRIPTDIR}
fi
GEMDIR=${SCRIPTDIR}/../..
fi
PDDIR=/usr/include/pd
BUILDDIR=${GEMDIR}
ENVFILE=${SCRIPTDIR}/gem.env
if [ -e "${ENVFILE}" ]; then
. "${ENVFILE}"
else
error "couldn't read env-file ${ENVFILE}, continuing anyhow"
fi
error "SCRIPTDIR: ${SCRIPTDIR}"
error "GEMDIR: ${GEMDIR}"
error "ARCH: ${ARCH}"
#!/bin/sh
# this script is intended to be run by Travis
# see https://travis-ci.org/umlaeute/Gem
## it's based on avilleret's work:
# see https://travis-ci.org/avilleret/Gem
test -r ${0%/*}/common.source && . ${0%/*}/common.source
cd "${SCRIPTDIR}"
error "configuring Gem for $TRAVIS_OS_NAME"
debug ${GEMDIR}/autogen.sh || exit 1
mkdir -p "${BUILDDIR}"
cd "${BUILDDIR}"
case "$TRAVIS_OS_NAME" in
linux)
if [ "x${ARCH}" != "x" -a "x${ARCH}" != "x$(uname -m)" ]; then
error "unable to cross-compile for architecture ${ARCH}"
exit 1
fi
CONFIGUREFLAGS=""
#CONFIGUREFLAGS="--without-ftgl"
;;
osx)
CONFIGUREFLAGS="--without-ftgl \
--without-QuickTime-framework \
--without-Carbon-framework"
if [ "x${ARCH}" != "x" ]; then
CONFIGUREFLAGS+=" --enable-fat-binary=${ARCH}"
fi
;;
esac
debug "${GEMDIR}/configure" --with-pd="${PDDIR}" ${CONFIGUREFLAGS}
#!/bin/sh
PUSH=
if [ "x$1" = "x-n" ]; then
PUSH=no
fi
if [ "x$1" = "x-y" ]; then
PUSH=yes
fi
if git push . master:coverity_scan
then
if [ "x${PUSH}" = "x" ]; then
echo -n "Shall I push 'coverity_scan' to remote [Y/n]? " 1>&2
read PUSH
if [ "x${PUSH}" = "x" ]; then
PUSH=yes
fi
case "${PUSH}" in
yes|YES|y|Y)
PUSH=yes
;;
no|NO|n|N)
PUSH=no
;;
*)
echo "Invalid value '${PUSH}' - assuming 'no'" 1>&2
PUSH=no
;;
esac
fi
if [ "x${PUSH}" = "xyes" ]; then
git push origin coverity_scan:coverity_scan
fi
fi
#!/bin/sh
test -r ${0%/*}/common.source && . ${0%/*}/common.source
DEPDIR=${SCRIPTDIR}/deps
mkdir -p "${DEPDIR}"
cd "${DEPDIR}"
doinstall() {
sudo ../depinstall-linux.sudo.sh
#wget http://msp.ucsd.edu/Software/pd-0.46-2.src.tar.gz
#tar -xvf pd-0.46-2.src.tar.gz
#PDDIR=$(pwd)/pd-0.46-2/src
}
doinstall 1>&2
ENVFILE=$(mktemp /tmp/gemenv.XXXXXX)
cat > ${ENVFILE} << EOF
PDDIR=${PDDIR}
EOF
echo "${ENVFILE}"
#!/bin/sh
apt-get update -qq
apt-get build-dep gem -qq
apt-get install libglfw-dev libglfw3-dev libsdl2-dev -qq
apt-get install libvncserver-dev -qq
#!/bin/sh
test -r ${0%/*}/common.source && . ${0%/*}/common.source
DEPDIR=${SCRIPTDIR}/deps
mkdir -p "${DEPDIR}"
cd "${DEPDIR}"
## LATER: fetch the lastest GemDependencies package via
github_list_releaseartifacts() {
# call as: github_list_releaseartifacts umlaeute/Gem-dependencies
curl -s https://api.github.com/repos/$1/releases/latest \
| jq -r ".assets[] | select(.name | test(\"${spruce_type}\")) | .browser_download_url"
}
brewinstall() {
brew install "$@" || (brew upgrade "$@" && brew cleanup "$@")
}
doinstall() {
brew update
brewinstall pkg-config gettext
brew link gettext --force
if [ "x${ARCH}" != "xi386" ]; then
brewinstall fribidi
fi
brewinstall imagemagick ftgl
brewinstall sdl glfw glfw@2
brewinstall coreutils
## and install pd
PDVERSION="0.48-0"
if [ "x${ARCH}" = "xi386" ]; then
wget http://msp.ucsd.edu/Software/pd-${PDVERSION}-i386.mac.tar.gz
tar -xf pd-${PDVERSION}-i386.mac.tar.gz
PDDIR=$(pwd)/Pd-${PDVERSION}-i386.app/Contents/Resources/
else
wget http://msp.ucsd.edu/Software/pd-${PDVERSION}.mac.tar.gz
tar -xf pd-${PDVERSION}.mac.tar.gz
PDDIR=$(pwd)/Pd-${PDVERSION}.app/Contents/Resources/
fi
chmod -R u+rXw .
}
doinstall 1>&2
ENVFILE=$(mktemp /tmp/gemenv.XXXXXX)
cat > ${ENVFILE} << EOF
PDDIR=${PDDIR}
EOF
echo "${ENVFILE}"
#!/bin/sh
test -r ${0%/*}/common.source && . ${0%/*}/common.source
cd "${SCRIPTDIR}"
INSTALLSCRIPT="./depinstall-${TRAVIS_OS_NAME}.sh"
if [ -x "${INSTALLSCRIPT}" ]; then
envfile=$(${INSTALLSCRIPT})
mv "${envfile}" "${ENVFILE}"
else
error "no install-script found for: ${TRAVIS_OS_NAME}"
error "assuming all is well"
fi
#!/bin/sh
# this script is intended to be run by Travis
# and creates a tgz from the "make install" data.
test -r ${0%/*}/common.source && . ${0%/*}/common.source
if [ "x${GITDEPLOYTARGET}" = "x" ]; then
error "no git-deploytarget defined; skipping deployment"
exit 0
fi
GITDEPLOYHOST="${GITDEPLOYTARGET##*@}"
GITDEPLOYHOST="${GITDEPLOYHOST%%/*}"
KEYFILE=${HOME}/.ssh/id_rsa
# check if there is an ssh keyfile
# if not, try to decrypt one; if that fails stop
if [ ! -e "${KEYFILE}" ]; then
mkdir -p ${HOME}/.ssh
openssl aes-256-cbc -K $encrypted_a508a15bf9d3_key -iv $encrypted_a508a15bf9d3_iv -in ${0%/*}/travisci.enc -out "${KEYFILE}" -d
fi
if [ ! -e "${KEYFILE}" ]; then
error "couldn't find ${KEYFILE}; skipping deployment"
exit 0
fi
OS_NAME="${TRAVIS_OS_NAME}"
if [ "x${OS_NAME}" = "x" ]; then OS_NAME=OS; fi
if [ "x$(which dpkg-architecture)" != "x" ]; then
if [ "x${ARCH}" = "x" ]; then ARCH=$(dpkg-architecture -qDEB_BUILD_ARCH); fi
fi
if [ "x$(which uname)" != "x" ]; then
if [ "x${ARCH}" = "x" ]; then ARCH=$(uname -m); fi
fi
if [ "x${ARCH}" = "x" ]; then ARCH=default; fi
if [ "x${BUILDDIR}" = "x" ]; then BUILDDIR=.; fi
DEPLOY_BRANCH="${TRAVIS_OS_NAME}/${ARCH}"
error "deploying to branch: ${DEPLOY_BRANCH}"
## config done
## password-less authentication to deploy host
# make sure our remote host is known
# (so we are not asked to accept it)
mkdir -p ~/.ssh
chmod 700 ~/.ssh
ssh-keyscan -H ${GITDEPLOYHOST} >> ~/.ssh/known_hosts
error "ssh-keyscanned ${GITDEPLOYHOST}"
# and use the (encrypted) auth key
if [ -e "${KEYFILE}" ]; then
chmod 600 "${KEYFILE}"
ssh-add "${KEYFILE}"
error "ssh-added ${KEYFILE}"
else
error "missing ${KEYFILE}"
fi
## prepare the target directory
# (fetch it via git)
cd "${BUILDDIR}"
BUILDDIR=$(pwd)
DESTDIR=$(mktemp -d /tmp/geminstall.XXXXXX)
## shallow clone of the repository (of the desired branch if possible)
git clone -b "${DEPLOY_BRANCH}" --depth 1 ${GITDEPLOYTARGET} "${DESTDIR}" \
|| git clone --depth 1 ${GITDEPLOYTARGET} "${DESTDIR}"
cd "${DESTDIR}"
## if the shallow clone (above) managed to clone the proper branch, the
## following is a nop.
## else it will create the branch for us
git checkout "${DEPLOY_BRANCH}" \
|| git checkout -b "${DEPLOY_BRANCH}"
## cleanup, we don't want content from the olde commits
rm -rf *
cd "${BUILDDIR}"
error "now installing Gem to ${DESTDIR}"
make install DESTDIR=${DESTDIR}/Gem pkglibdir=/ extradir=/ includedir=/develop/include pkgconfigdir=/develop/pkgconfig
cd "${DESTDIR}"
error "setting up user-identity"
git config user.email "zmoelnig@travis-ci.umlaeute.mur.at"
git config user.name "Travis CI"
if [ -d "Gem" ]; then
error "commiting Gem-${DEPLOY_BRANCH}"
git add -A Gem
git commit -m "Gem ${TRAVIS_COMMIT} ${DEPLOY_BRANCH}
built '${TRAVIS_BRANCH}:${TRAVIS_COMMIT}' for ${DEPLOY_BRANCH}"
error "now pushing Gem from $(pwd)"
git push --set-upstream origin "${DEPLOY_BRANCH}"
else
error "refusing to push non-existing Gem"
fi
error "$0 done."
#!/bin/sh
# this script is intended to be run by Travis
# and creates a tgz from the "make install" data.
test -r ${0%/*}/common.source && . ${0%/*}/common.source
cd "${BUILDDIR}"
DESTDIR=$(mktemp -d /tmp/geminstall.XXXXXX)
make install DESTDIR=${DESTDIR}/Gem pkglibdir=/ extradir=/ includedir=/develop/include pkgconfigdir=/develop/pkgconfig
cd "${DESTDIR}" && tar cvzf "${TRAVIS_BUILD_DIR}/Gem-${TRAVIS_OS_NAME}${ARCH}-${TRAVIS_TAG}.tgz" Gem/
#!/bin/sh
error() {
echo "$@" 1>&2
}
## skip coverity_scan builds on anything but linux
if [ "x${TRAVIS_OS_NAME}" = "xosx" -a "x${COVERITY_SCAN_BRANCH}" = "x1" ]; then
error "(not) skipping coverity_scan build on OSX"
#exit 0
fi
exit 1
#!/bin/sh
set -e
# Environment check
echo -e "\033[33;1mNote: COVERITY_SCAN_PROJECT_NAME and COVERITY_SCAN_TOKEN are available on Project Settings page on scan.coverity.com\033[0m"
[ -z "$COVERITY_SCAN_PROJECT_NAME" ] && echo "ERROR: COVERITY_SCAN_PROJECT_NAME must be set" && exit 1
[ -z "$COVERITY_SCAN_NOTIFICATION_EMAIL" ] && echo "ERROR: COVERITY_SCAN_NOTIFICATION_EMAIL must be set" && exit 1
[ -z "$COVERITY_SCAN_BRANCH_PATTERN" ] && echo "ERROR: COVERITY_SCAN_BRANCH_PATTERN must be set" && exit 1
[ -z "$COVERITY_SCAN_BUILD_COMMAND" ] && echo "ERROR: COVERITY_SCAN_BUILD_COMMAND must be set" && exit 1
[ -z "$COVERITY_SCAN_TOKEN" ] && echo "ERROR: COVERITY_SCAN_TOKEN must be set" && exit 1
PLATFORM=`uname`
TOOL_ARCHIVE=/tmp/cov-analysis-${PLATFORM}.tgz
TOOL_URL=https://scan.coverity.com/download/${PLATFORM}
TOOL_BASE=/tmp/coverity-scan-analysis
UPLOAD_URL="https://scan.coverity.com/builds"
SCAN_URL="https://scan.coverity.com"
# Do not run on pull requests
if [ "${TRAVIS_PULL_REQUEST}" = "true" ]; then
echo -e "\033[33;1mINFO: Skipping Coverity Analysis: branch is a pull request.\033[0m"
exit 0
fi
# Only run on the first job
if [ "x${TRAVIS_JOB_NUMBER%.1}" = "x${TRAVIS_JOB_NUMBER}" ]; then
echo -e "\033[33;1mINFO: Skipping Coverity Analysis for non-first sub-job ${TRAVIS_JOB_NUMBER}.\033[0m"
exit 0
fi
# Verify this branch should run
IS_COVERITY_SCAN_BRANCH=`ruby -e "puts '${TRAVIS_BRANCH}' =~ /\\A$COVERITY_SCAN_BRANCH_PATTERN\\z/ ? 1 : 0"`
if [ "$IS_COVERITY_SCAN_BRANCH" = "1" ]; then
echo -e "\033[33;1mCoverity Scan configured to run on branch ${TRAVIS_BRANCH}\033[0m"
else
echo -e "\033[33;1mCoverity Scan NOT configured to run on branch ${TRAVIS_BRANCH}\033[0m"
exit 1
fi
# Verify upload is permitted
AUTH_RES=`curl -s --form project="$COVERITY_SCAN_PROJECT_NAME" --form token="$COVERITY_SCAN_TOKEN" $SCAN_URL/api/upload_permitted`
if [ "$AUTH_RES" = "Access denied" ]; then
echo -e "\033[33;1mCoverity Scan API access denied. Check COVERITY_SCAN_PROJECT_NAME and COVERITY_SCAN_TOKEN.\033[0m"
exit 1
else
AUTH=`echo $AUTH_RES | ruby -e "require 'rubygems'; require 'json'; puts JSON[STDIN.read]['upload_permitted']"`
if [ "$AUTH" = "true" ]; then
echo -e "\033[33;1mCoverity Scan analysis authorized per quota.\033[0m"
else
WHEN=`echo $AUTH_RES | ruby -e "require 'rubygems'; require 'json'; puts JSON[STDIN.read]['next_upload_permitted_at']"`
echo -e "\033[33;1mCoverity Scan analysis NOT authorized until $WHEN.\033[0m"
exit 1
fi
fi
if [ ! -d $TOOL_BASE ]; then
# Download Coverity Scan Analysis Tool
if [ ! -e $TOOL_ARCHIVE ]; then
echo -e "\033[33;1mDownloading Coverity Scan Analysis Tool...\033[0m"
wget -nv -O $TOOL_ARCHIVE $TOOL_URL --post-data "project=$COVERITY_SCAN_PROJECT_NAME&token=$COVERITY_SCAN_TOKEN"
fi
# Extract Coverity Scan Analysis Tool
echo -e "\033[33;1mExtracting Coverity Scan Analysis Tool...\033[0m"
mkdir -p $TOOL_BASE
pushd $TOOL_BASE
tar xzf $TOOL_ARCHIVE
popd
fi
TOOL_DIR=`find $TOOL_BASE -type d -name 'cov-analysis*'`
export PATH=$TOOL_DIR/bin:$PATH
# Build
echo -e "\033[33;1mRunning Coverity Scan Analysis Tool...\033[0m"
COV_BUILD_OPTIONS=""
#COV_BUILD_OPTIONS="--return-emit-failures 8 --parse-error-threshold 85"
RESULTS_DIR="cov-int"
eval "${COVERITY_SCAN_BUILD_COMMAND_PREPEND}"
COVERITY_UNSUPPORTED=1 cov-build --dir $RESULTS_DIR $COV_BUILD_OPTIONS $COVERITY_SCAN_BUILD_COMMAND
cov-import-scm --dir $RESULTS_DIR --scm git --log $RESULTS_DIR/scm_log.txt 2>&1
# Upload results
echo -e "\033[33;1mTarring Coverity Scan Analysis results...\033[0m"
RESULTS_ARCHIVE=analysis-results.tgz
tar czf $RESULTS_ARCHIVE $RESULTS_DIR
SHA=`git rev-parse --short HEAD`
echo -e "\033[33;1mUploading Coverity Scan Analysis results...\033[0m"
response=$(curl \
--silent --write-out "\n%{http_code}\n" \
--form project=$COVERITY_SCAN_PROJECT_NAME \
--form token=$COVERITY_SCAN_TOKEN \
--form email=$COVERITY_SCAN_NOTIFICATION_EMAIL \
--form file=@$RESULTS_ARCHIVE \
--form version=$SHA \
--form description="Travis CI build" \
$UPLOAD_URL)
status_code=$(echo "$response" | sed -n '$p')
if [ "$status_code" != "201" ]; then
TEXT=$(echo "$response" | sed '$d')
echo -e "\033[33;1mCoverity Scan upload failed: $TEXT.\033[0m"