From 483ffdf6af07f3cf3237b90d43e3b79cca9ea4f9 Mon Sep 17 00:00:00 2001 From: denise Date: Wed, 1 Aug 2012 16:25:59 -0400 Subject: [PATCH 01/12] CC-84: Smart Playlists - increased size of criteria column - it was too smallf for some fields --- .../application/models/airtime/map/CcBlockcriteriaTableMap.php | 2 +- airtime_mvc/build/schema.xml | 2 +- airtime_mvc/build/sql/schema.sql | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/airtime_mvc/application/models/airtime/map/CcBlockcriteriaTableMap.php b/airtime_mvc/application/models/airtime/map/CcBlockcriteriaTableMap.php index 6968366fc..6565bf259 100644 --- a/airtime_mvc/application/models/airtime/map/CcBlockcriteriaTableMap.php +++ b/airtime_mvc/application/models/airtime/map/CcBlockcriteriaTableMap.php @@ -39,7 +39,7 @@ class CcBlockcriteriaTableMap extends TableMap { $this->setPrimaryKeyMethodInfo('cc_blockcriteria_id_seq'); // columns $this->addPrimaryKey('ID', 'DbId', 'INTEGER', true, null, null); - $this->addColumn('CRITERIA', 'DbCriteria', 'VARCHAR', true, 16, null); + $this->addColumn('CRITERIA', 'DbCriteria', 'VARCHAR', true, 32, null); $this->addColumn('MODIFIER', 'DbModifier', 'VARCHAR', true, 16, null); $this->addColumn('VALUE', 'DbValue', 'VARCHAR', true, 512, null); $this->addColumn('EXTRA', 'DbExtra', 'VARCHAR', false, 512, null); diff --git a/airtime_mvc/build/schema.xml b/airtime_mvc/build/schema.xml index 5e2045d0f..95f8329ae 100644 --- a/airtime_mvc/build/schema.xml +++ b/airtime_mvc/build/schema.xml @@ -273,7 +273,7 @@ - + diff --git a/airtime_mvc/build/sql/schema.sql b/airtime_mvc/build/sql/schema.sql index a346ecdae..493f805e0 100644 --- a/airtime_mvc/build/sql/schema.sql +++ b/airtime_mvc/build/sql/schema.sql @@ -363,7 +363,7 @@ DROP TABLE "cc_blockcriteria" CASCADE; CREATE TABLE "cc_blockcriteria" ( "id" serial NOT NULL, - "criteria" VARCHAR(16) NOT NULL, + "criteria" VARCHAR(32) NOT NULL, "modifier" VARCHAR(16) NOT NULL, "value" VARCHAR(512) NOT NULL, "extra" VARCHAR(512), From ddd6016b28ab26f63196b0a3d8bc44290e7c0707 Mon Sep 17 00:00:00 2001 From: denise Date: Wed, 1 Aug 2012 16:36:12 -0400 Subject: [PATCH 02/12] CC-84: Smart Playlists - qtip cleanup --- .../library/get-file-metadata.ajax.phtml | 55 ++++++++++--------- airtime_mvc/public/css/styles.css | 20 +++++-- 2 files changed, 45 insertions(+), 30 deletions(-) diff --git a/airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml b/airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml index 4f747c74b..31f1c7f0c 100644 --- a/airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml +++ b/airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml @@ -1,24 +1,25 @@ type == "audioclip") : ?> -
Title:md["MDATA_KEY_TITLE"]);?>
-
Creator:md["MDATA_KEY_CREATOR"]);?>
-
Album:md["MDATA_KEY_SOURCE"]);?>
-
Track:md["MDATA_KEY_TRACKNUMBER"]);?>
-
Length:md["MDATA_KEY_DURATION"]);?>
-
Sample Rate:md["MDATA_KEY_SAMPLERATE"]);?>
-
Bit Rate:md["MDATA_KEY_BITRATE"]);?>
-
Mood:md["MDATA_KEY_MOOD"]);?>
-
Genre:md["MDATA_KEY_GENRE"]);?>
-
Year:md["MDATA_KEY_YEAR"]);?>
-
Label:md["MDATA_KEY_LABEL"]);?>
-
BPM:md["MDATA_KEY_BPM"]);?>
-
Composer:md["MDATA_KEY_COMPOSER"]);?>
-
Conductor:md["MDATA_KEY_CONDUCTOR"]);?>
-
Copyright:md["MDATA_KEY_COPYRIGHT"]);?>
-
Isrc Number:md["MDATA_KEY_ISRC"]);?>
-
Website:md["MDATA_KEY_URL"]);?>
-
Language:md["MDATA_KEY_LANGUAGE"]);?>
-
File Path:md["MDATA_KEY_FILEPATH"]);?>
- +
+ + + + + + + + + + + + + + + + + + + +
Title:md["MDATA_KEY_TITLE"]);?>
Creator:md["MDATA_KEY_CREATOR"]);?>
Album:md["MDATA_KEY_SOURCE"]);?>
Track:md["MDATA_KEY_TRACKNUMBER"]);?>
Length:md["MDATA_KEY_DURATION"]);?>
Sample Rate:md["MDATA_KEY_SAMPLERATE"]);?>
Bit Rate:md["MDATA_KEY_BITRATE"]);?>
Mood:md["MDATA_KEY_MOOD"]);?>
Genre:md["MDATA_KEY_GENRE"]);?>
Year:md["MDATA_KEY_YEAR"]);?>
Label:md["MDATA_KEY_LABEL"]);?>
BPM:md["MDATA_KEY_BPM"]);?>
Composer:md["MDATA_KEY_COMPOSER"]);?>
Conductor:md["MDATA_KEY_CONDUCTOR"]);?>
Copyright:md["MDATA_KEY_COPYRIGHT"]);?>
Isrc Number:md["MDATA_KEY_ISRC"]);?>
Website:md["MDATA_KEY_URL"]);?>
Language:md["MDATA_KEY_LANGUAGE"]);?>
File Path:md["MDATA_KEY_FILEPATH"]);?>
type == "playlist" || $this->type == "block") : ?> @@ -93,18 +94,22 @@ blType == "Dynamic") { ?>
Dynamic Playlist Criteria:
- +
contents["crit"] as $criterias) : ?> $maxStrLen) { + $valMaxStrLen = 25; + if (strlen($crit["value"]) > $valMaxStrLen) { $crit["value"] = substr($crit["value"], 0, 24)."..."; } + $critMaxStrLen = 11; + if (strlen($crit["display_name"] > $critMaxStrLen)) { + $crit["display_name"] = substr($crit["display_name"], 0, 10)."..."; + } ?> - - + + diff --git a/airtime_mvc/public/css/styles.css b/airtime_mvc/public/css/styles.css index cbbc0ce28..73f0d1c5f 100644 --- a/airtime_mvc/public/css/styles.css +++ b/airtime_mvc/public/css/styles.css @@ -418,11 +418,15 @@ input[type="text"]:focus, input[type="password"]:focus, textarea:focus, .input_t } /***** LIBRARY QTIP METADATA SPECIFIC STYLES BEGIN *****/ +table.library-track-md{ + width: 280px; +} + .ui-tooltip-dark.file-md-long{ max-width: 415px !important; } -.library-get-file-md tr td{ +.library-get-file-md tr td, .library-track-md tr td{ font-size:10px; padding: 0px; vertical-align:top; @@ -434,8 +438,16 @@ table.library-get-file-md{ width:350px; } -.file-md-qtip-criteria-width-small{ - width:80px; +table.library-get-file-md.table-small{ + width: 290px !important; +} + +.file-md-qtip-criteria-width-crit{ + width:60px; +} + +.file-md-qtip-criteria-width-mod{ + width:60px; } .file-md-qtip-criteria-width{ @@ -468,8 +480,6 @@ table.library-get-file-md{ .file-md-qtip-playlist.static td{ color: #f09839; } - - /***** LIBRARY QTIP METADATA SPECIFIC STYLES END *****/ From 9479aeb3dd5d908d6f95e54ed7ce34de208a15a2 Mon Sep 17 00:00:00 2001 From: denise Date: Wed, 1 Aug 2012 17:10:56 -0400 Subject: [PATCH 03/12] CC-84: Smart Playlists - fixed db column mapping for radio station name and track title --- airtime_mvc/application/forms/SmartBlockCriteria.php | 4 ++-- airtime_mvc/application/models/Block.php | 6 +++--- .../views/scripts/library/get-file-metadata.ajax.phtml | 6 +++--- airtime_mvc/public/css/styles.css | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/airtime_mvc/application/forms/SmartBlockCriteria.php b/airtime_mvc/application/forms/SmartBlockCriteria.php index 7b1aa64b2..0cb16205d 100644 --- a/airtime_mvc/application/forms/SmartBlockCriteria.php +++ b/airtime_mvc/application/forms/SmartBlockCriteria.php @@ -33,7 +33,7 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm "rating" => "Rating", "sample_rate" => "Sample Rate", "track_title" => "Title", - "track_num" => "Track Number", + "track_number" => "Track Number", "utime" => "Uploaded", "year" => "Year" ); @@ -64,7 +64,7 @@ class Application_Form_SmartBlockCriteria extends Zend_Form_SubForm "rating" => "n", "sample_rate" => "n", "track_title" => "s", - "track_num" => "n", + "track_number" => "n", "year" => "n" ); diff --git a/airtime_mvc/application/models/Block.php b/airtime_mvc/application/models/Block.php index e0cfecef5..1d9163957 100644 --- a/airtime_mvc/application/models/Block.php +++ b/airtime_mvc/application/models/Block.php @@ -76,11 +76,11 @@ class Application_Model_Block "mood" => "DbMood", "name" => "DbName", "orchestra" => "DbOrchestra", - "radio_station_name" => "DbRadioStation", + "radio_station_name" => "DbRadioStationName", "rating" => "DbRating", "sample_rate" => "DbSampleRate", "track_title" => "DbTrackTitle", - "track_num" => "DbTrackNum", + "track_number" => "DbTrackNumber", "year" => "DbYear" ); @@ -1169,7 +1169,7 @@ EOT; "rating" => "Rating", "sample_rate" => "Sample Rate", "track_title" => "Title", - "track_num" => "Track Number", + "track_number" => "Track Number", "utime" => "Uploaded", "year" => "Year" ); diff --git a/airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml b/airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml index 31f1c7f0c..3579b1d7c 100644 --- a/airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml +++ b/airtime_mvc/application/views/scripts/library/get-file-metadata.ajax.phtml @@ -102,9 +102,9 @@ if (strlen($crit["value"]) > $valMaxStrLen) { $crit["value"] = substr($crit["value"], 0, 24)."..."; } - $critMaxStrLen = 11; - if (strlen($crit["display_name"] > $critMaxStrLen)) { - $crit["display_name"] = substr($crit["display_name"], 0, 10)."..."; + $critMaxStrLen = 13; + if (strlen($crit["display_name"]) > $critMaxStrLen) { + $crit["display_name"] = substr($crit["display_name"], 0, 12)."..."; } ?> diff --git a/airtime_mvc/public/css/styles.css b/airtime_mvc/public/css/styles.css index 73f0d1c5f..55c8ad23c 100644 --- a/airtime_mvc/public/css/styles.css +++ b/airtime_mvc/public/css/styles.css @@ -443,7 +443,7 @@ table.library-get-file-md.table-small{ } .file-md-qtip-criteria-width-crit{ - width:60px; + width:70px; } .file-md-qtip-criteria-width-mod{ @@ -451,7 +451,7 @@ table.library-get-file-md.table-small{ } .file-md-qtip-criteria-width{ - width:120px; + width:110px; } .file-md-qtip-row-width-title{ From 6375c283c52975b462e2eb5893ea2d6f1042117f Mon Sep 17 00:00:00 2001 From: Daniel James Date: Thu, 2 Aug 2012 11:41:53 +0100 Subject: [PATCH 04/12] Added script to create nightly .deb package snapshot --- debian/changelog | 288 ++++++++++++++++++ debian/compat | 1 + debian/config | 46 +++ debian/control | 69 +++++ debian/copyright | 152 +++++++++ debian/docs | 4 + debian/etc/airtime.ini | 5 + debian/etc/apache.conf | 11 + debian/etc/apache.vhost.tpl | 18 ++ debian/gbp.conf | 3 + debian/install | 17 ++ debian/po/POTFILES.in | 1 + debian/po/templates.pot | 249 +++++++++++++++ debian/postinst | 252 +++++++++++++++ debian/postrm | 128 ++++++++ debian/preinst | 33 ++ debian/prerm | 29 ++ debian/rules | 9 + debian/source/format | 1 + debian/source/include-binaries | 5 + debian/templates | 109 +++++++ debian/usr/bin/airtime-launch-browser | 26 ++ debian/usr/share/applications/airtime.desktop | 8 + debian/usr/share/man/man1/airtime-import.1.gz | Bin 0 -> 994 bytes .../man/man1/airtime-launch-browser.1.gz | Bin 0 -> 547 bytes debian/usr/share/man/man1/airtime-log.1.gz | Bin 0 -> 736 bytes .../man/man1/airtime-test-soundcard.1.gz | Bin 0 -> 626 bytes .../share/man/man1/airtime-test-stream.1.gz | Bin 0 -> 723 bytes debian/usr/share/menu/airtime | 6 + debian/usr/share/pixmaps/airtime.xpm | 50 +++ debian/watch | 2 + gen-snapshot.sh | 79 +++++ 32 files changed, 1601 insertions(+) create mode 100644 debian/changelog create mode 100644 debian/compat create mode 100644 debian/config create mode 100644 debian/control create mode 100644 debian/copyright create mode 100644 debian/docs create mode 100644 debian/etc/airtime.ini create mode 100644 debian/etc/apache.conf create mode 100644 debian/etc/apache.vhost.tpl create mode 100644 debian/gbp.conf create mode 100644 debian/install create mode 100644 debian/po/POTFILES.in create mode 100644 debian/po/templates.pot create mode 100755 debian/postinst create mode 100755 debian/postrm create mode 100755 debian/preinst create mode 100755 debian/prerm create mode 100755 debian/rules create mode 100644 debian/source/format create mode 100644 debian/source/include-binaries create mode 100644 debian/templates create mode 100755 debian/usr/bin/airtime-launch-browser create mode 100644 debian/usr/share/applications/airtime.desktop create mode 100644 debian/usr/share/man/man1/airtime-import.1.gz create mode 100644 debian/usr/share/man/man1/airtime-launch-browser.1.gz create mode 100644 debian/usr/share/man/man1/airtime-log.1.gz create mode 100644 debian/usr/share/man/man1/airtime-test-soundcard.1.gz create mode 100644 debian/usr/share/man/man1/airtime-test-stream.1.gz create mode 100644 debian/usr/share/menu/airtime create mode 100644 debian/usr/share/pixmaps/airtime.xpm create mode 100644 debian/watch create mode 100755 gen-snapshot.sh diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 000000000..f4889d275 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,288 @@ +airtime (2.1.4-1) unstable; urgency=low + + * Nightly snapshot of Airtime + + -- Daniel James Thu, 02 Aug 2012 11:19:03 +0100 + +airtime (2.1.3-2) unstable; urgency=low + + * Use a debconf question to set storage directory (CC-3576) + + -- Daniel James Tue, 24 Jul 2012 14:55:13 +0100 + +airtime (2.1.3-1) unstable; urgency=low + + * Upstream 2.1.3 release + * Prompt user to answer No to set Icecast passwords manually (CC-4013) + + -- Daniel James Thu, 05 Jul 2012 17:01:20 +0100 + +airtime (2.1.2-1) unstable; urgency=low + + * Upstream 2.1.2 release + + -- Daniel James Mon, 18 Jun 2012 10:01:43 +0100 + +airtime (2.1.1-1) unstable; urgency=low + + * Upstream 2.1.1 release + + -- Daniel James Thu, 14 Jun 2012 09:56:38 +0100 + +airtime (2.1.0-1) unstable; urgency=low + + * Upstream 2.1.0 release + * Test the symlink to the Liquidsoap binary + + -- Daniel James Mon, 04 June 2012 18:25:11 +0100 + +airtime (2.0.3-1) unstable; urgency=low + + * Upstream 2.0.3 release + * Added Apache license to copyright file + + -- Daniel James Wed, 04 Apr 2012 11:11:15 +0100 + +airtime (2.0.2-1) unstable; urgency=low + + * Upstream 2.0.2 release + * Strip install_full scripts from tarball + + -- Daniel James Wed, 29 Feb 2012 10:34:35 +0000 + +airtime (2.0.1-1) unstable; urgency=low + + * Upstream 2.0.1 release + * Strip ZFDebug library from tarball + * Depend on distro's package of Zend + + -- Daniel James Wed, 15 Feb 2012 12:57:23 +0000 + +airtime (2.0.0-5) unstable; urgency=low + + * Strip phing library from tarball + + -- Daniel James Wed, 01 Feb 2012 15:50:18 +0000 + +airtime (2.0.0-4) unstable; urgency=low + + * Fix for overbooked shows longer than 24 hours + + -- Daniel James Wed, 25 Jan 2012 10:11:33 +0000 + +airtime (2.0.0-3) unstable; urgency=low + + * Upstream 2.0.0 final release + + -- Daniel James Fri, 20 Jan 2012 12:03:55 +0000 + +airtime (2.0.0-2) unstable; urgency=low + + * Upstream 2.0.0-RC1 release + + -- Daniel James Mon, 16 Jan 2012 15:41:15 +0000 + +airtime (2.0.0-1) unstable; urgency=low + + * Upstream 2.0.0-beta2 release + + -- Daniel James Thu, 05 Jan 2012 17:15:07 +0000 + +airtime (1.9.5-3) unstable; urgency=low + + * Upstream 1.9.5-RC5 release + + -- Daniel James Mon, 14 Nov 2011 10:34:51 +0000 + +airtime (1.9.5-2) unstable; urgency=low + + * Upstream 1.9.5-RC2 release + + -- Daniel James Wed, 09 Nov 2011 17:09:07 +0000 + +airtime (1.9.5-1) unstable; urgency=low + + * Upstream 1.9.5-RC1 release + + -- Daniel James Mon, 07 Nov 2011 16:16:57 +0000 + +airtime (1.9.4-13) unstable; urgency=low + + * Increase PHP memory limit to more than post_max_size + + -- Daniel James Mon, 03 Oct 2011 17:29:05 +0100 + +airtime (1.9.4-12) unstable; urgency=low + + * Use invoke-rc.d rather than wwwconfig-common + + -- Daniel James Fri, 30 Sep 2011 16:52:28 +0100 + +airtime (1.9.4-11) unstable; urgency=low + + * Insist on python-virtualenv 1.4.9 or later + + -- Daniel James Wed, 28 Sep 2011 14:45:19 +0100 + +airtime (1.9.4-10) unstable; urgency=low + + * Install python-virtualenv as a Pre-Depends + + -- Daniel James Tue, 27 Sep 2011 11:04:29 +0100 + +airtime (1.9.4-9) unstable; urgency=low + + * Add dependency on ed, configure monit without asking + + -- Daniel James Mon, 26 Sep 2011 10:55:09 +0100 + +airtime (1.9.4-8) unstable; urgency=low + + * Upstream 1.9.4-RC9 release + + -- Daniel James Fri, 23 Sep 2011 14:37:15 +0100 + +airtime (1.9.4-7) unstable; urgency=low + + * Don't depend on Ruby packages + + -- Daniel James Thu, 22 Sep 2011 15:51:42 +0100 + +airtime (1.9.4-6) unstable; urgency=low + + * Upstream 1.9.4-RC8 release + + -- Daniel James Wed, 21 Sep 2011 16:22:57 +0100 + +airtime (1.9.4-5) unstable; urgency=low + + * Upstream 1.9.4-RC7 release + + -- Daniel James Tue, 20 Sep 2011 20:12:24 +0100 + +airtime (1.9.4-4) unstable; urgency=low + + * Upstream 1.9.4-RC6 release + + -- Daniel James Tue, 20 Sep 2011 11:48:38 +0100 + +airtime (1.9.4-3) unstable; urgency=low + + * Upstream 1.9.4-RC3 release + + -- Daniel James Thu, 15 Sep 2011 10:28:22 +0100 + +airtime (1.9.4-2) unstable; urgency=low + + * Upstream 1.9.4-RC2 release + + -- Daniel James Wed, 14 Sep 2011 15:18:20 +0100 + +airtime (1.9.4-1) unstable; urgency=low + + * Upstream 1.9.4-RC1 release + + -- Daniel James Tue, 13 Sep 2011 14:50:02 +0100 + +airtime (1.9.3-4) unstable; urgency=low + + * Improvements to package error logging + + -- Daniel James Mon, 05 Sep 2011 16:02:21 +0100 + +airtime (1.9.3-3) unstable; urgency=low + + * Updated dependency list + + -- Daniel James Sat, 03 Sep 2011 11:29:26 +0100 + +airtime (1.9.3-2) unstable; urgency=low + + * Fixed reconfigure action so that airtime-install does not run again + + -- Daniel James Tue, 30 Aug 2011 17:48:49 +0100 + +airtime (1.9.3-1) unstable; urgency=low + + * upstream 1.9.3 + + -- Daniel James Sat, 27 Aug 2011 12:58:46 +0100 + +airtime (1.9.2-2) unstable; urgency=low + + * upstream 1.9.2 + + -- Daniel James Wed, 24 Aug 2011 12:26:57 +0100 + +airtime (1.9.2-1) unstable; urgency=low + + * upstream 1.9.2-RC1 + + -- Daniel James Tue, 23 Aug 2011 15:49:31 +0100 + +airtime (1.9.1-1) unstable; urgency=low + + * upstream 1.9.1 + + -- Daniel James Mon, 22 Aug 2011 11:04:33 +0100 + +airtime (1.9.0-1) unstable; urgency=low + + * upstream 1.9.0 + + -- Daniel James Fri, 12 Aug 2011 14:11:21 +0100 + +airtime (1.8.2-4) unstable; urgency=low + + * upstream 1.8.2-RC4 + + -- Robin Gareus Tue, 07 Jun 2011 21:45:55 +0200 + +airtime (1.8.2-3) unstable; urgency=low + + * upstream 1.8.2-RC3 + + -- Robin Gareus Tue, 07 Jun 2011 02:56:12 +0200 + +airtime (1.8.2-2) unstable; urgency=low + + * fixed postinst + + -- Robin Gareus Wed, 01 Jun 2011 20:48:29 +0200 + +airtime (1.8.2-1) unstable; urgency=low + + * upstream 1.8.2-RC2 release + + -- Robin Gareus Wed, 01 Jun 2011 16:21:40 +0200 + +airtime (1.8.1-1) unstable; urgency=low + + * upstream 1.8.1 release + + -- Robin Gareus Wed, 11 May 2011 22:50:03 +0200 + +airtime (1.8.0-1) unstable; urgency=low + + * upstream 1.8.0 release + + -- Robin Gareus Tue, 19 Apr 2011 15:44:40 +0200 + +airtime (1.7.0-2) unstable; urgency=low + + * fixed few lintian warnings + * allow to de-install apache 000default + + -- Robin Gareus Tue, 05 Apr 2011 20:45:52 +0200 + +airtime (1.7.0-1) unstable; urgency=low + + * upstream 1.7.0-GA release + + -- Robin Gareus Mon, 04 Apr 2011 21:19:56 +0200 + +airtime (1.6.1-1) unstable; urgency=low + + * initial package + + -- Robin Gareus Sat, 02 Apr 2011 22:48:35 +0200 diff --git a/debian/compat b/debian/compat new file mode 100644 index 000000000..7f8f011eb --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +7 diff --git a/debian/config b/debian/config new file mode 100644 index 000000000..553a85fd1 --- /dev/null +++ b/debian/config @@ -0,0 +1,46 @@ +#!/bin/bash +# Debconf config script for airtime + +set -e + +. /usr/share/debconf/confmodule + +db_input high airtime/apache-setup || true +db_go ||true + +db_get airtime/apache-setup +if [ "$RET" = "dedicated v-host" ]; then + db_input high airtime/apache-servername || true + db_go ||true + db_input high airtime/apache-serveradmin || true + db_go ||true + db_input high airtime/apache-deldefault || true + db_go ||true +fi + +db_input high airtime/icecast-setup || true +db_go ||true + +db_get airtime/icecast-setup +if [ "$RET" = "true" ]; then + db_input high airtime/icecast-hostname || true + db_go ||true + db_input high airtime/icecast-sourcepw || true + db_go ||true + db_input high airtime/icecast-relaypw || true + db_go ||true + db_input high airtime/icecast-adminpw || true + db_go ||true +fi + +# Only ask for storage directory and admin password on clean installs +if [ ! -e /var/log/airtime/pypo/pypo.log ]; then + db_input high airtime/storage-directory || true + db_go ||true + db_input high airtime/admin-password || true + db_go ||true +fi + +#DEBHELPER# + +exit 0 diff --git a/debian/control b/debian/control new file mode 100644 index 000000000..a0a14ce19 --- /dev/null +++ b/debian/control @@ -0,0 +1,69 @@ +Source: airtime +Section: web +Priority: optional +Maintainer: Daniel James +Build-Depends: debhelper (>= 7.0.50~), po-debconf +Standards-Version: 3.8.4 +Homepage: http://www.sourcefabric.org/en/products/airtime_overview/ + +Package: airtime +Architecture: all +Pre-Depends: postgresql, python-virtualenv (>= 1.4.9) +Depends: apache2, + curl, + ecasound, + gzip (>= 1.3.12), + libao-ocaml, + libapache2-mod-php5, + libcamomile-ocaml-data, + libesd0, + libmad-ocaml, + libmp3lame0, + libportaudio2, + libpulse0, + libsamplerate0, + libsoundtouch-ocaml, + libtaglib-ocaml, + liquidsoap (>= 1.0.0~), + lsof, + monit, + multitail, + odbc-postgresql, + patch, + php-db, + php5-cli, + php5-curl, + php5-gd, + php-pear, + php5-pgsql, + rabbitmq-server, + sudo, + sysv-rc, + tar (>= 1.22), + unzip, + vorbis-tools, + zendframework | libzend-framework-php, + ${misc:Depends}, + ${python:Depends} +Recommends: icecast2 +Suggests: airtime-audio-samples, + alsa-utils +Description: The open radio software for scheduling and remote station management. + Airtime is an open source application that provides remote automation + of a radio station. + . + Major features: + . + Web-based remote station management. Authorized personnel can add + program material, create playlists, and schedule programming all via + a web interface. + . + Automation. Airtime has a scheduler function that enables users to + set shows with playlists for playback at a date and time of their choosing. + Playlists can be played back multiple times. + . + Solid, fast playback. Airtime uses the open source Liquidsoap + multimedia framework for clean, reliable, fast playback. + . + Open, extensible architecture. Stations are free to extend and alter + all parts of the program code. diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 000000000..0f11be953 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,152 @@ +Format: http://anonscm.debian.org/viewvc/dep/web/deps/dep5.mdwn?revision=200 +Upstream-Name: airtime +Upstream-Contact: Sourcefabric +Source: http://sourceforge.net/projects/airtime/files/ + +Files: * +Copyright: + 2010-2012 Sourcefabric o.p.s + 2004-2009 Media Development Loan Fund +License: GPL-3 + +Files: airtime/python_apps/pypo/* +Copyright: + Jonas Ohrstrom + Paul Baranowski + Martin Konecny +License: GPL-3+ + +Files: airtime_mvc/library/doctrine/migrations/* +Copyright: No copyright holders +License: LGPL-2.1 +Comment: + This software consists of voluntary contributions made by many individuals + and is licensed under the LGPL. For more information, see + + +Files: airtime_mvc/library/soundcloud-api/* +Copyright: 2010-2011 Anton Lindqvist +License: Expat + +Files: airtime_mvc/library/php-amqplib/* +Copyright: + Barry Pederson + Vadim Zaliva + taavi013@gmail.com + Sean Murphy + spiderbill +License: LGPL-2.1 + +Files: airtime_mvc/library/propel/* +Copyright: 2005-2011 Hans Lellelid, David Zuelke, Francois Zaninotto, William Durand +License: Expat + +Files: airtime_mvc/library/propel/test/etc/xsl/* +Copyright: 2001-2004 The Apache Software Foundation +License: Apache-2.0 + +Files: debian/* +Copyright: + 2012 Alessio Treglia + 2011 Robin Gareus +License: GPL-2+ + +License: Expat + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the “Software”), + to deal in the Software without restriction, including without limitation the + rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + . + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + . + THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + +License: GPL-3 + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License version 3 as + published by the Free Software Foundation. + . + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. +Comment: + You should have received a copy of the GNU General Public License + along with this program. If not, see . + . + On Debian systems, the complete text of the GNU General Public + License can be found in `/usr/share/common-licenses/GPL-3'. + +License: GPL-3+ + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + . + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. +Comment: + You should have received a copy of the GNU General Public License + along with this program. If not, see . + . + On Debian systems, the complete text of the GNU General Public + License can be found in `/usr/share/common-licenses/GPL-3'. + +License: LGPL-2.1 + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License version 2.1 as published by the Free Software Foundation. + . + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. +Comment: + You should have received a copy of the GNU General Public License + along with this program. If not, see . + . + On Debian systems, the complete text of the GNU General Public + License can be found in `/usr/share/common-licenses/LGPL-2.1'. + +License: GPL-2+ + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + . + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. +Comment: + You should have received a copy of the GNU General Public License + along with this program. If not, see . + . + On Debian systems, the complete text of the GNU General Public + License can be found in `/usr/share/common-licenses/GPL-2'. + +License: Apache-2.0 + Copyright 2001-2004 The Apache Software Foundation + . + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + . + http://www.apache.org/licenses/LICENSE-2.0 + . + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/debian/docs b/debian/docs new file mode 100644 index 000000000..ccedcc212 --- /dev/null +++ b/debian/docs @@ -0,0 +1,4 @@ +airtime/README +airtime/CREDITS +airtime/LICENSE_3RD_PARTY +airtime/changelog diff --git a/debian/etc/airtime.ini b/debian/etc/airtime.ini new file mode 100644 index 000000000..e35f600b0 --- /dev/null +++ b/debian/etc/airtime.ini @@ -0,0 +1,5 @@ +[PHP] +memory_limit = 512M +magic_quotes_gpc = Off +file_uploads = On +upload_tmp_dir = /tmp diff --git a/debian/etc/apache.conf b/debian/etc/apache.conf new file mode 100644 index 000000000..d3d84e92c --- /dev/null +++ b/debian/etc/apache.conf @@ -0,0 +1,11 @@ +Alias /airtime /usr/share/airtime/public + +SetEnv APPLICATION_ENV "development" + + + DirectoryIndex index.php + Options -Indexes FollowSymLinks MultiViews + AllowOverride All + Order allow,deny + Allow from all + diff --git a/debian/etc/apache.vhost.tpl b/debian/etc/apache.vhost.tpl new file mode 100644 index 000000000..3d7334107 --- /dev/null +++ b/debian/etc/apache.vhost.tpl @@ -0,0 +1,18 @@ + + ServerName __SERVER_NAME__ + #ServerAlias www.example.com + + ServerAdmin __SERVER_ADMIN__ + + DocumentRoot /usr/share/airtime/public + DirectoryIndex index.php + + SetEnv APPLICATION_ENV "production" + + + Options -Indexes FollowSymLinks MultiViews + AllowOverride All + Order allow,deny + Allow from all + + diff --git a/debian/gbp.conf b/debian/gbp.conf new file mode 100644 index 000000000..5474c6080 --- /dev/null +++ b/debian/gbp.conf @@ -0,0 +1,3 @@ +[DEFAULT] +pristine-tar = True +sign-tags = True diff --git a/debian/install b/debian/install new file mode 100644 index 000000000..763300c99 --- /dev/null +++ b/debian/install @@ -0,0 +1,17 @@ +airtime/airtime_mvc var/lib/airtime/tmp/ +airtime/install_minimal var/lib/airtime/tmp/ +airtime/python_apps var/lib/airtime/tmp/ +airtime/utils var/lib/airtime/tmp/ + +airtime/widgets usr/share/doc/airtime/examples/ + +debian/etc/apache.conf /etc/airtime/ +debian/etc/airtime.ini /etc/airtime/ +debian/etc/apache.vhost.tpl /etc/airtime/ + +debian/usr/bin/airtime-launch-browser /usr/bin/ +debian/usr/share/applications/airtime.desktop /usr/share/applications/ +debian/usr/share/man/man1 /usr/share/man/ +debian/usr/share/menu/airtime /usr/share/menu +debian/usr/share/pixmaps/airtime.xpm /usr/share/pixmaps/ + diff --git a/debian/po/POTFILES.in b/debian/po/POTFILES.in new file mode 100644 index 000000000..cef83a340 --- /dev/null +++ b/debian/po/POTFILES.in @@ -0,0 +1 @@ +[type: gettext/rfc822deb] templates diff --git a/debian/po/templates.pot b/debian/po/templates.pot new file mode 100644 index 000000000..6458b85ac --- /dev/null +++ b/debian/po/templates.pot @@ -0,0 +1,249 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: airtime@packages.debian.org\n" +"POT-Creation-Date: 2012-07-05 16:49+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: select +#. Choices +#: ../templates:1001 +msgid "dedicated v-host" +msgstr "" + +#. Type: select +#. Choices +#: ../templates:1001 +msgid "no thanks" +msgstr "" + +#. Type: select +#. Description +#: ../templates:1002 +msgid "Create apache2 config:" +msgstr "" + +#. Type: select +#. Description +#: ../templates:1002 +msgid "" +"This setup script can perform Apache web server configuration so that you " +"can connect to Airtime directly after this installation." +msgstr "" + +#. Type: select +#. Description +#: ../templates:1002 +msgid "" +"Production systems should choose \"dedicated v-host\". This option will ask " +"for a server hostname (FQDN) and will create a minimal Apache virtual host " +"configuration that you can adapt." +msgstr "" + +#. Type: select +#. Description +#: ../templates:1002 +msgid "" +"\"no, thanks\": no problem. You're welcome to set it up however you like. " +"Note that the files in /etc/airtime/ may come in handy doing so." +msgstr "" + +#. Type: select +#. Choices +#: ../templates:2001 +msgid "remove default" +msgstr "" + +#. Type: select +#. Choices +#: ../templates:2001 +msgid "no change" +msgstr "" + +#. Type: select +#. Description +#: ../templates:2002 +msgid "Remove 000-default apache config:" +msgstr "" + +#. Type: select +#. Description +#: ../templates:2002 +msgid "" +"By default the Apache webserver is configured to send all virtual hosts to " +"the /var/www/ directory." +msgstr "" + +#. Type: select +#. Description +#: ../templates:2002 +msgid "" +"This option will invoke `sudo a2dissite default` and is recommended when " +"using a virtual host for Airtime." +msgstr "" + +#. Type: string +#. Description +#: ../templates:3001 +msgid "FQDN - Apache virtual host ServerName:" +msgstr "" + +#. Type: string +#. Description +#: ../templates:3001 +msgid "" +"Enter the main hostname of the web server. The DNS of this name must resolve " +"to the Apache server running on this machine." +msgstr "" + +#. Type: string +#. Description +#: ../templates:3001 +msgid "e.g. \"example.com\" or \"www.example.com\" (without the quotes)" +msgstr "" + +#. Type: string +#. Description +#: ../templates:3001 +msgid "" +"You can customize /etc/apache2/sites-enabled/airtime.vhost afterward and add " +"ServerAliases and further custom configuration." +msgstr "" + +#. Type: string +#. Description +#: ../templates:4001 +msgid "Email of the ServerAdmin:" +msgstr "" + +#. Type: string +#. Description +#: ../templates:4001 +msgid "An email address is required for the virtual host configuration." +msgstr "" + +#. Type: boolean +#. Description +#: ../templates:5001 +msgid "Enable Icecast2 and set passwords automatically?" +msgstr "" + +#. Type: boolean +#. Description +#: ../templates:5001 +msgid "" +"This option enables a local Icecast streaming media server to start on boot, " +"and configures passwords for both the Icecast server and Airtime." +msgstr "" + +#. Type: boolean +#. Description +#: ../templates:5001 +msgid "" +"Note: these settings are here for convenience only. Strictly speaking they " +"should be done during Icecast installation - not Airtime installation." +msgstr "" + +#. Type: boolean +#. Description +#: ../templates:5001 +msgid "" +"If you wish to set Icecast server passwords manually, you should answer No " +"here." +msgstr "" + +#. Type: string +#. Description +#: ../templates:6001 +msgid "Icecast2 hostname:" +msgstr "" + +#. Type: string +#. Description +#: ../templates:6001 +msgid "" +"Specify the hostname of the Icecast server. Depending on your setup, this " +"might be the same as the Airtime ServerName. For testing purposes, you can " +"use the default of 'localhost'." +msgstr "" + +#. Type: string +#. Description +#: ../templates:7001 +msgid "Icecast2 Source Password:" +msgstr "" + +#. Type: string +#. Description +#: ../templates:7001 +msgid "Specify a password to send A/V sources to Icecast" +msgstr "" + +#. Type: string +#. Description +#: ../templates:8001 +msgid "Icecast2 Relay Password:" +msgstr "" + +#. Type: string +#. Description +#: ../templates:8001 +msgid "" +"Specify a password for stream relay access. This is not needed by Airtime, " +"however you should change it from the default to lock down your system." +msgstr "" + +#. Type: string +#. Description +#: ../templates:9001 +msgid "Icecast2 Admin Password:" +msgstr "" + +#. Type: string +#. Description +#: ../templates:9001 +msgid "" +"Specify the admin password for Icecast. You can access icecast2's admin " +"interface via http://localhost:8000/ - and both monitor connection as well " +"as block users." +msgstr "" + +#. Type: string +#. Description +#: ../templates:10001 +msgid "Airtime Admin Password:" +msgstr "" + +#. Type: string +#. Description +#: ../templates:10001 +msgid "" +"Specify a secure admin password for Airtime. You can access the Airtime " +"administration interface at http://localhost/ to set up other user accounts, " +"upload media, create playlists and schedule shows." +msgstr "" + +#. Type: string +#. Description +#: ../templates:11001 +msgid "Airtime Storage Directory:" +msgstr "" + +#. Type: string +#. Description +#: ../templates:11001 +msgid "" +"Specify the main storage path which Airtime will use, ending with a slash. " +"You can also specify watched folders in the Airtime administration interface." +msgstr "" diff --git a/debian/postinst b/debian/postinst new file mode 100755 index 000000000..4fef8faeb --- /dev/null +++ b/debian/postinst @@ -0,0 +1,252 @@ +#!/bin/bash +#postinst script for airtime + +set -e + +. /usr/share/debconf/confmodule + +if [ "$DPKG_DEBUG" = "developer" ]; then + set -x +fi + +wwwdir="/usr/share/airtime" +tmpdir="/var/lib/airtime/tmp" +configdir="/etc/airtime" +includefile="${configdir}/apache.conf" +a2tplfile="${configdir}/apache.vhost.tpl" +phpinifile="${configdir}/airtime.ini" +OLDVERSION="$2" +NEWVERSION="2.1.3" + +case "$1" in + configure|reconfigure) + + webserver="apache2" + php="php5" + + # clean up previous configurations + if [ -L /etc/$webserver/conf.d/airtime.conf ]; then + rm -f /etc/$webserver/conf.d/airtime.conf + fi + + if [ -f /etc/$webserver/sites-available/airtime-vhost ]; then + a2dissite airtime-vhost + fi + + # this file in 1.8.2 is a directory path in 1.9.3 + if [ -f /var/www/airtime/utils/airtime-import ]; then + rm -f /var/www/airtime/utils/airtime-import + fi + + # APACHE config + echo "Setting up apache2..." + + # create the document root if it doesn't exist + if [ ! -d $wwwdir/public/ ]; then + install -d -m755 $wwwdir/public/ + fi + + # set up the virtual host + db_get airtime/apache-setup + if [ "$RET" == "system-wide (all vhosts)" ]; then + if [ ! -d /etc/$webserver/conf.d/ ]; then + install -d -m755 /etc/$webserver/conf.d/ + fi + if [ ! -e /etc/$webserver/conf.d/airtime.conf ]; then + ln -s ${includefile} /etc/$webserver/conf.d/airtime.conf + fi + + elif [ "$RET" == "dedicated v-host" ]; then + db_get airtime/apache-servername + SN=$RET + db_get airtime/apache-serveradmin + SA=$RET + + if [ ! -d /etc/$webserver/sites-available/ ]; then + install -d -m755 /etc/$webserver/sites-available/ + fi + sed -e "s/__SERVER_ADMIN__/${SA}/;s/__SERVER_NAME__/${SN}/" \ + ${a2tplfile} > /etc/$webserver/sites-available/airtime-vhost + + command -v a2ensite > /dev/null + RETVAL=$? + if [ $RETVAL -eq 0 ]; then + a2ensite airtime-vhost + fi + fi + + # enable the rewrite module + command -v a2enmod > /dev/null + RETVAL=$? + if [ $RETVAL -eq 0 ]; then + a2enmod rewrite + fi + + # remove the default site, if requested to + db_get airtime/apache-deldefault + if [ "$RET" == "remove default" ]; then + if [ -f /etc/apache2/sites-available/default ]; then + a2dissite default + fi + fi + + # PHP config + echo "Configuring php5..." + if [ ! -d /etc/$php/conf.d/ ]; then + install -d -m755 /etc/$php/conf.d/ + fi + if [ ! -e /etc/$php/conf.d/airtime.ini ]; then + ln -s ${phpinifile} /etc/$php/conf.d/airtime.ini + fi + + # XXX ICECAST XXX + db_get airtime/icecast-setup + if [ "$RET" == "true" ]; then + if [ -f /etc/default/icecast2 -a -f /etc/icecast2/icecast.xml ]; then + echo "Setting up icecast2..." + sed -i "s:ENABLE=.*:ENABLE=true:g" /etc/default/icecast2 + db_get airtime/icecast-sourcepw + ICESOURCE=$RET + sed -i "s:.*<\/source-password>:$ICESOURCE<\/source-password>:g" /etc/icecast2/icecast.xml + db_get airtime/icecast-relaypw + ICERELAY=$RET + sed -i "s:.*<\/relay-password>:$ICERELAY<\/relay-password>:g" /etc/icecast2/icecast.xml + db_get airtime/icecast-adminpw + ICEADMIN=$RET + sed -i "s:.*<\/admin-password>:$ICEADMIN<\/admin-password>:g" /etc/icecast2/icecast.xml + db_get airtime/icecast-hostname + ICEHOST=$RET + sed -i "s:.*<\/hostname>:$ICEHOST<\/hostname>:g" /etc/icecast2/icecast.xml + + # restart icecast server + invoke-rc.d icecast2 restart || true + + # save icecast hostname and source-password in airtime + db_get airtime/icecast-hostname + ICEHOST=$RET + sed -i "s:'s1_host', '127.0.0.1', 'string':'s1_host', '$ICEHOST', 'string':g" ${tmpdir}/airtime_mvc/build/sql/defaultdata.sql + + db_get airtime/icecast-sourcepw + ICESOURCE=$RET + sed -i "s:'s1_pass', 'hackme', 'string':'s1_pass', '$ICESOURCE', 'string':g" ${tmpdir}/airtime_mvc/build/sql/defaultdata.sql + + else + echo "The icecast2 package does not appear to be installed on this server." + fi + fi + + # Monit setup + if [ -f /etc/default/monit ]; then + echo "Setting up monit configuration..." + sed -i 's:startup=.*:startup=1:g' /etc/default/monit + + MONITCONFIGURED=$(grep "include /etc/monit/conf.d" /etc/monit/monitrc || true) + if [ -z "$MONITCONFIGURED" ]; then + echo "include /etc/monit/conf.d/*" >> /etc/monit/monitrc + fi + + invoke-rc.d monit restart + else + echo "The monit package does not appear to be installed on this server." + fi + + # get airtime admin password on new installs + if [ ! -e /var/log/airtime/pypo/pypo.log ]; then + db_get airtime/admin-password + AIRTIMEADMIN=$RET + sed -i "1s:md5('admin'):md5('$AIRTIMEADMIN'):g" ${tmpdir}/airtime_mvc/build/sql/defaultdata.sql + fi + + # get the main storage directory specified by the user + db_get airtime/storage-directory + AIRTIMESTORAGE=$RET + if [ "$AIRTIMESTORAGE" != "/srv/airtime/stor/" ]; then + sed -i "1s:/srv/airtime/stor/:$AIRTIMESTORAGE:g" ${tmpdir}/install_minimal/include/airtime-install.ini + fi + + # stop debconf so daemons started by the install script cannot hold open the pipe + db_stop + + # start rabbitmq if it isn't running + if [ -f /etc/init.d/rabbitmq-server ]; then + RABBITMQSTOPPED=$(invoke-rc.d rabbitmq-server status | grep no_nodes_running || true) + if [ -n "$RABBITMQSTOPPED" ]; then + invoke-rc.d rabbitmq-server start + fi + + # Warn if rabbitmq is installed but not set to start on boot + RABBITMQSTARTONBOOT=$(ls /etc/rc2.d/ | grep rabbitmq || true) + if [ -z "$RABBITMQSTARTONBOOT" ]; then + echo "Warning: rabbitmq-server is not configured to start after a reboot!" + echo "Fix Default-Start and Default-Stop lines in /etc/init.d/rabbitmq-server" + echo "then run this command as root: update-rc.d rabbitmq-server defaults" + fi + else + echo "The rabbitmq-server package does not appear to be installed on this server." + fi + + # restart apache + invoke-rc.d apache2 restart + + # fix the Liquidsoap symlink if it doesn't point to standard location + if [ -h /usr/bin/airtime-liquidsoap ]; then + SYMLINK_TARGET=`readlink /usr/bin/airtime-liquidsoap` + if [ "$SYMLINK_TARGET" != "/usr/bin/liquidsoap" ]; then + echo "Liquidsoap symlink points to the wrong place, fixing it!" + rm /usr/bin/airtime-liquidsoap + ln -s /usr/bin/liquidsoap /usr/bin/airtime-liquidsoap + fi + + if [ "$SYMLINK_TARGET" == "/usr/bin/liquidsoap" ]; then + echo "Liquidsoap symlink points to the right place!" + fi + fi + + # symlink the Liquidsoap path to standard location, if symlink doesn't exist + if [ ! -h /usr/bin/airtime-liquidsoap ]; then + echo "Creating symlink for Liquidsoap..." + ln -s /usr/bin/liquidsoap /usr/bin/airtime-liquidsoap + fi + + # don't run airtime-install if the user is doing a dpkg-reconfigure + if [ "$1" = "reconfigure" ] || [ -n "$DEBCONF_RECONFIGURE" ] ; then + echo "Reconfiguration complete." + else + + if [[ "${OLDVERSION:0:3}" < "1.9" ]]; then + echo "Upgrades from Airtime versions before 1.9.0 are not supported. Please back up your files and perform a clean install." + else + + mkdir -p /var/log/airtime + cd $tmpdir/install_minimal/ + + if [ "${OLDVERSION:0:5}" == "${NEWVERSION}" ] ; then + echo "Reinstallation detected..." + echo | ./airtime-install -rp 2> /var/log/airtime/reinstallation-errors.log + else + + ./airtime-install 2> /var/log/airtime/installation-errors.log + + fi + + # Update the desktop menu to show Airtime + if test -x /usr/bin/update-menus; then + update-menus; + fi + fi + fi + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +#DEBHELPER# + +exit 0 diff --git a/debian/postrm b/debian/postrm new file mode 100755 index 000000000..c455121ed --- /dev/null +++ b/debian/postrm @@ -0,0 +1,128 @@ +#!/bin/bash +#postrm script for airtime + +set -e + +if [ -f /usr/share/debconf/confmodule ]; then + . /usr/share/debconf/confmodule +fi + +if [ "$DPKG_DEBUG" = "developer" ]; then + set -x +fi + +package_name="airtime" +datadir="/srv/airtime" +wwwdir="/usr/share/airtime" +tmpdir="/var/lib/airtime/tmp" +configdir="/etc/airtime" + +webserver="apache2" +php="php5" + +case "$1" in + purge|remove) + + # airtime uninstaller does not remove these + + if [ -L /var/lib/airtime/airtime_mvc ]; then + rm -rf /var/lib/airtime/ || true + fi + + if [ -f /var/lib/airtime/.htaccess ]; then + rm -f /var/lib/airtime/.htaccess || true + fi + + if [ -f ${tmpdir}/install_minimal/distribute-0.6.10.tar.gz ]; then + rm -f ${tmpdir}/install_minimal/distribute-0.6.10.tar.gz || true + fi + + if [ -f /usr/share/python-virtualenv/distribute-0.6.10.tar.gz ]; then + rm -f /usr/share/python-virtualenv/distribute-0.6.10.tar.gz || true + fi + + if [ -d ${tmpdir}/python_apps/pypo/liquidsoap_bin ]; then + rm -f ${tmpdir}/python_apps/pypo/liquidsoap_bin/* || true + rm -rf ${tmpdir}/python_apps/pypo/liquidsoap_bin || true + fi + + if [ -d /var/lib/airtime/python_apps/pypo/liquidsoap ]; then + rm -rf /var/lib/airtime/python_apps/pypo/liquidsoap || true + fi + + if [ -d ${tmpdir}/install_minimal/upgrades/airtime-1.9.0/airtimefilemonitor ]; then + rm -rf ${tmpdir}/install_minimal/upgrades/airtime-1.9.0/airtimefilemonitor || true + fi + + if [ -f ${tmpdir}/install_minimal/upgrades/airtime-1.9.0/storDump.txt ]; then + rm -f ${tmpdir}/install_minimal/upgrades/airtime-1.9.0/storDump.txt || true + fi + + if [ -L /usr/bin/airtime-clean-storage ]; then + rm -f /usr/bin/airtime-clean-storage || true + fi + + if [ -L /usr/bin/airtime-user ]; then + rm -f /usr/bin/airtime-user || true + fi + + if [ -L /usr/bin/airtime-log ]; then + rm -f /usr/bin/airtime-log || true + fi + + # Un-configure webservers + if [ -L /etc/$webserver/conf.d/airtime.conf ]; then + rm -f /etc/$webserver/conf.d/airtime.conf || true + restart="$webserver $restart" + fi + + if [ -L /etc/$php/conf.d/airtime.ini ]; then + rm -f /etc/$php/conf.d/airtime.ini || true + restart="$webserver $restart" + fi + + if [ -f /etc/$webserver/sites-available/airtime-vhost ]; then + a2dissite airtime-vhost &>/dev/null || true + # TODO: if airtime-vhost is not modified -> delete it + restart="$webserver $restart" + fi + + servers="apache2" + # may not exist if package was manually installed + if [ -r /usr/share/wwwconfig-common/restart.sh ]; then + . /usr/share/wwwconfig-common/restart.sh || true + echo $error + fi + + # Remove Airtime menu entry and icon + if test -x /usr/bin/update-menus; then + update-menus; + fi + + # Remove legacy permission overrides + dpkg-statoverride --list $datadir &>/dev/null && \ + dpkg-statoverride --remove $datadir || true + + # Only remove settings if purge is called as an argument + if [ "$1" = "purge" ]; then + echo "Removing configuration files from /etc/airtime/" >&2 + rm -rf /etc/airtime || true + echo "Purging Airtime settings from debconf database" >&2 + db_purge || true + fi + + ;; + + upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) + + ;; + + *) + echo "postrm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +#DEBHELPER# + +exit 0 diff --git a/debian/preinst b/debian/preinst new file mode 100755 index 000000000..02b762856 --- /dev/null +++ b/debian/preinst @@ -0,0 +1,33 @@ +#!/bin/bash +#preinst script for airtime + +set -e + +if [ "$DPKG_DEBUG" = "developer" ]; then + set -x +fi + +case "$1" in + install|upgrade) + + # Remove liquidsoap binary from old installs + if [ -f /var/lib/airtime/python_apps/pypo/liquidsoap/liquidsoap ]; then + echo "Removing old Liquidsoap binary..." >&2 + rm -f /var/lib/airtime/python_apps/pypo/liquidsoap/liquidsoap + fi + + ;; + + abort-upgrade) + echo "Upgrade aborting..." >&2 + ;; + + *) + echo "preinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +#DEBHELPER# + +exit 0 diff --git a/debian/prerm b/debian/prerm new file mode 100755 index 000000000..b8796400d --- /dev/null +++ b/debian/prerm @@ -0,0 +1,29 @@ +#!/bin/bash +#prerm script for airtime + +set -e + +package_name="airtime" +datadir="/var/lib/${package_name}/tmp" + +case "$1" in + remove) + cd $datadir/install_minimal/ && ./airtime-uninstall || true + ;; + + purge) + cd $datadir/install_minimal/ && ./airtime-uninstall --purge || true + ;; + + upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) + ;; + + *) + echo "prerm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +#DEBHELPER# + +exit 0 diff --git a/debian/rules b/debian/rules new file mode 100755 index 000000000..d91c2d9f2 --- /dev/null +++ b/debian/rules @@ -0,0 +1,9 @@ +#!/usr/bin/make -f + +#override_dh_shlibdeps: +# dh_makeshlibs +# -dh_shlibdeps -- --ignore-missing-info + +%: + dh $@ + diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 000000000..163aaf8d8 --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/debian/source/include-binaries b/debian/source/include-binaries new file mode 100644 index 000000000..cc43edcc4 --- /dev/null +++ b/debian/source/include-binaries @@ -0,0 +1,5 @@ +debian/usr/share/man/man1/airtime-import.1.gz +debian/usr/share/man/man1/airtime-launch-browser.1.gz +debian/usr/share/man/man1/airtime-log.1.gz +debian/usr/share/man/man1/airtime-test-soundcard.1.gz +debian/usr/share/man/man1/airtime-test-stream.1.gz diff --git a/debian/templates b/debian/templates new file mode 100644 index 000000000..4cd301493 --- /dev/null +++ b/debian/templates @@ -0,0 +1,109 @@ +Template: airtime/apache-setup +Type: select +__Choices: dedicated v-host, no thanks +Choices-de.UTF-8: v-host einrichten, nein danke +Default: dedicated v-host +_Description: Create apache2 config: + This setup script can perform Apache web server configuration + so that you can connect to Airtime directly after this installation. + . + Production systems should choose "dedicated v-host". This option + will ask for a server hostname (FQDN) and will create a minimal Apache + virtual host configuration that you can adapt. + . + "no, thanks": no problem. You're welcome to set it up however you like. + Note that the files in /etc/airtime/ may come in handy doing so. +Description-de.UTF-8: Erzeugen einer apache2 konfiuration: + . + +Template: airtime/apache-deldefault +Type: select +__Choices: remove default, no change +Default: no change +_Description: Remove 000-default apache config: + By default the Apache webserver is configured to send all virtual hosts + to the /var/www/ directory. + . + This option will invoke `sudo a2dissite default` and is recommended + when using a virtual host for Airtime. + +Template: airtime/apache-servername +Type: string +Default: localhost +_Description: FQDN - Apache virtual host ServerName: + Enter the main hostname of the web server. + The DNS of this name must resolve to the Apache server running on this + machine. + . + e.g. "example.com" or "www.example.com" (without the quotes) + . + You can customize /etc/apache2/sites-enabled/airtime.vhost afterward + and add ServerAliases and further custom configuration. + +Template: airtime/apache-serveradmin +Type: string +Default: root@localhost +_Description: Email of the ServerAdmin: + An email address is required for the virtual host configuration. + +Template: airtime/icecast-setup +Type: boolean +Default: false +_Description: Enable Icecast2 and set passwords automatically? + This option enables a local Icecast streaming media server to start + on boot, and configures passwords for both the Icecast server and Airtime. + . + Note: these settings are here for convenience only. Strictly speaking + they should be done during Icecast installation - not Airtime installation. + . + If you wish to set Icecast server passwords manually, + you should answer No here. + +Template: airtime/icecast-hostname +Type: string +Default: localhost +_Description: Icecast2 hostname: + Specify the hostname of the Icecast server. Depending on your + setup, this might be the same as the Airtime ServerName. For + testing purposes, you can use the default of 'localhost'. + +Template: airtime/icecast-sourcepw +Type: string +Default: hackme +_Description: Icecast2 Source Password: + Specify a password to send A/V sources to Icecast + +Template: airtime/icecast-relaypw +Type: string +Default: hackme +_Description: Icecast2 Relay Password: + Specify a password for stream relay access. + This is not needed by Airtime, however you should + change it from the default to lock down your system. + +Template: airtime/icecast-adminpw +Type: string +Default: hackme +_Description: Icecast2 Admin Password: + Specify the admin password for Icecast. + You can access icecast2's admin interface via + http://localhost:8000/ - and both monitor connection as + well as block users. + +Template: airtime/admin-password +Type: string +Default: admin +_Description: Airtime Admin Password: + Specify a secure admin password for Airtime. + You can access the Airtime administration interface + at http://localhost/ to set up other user accounts, + upload media, create playlists and schedule shows. + +Template: airtime/storage-directory +Type: string +Default: /srv/airtime/stor/ +_Description: Airtime Storage Directory: + Specify the main storage path which Airtime will use, + ending with a slash. + You can also specify watched folders in the Airtime + administration interface. diff --git a/debian/usr/bin/airtime-launch-browser b/debian/usr/bin/airtime-launch-browser new file mode 100755 index 000000000..c0bf585c0 --- /dev/null +++ b/debian/usr/bin/airtime-launch-browser @@ -0,0 +1,26 @@ +#!/bin/bash +#------------------------------------------------------------------------------- +# Copyright (c) 2012 Sourcefabric O.P.S. +# +# This file is part of the Airtime project. +# http://airtime.sourcefabric.org/ +# +# Airtime is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# Airtime is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Airtime; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +#------------------------------------------------------------------------------- +#------------------------------------------------------------------------------- +# This script opens the default graphical web browser on the Airtime login page. + +/usr/bin/x-www-browser http://localhost/ || exit 1 diff --git a/debian/usr/share/applications/airtime.desktop b/debian/usr/share/applications/airtime.desktop new file mode 100644 index 000000000..e712670ee --- /dev/null +++ b/debian/usr/share/applications/airtime.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Type=Application +Version=1.0 +Name=Airtime +GenericName=Broadcast automation system +Icon=/usr/share/pixmaps/airtime.xpm +Exec=/usr/bin/airtime-launch-browser +Categories=AudioVideo;Audio; diff --git a/debian/usr/share/man/man1/airtime-import.1.gz b/debian/usr/share/man/man1/airtime-import.1.gz new file mode 100644 index 0000000000000000000000000000000000000000..828d8cf664d6fd739ed7f29c078b915fd00a4e1e GIT binary patch literal 994 zcmV<810DPyiwFqcKjTjT17T@$bZKp6Eop6VZ*p`lF#xqyO>g5i5WVwP40LG%SW+Fd zJs68cmBfp9v55`adswW3f|kY>x1uPJRJ1Po<2$52VyDTXml`l2k~42OZ)P5&G+@#8 z4wA)sySSf+i~H4by@g;JK=84t5UzfnUXe)}z^X)U5P1HrF&1ng4CLG*v;|i9gc>wH z2_vclogqkG)%<{wb7j%y4jz*GIpacGAu$xPR@y=uLjNT(7aaDYL<6F-%3~y*HI!nf zxjuTB&6kJeYO~m|=o((2v9DqFcNk`>KEj8^r+Iw4Si{%hD~h7WM;0ws5Cky&m5e1B zOZ9|5G=A|Tx3J|lD?*;z_tZyDh2&*tDxma1H{>nxa>IuruJvt?zG~0#;Kybu}X3)R0ZZ}EXo;+ zRx38WgwL+*oqalxO|YJ5rNO6p5>9eajre^kk)wd!s9In?_~gA)E6Ngf2zALb+9YRp z!JrF-c>qKMW`uK`0BZ}86_DeeH>Gu1&wyHC&0?dU;{KAc3mOmpu@C*>EYy%|#>>*> zaNw2r%g65NGFCU4Z8Xk2dXNyXv2jxF8X0dj&;ER9Hazmvvj|nfd5SWEYsRgsOz3?urJKzX{CIFJvT|m&==J}#;KKS z%*6f(lG;VoI~$>yEv_6fn`1Vx&^7EG0w@20Dc$Nm(9O0^Eo7+HcL17 z;}cWzrXo!zwQLP_^u_dYa(=E3|K6mYx1mu@MFOkyx6Z9bF5MyBeW(2ulF!?_B^ACO z{g#t*X<Pk*LL9c((4PrsuffCAcT~CEP7( zAC~ZuB+S6O+^>HB?H6O4T&O5h^8JMEsbL-Cx40A3)wNdNsCnVSktg}lX+~qH2?$P+ Qoi>!rKdo*4i(3c)00HgpTL1t6 literal 0 HcmV?d00001 diff --git a/debian/usr/share/man/man1/airtime-launch-browser.1.gz b/debian/usr/share/man/man1/airtime-launch-browser.1.gz new file mode 100644 index 0000000000000000000000000000000000000000..e9e211c0d5227b18162cbcfa19e7a8996dfe5ae5 GIT binary patch literal 547 zcmV+;0^I!{iwFqHFyl`E17T@$bZKp6Eo@rEWoM-SV@D!APx-?MlJGnm}<3gPC%>}J9^ zX{8Mciy*3}-a2r#v``6$Fx05O}*iGpKagx2T-;vR9myx+P3CWdgLKs-#G4X=FDhAROopm3^IW>aLyZ z=3&_AQZ%)u6s7W5d$JDOHxwxDMc+6Wuz-sNN-#~?H*KKR1_`m(ruE!Yu!zsJFXIU} zXS^`%A~y^Jx4JhakrzgmT$@9PD!hywo>4aRktIGY3N}x#ZL1a*l%~-~6PBMB62}nT zX9+E2_d843cG@_2J9{^McHij3%S(sW1!PlIr7+dCx-%%+vB>>|qjdC;uaX`6mBB#n z1|ywA1;q)nKL($}{}S;zzj!5o(Jh6N*ub4=(Zc7-|9$=R(Yn5pn$v6fGG(+Nzm+8x lQYh$*e!`Mspm#*nCnykli`7V{sn1v%<|nDnNtw+90059-2kHO- literal 0 HcmV?d00001 diff --git a/debian/usr/share/man/man1/airtime-log.1.gz b/debian/usr/share/man/man1/airtime-log.1.gz new file mode 100644 index 0000000000000000000000000000000000000000..c6e47d873d16d72af76d3d2ab09f6381eba85ef7 GIT binary patch literal 736 zcmV<60w4V!iwFo=K;usU17T@$bZKp6Eo^URE-?UgR9$b=Fcf|Fuej>dkQ$Foz{7+P zg;p%nSfi#OA;yCf-?ko!o%y3#rTuuWoptL5JXETEKYZ>v=Z0U87+;>lBwsA^ue0oO z{sl%SBN$x-jd1$<SgOKDsjjy!jU} zp?6?bX|^Yfoi#GlD1lYG6nel5l{G@vf`}5qn^t&bG`OAf*mB4{w2{LK0q?L5o*D=T z))*h3W4-bla6y_etmy10#VWref`v2MaacYBA-04s!UtjTj5sLZ`lt%BOeW#deP%ha5>c zk<%e(cGnr}A5$R8Kyq{zodcyw1wqW)N;J(-?x{RVF_eF&$3W8$wYMtL&~>OKQJE?q z+bSJ-YqG&cmjx@*15vD7_>Cm0j;h=EzcRw6dc0FUr3^zwRfe~rH4;eymamdmqybH; zxejZ!8Z4j%=}%5Mzz|g&y6r8+9@?2MI>U{DraTaGZ=)xXdqoLk7;;=q_)!vuv=p-$ zOfJhg8GG^MY!P(5$;gDgqs2Trc{P3(S8byHuX~TqXU+so)+HkT6Zgbt8-uiAl}#un z-3{!$;~}k)}sbmjFRZBaV09N>ND7Q-<=&F_kGXZL4X^(K4!cqXie$ULR%R` z1MwU3vfWf@g$-N~&ko+pbo%)2jq^b&!^uJ)#%#~{6e}fkWbFoPnmC%QC1Vnkfk=$) S4CPrz!~6kK#l_YM1pokne_K}o literal 0 HcmV?d00001 diff --git a/debian/usr/share/man/man1/airtime-test-soundcard.1.gz b/debian/usr/share/man/man1/airtime-test-soundcard.1.gz new file mode 100644 index 0000000000000000000000000000000000000000..6d915473d9b2c9b11bcac78861c0cd2d19cc4924 GIT binary patch literal 626 zcmV-&0*(D2iwFqkH{(wL17T@$bZKp6Ep%mbbS-mlb#7#1VRB?HF#wHI!EVz)5WVkL zjB*0Wc4#xJA<iwFpvK;usU17T@$bZKp6Ep%mbbS-mqa%Ev{E-?U&R8ec&Fc5y%uQ>d) zLF}ewj8Vo|mIRWrG$wWjW9@@%Ut%?uWh6N!uphsZ+@x*VLEfy>-KV?n`_9pQz@l^p zqxmYGFQ#ESP0}z)SJTk~g3ADco3=){8eU#e-hBXZh1?+U;;}UrY$*&B+#+-(*0@6r z8h65odP8>zlGhF2VB|_!l+56Ew3sq3v=tIVi^hh=YUC2`Loiquz`;eqDtgr_I`;Pt z(4eLVJWTTYb{Qx0ghfB#9W?d_!W}%YXdXilQ1>pNK;)QnWB-~`wbp%|rp%yJ#@1XS zJOG_zXq0}F)j~_HJZCk~aAP{9i_=UAQnj@u6j6H^YJD0=E%AR7-cz|qe|tx0_Dh;io|&4j7cm6f1+*xMtPu|*N~T(Z%HI>T}Z#;*|rUk zur$(^0uhTf8Utgit8fge?hCfK&lIPjU0YT)UU1)2h91TPViEbVmww{J^AqmaFVvYL zA4yeUA5&~xDi1#Tysnhys!qKZ!KBAAZs@?%?i>?5LBuR}ej$d=sQxk>4iAMb zyE|CwykbKNsk=@dpklO9# zJtUr|HP5ujuc5TIxxTpQx-K#=E+VBj7c7cnT1fH)?OjXj c #FFD7C6", +", c #FF8653", +"' c #FFAE8D", +" .+@+. ", +" .+@#####$% ", +" .+@###########&* ", +" %$################=+ ", +" $######################$- ", +" %$#######################;.", +" .+=#####################>", +" *&##################, ", +" %@###############> ", +" .;=###########, ", +" -@#########> ", +" =########, ", +" -#########> ", +" ,########$ ", +" #########- ", +" %########@ ", +" @########- ", +" .########@ ", +" ;########- ", +" =#######@ ", +" -#######,. ", +" &#####@* ", +" ####=' ", +" %###; ", +" $#,. ", +" .@- ", +" ", +" ", +" ", +" ", +" ", +" "}; diff --git a/debian/watch b/debian/watch new file mode 100644 index 000000000..c4bb6aaec --- /dev/null +++ b/debian/watch @@ -0,0 +1,2 @@ +version=3 +http://sf.net/airtime/airtime-([\d\.]+)\.tar\.gz diff --git a/gen-snapshot.sh b/gen-snapshot.sh new file mode 100755 index 000000000..0f98e64ed --- /dev/null +++ b/gen-snapshot.sh @@ -0,0 +1,79 @@ +#/bin/sh +# Script for generating nightly Airtime snapshot packages +# Run from the directory containg the files checked out from git + +VERSION=2.1.4~$(date "+%Y%m%d") +BUILDDEST=/tmp/airtime-${VERSION}/ +DEBDIR=`pwd`/debian + +git checkout devel +git pull + +echo "cleaning up previous build..." + +rm -rf /tmp/airtime-* +mkdir -p ${BUILDDEST}airtime + +echo "copying files to temporary directory..." + +cp -a * ${BUILDDEST}airtime || exit +cp -a $DEBDIR ${BUILDDEST}debian || exit + +cd ${BUILDDEST} || exit + +# Set the version of the snapshot package + +sed -i "1s:(2.1.4-1):(${VERSION}):g" debian/changelog + +# FIXES for 2.1.4 ############# + +# these are all moved to debian/copyright +rm airtime/python_apps/pypo/LICENSE +rm airtime/airtime_mvc/library/php-amqplib/LICENSE +rm airtime/airtime_mvc/library/phing/LICENSE +rm airtime/airtime_mvc/library/propel/LICENSE +rm airtime/airtime_mvc/library/soundcloud-api/README.md + +# Disable install script check for Debian package, it breaks the .deb install +sed -i '11s:DEB=$(dpkg:# DEB=$(dpkg:g' airtime/install_minimal/airtime-install +sed -i '13s\"$DEB" = "Status: install ok installed"\-f /var/lib/dpkg/info/airtime.config\g' airtime/install_minimal/airtime-install +sed -i '14s: Please use the debian package to upgrade.:..:g' airtime/install_minimal/airtime-install +sed -i '15s:exit 1:# We do not exit here:g' airtime/install_minimal/airtime-install + +# Remove Liquidsoap binaries +rm -r airtime/python_apps/pypo/liquidsoap_bin/ + +# Disable installation of Liquidsoap binaries +sed -i '84s:print:#print:g' airtime/python_apps/pypo/install/pypo-initialize.py +sed -i '86s:binary_path:#binary_path:g' airtime/python_apps/pypo/install/pypo-initialize.py +sed -i '88s:try:#try:g' airtime/python_apps/pypo/install/pypo-initialize.py +sed -i '89s:open:#open:g' airtime/python_apps/pypo/install/pypo-initialize.py +sed -i '91s:try:#try:g' airtime/python_apps/pypo/install/pypo-initialize.py +sed -i '92s:os.remove:#os.remove:g' airtime/python_apps/pypo/install/pypo-initialize.py +sed -i '93s:except:#except:g' airtime/python_apps/pypo/install/pypo-initialize.py +sed -i '95s:pass:#pass:g' airtime/python_apps/pypo/install/pypo-initialize.py +sed -i '97s:os.symlink:#os.symlink:g' airtime/python_apps/pypo/install/pypo-initialize.py +sed -i '98s:except:#except:g' airtime/python_apps/pypo/install/pypo-initialize.py +sed -i '99s: """:""":g' airtime/python_apps/pypo/install/pypo-initialize.py +sed -i '107s: """:""":g' airtime/python_apps/pypo/install/pypo-initialize.py +sed -i '108s:print:#print:g' airtime/python_apps/pypo/install/pypo-initialize.py +sed -i '109s:print:#print:g' airtime/python_apps/pypo/install/pypo-initialize.py +sed -i '110s:sys.exit(1):#sys.exit(1):g' airtime/python_apps/pypo/install/pypo-initialize.py + +#Remove phing library +rm -r airtime/airtime_mvc/library/phing/ + +#Remove ZFDebug +rm -r airtime/airtime_mvc/library/ZFDebug/ + +#Strip un-needed install scripts +rm -r airtime/install_full/ + +############################# + +debuild --no-lintian -b -uc -us $@ || exit + +exit +echo -n "UPLOAD? [enter|CTRL-C]" ; read + +scp apt.sourcefabric.org:/var/www/apt/misc/ /tmp/airtime_${VERSION}*.deb From f5a7b15a3449cf237cc27a7e42a8f99e7e45ca71 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Thu, 2 Aug 2012 12:01:49 +0100 Subject: [PATCH 05/12] Fixed scp upload command syntax --- gen-snapshot.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gen-snapshot.sh b/gen-snapshot.sh index 0f98e64ed..c40727bc5 100755 --- a/gen-snapshot.sh +++ b/gen-snapshot.sh @@ -76,4 +76,4 @@ debuild --no-lintian -b -uc -us $@ || exit exit echo -n "UPLOAD? [enter|CTRL-C]" ; read -scp apt.sourcefabric.org:/var/www/apt/misc/ /tmp/airtime_${VERSION}*.deb +scp /tmp/airtime_${VERSION}_all.deb apt.sourcefabric.org:/var/www/apt/misc/ From d5efcb359f948d318ee35c747fb5a2b424ea7334 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Thu, 2 Aug 2012 14:21:19 +0100 Subject: [PATCH 06/12] Use set -x not set -e by default for postinst, to avoid dpkg bailing --- debian/postinst | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/debian/postinst b/debian/postinst index 4fef8faeb..6426484c9 100755 --- a/debian/postinst +++ b/debian/postinst @@ -1,14 +1,10 @@ #!/bin/bash #postinst script for airtime -set -e +set -x . /usr/share/debconf/confmodule -if [ "$DPKG_DEBUG" = "developer" ]; then - set -x -fi - wwwdir="/usr/share/airtime" tmpdir="/var/lib/airtime/tmp" configdir="/etc/airtime" @@ -16,7 +12,7 @@ includefile="${configdir}/apache.conf" a2tplfile="${configdir}/apache.vhost.tpl" phpinifile="${configdir}/airtime.ini" OLDVERSION="$2" -NEWVERSION="2.1.3" +NEWVERSION="2.1.4" case "$1" in configure|reconfigure) From f99574b72319566d2601b5d5b27068404d2b4df1 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Thu, 2 Aug 2012 15:00:12 +0100 Subject: [PATCH 07/12] Check that old version exists before deciding this is an upgrade --- debian/postinst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/postinst b/debian/postinst index 6426484c9..637d9bf52 100755 --- a/debian/postinst +++ b/debian/postinst @@ -209,7 +209,7 @@ case "$1" in echo "Reconfiguration complete." else - if [[ "${OLDVERSION:0:3}" < "1.9" ]]; then + if [ -n "$OLDVERSION" ] && [[ "${OLDVERSION:0:3}" < "1.9" ]]; then echo "Upgrades from Airtime versions before 1.9.0 are not supported. Please back up your files and perform a clean install." else From 1eaac8b163397143c696bd0f879c23f2d98d82e6 Mon Sep 17 00:00:00 2001 From: Daniel James Date: Thu, 2 Aug 2012 15:31:27 +0100 Subject: [PATCH 08/12] Use version number 2.2.0~datestamp for nightly snapshot packages --- debian/changelog | 4 ++-- gen-snapshot.sh | 10 ++++++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/debian/changelog b/debian/changelog index f4889d275..1459c3a63 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,6 @@ -airtime (2.1.4-1) unstable; urgency=low +airtime (2.2.0-1) unstable; urgency=low - * Nightly snapshot of Airtime + * Nightly development snapshot of Airtime 2.2.x -- Daniel James Thu, 02 Aug 2012 11:19:03 +0100 diff --git a/gen-snapshot.sh b/gen-snapshot.sh index c40727bc5..49e814349 100755 --- a/gen-snapshot.sh +++ b/gen-snapshot.sh @@ -2,7 +2,7 @@ # Script for generating nightly Airtime snapshot packages # Run from the directory containg the files checked out from git -VERSION=2.1.4~$(date "+%Y%m%d") +VERSION=2.2.0~$(date "+%Y%m%d") BUILDDEST=/tmp/airtime-${VERSION}/ DEBDIR=`pwd`/debian @@ -23,9 +23,9 @@ cd ${BUILDDEST} || exit # Set the version of the snapshot package -sed -i "1s:(2.1.4-1):(${VERSION}):g" debian/changelog +sed -i "1s:(2.2.0-1):(${VERSION}):g" debian/changelog -# FIXES for 2.1.4 ############# +# FIXES for 2.2.0 ############# # these are all moved to debian/copyright rm airtime/python_apps/pypo/LICENSE @@ -71,9 +71,11 @@ rm -r airtime/install_full/ ############################# +echo "running the build..." + debuild --no-lintian -b -uc -us $@ || exit exit -echo -n "UPLOAD? [enter|CTRL-C]" ; read +# optionally, copy the new package to the public server scp /tmp/airtime_${VERSION}_all.deb apt.sourcefabric.org:/var/www/apt/misc/ From 0df630c76ef30905b32924572e5e106a62b8fe8e Mon Sep 17 00:00:00 2001 From: Daniel James Date: Thu, 2 Aug 2012 15:43:28 +0100 Subject: [PATCH 09/12] Upload to the snapshots directory, not misc directory --- gen-snapshot.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gen-snapshot.sh b/gen-snapshot.sh index 49e814349..f7daf9536 100755 --- a/gen-snapshot.sh +++ b/gen-snapshot.sh @@ -78,4 +78,4 @@ debuild --no-lintian -b -uc -us $@ || exit exit # optionally, copy the new package to the public server -scp /tmp/airtime_${VERSION}_all.deb apt.sourcefabric.org:/var/www/apt/misc/ +scp /tmp/airtime_${VERSION}_all.deb apt.sourcefabric.org:/var/www/apt/snapshots/ From 6e71a6bb92ed1e765ee154713726fded3a6a3699 Mon Sep 17 00:00:00 2001 From: James Date: Thu, 2 Aug 2012 11:17:10 -0400 Subject: [PATCH 10/12] CC-84: Smart Playlists - dynamic block length display --- airtime_mvc/application/models/Block.php | 28 +++++++++++++++++-- airtime_mvc/application/models/Datatables.php | 3 ++ airtime_mvc/application/models/Playlist.php | 8 ++++-- .../models/formatters/LengthFormatter.php | 4 +-- 4 files changed, 37 insertions(+), 6 deletions(-) diff --git a/airtime_mvc/application/models/Block.php b/airtime_mvc/application/models/Block.php index 1d9163957..3e4a91e4c 100644 --- a/airtime_mvc/application/models/Block.php +++ b/airtime_mvc/application/models/Block.php @@ -245,11 +245,35 @@ EOT; // function return "N/A" if dynamic public function getLength() { - $length = $this->block->getDbLength(); + if ($this->isStatic()){ + $length = $this->block->getDbLength(); + } else { + $length = $this->getDynamicBlockLength(); + } $length = $length == null ? "N/A" : $length; return $length; } + public function getDynamicBlockLength() + { + $result = CcBlockcriteriaQuery::create()->filterByDbBlockId($this->id) + ->filterByDbCriteria('limit')->findOne(); + $modifier = $result->getDbModifier(); + $value = $result->getDbValue(); + if ($modifier == "items") { + $length = $value." ".$modifier; + } else { + if ($modifier == "minutes") { + $timestamp = "00:".$value.":00"; + } else if ($modifier == "hours") { + $timestamp = $value."00:00"; + } + $formatter = new LengthFormatter($timestamp); + $length = "~".$formatter->format(); + } + return $length; + } + // public function getStaticLength(){ $sql = "SELECT SUM(cliplength) as length FROM cc_blockcontents WHERE block_id={$this->id}"; @@ -1033,7 +1057,7 @@ EOT; // as it cannot be calculated if ($blockType == 'dynamic') { $this->setLength(null); - $output['blockLength'] = "N/A"; + $output['blockLength'] = $this->getDynamicBlockLength(); } else { $length = $this->getStaticLength(); $this->setLength($length); diff --git a/airtime_mvc/application/models/Datatables.php b/airtime_mvc/application/models/Datatables.php index 545b08cbb..f54631cb7 100644 --- a/airtime_mvc/application/models/Datatables.php +++ b/airtime_mvc/application/models/Datatables.php @@ -93,6 +93,9 @@ class Application_Model_Datatables if ($r['ftype'] == 'playlist') { $pl = new Application_Model_Playlist($r['id']); $r['length'] = $pl->getLength(); + } else if ($r['ftype'] == "block") { + $bl = new Application_Model_Block($r['id']); + $r['length'] = $bl->getLength(); } } } catch (Exception $e) { diff --git a/airtime_mvc/application/models/Playlist.php b/airtime_mvc/application/models/Playlist.php index faf3d838d..f560c4f37 100644 --- a/airtime_mvc/application/models/Playlist.php +++ b/airtime_mvc/application/models/Playlist.php @@ -196,7 +196,12 @@ EOT; $offset_cliplength = Application_Common_DateHelper::secondsToPlaylistTime($offset); //format the length for UI. - $formatter = new LengthFormatter($row['length']); + if ($row['type'] == 2){ + $bl = new Application_Model_Block($row['item_id']); + $formatter = new LengthFormatter($bl->getLength()); + } else { + $formatter = new LengthFormatter($row['length']); + } $row['length'] = $formatter->format(); $formatter = new LengthFormatter($offset_cliplength); @@ -268,7 +273,6 @@ EOT; //aggregate column on playlistcontents cliplength column. public function getLength() { - Logging::log($this->hasDynamicBlockOrWebStream()); if ($this->hasDynamicBlockOrWebStream()){ return "N/A"; } else { diff --git a/airtime_mvc/application/models/formatters/LengthFormatter.php b/airtime_mvc/application/models/formatters/LengthFormatter.php index d41ffc563..5278b1a82 100644 --- a/airtime_mvc/application/models/formatters/LengthFormatter.php +++ b/airtime_mvc/application/models/formatters/LengthFormatter.php @@ -16,8 +16,8 @@ class LengthFormatter { } public function format() { - if ($this->_length == "N/A" || $this->_length == "") { - return "N/A"; + if (!preg_match("/^[0-9]{2}:[0-9]{2}:[0-9]{2}/", $this->_length)) { + return $this->_length; } $pieces = explode(":", $this->_length); From 997b5c31c3172f7c59cfbf433fb5ddabe43b1983 Mon Sep 17 00:00:00 2001 From: denise Date: Thu, 2 Aug 2012 11:52:11 -0400 Subject: [PATCH 11/12] CC-84: Smart Playlists - fixed dragging tracks into playlists (smart and dumb) - display alert when dragging into dynamic block - display alert when dragging playlist into block --- .../controllers/PlaylistController.php | 26 ++++++++++++++----- airtime_mvc/application/models/Block.php | 13 +++++++--- .../library/events/library_playlistbuilder.js | 9 ++++--- 3 files changed, 35 insertions(+), 13 deletions(-) diff --git a/airtime_mvc/application/controllers/PlaylistController.php b/airtime_mvc/application/controllers/PlaylistController.php index 43103edf9..678a17195 100644 --- a/airtime_mvc/application/controllers/PlaylistController.php +++ b/airtime_mvc/application/controllers/PlaylistController.php @@ -127,7 +127,7 @@ class PlaylistController extends Zend_Controller_Action private function blockDynamic($obj) { - $this->view->error = "You cannot add tracks to dynamic block."; + $this->view->error = "You cannot add tracks to dynamic blocks."; $this->createFullResponse($obj); } @@ -152,6 +152,11 @@ class PlaylistController extends Zend_Controller_Action Logging::log("{$e->getLine()}"); Logging::log("{$e->getMessage()}"); } + + private function playlistDenied($obj) { + $this->view->error = "You cannot add playlists to smart playlists."; + $this->createFullResponse($obj); + } public function indexAction() { @@ -307,9 +312,15 @@ class PlaylistController extends Zend_Controller_Action $obj->addAudioClips($ids, $afterItem, $addType); } else if ($obj->isStatic()) { // if the dest is a block object + //check if any items are playlists + foreach($ids as $id) { + if (is_array($id) && isset($id[1]) && $id[1] == 'playlist') { + throw new Exception('playlist to block'); + } + } $obj->addAudioClips($ids, $afterItem, $addType); } else { - throw new BlockDynamicException; + throw new Exception('track to dynamic'); } $this->createUpdateResponse($obj); } @@ -319,11 +330,14 @@ class PlaylistController extends Zend_Controller_Action catch (PlaylistNotFoundException $e) { $this->playlistNotFound($obj_type); } - catch (BlockDynamicException $e) { - $this->blockDynamic($obj); - } catch (Exception $e) { - $this->playlistUnknownError($e); + if ($e->getMessage() == 'playlist to block') { + $this->playlistDenied($obj); + } else if ($e->getMessage() == 'track to dynamic') { + $this->blockDynamic($obj); + } else { + $this->playlistUnknownError($e); + } } } diff --git a/airtime_mvc/application/models/Block.php b/airtime_mvc/application/models/Block.php index 3e4a91e4c..65fc55c80 100644 --- a/airtime_mvc/application/models/Block.php +++ b/airtime_mvc/application/models/Block.php @@ -266,7 +266,7 @@ EOT; if ($modifier == "minutes") { $timestamp = "00:".$value.":00"; } else if ($modifier == "hours") { - $timestamp = $value."00:00"; + $timestamp = $value.":00:00.0"; } $formatter = new LengthFormatter($timestamp); $length = "~".$formatter->format(); @@ -388,9 +388,14 @@ EOT; foreach ($p_items as $ac) { Logging::log("Adding audio file {$ac}"); - - $res = $this->insertBlockElement($this->buildEntry($ac, $pos)); - $pos = $pos + 1; + + if (is_array($ac) && $ac[1] == 'audioclip') { + $res = $this->insertBlockElement($this->buildEntry($ac[0], $pos)); + $pos = $pos + 1; + } elseif (!is_array($ac)) { + $res = $this->insertBlockElement($this->buildEntry($ac, $pos)); + $pos = $pos + 1; + } } //reset the positions of the remaining items. diff --git a/airtime_mvc/public/js/airtime/library/events/library_playlistbuilder.js b/airtime_mvc/public/js/airtime/library/events/library_playlistbuilder.js index c5845ce4c..dcb63f8af 100644 --- a/airtime_mvc/public/js/airtime/library/events/library_playlistbuilder.js +++ b/airtime_mvc/public/js/airtime/library/events/library_playlistbuilder.js @@ -128,11 +128,14 @@ var AIRTIME = (function(AIRTIME){ for (i = 0, length = aData.length; i < length; i++) { temp = aData[i]; if (temp.ftype === "audioclip" || temp.ftype === "block") { - aMediaIds.push(temp.id); + aMediaIds.push(new Array (temp.id, temp.ftype)); } } - - AIRTIME.playlist.fnAddItems(aMediaIds, undefined, 'after'); + if (aMediaIds.length > 0) { + AIRTIME.playlist.fnAddItems(aMediaIds, undefined, 'after'); + } else { + alert('You cannot add playlists to smart playlists'); + } }); //delete from library. From 4fca33c5fc4fb619d28576cbcc58b1f4abb3da00 Mon Sep 17 00:00:00 2001 From: denise Date: Thu, 2 Aug 2012 12:59:00 -0400 Subject: [PATCH 12/12] CC-84: Smart Playlists - removed block from right side if it gets deleted from context menu --- airtime_mvc/public/js/airtime/library/library.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airtime_mvc/public/js/airtime/library/library.js b/airtime_mvc/public/js/airtime/library/library.js index 1b262c709..cfd1be807 100644 --- a/airtime_mvc/public/js/airtime/library/library.js +++ b/airtime_mvc/public/js/airtime/library/library.js @@ -639,7 +639,7 @@ var AIRTIME = (function(AIRTIME) { //delete through the playlist controller, will reset //playlist screen if this is the currently edited playlist. - if (data.ftype === "playlist" && screen === "playlist") { + if ((data.ftype === "playlist" || data.ftype === "block") && screen === "playlist") { callback = function() { if (confirm('Are you sure you want to delete the selected item?')) {
to