Debian 13
From Rivendell Wiki
Contents
required packages
sudo apt-get install autoconf automake apache2 mariadb-server libtool g++ \ libexpat1 libexpat1-dev libssl-dev libsamplerate-dev libsndfile-dev \ libcdparanoia-dev libcoverart-dev libdiscid-dev libmusicbrainz5-dev \ libid3-dev libtag1-dev libcurl4-gnutls-dev libpam0g-dev libsoundtouch-dev \ docbook5-xml libxml2-utils docbook-xsl-ns xsltproc fop make libsystemd-dev \ libjack-jackd2-dev libasound2-dev libflac-dev libflac++-dev libmp3lame-dev \ libmad0-dev libtwolame-dev python3 python3-pycurl python3-pymysql \ python3-serial python3-requests default-libmysqlclient-dev libx11-dev \ libfreetype6-dev libavahi-gobject-dev libsm-dev libxrender-dev \ libfontconfig-dev libxext-dev nfs-kernel-server jackd2 qjackctl
M4A format support :
wget https://deb-multimedia.org/pool/main/m/mp4v2-dmo/libmp4v2-2_2.1.3-dmo1+b1_amd64.deb \ https://deb-multimedia.org/pool/main/m/mp4v2-dmo/libmp4v2-dev_2.1.3-dmo1+b1_amd64.deb sudo apt install ./libmp4v2*.deb sudo apt install libfaad-dev
patches
qt4.patch file :
diff -ru ../qt-everywhere-opensource-src-4.8.7.orig/src/dbus/Makefile ./src/dbus/Makefile
--- ../qt-everywhere-opensource-src-4.8.7.orig/src/dbus/Makefile 2026-04-28 19:27:31.555692862 +0200
+++ ./src/dbus/Makefile 2026-04-28 19:34:28.687939289 +0200
@@ -12,7 +12,7 @@
CXX = g++
DEFINES = -DQT_SHARED -DQT_BUILD_DBUS_LIB -DDBUS_API_SUBJECT_TO_CHANGE -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT3_SUPPORT -DQT_MOC_COMPAT -DQT_USE_QSTRINGBUILDER -DQT_NO_DEBUG -DQT_XML_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_HAVE_SSE3 -DQT_HAVE_SSSE3 -DQT_HAVE_SSE4_1 -DQT_HAVE_SSE4_2 -DQT_HAVE_AVX -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE
CFLAGS = -pipe -O2 -fvisibility=hidden -Wall -W -D_REENTRANT -fPIC $(DEFINES)
-CXXFLAGS = -pipe -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -O2 -fvisibility=hidden -fvisibility-inlines-hidden -Wall -W -D_REENTRANT -fPIC $(DEFINES)
+CXXFLAGS = -fpermissive -pipe -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -O2 -fvisibility=hidden -fvisibility-inlines-hidden -Wall -W -D_REENTRANT -fPIC $(DEFINES)
INCPATH = -I../../mkspecs/linux-g++ -I. -I../../include/QtCore -I../../include/QtXml -I../../include -I../../include/QtDBus -I.rcc/release-shared -I.moc/release-shared
LINK = g++
LFLAGS = -Wl,-rpath-link,/home/leon/src/qt-everywhere-opensource-src-4.8.7/lib -Wl,--no-undefined -Wl,-O1 -Wl,-rpath,/usr/local/Trolltech/Qt-4.8.7/lib -Wl,-rpath,/usr/local/Trolltech/Qt-4.8.7/lib -shared -Wl,-soname,libQtDBus.so.4
diff -ru ../qt-everywhere-opensource-src-4.8.7.orig/src/plugins/accessible/widgets/Makefile ./src/plugins/accessible/widgets/Makefile
--- ../qt-everywhere-opensource-src-4.8.7.orig/src/plugins/accessible/widgets/Makefile 2026-04-28 19:29:35.357265076 +0200
+++ ./src/plugins/accessible/widgets/Makefile 2026-04-28 19:36:14.530888231 +0200
@@ -12,7 +12,7 @@
CXX = g++
DEFINES = -DQT_NO_DEBUG -DQT_PLUGIN -DQT_GUI_LIB -DQT_CORE_LIB -DQT_HAVE_MMX -DQT_HAVE_3DNOW -DQT_HAVE_SSE -DQT_HAVE_MMXEXT -DQT_HAVE_SSE2 -DQT_HAVE_SSE3 -DQT_HAVE_SSSE3 -DQT_HAVE_SSE4_1 -DQT_HAVE_SSE4_2 -DQT_HAVE_AVX -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -DQT_SHARED
CFLAGS = -pipe -O2 -fvisibility=hidden -D_REENTRANT -Wall -W -fPIC $(DEFINES)
-CXXFLAGS = -pipe -O2 -fvisibility=hidden -fvisibility-inlines-hidden -D_REENTRANT -Wall -W -fPIC $(DEFINES)
+CXXFLAGS = -fpermissive -pipe -O2 -fvisibility=hidden -fvisibility-inlines-hidden -D_REENTRANT -Wall -W -fPIC $(DEFINES)
INCPATH = -I../../../../mkspecs/linux-g++ -I. -I../../../../include/QtCore -I../../../../include/QtGui -I../../../../include -I.moc/release-shared
LINK = g++
LFLAGS = -Wl,-rpath-link,/home/leon/src/qt-everywhere-opensource-src-4.8.7/lib -Wl,-O1 -Wl,-rpath,/usr/local/Trolltech/Qt-4.8.7/lib -Wl,-rpath,/usr/local/Trolltech/Qt-4.8.7/lib -shared
diff -ru ../qt-everywhere-opensource-src-4.8.7.orig/src/plugins/accessible/widgets/itemviews.cpp ./src/plugins/accessible/widgets/itemviews.cpp
--- ../qt-everywhere-opensource-src-4.8.7.orig/src/plugins/accessible/widgets/itemviews.cpp 2015-05-07 16:14:48.000000000 +0200
+++ ./src/plugins/accessible/widgets/itemviews.cpp 2026-04-28 19:36:51.179799496 +0200
@@ -393,7 +393,7 @@
QModelIndex index = view()->model()->index(0, column, view()->rootIndex());
if (!index.isValid() || view()->selectionMode() & QAbstractItemView::NoSelection)
return false;
- view()->selectionModel()->select(index, QItemSelectionModel::Columns & QItemSelectionModel::Deselect);
+ view()->selectionModel()->select(index, static_cast<QItemSelectionModel::SelectionFlags>(QItemSelectionModel::Columns & QItemSelectionModel::Deselect));
return true;
}
diff -ru ../qt-everywhere-opensource-src-4.8.7.orig/tools/linguist/linguist/messagemodel.cpp ./tools/linguist/linguist/messagemodel.cpp
--- ../qt-everywhere-opensource-src-4.8.7.orig/tools/linguist/linguist/messagemodel.cpp 2015-05-07 16:14:39.000000000 +0200
+++ ./tools/linguist/linguist/messagemodel.cpp 2026-04-28 19:43:21.287645040 +0200
@@ -183,7 +183,7 @@
if (ContextItem *c = one->findContext(oc->context())) {
for (int j = 0; j < oc->messageCount(); ++j) {
MessageItem *m = oc->messageItem(j);
- if (c->findMessage(m->text(), m->comment()) >= 0)
+ if (c->findMessage(m->text(), m->comment()) >= ((MessageItem*)0))
++inBoth;
}
}
diff -ru ../qt-everywhere-opensource-src-4.8.7.orig/src/corelib/global/qglobal.h ./src/corelib/global/qglobal.h
--- ../qt-everywhere-opensource-src-4.8.7.orig/src/corelib/global/qglobal.h 2015-05-07 16:14:48.000000000 +0200
+++ ./src/corelib/global/qglobal.h 2026-04-28 19:37:49.369157365 +0200
@@ -2497,7 +2497,7 @@
for (QForeachContainer<__typeof__(container)> _container_(container); \
!_container_.brk && _container_.i != _container_.e; \
__extension__ ({ ++_container_.brk; ++_container_.i; })) \
- for (variable = *_container_.i;; __extension__ ({--_container_.brk; break;}))
+ for (variable = *_container_.i;; __extension__ ({--_container_.brk; continue;}))
#else
rd3.patch file :
diff -ru ../rivendell-3.6.8.orig/lib/rdcart.cpp ./lib/rdcart.cpp
--- ../rivendell-3.6.8.orig/lib/rdcart.cpp 2023-11-20 20:39:07.000000000 +0100
+++ ./lib/rdcart.cpp 2026-04-28 20:10:08.532047003 +0200
@@ -383,7 +383,7 @@
QString wstr=q->value(0).toString();
wstr+=" ";
wstr=wstr.left(11);
- if((sched_codes.contains(wstr)>0||add_codes.contains(wstr)>0)&&remove_codes.contains(wstr)==0) {
+ if((sched_codes.contains(wstr)!=0||add_codes.contains(wstr)!=0)&&remove_codes.contains(wstr)==0) {
save_codes.push_back(wstr.stripWhiteSpace());
}
}
diff -ru ../rivendell-3.6.8.orig/lib/rdweb.cpp ./lib/rdweb.cpp
--- ../rivendell-3.6.8.orig/lib/rdweb.cpp 2023-11-20 20:39:07.000000000 +0100
+++ ./lib/rdweb.cpp 2026-04-28 20:10:25.012344350 +0200
@@ -805,7 +805,7 @@
// Get message parts
//
while((n=getline(&data,(size_t *)&n,f))>0) {
- if(QString(data).stripWhiteSpace().contains(sep)>0) { // End of part
+ if(QString(data).stripWhiteSpace().contains(sep)!=0) { // End of part
if(fd>=0) {
ftruncate(fd,lseek(fd,0,SEEK_CUR)-2); // Remove extraneous final CR/LF
::close(fd);
diff -ru ../rivendell-3.6.8.orig/importers/nexgen_filter.cpp ./importers/nexgen_filter.cpp
--- ../rivendell-3.6.8.orig/importers/nexgen_filter.cpp 2023-11-20 20:39:07.000000000 +0100
+++ ./importers/nexgen_filter.cpp 2026-04-28 20:10:43.748681814 +0200
@@ -641,7 +641,7 @@
QString MainObject::SwapCase(const QString &str) const
{
QStringList parts=str.split(".");
- if(parts[parts.size()-1].contains(QRegExp("*[a-z]*",true,true))>0) {
+ if(parts[parts.size()-1].contains(QRegExp("*[a-z]*",true,true))!=0) {
parts[parts.size()-1]=parts[parts.size()-1].upper();
}
else {
diff -ru ../rivendell-3.6.8.orig/rdcatchd/rdcatchd.cpp ./rdcatchd/rdcatchd.cpp
--- ../rivendell-3.6.8.orig/rdcatchd/rdcatchd.cpp 2023-11-20 20:39:07.000000000 +0100
+++ ./rdcatchd/rdcatchd.cpp 2026-04-28 20:11:04.345052096 +0200
@@ -2501,10 +2501,10 @@
}
/* This is an overloaded virtual function to tell a session manager not to restart this daemon. */
-void QApplication::saveState(QSessionManager &sm) {
- sm.setRestartHint(QSessionManager::RestartNever);
- return;
-};
+//void QApplication::saveState(QSessionManager &sm) {
+// sm.setRestartHint(QSessionManager::RestartNever);
+// return;
+//};
bool MainObject::SendErrorMessage(CatchEvent *event,const QString &err_desc,
diff -ru ../rivendell-3.6.8.orig/scripts/rd_create_db ./scripts/rd_create_db
--- ../rivendell-3.6.8.orig/scripts/rd_create_db 2023-11-20 20:39:07.000000000 +0100
+++ ./scripts/rd_create_db 2026-04-28 20:12:05.022138976 +0200
@@ -316,7 +316,7 @@
ID INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
CUT_NAME CHAR(12),
TRIGGER_CODE INT UNSIGNED,
- OFFSET INT UNSIGNED,
+ \`OFFSET\` INT UNSIGNED,
INDEX CUT_NAME_IDX (CUT_NAME)
)"
mysql -u $USER -p$PASSWORD -e"USE Rivendell;
--- rivendell-3.6.8.orig/utils/rddbmgr/create.cpp 2023-11-20 20:39:07.000000000 +0100
+++ rivendell-3.6.8.new/utils/rddbmgr/create.cpp 2026-05-05 00:41:14.440003075 +0200
@@ -508,7 +508,7 @@
"ID int unsigned AUTO_INCREMENT not null primary key,"+
"CUT_NAME char(12),"+
"TRIGGER_CODE int unsigned,"+
- "OFFSET int unsigned,"+
+ "\`OFFSET\` int unsigned,"+
"index CUT_NAME_IDX (CUT_NAME))"+
" charset latin1 collate latin1_swedish_ci"+
db_table_create_postfix;
Qt4 install
wget https://download.qt.io/archive/qt/4.8/4.8.7/qt-everywhere-opensource-src-4.8.7.tar.gz tar xf qt-everywhere-opensource-src-4.8.7.tar.gz cd qt-everywhere-opensource-src-4.8.7 ./configure -qt-sql-mysql -no-script -no-openssl patch -p1 <../qt4.patch make -j7 sudo make install sudo ln -s /usr/local/Trolltech/Qt-4.8.7/lib/libQtCore.so /usr/lib/x86_64-linux-gnu sudo ln -s /usr/local/Trolltech/Qt-4.8.7/lib/libQtNetwork.so /usr/lib/x86_64-linux-gnu sudo ln -s /usr/local/Trolltech/Qt-4.8.7/lib/libQt3Support.so /usr/lib/x86_64-linux-gnu sudo ln -s /usr/local/Trolltech/Qt-4.8.7/bin/lupdate /usr/local/Trolltech/Qt-4.8.7/bin/lupdate-qt4 sudo ln -s /usr/local/Trolltech/Qt-4.8.7/bin/lrelease /usr/local/Trolltech/Qt-4.8.7/bin/lrelease-qt4
Rivendell install
wget -O rivendell-3.6.8.tar.gz https://github.com/ElvishArtisan/rivendell/archive/refs/tags/v3.6.8.tar.gz tar xf rivendell-3.6.8.tar.gz cd rivendell-3.6.8 export PKG_CONFIG_PATH=/usr/local/Trolltech/Qt-4.8.7/lib/pkgconfig:/usr/local/lib/pkgconfig export DOCBOOK_STYLESHEETS=/usr/share/xml/docbook/stylesheet/docbook-xsl-ns export PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/Trolltech/Qt-4.8.7/bin ./autogen.sh ./configure --prefix=/usr/local --libdir=/usr/local/lib \ --libexecdir=/var/www/rd-bin \ --sysconfdir=/etc/apache2/conf-available \ --enable-rdxport-debug MUSICBRAINZ_LIBS="-ldiscid -lmusicbrainz5cc -lcoverartcc" patch -p1 <rd3.patch make -j7 sudo make install