Commit b8b83837 authored by Jonathan Wilkes's avatar Jonathan Wilkes
Browse files

Merge branch 'master' into handle-mingw64-correctly

parents 15ac8a10 d95f5624
debian_stable_i386_deb:
debian_jessie_i386_deb:
tags:
- debian
- stable
......@@ -11,6 +11,7 @@ debian_stable_i386_deb:
- ./tar_em_up.sh -B
- cd ..
- echo "" | sudo -S DEBIAN_FRONTEND=noninteractive dpkg --force-all -i pd-l2ork*.deb > /dev/null
- valgrind pd-l2ork -noprefs -nostdpath -nogui -nrt -noaudio -send "init dollarzero \$0" scripts/regression_tests.pd
- valgrind pd-l2ork -noprefs -nostdpath -nogui -nrt -noaudio scripts/external-tests.pd
artifacts:
name: "$CI_RUNNER_DESCRIPTION"
......@@ -18,7 +19,7 @@ debian_stable_i386_deb:
paths:
- pd*.deb
debian_stable_amd64_deb:
debian_jessie_x86_64_deb:
tags:
- debian
- stable
......@@ -31,6 +32,7 @@ debian_stable_amd64_deb:
- ./tar_em_up.sh -B
- cd ..
- echo "" | sudo -S DEBIAN_FRONTEND=noninteractive dpkg --force-all -i pd-l2ork*.deb > /dev/null
- valgrind pd-l2ork -noprefs -nostdpath -nogui -nrt -noaudio -send "init dollarzero \$0" scripts/regression_tests.pd
- valgrind pd-l2ork -noprefs -nostdpath -nogui -nrt -noaudio scripts/external-tests.pd
artifacts:
name: "$CI_RUNNER_DESCRIPTION"
......@@ -38,7 +40,7 @@ debian_stable_amd64_deb:
paths:
- pd*.deb
debian_stretch_amd64_deb:
debian_stretch_x86_64_deb:
tags:
- debian
- stretch
......@@ -51,6 +53,7 @@ debian_stretch_amd64_deb:
- ./tar_em_up.sh -B
- cd ..
- echo "" | sudo -S DEBIAN_FRONTEND=noninteractive dpkg --force-all -i pd-l2ork*.deb > /dev/null
- valgrind pd-l2ork -noprefs -nostdpath -nogui -nrt -noaudio -send "init dollarzero \$0" scripts/regression_tests.pd
- valgrind pd-l2ork -noprefs -nostdpath -nogui -nrt -noaudio scripts/external-tests.pd
artifacts:
name: "$CI_RUNNER_DESCRIPTION"
......@@ -72,6 +75,7 @@ ubuntu_14.04_i386_deb:
- cd ..
- echo "" | sudo -S DEBIAN_FRONTEND=noninteractive dpkg --force-all -i pd-l2ork*.deb > /dev/null
- cd scripts
- valgrind pd-l2ork -noprefs -nostdpath -nogui -nrt -noaudio -send "init dollarzero \$0" regression_tests.pd
- valgrind pd-l2ork -noprefs -nostdpath -nogui -nrt -noaudio external-tests.pd
artifacts:
name: "$CI_RUNNER_DESCRIPTION"
......@@ -79,7 +83,7 @@ ubuntu_14.04_i386_deb:
paths:
- pd*.deb
ubuntu_14.04_amd64_deb:
ubuntu_14.04_x86_64_deb:
tags:
- ubuntu
- v14.04
......@@ -93,6 +97,7 @@ ubuntu_14.04_amd64_deb:
- cd ..
- echo "" | sudo -S DEBIAN_FRONTEND=noninteractive dpkg --force-all -i pd-l2ork*.deb > /dev/null
- cd scripts
- valgrind pd-l2ork -noprefs -nostdpath -nogui -nrt -noaudio -send "init dollarzero \$0" regression_tests.pd
- valgrind pd-l2ork -noprefs -nostdpath -nogui -nrt -noaudio external-tests.pd
artifacts:
name: "$CI_RUNNER_DESCRIPTION"
......@@ -100,7 +105,7 @@ ubuntu_14.04_amd64_deb:
paths:
- pd*.deb
ubuntu_16.04_amd64_deb:
ubuntu_16.04_x86_64_deb:
tags:
- ubuntu
- v16.04
......@@ -114,6 +119,7 @@ ubuntu_16.04_amd64_deb:
- cd ..
- echo "" | sudo -S DEBIAN_FRONTEND=noninteractive dpkg --force-all -i pd-l2ork*.deb > /dev/null
- cd scripts
- valgrind pd-l2ork -noprefs -nostdpath -nogui -nrt -noaudio -send "init dollarzero \$0" regression_tests.pd
- valgrind pd-l2ork -noprefs -nostdpath -nogui -nrt -noaudio external-tests.pd
artifacts:
name: "$CI_RUNNER_DESCRIPTION"
......@@ -121,7 +127,7 @@ ubuntu_16.04_amd64_deb:
paths:
- pd*.deb
osx_amd64_dmg:
osx_10.11_x86_64_dmg:
tags:
- osx
- v10.11
......@@ -131,13 +137,15 @@ osx_amd64_dmg:
- cd l2ork_addons
- ./tar_em_up.sh -X
- cd ../scripts
- ../packages/darwin_app/build/*.app/Contents/Resources/app.nw/bin/pd-l2ork -noprefs -nostdpath -nogui -noaudio -send "init dollarzero \$0" regression_tests.pd
- ../packages/darwin_app/build/*.app/Contents/Resources/app.nw/bin/pd-l2ork -noprefs -nostdpath -nogui -noaudio external-tests.pd
artifacts:
name: "$CI_RUNNER_DESCRIPTION"
expire_in: 1 day
paths:
- Pd*.dmg
osx_10.8_amd64_dmg:
osx_10.8_x86_64_dmg:
tags:
- osx
- v10.8
......@@ -147,6 +155,7 @@ osx_10.8_amd64_dmg:
- cd l2ork_addons
- osx_version=10.8 ./tar_em_up.sh -X
- cd ../scripts
- ../packages/darwin_app/build/*.app/Contents/Resources/app.nw/bin/pd-l2ork -noprefs -nostdpath -nogui -noaudio -send "init dollarzero \$0" regression_tests.pd
- ../packages/darwin_app/build/*.app/Contents/Resources/app.nw/bin/pd-l2ork -noprefs -nostdpath -nogui -noaudio external-tests.pd
artifacts:
name: "$CI_RUNNER_DESCRIPTION"
......@@ -154,7 +163,7 @@ osx_10.8_amd64_dmg:
paths:
- Pd*.dmg
windows_i386_installer:
windows_i386_innosetup:
tags:
- windows
- i386
......@@ -163,6 +172,7 @@ windows_i386_installer:
- cd l2ork_addons
- ./tar_em_up.sh -Z
- cd ../scripts
- ../packages/win32_inno/build/bin/pd.exe -noprefs -nostdpath -nogui -noaudio -send "init dollarzero \$0" regression_tests.pd
- ../packages/win32_inno/build/bin/pd.exe -noprefs -nostdpath -nogui -noaudio external-tests.pd
artifacts:
name: "$CI_RUNNER_DESCRIPTION"
......@@ -170,16 +180,22 @@ windows_i386_installer:
paths:
- Purr*.exe
debian_stable_arm_deb:
raspbian_stretch_armv7l_deb:
tags:
- debian
- arm
- stable
- stretch
script:
- echo "" | sudo -S apt-get -qq purge -y pd-l2ork > /dev/null || echo "couldn't purge..."
- echo "" | sudo -S DEBIAN_FRONTEND=noninteractive apt-get -qq -y update > /dev/null
- echo "" | sudo -S DEBIAN_FRONTEND=noninteractive apt-get -qq -y upgrade > /dev/null
- echo `pwd`
- cd l2ork_addons
- ./tar_em_up.sh -r
- cd ..
- echo "" | sudo -S DEBIAN_FRONTEND=noninteractive dpkg --force-all -i pd-l2ork*.deb > /dev/null
- valgrind pd-l2ork -noprefs -nostdpath -nogui -nrt -noaudio -send "init dollarzero \$0" scripts/regression_tests.pd
- valgrind pd-l2ork -noprefs -nostdpath -nogui -nrt -noaudio scripts/external-tests.pd
artifacts:
name: "$CI_RUNNER_DESCRIPTION"
......
......@@ -4,9 +4,6 @@
[submodule "l2ork_addons/cwiid"]
path = externals/disis/cwiid
url = https://github.com/pd-l2ork/cwiid
[submodule "l2ork_addons/raspberry_pi/disis_gpio/wiringPi"]
path = l2ork_addons/raspberry_pi/disis_gpio/wiringPi
url = git://git.drogon.net/wiringPi
[submodule "externals/fftease"]
path = externals/fftease
url = https://git.purrdata.net/jwilkes/fftease.git
......@@ -16,3 +13,9 @@
[submodule "externals/lyonpotpourri"]
path = externals/lyonpotpourri
url = https://git.purrdata.net/jwilkes/lyonpotpourri3.0.git
[submodule "l2ork_addons/raspberry_pi/disis_gpio/wiringPi"]
path = l2ork_addons/raspberry_pi/disis_gpio/wiringPi
url = https://git.purrdata.net/jwilkes/wiringPi.git
[submodule "externals/pd-lua"]
path = externals/pd-lua
url = https://git.purrdata.net/jwilkes/pd-lua.git
# Toplevel Makefile for Purr Data. Please note that at present this is just a
# thin wrapper around l2ork_addons/tar_em_up.sh, the traditional Pd-l2ork
# build script.
# The Pd-l2ork build system is very arcane and intricate. Its main purpose is
# putting together a staging area with a complete Pd-l2ork installation and
# then building installers for the supported platforms from that, pulling
# together a bunch of separate packages, each with their own build system.
# Compiling sources is just one of the tasks that the builder does. Therefore
# you'll notice that, unlike with other less complicated source packages,
# `make` will rebuild lots of things even if you just finished another build.
# The available build targets are:
# all: produce a native installer for the host platform (equivalent to
# `tar_em_up.sh -Tk`); note that in order to force a complete rebuild (like
# what `tar_em_up.sh -T` does), you'll have to run `make clean` first
# incremental: like `all`, but does an "incremental build" (equivalent to
# `tar_em_up.sh -tk`), bypassing Gem which takes an eternity to compile; please
# check the tar_em_up.sh script for details
# light: like `incremental`, but does a light build (equivalent to
# `tar_em_up.sh -tkl`) which only includes the most essential externals;
# please check the tar_em_up.sh script for details
# checkout: convenience target to check out all submodules in preparation for
# a subsequent build (the `all`, `incremental` and `dist` targets also do this
# automatically when needed)
# clean: does something similar to what `tar_em_up.sh` does in order to start
# from a clean slate, so that a subsequent build starts from scratch again
# realclean: put the sources into pristine state again (WARNING: this will get
# rid of any uncommitted source changes, too); use this as a last resort to
# get the sources into a compilable state again after things have gone awry
# dist: create a self-contained distribution tarball of the source
# NOTES:
# The realclean and dist targets use git commands and thus only work in a
# working copy of the git repo, not in the static tarball snapshots produced
# by the dist target.
# On Linux systems running `make` will try to produce a Debian package. On
# Linux distributions like Arch which are no Debian derivatives, the Debian
# packaging tools are not available. In this case, `make` will stop right
# before creating the actual package and leave the ready-made staged
# installation tree under `packages/linux_make/build` from where it can be
# copied or packaged up in any desired way.
# The incremental and light builds assume an existing staging area
# (packages/*/build directory) which is *not* cleaned before installing. This
# makes it possible to update the existing staging area after recompiling just
# a part of the system (all but Gem in the case of "incremental", only the
# Pd core and a few essential externals in the case of "light"). Use `make
# clean` beforehand if you want to install into a clean staging area.
# When doing a `light` build, which only includes the most essential
# externals, it may be desirable to manually include additional abstractions
# and externals in the build. To these ends, after running `make light` you
# can run `make` with the `foo_abs` or `foo_ext` target, where `foo` is the
# name of the desired abstraction or external, respectively. E.g., you can run
# `make light memento_abs pdlua_ext` to get a light build with the `memento`
# abstraction and the `pdlua` external included. (This will not rebuild the
# Debian package, though, so you'll have to install manually with `make
# install` instead.) The names of the desired addons must be specified as
# given in abstractions/Makefile and externals/Makefile, respectively (look
# for targets looking like `foo_install`). Also note that even though a
# subsequent `make install` will then include your addons, they won't be
# enabled by default, so you'll have to do that manually in Purr Data's
# `Startup` dialog. Simply adding the name of the addon in the `Libraries`
# list should normally do the trick. Or you can add an option like `-lib foo`
# when running Purr Data from the command line.
.PHONY: all incremental checkout clean realclean dist
# Installation prefix under which Pd-l2ork is installed (Linux only). If this
# isn't set, a default location will be used (usually /usr/local). NOTE: We
# *always* assume that this variable is set properly in the install targets
# (see below).
prefix = /usr
ifneq ($(prefix),)
env = inst_dir="$(prefix)"
endif
all:
cd l2ork_addons && $(env) ./tar_em_up.sh -Tk
incremental:
cd l2ork_addons && $(env) ./tar_em_up.sh -tk
light:
cd l2ork_addons && $(env) ./tar_em_up.sh -tkl
%_abs:
make -C abstractions $(@:%_abs=%_install) DESTDIR=$(firstword $(wildcard $(CURDIR)/packages/*/build)) prefix=$(prefix)
%_ext:
make -C externals $(@:%_ext=%_install) DESTDIR=$(firstword $(wildcard $(CURDIR)/packages/*/build)) prefix=$(prefix)
checkout:
git submodule update --init
clean:
test "$(shell uname -s)" = "Darwin" && make -C packages/darwin_app clean || true
cd pd/src && aclocal && autoconf && make clean || true
cd externals/miXed && make clean || true
cd Gem/src/ && test -f Makefile && make distclean || true
cd Gem/src/ && rm -rf ./.libs && rm -rf ./*/.libs || true
cd Gem/ && test -f Makefile && make distclean || true
cd Gem/ && rm -f gemglutwindow.pd_linux Gem.pd_linux || true
rm -rf packages/*/build/
realclean:
# This requires a working copy of the git repo.
@test -d .git || (echo "Not a git repository, bailing out." && false)
git submodule deinit --all -f
git checkout .
git clean -dffx -e pd/nw/nw/
# Installation targets. These don't work on Mac and Windows right now, you
# should use the generated installers on these systems instead. Also,
# $(prefix) must be set. $(DESTDIR) is supported as well, so you can do staged
# installs (but then again presumably you already have a staged install
# sitting in packages/*/build, so you might as well use that instead).
# Note that these targets simply (un)install whatever is in the
# packages/*/build directory at the time they're invoked. If no build
# directory is present then nothing will happen, so you need to run `make` (or
# `make incremental`, etc.) before running these targets. Also note that some
# old cruft under build/etc (all but the bash auto-completions) isn't
# installed as it isn't needed on modern Linux systems any more.
builddir = $(firstword $(wildcard packages/*/build))
ifneq ($(builddir),)
manifest = etc/bash_completion.d/pd-l2ork $(prefix:/%=%)/include/pd-l2ork $(prefix:/%=%)/lib/pd-l2ork $(patsubst $(builddir)/%,%, $(wildcard $(builddir)/$(prefix:/%=%)/bin/*) $(shell find $(builddir)/usr/share -type f))
endif
ifneq ($(manifest),)
install:
test -z "$(DESTDIR)" || (rm -rf "$(DESTDIR)" && mkdir -p "$(DESTDIR)")
tar -c -C $(builddir) $(manifest) | tar -x -C $(DESTDIR)/
# Edit the library paths in the default user.settings file so that it matches
# our installation prefix.
test -f "$(DESTDIR)"$(prefix)/lib/pd-l2ork/default.settings && cd "$(DESTDIR)"$(prefix)/lib/pd-l2ork && sed -e "s!/usr/lib/pd-l2ork!$(prefix)/lib/pd-l2ork!g" -i default.settings || true
uninstall:
rm -rf $(addprefix $(DESTDIR)/, $(manifest))
else
install:
@echo "no build directory, run make first" && false
uninstall:
@echo "no build directory, run make first" && false
endif
# Build a self-contained distribution tarball (snapshot). This is pretty much
# the same as in debuild/Makefile and must be run in a working copy of the git
# repo.
# The Debian version gets derived from the date and serial number of the last
# commit.
debversion = $(shell grep PD_L2ORK_VERSION pd/src/m_pd.h | sed 's|^.define *PD_L2ORK_VERSION *"\(.*\)".*|\1|')+git$(shell test -d .git && git rev-list --count HEAD)+$(shell test -d .git && git rev-parse --short HEAD)
# Source tarball and folder.
debsrc = purr-data_$(debversion).orig.tar.gz
debdist = purr-data-$(debversion)
# Submodules (Gem, etc.).
submodules = $(sort $(shell test -d .git && (git config --file .gitmodules --get-regexp path | awk '{ print $$2 }')))
dist: $(debsrc)
# Determine the build version which needs git to be computed, so we can't do
# it in a stand-alone build from a tarball.
PD_BUILD_VERSION := $(shell test -d .git && (git log -1 --format=%cd --date=short | sed -e 's/-//g'))-rev.$(shell test -d .git && git rev-parse --short HEAD)
$(debsrc):
@test -d .git || (echo "Not a git repository, bailing out." && false)
rm -rf $(debdist)
# Make sure that the submodules are initialized.
git submodule update --init
# Grab the main source.
git archive --format=tar.gz --prefix=$(debdist)/ HEAD | tar xfz -
# Grab the submodules.
for x in $(submodules); do (cd $(debdist) && rm -rf $$x && git -C ../$$x archive --format=tar.gz --prefix=$$x/ HEAD | tar xfz -); done
# Pre-generate and put s_stuff.h into the tarball (see above; the build
# version is generated using git which can't be done outside the git repo).
sed 's|^\(#define PD_BUILD_VERSION "\).*"|\1$(PD_BUILD_VERSION)"|' pd/src/s_stuff.h.in > $(debdist)/pd/src/s_stuff.h
# Create the source tarball.
tar cfz $(debsrc) $(debdist)
rm -rf $(debdist)
## Pd-L2Ork
maintainer: Ivica Ico Bukvic <ico@vt.edu>
maintainers:
maintainer: Albert Graef <aggraef@gmail.com>
maintainer: Jonathan Wilkes <jancsika@yahoo.com>
* Ivica Ico Bukvic <ico@vt.edu>
* Albert Graef <aggraef@gmail.com>
* Jonathan Wilkes <jancsika@yahoo.com>
[Mailing List](http://disis.music.vt.edu/cgi-bin/mailman/listinfo/l2ork-dev)
* [Downloads](#downloads)
* [One Paragraph Overview](#one-paragraph-overview)
* [Flavors of Pure Data](#flavors-of-pure-data)
* [Three Paragraph Overview](#three-paragraph-overview)
* [Goals](#goals)
* [Downloads](#downloads)
* [User Guide](#user-guide)
* [Relationship of Purr Data to Pure Data](#relationship-of-purr-data-to-pure-data)
* [Build Guide](#build-guide)
* [Gnu/Linux](#linux)
* [OSX](#osx-64-bit-using-homebrew)
......@@ -30,20 +31,6 @@ create software graphically by drawing diagrams instead of writing lines of
code. These diagrams show how data flows through the software, displaying on
the screen what text-based languages require you to piece together in your mind.
### Flavors of Pure Data
There are three maintained distributions of Pure Data:
1. Purr Data. This is the 2.0 version of Pd-l2ork. It ships with lots of
external libraries and uses a modern GUI written using HTML5.
2. Pd-L2Ork 1.0, the version used by Ivica Bukvic for his laptop orchestra.
Pd-l2ork 1.0 uses tcl/tk (and tkpath) for the GUI. You can find it
[here](http://l2ork.music.vt.edu/main/make-your-own-l2ork/software/)
3. Pure Data "Vanilla". Miller Puckette's personal version which he hosts on
his website and maintains. It doesn't come with external libraries
pre-installed, but it does include an interface you can use to search
and install external libraries maintained and packaged by other developers.
### Three Paragraph Overview
Pd has been designed with an emphasis on generating sound, video,
......@@ -76,15 +63,51 @@ Pd-L2ork has the following goals:
documentation. We like documentation, so it follows that we like consistent
interfaces.
### User Guide
For a more in-depth look at Purr Data for new users and developers, see:
[https://agraef.github.io/purr-data-intro/Purr-Data-Intro.html](https://agraef.github.io/purr-data-intro/Purr-Data-Intro.html)
For more resources see:
[https://agraef.github.io/purr-data/](https://agraef.github.io/purr-data/)
### Relationship of Purr Data to Pure Data
There are three maintained distributions of Pure Data:
1. Purr Data. This is the 2.0 version of Pd-l2ork. It ships with lots of
external libraries and uses a modern GUI written using HTML5.
2. Pd-L2Ork 1.0, the version used by Ivica Bukvic for his laptop orchestra.
Pd-l2ork 1.0 uses tcl/tk (and tkpath) for the GUI. You can find it
[here](http://l2ork.music.vt.edu/main/make-your-own-l2ork/software/)
3. Pure Data "Vanilla". Miller Puckette's personal version which he hosts on
his website and maintains. It doesn't come with external libraries
pre-installed, but it does include an interface you can use to search
and install external libraries maintained and packaged by other developers.
### Downloads
You can download a precompiled installer for Gnu/Linux, Windows, or OSX
from the following site:
For Ubuntu PPAs and Arch AUR:
[https://agraef.github.io/purr-data/#jgu-packages](https://agraef.github.io/purr-data/#jgu-packages)
Packages for Gnu/Linux, Windows, and OSX:
[https://github.com/jonwwilkes/purr-data/releases](https://github.com/jonwwilkes/purr-data/releases)
### Build Guide
**NOTE:** The instructions below talk about running the `tar_em_up.sh` build
script, which is still the recommended way to build Purr Data right now.
However, Purr Data also has a new (and experimental) toplevel Makefile so that
just typing `make` will build the package. You may find this easier. The
Makefile also offers the customary targets to clean (`make clean`, or
`make realclean` to put the sources in pristine state again) and to roll a
self-contained distribution tarball (`make dist`). Please check the comments
at the beginning of the Makefile for more information.
#### Linux
Time to build: *40 minutes to 1.5 hours*
......@@ -92,22 +115,19 @@ Hard drive space required: *roughly 2.5 GB*
1. Install the dependencies
sudo apt-get install bison flex automake qjackctl \
tcl8.5-dev tk8.5-dev tcl-dev tk-dev libasound2-dev \
sudo apt-get install bison flex automake libasound2-dev \
libjack-jackd2-dev libtool libbluetooth-dev libgl1-mesa-dev \
libglu1-mesa-dev libglew-dev libmagick++-dev libftgl-dev \
libgmerlin-dev libgmerlin-avdec-dev libavifile-0.7-dev \
libmpeg3-dev libquicktime-dev libv4l-dev libraw1394-dev \
libdc1394-22-dev libfftw3-dev libvorbis-dev ladspa-sdk \
dssi-dev tap-plugins ladspa-foo-plugins \
invada-studio-plugins-ladspa blepvco swh-plugins mcp-plugins \
cmt blop slv2-jack omins ubuntustudio-audio-plugins rev-plugins \
dssi-dev tap-plugins invada-studio-plugins-ladspa blepvco \
swh-plugins mcp-plugins cmt blop slv2-jack omins rev-plugins \
libslv2-dev dssi-utils vco-plugins wah-plugins fil-plugins \
mda-lv2 libmp3lame-dev libspeex-dev libgsl0-dev \
portaudio19-dev python-dev libsmpeg0 libjpeg62 tkpng flite1-dev \
libgsm1-dev libfftw3-dev libgtk2.0-dev subversion git libstk0-dev \
libsndobj-dev libfluidsynth-dev tclxapian fluid-soundfont-gm \
python-tk byacc
portaudio19-dev liblua5.3-dev python-dev libsmpeg0 libjpeg62-turbo \
flite1-dev libgsm1-dev libgtk2.0-dev git libstk0-dev \
libsndobj-dev libfluidsynth-dev fluid-soundfont-gm byacc
2. Clone the Purr-Data repository *(10 minutes)*
......@@ -156,6 +176,7 @@ Hard drive space required: *roughly 2 GB*
brew install libtool
brew install fftw
brew install python
brew install lua
brew install fluidsynth
brew install lame
brew install libvorbis
......@@ -260,22 +281,35 @@ Contributing is easy:
1. Join the development list:
http://disis.music.vt.edu/cgi-bin/mailman/listinfo/l2ork-dev
2. Tell us what you'd like to work on. There are lots of possibilities. For
example, there are _lots_ of externals and even core features that are
poorly documented.
3. _No prototypes, please_. Purr Data's biggest strength is that users can
2. Fork Purr Data using the gitlab UI and then try to build it from source
for your own platform using the [Build Guide](#build-guide) above.
If you run into problems ask on the development list for help.
3. Once you have successfully built Purr Data, install it and make sure it
runs correctly.
4. Start making changes to the code with brief, clear commit messages. If you
want some practice you can try fixing one of the bugs on the issue tracker
labeled
["good-first-bug"](https://git.purrdata.net/jwilkes/purr-data/issues?label_name%5B%5D=good-first-bug)
5. One you are done fixing the bug or adding your feature, make a merge request
in the Gitlab UI so we can merge the fix for the next release.
A few guidelines:
* _No prototypes, please_. Purr Data's biggest strength is that users can
turn an idea into working code very quickly. But a prototyping language that
is itself a prototype isn't very useful. That means Purr Data's core code
and libraries must be stable, consistent, well-documented, and easy to use.
4. Develop incrementally. Small, solid improvements to the software are
* Develop incrementally. Small, solid improvements to the software are
preferable to large, disruptive ones.
5. Make sure you aren't duplicating existing functionality, especially core
functionality. For backwards compatibility Purr Data ships many legacy
* Try not to duplicate existing functionality.
For backwards compatibility Purr Data ships many legacy
libraries which unfortunately duplicate the same functionality. This makes
it harder to learn how to use Pd, and makes it burdensome to read patches
and keep track of all the disparate implementations.
6. Send us a merge request and we'll test it. If it's well-documented and
there aren't any bugs we'll add it to the software.
* Keep dependencies to a minimum. Cross-platform dependency handling is
unfortunately still an open research problem. In the even that you need
an external library dependency, please mirror it at git.purrdata.net
so that the build system doesn't depend on the availability of external
infrastructure.
Here are some of the current tasks:
......@@ -297,6 +331,8 @@ Here are some of the current tasks:
* status: some externals have their own testing environments, but they are
limited as they require manual intervention to run and read the
results inside a graphical window.
We currently have a crude test system that at least ensures that each
external library instantiates without crashing.
Here's an email thread with Katja Vetter's design, which looks to
be automatable:
http://markmail.org/message/t7yitfc55anus76i#query:+page:1+mid:chb56ve7kea2qumn+state:results
......@@ -354,7 +390,7 @@ The following is adapted from Pd Vanilla's original source notes. (Found
in pd/src/CHANGELOG.txt for some reason...)
Sections 2-3 below are quite old. Someone needs to check whether they even
hold true for Pd Vanilla any more.
hold true for Pd Vanilla anymore.
#### Structure definition roadmap.
......@@ -390,7 +426,7 @@ Other structures:
#### 1. Coding Style
1.0 C coding style. The source should pass most "warnings" of C compilers
(-Wall on linux, for instance; see the makefile.) Some informalities
(-Wall on Linux, for instance-- see the makefile.) Some informalities
are intentional, for instance the loose use of function prototypes (see
below) and uncast conversions from longer to shorter numerical formats.
The code doesn't respect "const" yet.
......
......@@ -76,13 +76,6 @@ deb: $(debsrc) $(addprefix debian/nwjs/, $(nwjs))
tar xfz $(debsrc)
# Add the NW.js binaries to the source package.
cd debian/source && rm -f include-binaries && for x in $(addprefix debian/nwjs/, $(nwjs)); do echo "$$x" >> include-binaries; done
# This works around some problems compiling externals on Precise and earlier
# (patch from pd-extended by Hans-Christoph Steiner, modified for pd-l2ork).
# This can be removed once Ubuntu 12.04 finally goes the way of the dodo.
# cd $(debdist) && patch -p1 < ../precise-configure.patch
# Patch the user config dir name so that purr-data can coexist with pd-l2ork.
# Not needed with purr-data 2.4.5+ any more.
# cd $(debdist) && patch -Np1 < ../userconfig.patch
# Make sure to copy the Debian files which may have uncommitted changes.
# Then run debuild to create the package.
cd $(debdist) && cp -R ../debian . && debuild $(DEBUILD_FLAGS)
......@@ -90,13 +83,17 @@ deb: $(debsrc) $(addprefix debian/nwjs/, $(nwjs))
rm -rf $(debdist)
debsrc:
$(MAKE) deb DEBUILD_FLAGS=-S
$(MAKE) deb DEBUILD_FLAGS="-S -d"
deb-us:
$(MAKE) deb DEBUILD_FLAGS="-us -uc"
debsrc-us:
$(MAKE) deb DEBUILD_FLAGS="-S -us -uc"
$(MAKE) deb DEBUILD_FLAGS="-S -d -us -uc"
# Determine the build version which needs git to be computed, so we can't do
# it in a stand-alone build from a tarball.
PD_BUILD_VERSION := $(shell git log -1 --format=%cd --date=short | sed -e 's/-//g')-rev.$(shell git rev-parse --short HEAD)
$(debsrc):
rm -rf $(debdist)
......@@ -106,6 +103,9 @@ $(debsrc):
git -C .. archive --format=tar.gz --prefix=$(debdist)/ HEAD | tar xfz -
# Grab the submodules.
for x in $(submodules); do (cd $(debdist) && rm -rf $$x && git -C ../../$$x archive --format=tar.gz --prefix=$$x/ HEAD | tar xfz -); done
# Pre-generate and put s_stuff.h into the tarball (see above; the build
# version is generated using git which can't be done outside the git repo).
sed 's|^\(#define PD_BUILD_VERSION "\).*"|\1$(PD_BUILD_VERSION)"|' ../pd/src/s_stuff.h.in > $(debdist)/pd/src/s_stuff.h
# Create the source tarball.
tar cfz $(debsrc) $(debdist)
rm -rf $(debdist)
......
purr-data (2.4.9+git3840+b9f17566-1) bionic; urgency=low
* Build from latest upstream source.
-- Albert Graef <aggraef@gmail.com> Fri, 09 Mar 2018 10:45:41 +0100
purr-data (2.0+git3322+50e3805-1) xenial; urgency=low
* Build from latest upstream source.
......
......@@ -2,7 +2,7 @@ Source: purr-data
Section: sound
Priority: extra
Maintainer: Albert Graef <aggraef@gmail.com>
Build-Depends: debhelper (>= 7.0.50~), autoconf, automake, libtool, pkg-config, bison, flex, libgtk2.0-dev, python-dev, dh-python | python-support, flite1-dev, ladspa-sdk, libasound2-dev, libjack-dev, libbluetooth-dev, libcairo2-dev, libgl1-mesa-dev | libgl-dev, libglew1.6-dev | libglew-dev, libgsl-dev | libgsl0-dev, libmagick++-dev, libavifile-0.7-dev, libdc1394-22-dev, libfftw3-dev, libfluidsynth-dev, libftgl-dev, libgmerlin-avdec-dev, libgsm1-dev, libjpeg-dev, libmp3lame-dev, libmpeg3-dev, libquicktime-dev, libraw1394-dev, libsmpeg-dev, libsndobj-dev, libspeex-dev, libstk0-dev, libtiff5-dev, libv4l-dev, libdv4-dev, libiec61883-dev, libxv-dev, libxxf86vm-dev, libunicap2-dev, libvorbis-dev, zlib1g-dev (>= 1:1.1.3), rsync, libgconf2-dev, libnss3-dev, libxtst-dev, libxss-dev
Build-Depends: debhelper (>= 7.0.50~), autoconf, automake, libtool, pkg-config, bison, flex, libgtk2.0-dev, python-dev, dh-python | python-support, flite1-dev, ladspa-sdk, libasound2-dev, libjack-dev, libbluetooth-dev, libcairo2-dev, libgl1-mesa-dev | libgl-dev, libglew1.6-dev | libglew-dev, libgsl-dev | libgsl0-dev, libmagick++-dev, libavifile-0.7-dev, libdc1394-22-dev, libfftw3-dev, libfluidsynth-dev, libftgl-dev, libgmerlin-avdec-dev, libgsm1-dev, libjpeg-dev, liblua5.3-dev | liblua5.2-dev, libmp3lame-dev, libmpeg3-dev, libquicktime-dev, libraw1394-dev, libsmpeg-dev, libsndobj-dev, libspeex-dev, libstk0-dev, libtiff5-dev, libv4l-dev, libdv4-dev, libiec61883-dev, libxv-dev, libxxf86vm-dev, libunicap2-dev, libvorbis-dev, zlib1g-dev (>= 1:1.1.3), rsync, libgconf2-dev, libnss3-dev, libxtst-dev, libxss-dev
Standards-Version: 3.9.5
Homepage: https://git.purrdata.net/jwilkes/purr-data
......
......@@ -25,6 +25,8 @@ prefix = /opt/purr-data
override_dh_auto_configure:
override_dh_auto_clean: