Personal tools

Debian 13

From Rivendell Wiki

Revision as of 12:46, 5 May 2026 by Leon (Talk | contribs) (compiling rivendell 3.6.8 on debian 13 trixie)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

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