public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Diego Herrera <dherrera@redhat.com>
To: git-commits@fedoraproject.org
Subject: [rpms/opentoonz] rawhide: Update to 1.8.0
Date: Thu, 30 Jul 2026 18:31:29 GMT [thread overview]
Message-ID: <178543628962.1.2605255701096878051.rpms-opentoonz-63f7647fbc74@fedoraproject.org> (raw)
A new commit has been pushed.
Repo : rpms/opentoonz
Branch : rawhide
Commit : 63f7647fbc7425d7ea2f18dfbba28bb8412ed319
Author : Diego Herrera <dherrera@redhat.com>
Date : 2026-07-30T13:47:55-04:00
Stats : +997/-1003 in 23 file(s)
URL : https://src.fedoraproject.org/rpms/opentoonz/c/63f7647fbc7425d7ea2f18dfbba28bb8412ed319?branch=rawhide
Log:
Update to 1.8.0
* Implement autospec
* Cleanup patches
---
diff --git a/.gitignore b/.gitignore
index bfba5fa..814fd11 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,9 @@
/results_*
/review-*
/*.src.rpm
+/*.tar.gz
/v1.5.0.tar.gz
/v1.6.0.tar.gz
/v1.7.0.tar.gz
/v1.7.1.tar.gz
+/v1.8.0.tar.gz
diff --git a/0001-lzo-fix.patch b/0001-lzo-fix.patch
new file mode 100644
index 0000000..1f056f6
--- /dev/null
+++ b/0001-lzo-fix.patch
@@ -0,0 +1,22 @@
+From 9274e0dd24dc6c711e47ebf2c1580340ac323a0c Mon Sep 17 00:00:00 2001
+From: Diego Herrera <dherrera@redhat.com>
+Date: Mon, 27 Jul 2026 16:43:31 -0400
+Subject: [PATCH 1/9] lzo-fix
+
+
+diff --git a/toonz/sources/CMakeLists.txt b/toonz/sources/CMakeLists.txt
+index 7cf979a63..f01b71970 100644
+--- a/toonz/sources/CMakeLists.txt
++++ b/toonz/sources/CMakeLists.txt
+@@ -744,7 +744,7 @@ add_subdirectory(image)
+ add_subdirectory(toonzqt)
+ add_subdirectory(tnztools)
+
+-add_subdirectory(${SDKROOT}/lzo/driver lzodriver)
++# add_subdirectory(${SDKROOT}/lzo/driver lzodriver)
+
+ add_subdirectory(toonz)
+ add_subdirectory(tcleanupper)
+--
+2.55.0
+
diff --git a/0002-tiff-fix.patch b/0002-tiff-fix.patch
new file mode 100644
index 0000000..cccaf0a
--- /dev/null
+++ b/0002-tiff-fix.patch
@@ -0,0 +1,201 @@
+From 6cb8827f123f9cd89da9b21a9061e37247eb92c9 Mon Sep 17 00:00:00 2001
+From: Diego Herrera <dherrera@redhat.com>
+Date: Mon, 27 Jul 2026 16:49:58 -0400
+Subject: [PATCH 2/9] tiff fix
+
+
+diff --git a/toonz/cmake/FindTIFF.cmake b/toonz/cmake/FindTIFF.cmake
+index b3db5fa04..b4332cd86 100644
+--- a/toonz/cmake/FindTIFF.cmake
++++ b/toonz/cmake/FindTIFF.cmake
+@@ -3,28 +3,12 @@ find_path(
+ TIFF_INCLUDE_DIR
+ NAMES
+ tiffio.h
+- HINTS
+- ${SDKROOT}
+- PATH_SUFFIXES
+- tiff-4.0.3/libtiff/
+-# if mono or another framework with a tif library
+-# is installed, ignore it.
+-if(BUILD_ENV_APPLE)
+- NO_DEFAULT_PATH
+- NO_CMAKE_ENVIRONMENTPATH
+- NO_CMAKE_PATH
+-endif()
+ )
+
+ find_library(
+ TIFF_LIBRARY
+ NAMES
+- libtiff.a
+- HINTS
+- ${SDKROOT}
+- PATH_SUFFIXES
+- tiff-4.0.3/libtiff/.libs
+- NO_DEFAULT_PATH
++ libtiff.so
+ )
+
+ message("***** libtiff Header path:" ${TIFF_INCLUDE_DIR})
+diff --git a/toonz/sources/image/tif/tiio_tif.cpp b/toonz/sources/image/tif/tiio_tif.cpp
+index c9682f2fc..ea38b1264 100644
+--- a/toonz/sources/image/tif/tiio_tif.cpp
++++ b/toonz/sources/image/tif/tiio_tif.cpp
+@@ -65,7 +65,6 @@ public:
+
+ int skipLines(int lineCount) override;
+ void readLine(char *buffer, int x0, int x1, int shrink) override;
+- void readLine(short *buffer, int x0, int x1, int shrink) override;
+ };
+
+ //------------------------------------------------------------
+@@ -422,145 +421,9 @@ int TifReader::skipLines(int lineCount) {
+
+ #include "timage_io.h"
+
+-void TifReader::readLine(short *buffer, int x0, int x1, int shrink) {
+- assert(shrink > 0);
+-
+- const int pixelSize = 8;
+- int stripRowSize = m_rowLength * pixelSize;
+-
+- if (m_row < m_info.m_y0 || m_row > m_info.m_y1) {
+- memset(buffer, 0, (x1 - x0 + 1) * pixelSize);
+- m_row++;
+- return;
+- }
+-
+- int stripIndex = m_row / m_rowsPerStrip;
+- if (m_stripIndex != stripIndex) {
+- // Retrieve the strip holding current row. Please, observe that
+- // TIFF functions will return the strip buffer in the BOTTOM-UP orientation,
+- // no matter the internal tif's orientation storage
+-
+- m_stripIndex = stripIndex;
+-
+- if (TIFFIsTiled(m_tiff)) {
+- // Retrieve tiles size
+- uint32 tileWidth = 0, tileHeight = 0;
+- TIFFGetField(m_tiff, TIFFTAG_TILEWIDTH, &tileWidth);
+- TIFFGetField(m_tiff, TIFFTAG_TILELENGTH, &tileHeight);
+- assert(tileWidth > 0 && tileHeight > 0);
+-
+- // Allocate a sufficient buffer to store a single tile
+- int tileSize = tileWidth * tileHeight;
+- std::unique_ptr<uint64[]> tile(new uint64[tileSize]);
+-
+- int x = 0;
+- int y = tileHeight * m_stripIndex;
+-
+- // In case it's the last tiles row, the tile size might exceed the image
+- // bounds
+- int lastTy = std::min((int)tileHeight, m_info.m_ly - y);
+-
+- // Traverse the tiles row
+- while (x < m_info.m_lx) {
+- int ret = TIFFReadRGBATile_64(m_tiff, x, y, tile.get());
+- assert(ret);
+-
+- int tileRowSize = std::min((int)tileWidth, m_info.m_lx - x) * pixelSize;
+-
+- // Copy the tile rows in the corresponding output strip rows
+- for (int ty = 0; ty < lastTy; ++ty) {
+- memcpy(m_stripBuffer + (ty * m_rowLength + x) * pixelSize,
+- (UCHAR *)tile.get() + ty * tileWidth * pixelSize, tileRowSize);
+- }
+-
+- x += tileWidth;
+- }
+- } else {
+- int y = m_rowsPerStrip * m_stripIndex;
+- int ok = TIFFReadRGBAStrip_64(m_tiff, y, (uint64 *)m_stripBuffer);
+- assert(ok);
+- }
+- }
+-
+- uint16 orient = ORIENTATION_TOPLEFT;
+- TIFFGetField(m_tiff, TIFFTAG_ORIENTATION, &orient);
+-
+- int r = m_rowsPerStrip - 1 - (m_row % m_rowsPerStrip);
+- switch (orient) // Pretty weak check for top/bottom orientation
+- {
+- case ORIENTATION_TOPLEFT:
+- case ORIENTATION_TOPRIGHT:
+- case ORIENTATION_LEFTTOP:
+- case ORIENTATION_RIGHTTOP:
+- // We have to invert the fixed BOTTOM-UP returned by TIFF functions - since
+- // this function is
+- // supposed to ignore orientation issues (which are managed outside).
+-
+- // The last tiles row will actually start at the END OF THE IMAGE (not
+- // necessarily at
+- // m_rowsPerStrip multiples). So, we must adjust for that.
+-
+- r = std::min(m_rowsPerStrip, m_info.m_ly - m_rowsPerStrip * m_stripIndex) -
+- 1 - (m_row % m_rowsPerStrip);
+- break;
+-
+- case ORIENTATION_BOTRIGHT:
+- case ORIENTATION_BOTLEFT:
+- case ORIENTATION_RIGHTBOT:
+- case ORIENTATION_LEFTBOT:
+- r = m_row % m_rowsPerStrip;
+- break;
+- }
+-
+- // Finally, copy the strip row to the output row buffer
+- TPixel64 *pix = (TPixel64 *)buffer;
+- USHORT *v = (USHORT *)(m_stripBuffer + r * stripRowSize);
+-
+- pix += x0;
+- v += 4 * x0;
+-
+- int width =
+- (x1 < x0) ? (m_info.m_lx - 1) / shrink + 1 : (x1 - x0) / shrink + 1;
+-
+- for (int i = 0; i < width; i++) {
+- USHORT c = *v++;
+- pix->r = c;
+- c = *v++;
+- pix->g = c;
+- c = *v++;
+- pix->b = c;
+- c = *v++;
+- pix->m = c;
+-
+- pix += shrink;
+- v += 4 * (shrink - 1);
+- }
+-
+- m_row++;
+-}
+-
+ //===============================================================
+
+ void TifReader::readLine(char *buffer, int x0, int x1, int shrink) {
+- if (this->m_info.m_bitsPerSample == 16 &&
+- this->m_info.m_samplePerPixel >= 3) {
+- std::vector<short> app(4 * (m_info.m_lx));
+- readLine(&app[0], x0, x1, shrink);
+-
+- TPixel64 *pixin = (TPixel64 *)&app[0];
+-
+- TPixel32 *pixout = (TPixel32 *)buffer;
+- for (int j = 0; j < x0; j++) {
+- pixout++;
+- pixin++;
+- }
+-
+- for (int i = 0; i < (x1 - x0) + 1; i++)
+- *pixout++ = PixelConverter<TPixel32>::from(*pixin++);
+-
+- return;
+- }
+-
+ assert(shrink > 0);
+
+ const int pixelSize = 4;
+--
+2.55.0
+
diff --git a/0003-exr-fix.patch b/0003-exr-fix.patch
new file mode 100644
index 0000000..4c2906e
--- /dev/null
+++ b/0003-exr-fix.patch
@@ -0,0 +1,118 @@
+From 9a8f6c72639d8ed7aded9bda3bcf2c6c90b4bd8a Mon Sep 17 00:00:00 2001
+From: Diego Herrera <dherrera@redhat.com>
+Date: Mon, 27 Jul 2026 16:52:51 -0400
+Subject: [PATCH 3/9] exr fix
+
+
+diff --git a/toonz/sources/image/CMakeLists.txt b/toonz/sources/image/CMakeLists.txt
+index 01d90f6a3..d6ca0b5c1 100644
+--- a/toonz/sources/image/CMakeLists.txt
++++ b/toonz/sources/image/CMakeLists.txt
+@@ -202,4 +202,6 @@ elseif(BUILD_ENV_UNIXLIKE)
+ endif()
+ endif()
+
++set(EXTRA_LIBS ${EXTRA_LIBS} -ltinyexr)
++
+ target_link_libraries(image Qt5::Core Qt5::Gui Qt5::Network ${Z_LIB} ${GLUT_LIB} ${GL_LIB} ${JPEG_LIB} ${TIFF_LIB} ${PNG_LIB} ${EXTRA_LIBS})
+diff --git a/toonz/sources/image/exr/tinyexr_otmod.h b/toonz/sources/image/exr/tinyexr_otmod.h
+index 56c1810bd..230994b02 100644
+--- a/toonz/sources/image/exr/tinyexr_otmod.h
++++ b/toonz/sources/image/exr/tinyexr_otmod.h
+@@ -1,7 +1,6 @@
+ #ifndef TINYEXR_OTMOD_H_
+ #define TINYEXR_OTMOD_H_
+
+-#define TINYEXR_IMPLEMENTATION
+ #include "tinyexr.h"
+ #include <cassert>
+
+@@ -77,6 +76,85 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+ // End of OpenEXR license -------------------------------------------------
+
++#ifndef TINYEXR_IMPLEMENTATION_DEFINED
++
++#include <cassert>
++#include <cstdio>
++#include <cstdlib>
++#include <cstring>
++
++#include <algorithm>
++#include <sstream>
++#include <string>
++#include <vector>
++
++namespace tinyexr {
++
++static const int kEXRVersionSize = 8;
++
++struct LayerChannel {
++ explicit LayerChannel(size_t i, std::string n) : index(i), name(n) {}
++ size_t index;
++ std::string name;
++};
++
++
++static void SetErrorMessage(const std::string &msg, const char **err) {
++ if (err) {
++#ifdef _WIN32
++ (*err) = _strdup(msg.c_str());
++#else
++ (*err) = strdup(msg.c_str());
++#endif
++ }
++}
++
++static void GetLayers(const EXRHeader &exr_header,
++ std::vector<std::string> &layer_names) {
++ // Naive implementation
++ // Group channels by layers
++ // go over all channel names, split by periods
++ // collect unique names
++ layer_names.clear();
++ for (int c = 0; c < exr_header.num_channels; c++) {
++ std::string full_name(exr_header.channels[c].name);
++ const size_t pos = full_name.find_last_of('.');
++ if (pos != std::string::npos && pos != 0 && pos + 1 < full_name.size()) {
++ full_name.erase(pos);
++ if (std::find(layer_names.begin(), layer_names.end(), full_name) ==
++ layer_names.end())
++ layer_names.push_back(full_name);
++ }
++ }
++}
++
++static void ChannelsInLayer(const EXRHeader &exr_header,
++ const std::string layer_name,
++ std::vector<LayerChannel> &channels) {
++ channels.clear();
++ for (int c = 0; c < exr_header.num_channels; c++) {
++ std::string ch_name(exr_header.channels[c].name);
++ if (layer_name.empty()) {
++ const size_t pos = ch_name.find_last_of('.');
++ if (pos != std::string::npos && pos < ch_name.size()) {
++ ch_name = ch_name.substr(pos + 1);
++ }
++ } else {
++ const size_t pos = ch_name.find(layer_name + '.');
++ if (pos == std::string::npos) continue;
++ if (pos == 0) {
++ ch_name = ch_name.substr(layer_name.size() + 1);
++ }
++ }
++ LayerChannel ch(size_t(c), ch_name);
++ channels.push_back(ch);
++ }
++}
++
++}
++
++#endif
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+--
+2.55.0
+
diff --git a/0004-gethostbyname.patch b/0004-gethostbyname.patch
new file mode 100644
index 0000000..4e1e23f
--- /dev/null
+++ b/0004-gethostbyname.patch
@@ -0,0 +1,265 @@
+From 5a4be22abc68a1dd10df52cbc47da9dce860a6d6 Mon Sep 17 00:00:00 2001
+From: Diego Herrera <dherrera@redhat.com>
+Date: Mon, 27 Jul 2026 16:53:29 -0400
+Subject: [PATCH 4/9] gethostbyname
+
+
+diff --git a/toonz/sources/toonzfarm/tfarm/tfarmtask.cpp b/toonz/sources/toonzfarm/tfarm/tfarmtask.cpp
+index eabb00082..9bad7988b 100644
+--- a/toonz/sources/toonzfarm/tfarm/tfarmtask.cpp
++++ b/toonz/sources/toonzfarm/tfarm/tfarmtask.cpp
+@@ -22,13 +22,13 @@
+ #elif defined(MACOSX)
+ #include "tversion.h"
+ using namespace TVER;
+-#include <netdb.h> // gethostbyname
++#include <netdb.h> // getaddrinfo
+ #include <arpa/inet.h> // inet_ntoa
+ #else
+ // these were included for OSX, i'm not sure if they are required for linux or
+ // not? leaving them in as linux was building successfully already. damies13 -
+ // 2017-04-15.
+-#include <netdb.h> // gethostbyname
++#include <netdb.h> // getaddrinfo
+ #include <arpa/inet.h> // inet_ntoa
+ #endif
+
+@@ -484,6 +484,11 @@ QString TFarmTask::getCommandLinePrgName() const {
+ QString TFarmTask::getCommandLineArguments() const {
+ QString cmdline = "";
+
++ struct addrinfo *ai = NULL;
++ struct addrinfo hints;
++ memset(&hints, 0, sizeof(struct addrinfo));
++ hints.ai_family = AF_INET;
++
+ if (!m_taskFilePath.isEmpty())
+ cmdline += " \"" +
+ QString::fromStdWString(
+@@ -491,9 +496,12 @@ QString TFarmTask::getCommandLineArguments() const {
+ "\"";
+
+ if (m_callerMachineName != "") {
+- struct hostent *he = gethostbyname(m_callerMachineName.toLatin1());
+- if (he) {
+- char *ipAddress = inet_ntoa(*(struct in_addr *)*(he->h_addr_list));
++ int suc = getaddrinfo(m_callerMachineName.toLatin1(), NULL, &hints, &ai);
++ if (suc == 0) {
++ struct sockaddr_in *ai_addr;
++ ai_addr = (struct sockaddr_in *)ai->ai_addr;
++
++ char *ipAddress = inet_ntoa((struct in_addr)ai_addr->sin_addr);
+ cmdline += " -tmsg " + QString::fromUtf8(ipAddress);
+ }
+ }
+diff --git a/toonz/sources/toonzfarm/tfarm/tserverproxy.cpp b/toonz/sources/toonzfarm/tfarm/tserverproxy.cpp
+index 035296c14..2ee4ba958 100644
+--- a/toonz/sources/toonzfarm/tfarm/tserverproxy.cpp
++++ b/toonz/sources/toonzfarm/tfarm/tserverproxy.cpp
+@@ -28,16 +28,23 @@ enum {
+ //=============================================================================
+
+ int askServer(string hostName, int portId, string question, string &answer) {
+- struct hostent *he = gethostbyname(hostName.c_str());
+- if (!he) return HOST_UNKNOWN;
+-
++ struct addrinfo *ai = NULL;
++ struct addrinfo hints;
++ memset(&hints, 0, sizeof(struct addrinfo));
++ hints.ai_family = AF_INET;
++
++ int suc = getaddrinfo(hostName.c_str(), NULL, &hints, &ai);
++ if (suc != 0) return HOST_UNKNOWN;
++
+ int socket_id = socket(AF_INET, SOCK_STREAM, 0);
+-
++ struct sockaddr_in *ai_addr;
++ ai_addr = (struct sockaddr_in *)ai->ai_addr;
++
+ struct sockaddr_in addr;
+ memset((char *)&addr, 0, sizeof addr);
+- addr.sin_family = he->h_addrtype;
+- addr.sin_port = htons(portId);
+- memcpy((char *)&(addr.sin_addr), he->h_addr, he->h_length);
++ addr.sin_family = ai_addr->sin_family;
++ addr.sin_port = htons(port);
++ addr.sin_addr = ai_addr->sin_addr;
+
+ int rcConnect = connect(socket_id, (struct sockaddr *)&(addr), sizeof addr);
+ if (rcConnect == SOCKET_ERROR) return CONNECTION_FAILED;
+@@ -82,16 +89,23 @@ TServerProxy::~TServerProxy() {
+ //-----------------------------------------------------------------------------
+
+ bool TServerProxy::testConnection() const {
+- struct hostent *he = gethostbyname(m_hostName.c_str());
+- if (!he) return false;
+-
++ addrinfo *ai = NULL;
++ struct addrinfo hints;
++ memset(&hints, 0, sizeof(struct addrinfo));
++ hints.ai_family = AF_INET;
++
++ int suc = getaddrinfo(m_hostName.c_str(), NULL, &hints, &ai);
++ if (suc != 0) return false;
++
+ int socket_id = socket(AF_INET, SOCK_STREAM, 0);
++ struct sockaddr_in *ai_addr;
++ ai_addr = (struct sockaddr_in *)ai->ai_addr;
+
+ struct sockaddr_in addr;
+ memset((char *)&addr, 0, sizeof addr);
+- addr.sin_family = he->h_addrtype;
+- addr.sin_port = htons(m_portId);
+- memcpy((char *)&(addr.sin_addr), he->h_addr, he->h_length);
++ addr.sin_family = ai_addr->sin_family;
++ addr.sin_port = htons(port);
++ addr.sin_addr = ai_addr->sin_addr;
+
+ bool ret = (SOCKET_ERROR !=
+ connect(socket_id, (struct sockaddr *)&(addr), sizeof addr));
+diff --git a/toonz/sources/toonzfarm/tfarm/ttcpipclient.cpp b/toonz/sources/toonzfarm/tfarm/ttcpipclient.cpp
+index f8a764503..89671de81 100644
+--- a/toonz/sources/toonzfarm/tfarm/ttcpipclient.cpp
++++ b/toonz/sources/toonzfarm/tfarm/ttcpipclient.cpp
+@@ -49,8 +49,13 @@ int TTcpIpClient::connect(const QString &hostName, const QString &addrStr,
+ unsigned long ipAddr = inet_addr(addrStr.c_str());
+ }
+ */
+- struct hostent *he = gethostbyname(hostName.toUtf8());
+- if (!he) {
++ struct addrinfo *ai = NULL;
++ struct addrinfo hints;
++ memset(&hints, 0, sizeof(struct addrinfo));
++ hints.ai_family = AF_INET;
++
++ int suc = getaddrinfo(hostName.toUtf8(), NULL, &hints, &ai);
++ if (suc != 0) {
+ #ifdef _WIN32
+ int err = WSAGetLastError();
+ #else
+@@ -59,12 +64,14 @@ int TTcpIpClient::connect(const QString &hostName, const QString &addrStr,
+ }
+
+ int socket_id = socket(AF_INET, SOCK_STREAM, 0);
++ struct sockaddr_in *ai_addr;
++ ai_addr = (struct sockaddr_in *)ai->ai_addr;
+
+ struct sockaddr_in addr;
+ memset((char *)&addr, 0, sizeof addr);
+- addr.sin_family = he->h_addrtype;
++ addr.sin_family = ai_addr->sin_family;
+ addr.sin_port = htons(port);
+- memcpy((char *)&(addr.sin_addr), he->h_addr, he->h_length);
++ addr.sin_addr = ai_addr->sin_addr;
+
+ int rcConnect = ::connect(socket_id, (struct sockaddr *)&(addr), sizeof addr);
+ if (rcConnect == SOCKET_ERROR) {
+diff --git a/toonz/sources/toonzfarm/tfarm/ttcpipserver.cpp b/toonz/sources/toonzfarm/tfarm/ttcpipserver.cpp
+index 3a65d5174..d1e127a3a 100644
+--- a/toonz/sources/toonzfarm/tfarm/ttcpipserver.cpp
++++ b/toonz/sources/toonzfarm/tfarm/ttcpipserver.cpp
+@@ -431,15 +431,21 @@ void TTcpIpServer::sendReply(int socket, const QString &reply) {
+ int establish(unsigned short portnum, int &sock) {
+ char myname[MAXHOSTNAME + 1];
+ struct sockaddr_in sa;
+- struct hostent *hp;
++ struct addrinfo *ai = NULL;
++ struct addrinfo hints;
++ memset(&hints, 0, sizeof(struct addrinfo));
++ hints.ai_family = AF_INET;
+
+ memset(&sa, 0, sizeof(struct sockaddr_in)); /* clear our address */
+ gethostname(myname, MAXHOSTNAME); /* who are we? */
+- hp = gethostbyname(myname); /* get our address info */
+- if (hp == NULL) /* we don't exist !? */
++ int suc = getaddrinfo(myname, NULL, &hints, &ai); /* get our address info */
++ if (suc != 0) /* we don't exist !? */
+ return (-1);
+
+- sa.sin_family = hp->h_addrtype; /* this is our host address */
++ struct sockaddr_in *ai_addr;
++ ai_addr = (struct sockaddr_in *)ai->ai_addr;
++
++ sa.sin_family = ai_addr->sin_family; /* this is our host address */
+ sa.sin_port = htons(portnum); /* this is our port number */
+ if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) /* create socket */
+ {
+diff --git a/toonz/sources/toonzfarm/tfarmcontroller/tfarmcontroller_shutdown.cpp b/toonz/sources/toonzfarm/tfarmcontroller/tfarmcontroller_shutdown.cpp
+index 1e7005cc6..32087d18b 100644
+--- a/toonz/sources/toonzfarm/tfarmcontroller/tfarmcontroller_shutdown.cpp
++++ b/toonz/sources/toonzfarm/tfarmcontroller/tfarmcontroller_shutdown.cpp
+@@ -16,21 +16,28 @@
+
+ int call_socket(char *hostname, unsigned short portnum) {
+ struct sockaddr_in sa;
+- struct hostent *hp;
++ struct addrinfo *ai = NULL;
++ struct addrinfo hints;
++ memset(&hints, 0, sizeof(struct addrinfo));
++ hints.ai_family = AF_INET;
+ int s;
+
+- if ((hp = gethostbyname(hostname)) == NULL) /* do we know the host's */
++ int suc = getaddrinfo(hostname, NULL, &hints, &ai);
++ if (suc != 0) /* do we know the host's */
+ {
+ errno = ECONNREFUSED; /* address? */
+ return (-1); /* no */
+ }
+
++ struct sockaddr_in *ai_addr;
++ ai_addr = (struct sockaddr_in *)ai->ai_addr;
++
+ memset(&sa, 0, sizeof(sa));
+- memcpy((char *)&sa.sin_addr, hp->h_addr, hp->h_length); /* set address */
+- sa.sin_family = hp->h_addrtype;
++ sa.sin_addr = ai_addr->sin_addr;
++ sa.sin_family = ai_addr->sin_family;
+ sa.sin_port = htons((u_short)portnum);
+
+- if ((s = socket(hp->h_addrtype, SOCK_STREAM, 0)) < 0) /* get socket */
++ if ((s = socket(ai_addr->sin_family, SOCK_STREAM, 0)) < 0) /* get socket */
+ return (-1);
+ if (connect(s, (struct sockaddr *)&sa, sizeof sa) < 0) /* connect */
+ {
+diff --git a/toonz/sources/toonzfarm/tfarmserver/tfarmserver_shutdown.cpp b/toonz/sources/toonzfarm/tfarmserver/tfarmserver_shutdown.cpp
+index a3ff6fc60..7d22c760a 100644
+--- a/toonz/sources/toonzfarm/tfarmserver/tfarmserver_shutdown.cpp
++++ b/toonz/sources/toonzfarm/tfarmserver/tfarmserver_shutdown.cpp
+@@ -16,21 +16,28 @@
+
+ int call_socket(char *hostname, unsigned short portnum) {
+ struct sockaddr_in sa;
+- struct hostent *hp;
++ struct addrinfo *ai = NULL;
++ struct addrinfo hints;
++ memset(&hints, 0, sizeof(struct addrinfo));
++ hints.ai_family = AF_INET;
+ int s;
+
+- if ((hp = gethostbyname(hostname)) == NULL) /* do we know the host's */
++ int suc = getaddrinfo(hostname, NULL, &hints, &ai);
++ if (suc != 0) /* do we know the host's */
+ {
+ errno = ECONNREFUSED; /* address? */
+ return (-1); /* no */
+ }
+
++ struct sockaddr_in *ai_addr;
++ ai_addr = (struct sockaddr_in *)ai->ai_addr;
++
+ memset(&sa, 0, sizeof(sa));
+- memcpy((char *)&sa.sin_addr, hp->h_addr, hp->h_length); /* set address */
+- sa.sin_family = hp->h_addrtype;
++ sa.sin_addr = ai_addr->sin_addr;
++ sa.sin_family = ai_addr->sin_family;
+ sa.sin_port = htons((u_short)portnum);
+
+- if ((s = socket(hp->h_addrtype, SOCK_STREAM, 0)) < 0) /* get socket */
++ if ((s = socket(ai_addr->sin_family, SOCK_STREAM, 0)) < 0) /* get socket */
+ return (-1);
+ if (connect(s, (struct sockaddr *)&sa, sizeof sa) < 0) /* connect */
+ {
+--
+2.55.0
+
diff --git a/0005-install-path-fix.patch b/0005-install-path-fix.patch
new file mode 100644
index 0000000..025fcf7
--- /dev/null
+++ b/0005-install-path-fix.patch
@@ -0,0 +1,83 @@
+From 5f9aa27f14bca8fdf02bf9de862e5e0844356db0 Mon Sep 17 00:00:00 2001
+From: Diego Herrera <dherrera@redhat.com>
+Date: Mon, 27 Jul 2026 16:53:48 -0400
+Subject: [PATCH 5/9] install path fix
+
+
+diff --git a/toonz/sources/toonz/CMakeLists.txt b/toonz/sources/toonz/CMakeLists.txt
+index a70af6ded..ae14da671 100644
+--- a/toonz/sources/toonz/CMakeLists.txt
++++ b/toonz/sources/toonz/CMakeLists.txt
+@@ -686,7 +686,7 @@ if(BUILD_ENV_UNIXLIKE AND BUILD_TARGET_WIN)
+ "$<TARGET_FILE:tconverter>"
+ "$<TARGET_FILE:tfarmcontroller>"
+ "$<TARGET_FILE:tfarmserver>"
+- DESTINATION bin
++ DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
+ )
+
+ if(LZODRIVER_FOUND)
+@@ -694,7 +694,7 @@ if(BUILD_ENV_UNIXLIKE AND BUILD_TARGET_WIN)
+ PROGRAMS
+ "$<TARGET_FILE:lzocompress>"
+ "$<TARGET_FILE:lzodecompress>"
+- DESTINATION bin
++ DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
+ )
+ endif()
+
+@@ -730,21 +730,20 @@ elseif(BUILD_ENV_UNIXLIKE AND NOT BUILD_TARGET_WIN)
+ install(
+ TARGETS
+ OpenToonz
+- DESTINATION bin
++ DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
+ )
+
+ # Shell script that copies files to the home directory as needed
+ # and sets the library preload path.
+ file(WRITE ${CMAKE_BINARY_DIR}/bin/opentoonz
+ "#!/bin/sh
+-OPENTOONZ_BASE=\$(dirname \"\$0\")/..
+
+ if [ ! -d \$HOME/.config/OpenToonz ]; then
+ mkdir -p \$HOME/.config/OpenToonz
+ fi
+
+ if [ ! -d \$HOME/.config/OpenToonz/stuff ]; then
+- cp -r \$OPENTOONZ_BASE/share/opentoonz/stuff \$HOME/.config/OpenToonz
++ cp -r ${SHARE_INSTALL_PREFIX}/opentoonz/stuff \$HOME/.config/OpenToonz
+ fi
+
+ if [ ! -d \$HOME/.config/OpenToonz/stuff/projects/library ]; then
+@@ -771,9 +770,9 @@ TOONZSTUDIOPALETTE=\"\$HOME/.config/OpenToonz/stuff/studiopalette\"
+ EOF
+ fi
+
+-export ${PRELOAD_VARIABLE}=\${OPENTOONZ_BASE}/lib/opentoonz:\${${PRELOAD_VARIABLE}}
++export ${PRELOAD_VARIABLE}=${LIB_INSTALL_DIR}/opentoonz:\${${PRELOAD_VARIABLE}}
+
+-exec \$OPENTOONZ_BASE/bin/OpenToonz \"\$@\"
++exec ${CMAKE_INSTALL_PREFIX}/bin/OpenToonz \"\$@\"
+ ")
+ # only needed for executing without installing
+ execute_process(COMMAND chmod +x ${CMAKE_BINARY_DIR}/bin/opentoonz)
+@@ -811,13 +810,13 @@ exec \$OPENTOONZ_BASE/bin/OpenToonz \"\$@\"
+ "$<TARGET_FILE:tnztools>"
+ "$<TARGET_FILE:tnzstdfx>"
+ "$<TARGET_FILE:tfarm>"
+- DESTINATION lib/opentoonz
++ DESTINATION ${LIB_INSTALL_DIR}/opentoonz
+ )
+
+ install(
+ DIRECTORY
+ ${CMAKE_SOURCE_DIR}/../../stuff
+- DESTINATION share/opentoonz
++ DESTINATION ${SHARE_INSTALL_PREFIX}/opentoonz
+ )
+
+ endif()
+--
+2.55.0
+
diff --git a/0006-kissfft-fix.patch b/0006-kissfft-fix.patch
new file mode 100644
index 0000000..5004411
--- /dev/null
+++ b/0006-kissfft-fix.patch
@@ -0,0 +1,45 @@
+From 78b9cf7091309e89f1fa24f6c4f620f3d2153f94 Mon Sep 17 00:00:00 2001
+From: Diego Herrera <dherrera@redhat.com>
+Date: Mon, 27 Jul 2026 16:56:46 -0400
+Subject: [PATCH 6/9] kissfft fix
+
+
+diff --git a/toonz/sources/stdfx/CMakeLists.txt b/toonz/sources/stdfx/CMakeLists.txt
+index 58e9949ee..9e2f11123 100644
+--- a/toonz/sources/stdfx/CMakeLists.txt
++++ b/toonz/sources/stdfx/CMakeLists.txt
+@@ -271,8 +271,6 @@ set(SOURCES
+ iwa_noise1234.cpp
+ iwa_pnperspectivefx.cpp
+ iwa_soapbubblefx.cpp
+- ${SDKROOT}/kiss_fft/kiss_fft.c
+- ${SDKROOT}/kiss_fft/kiss_fftnd.c
+ iwa_bokehfx.cpp
+ iwa_timecodefx.cpp
+ iwa_bokehreffx.cpp
+@@ -307,6 +305,7 @@ add_library(tnzstdfx SHARED ${HEADERS} ${SOURCES} ${OBJCSOURCES})
+ add_definitions(
+ -D_USRDLL
+ -DTNZSTDFX_EXPORTS
++ -Dkiss_fft_scalar=double
+ )
+
+ if(BUILD_ENV_APPLE)
+@@ -330,12 +329,12 @@ else()
+ endif()
+
+ include_directories(
+- ${SDKROOT}/kiss_fft
++ /usr/include/kissfft/
+ )
+
+ _find_toonz_library(TNZLIBS "tnzcore;tnzbase;toonzlib")
+
+-target_link_libraries(tnzstdfx Qt5::Core Qt5::Gui Qt5::OpenGL ${GL_LIB} ${GLEW_LIB} ${TNZLIBS} ${PTHREAD_LIBRARY})
++target_link_libraries(tnzstdfx Qt5::Core Qt5::Gui Qt5::OpenGL ${GL_LIB} ${GLEW_LIB} ${TNZLIBS} ${PTHREAD_LIBRARY} kissfft-double)
+
+ if(OpenCV_FOUND)
+ target_link_libraries(tnzstdfx ${OpenCV_LIBS})
+--
+2.55.0
+
diff --git a/0007-toonzrle-rm.patch b/0007-toonzrle-rm.patch
new file mode 100644
index 0000000..625c2c6
--- /dev/null
+++ b/0007-toonzrle-rm.patch
@@ -0,0 +1,23 @@
+From d2af801efd9729c263d122f86a3464db0f6ff5d6 Mon Sep 17 00:00:00 2001
+From: Diego Herrera <dherrera@redhat.com>
+Date: Mon, 27 Jul 2026 16:57:24 -0400
+Subject: [PATCH 7/9] toonzrle rm
+
+
+diff --git a/toonz/sources/image/CMakeLists.txt b/toonz/sources/image/CMakeLists.txt
+index d6ca0b5c1..4420f1cf1 100644
+--- a/toonz/sources/image/CMakeLists.txt
++++ b/toonz/sources/image/CMakeLists.txt
+@@ -74,7 +74,8 @@ if(NOT BUILD_TARGET_BSD)
+ tif/tiio_tif.cpp
+ tzp/tiio_plt.cpp
+ tzp/tiio_tzp.cpp
+- tzp/toonzrle.cpp
++ # Removed since it requires libtiff internal API access.
++ # tzp/toonzrle.cpp
+ tzp/avl.c
+ )
+ endif()
+--
+2.55.0
+
diff --git a/0008-tzp-tiffiop-fix.patch b/0008-tzp-tiffiop-fix.patch
new file mode 100644
index 0000000..e22d8bf
--- /dev/null
+++ b/0008-tzp-tiffiop-fix.patch
@@ -0,0 +1,42 @@
+From 2d83181a5bcbbb207fb5d8377011ed53a3c8fc5c Mon Sep 17 00:00:00 2001
+From: Diego Herrera <dherrera@redhat.com>
+Date: Mon, 27 Jul 2026 16:57:40 -0400
+Subject: [PATCH 8/9] tzp tiffiop fix
+
+
+diff --git a/toonz/sources/image/tzp/tiio_tzp.cpp b/toonz/sources/image/tzp/tiio_tzp.cpp
+index 080f9bdf4..a22f9d0f7 100644
+--- a/toonz/sources/image/tzp/tiio_tzp.cpp
++++ b/toonz/sources/image/tzp/tiio_tzp.cpp
+@@ -7,7 +7,7 @@
+ #include "texception.h"
+
+ #include "tiffio.h"
+-#include "tiffiop.h"
++// #include "tiffiop.h"
+ // #include "tspecialstyleid.h"
+ #include <set>
+
+@@ -225,8 +225,7 @@ void TzpReader::readLine(char *buffer, int x0, int x1, int shrink) {
+ static std::set<int> table;
+
+ /// per le tzp che vengono da Irix
+- bool bigEndian =
+- (m_tiff->tif_header.classic.tiff_magic == TIFF_BIGENDIAN);
++ bool bigEndian = TIFFIsBigEndian(m_tiff);
+
+ for (int i = 0; i < m_lx; i++) {
+ unsigned short inPix = line[i];
+@@ -255,8 +254,7 @@ void TzpReader::readLine(char *buffer, int x0, int x1, int shrink) {
+ static std::set<int> table;
+
+ /// per le tzp che vengono da Irix
+- bool bigEndian =
+- (m_tiff->tif_header.classic.tiff_magic == TIFF_BIGENDIAN);
++ bool bigEndian = TIFFIsBigEndian(m_tiff);
+
+ for (int i = 0; i < m_lx; i++) {
+ unsigned short inPix = line[i];
+--
+2.55.0
+
diff --git a/0009-appdata.patch b/0009-appdata.patch
new file mode 100644
index 0000000..7bc1bee
--- /dev/null
+++ b/0009-appdata.patch
@@ -0,0 +1,24 @@
+From 2ee0bdd0a24eed4e09cb44730701a8680b67323c Mon Sep 17 00:00:00 2001
+From: Diego Herrera <dherrera@redhat.com>
+Date: Mon, 27 Jul 2026 16:58:32 -0400
+Subject: [PATCH 9/9] appdata
+
+
+diff --git a/toonz/sources/xdg-data/io.github.OpenToonz.appdata.xml b/toonz/sources/xdg-data/io.github.OpenToonz.appdata.xml
+index 1ea8826ee..ccb94d55e 100644
+--- a/toonz/sources/xdg-data/io.github.OpenToonz.appdata.xml
++++ b/toonz/sources/xdg-data/io.github.OpenToonz.appdata.xml
+@@ -18,6 +18,10 @@
+ Dwango launched the OpenToonz project in cooperation
+ with Digital Video and Studio Ghibli.
+ </p>
++ <p>
++ This version was packaged for Fedora using the latest stable libraries
++ available in the distribution, in exchange some features were disabled.
++ </p>
+ </description>
+ <url type="homepage">https://opentoonz.github.io/e/</url>
+ <url type="bugtracker">https://github.com/opentoonz/opentoonz/issues</url>
+--
+2.55.0
+
diff --git a/changelog b/changelog
new file mode 100644
index 0000000..bfbe96e
--- /dev/null
+++ b/changelog
@@ -0,0 +1,118 @@
+* Thu Jul 16 2026 Fedora Release Engineering <releng@fedoraproject.org> - 1.7.1-21
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild
+
+* Thu Jan 29 2026 Nicolas Chauvet <kwizart@gmail.com> - 1.7.1-20
+- Rebuilt for OpenCV 4.13
+
+* Fri Jan 16 2026 Fedora Release Engineering <releng@fedoraproject.org> - 1.7.1-19
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild
+
+* Wed Dec 10 2025 Nicolas Chauvet <kwizart@gmail.com> - 1.7.1-18
+- Rebuilt for OpenCV-4.12
+
+* Thu Jul 24 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.7.1-17
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
+
+* Tue Feb 04 2025 Sérgio Basto <sergio@serjux.com> - 1.7.1-16
+- Rebuild for opencv-4.11.0
+
+* Mon Feb 3 2025 Diego Herrera <dherrera@redhat.com> 1.7.1-15
+- Fix ambiguosly defined function pointers
+
+* Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.7.1-14
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
+
+* Sun Sep 08 2024 Antonio Trande <sagitter@fedoraproject.org> 1.7.1-13
+- Rebuild for SuperLU-7.0.0
+
+* Mon Sep 02 2024 Miroslav Suchý <msuchy@redhat.com> - 1.7.1-12
+- convert license to SPDX
+
+* Thu Jul 25 2024 Sérgio Basto <sergio@serjux.com> - 1.7.1-11
+- Rebuild for opencv 4.10.0
+
+* Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.7.1-10
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
+
+* Tue Feb 06 2024 František Zatloukal <fzatlouk@redhat.com> - 1.7.1-9
+- Rebuilt for turbojpeg 3.0.2
+
+* Mon Feb 05 2024 Sérgio Basto <sergio@serjux.com> - 1.7.1-8
+- Rebuild for opencv 4.9.0
+
+* Thu Feb 1 2024 Diego Herrera <dherrera@redhat.com> 1.7.1-7
+- Fix for kissfft-v131.1.0
+- Fix for tinyexr-v1.0.7
+
+* Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.7.1-6
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
+
+* Sun Jan 21 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.7.1-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
+
+* Mon Aug 07 2023 Sérgio Basto <sergio@serjux.com> - 1.7.1-4
+- Rebuild for opencv 4.8.0
+
+* Thu Jul 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.7.1-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
+
+* Sat Jul 15 2023 Antonio Trande <sagitter@fedoraproject.org> 1.7.1-2
+- Rebuild for SuperLU-6.0.0
+
+* Tue Jun 20 2023 Diego Herrera <dherrera@redhat.com> 1.7.1-1
+- Updated to 1.7.1
+- Update package description
+
+* Wed May 10 2023 Diego Herrera <dherrera@redhat.com> 1.7.0-1
+- Updated to 1.7.0
+
+* Mon Feb 6 2023 Diego Herrera <dherrera@redhat.com> 1.6.0-11
+- Fix size_t redefinition issue on tgc::hash class.
+
+* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.0-10
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
+
+* Mon Jan 16 2023 Sérgio Basto <sergio@serjux.com> - 1.6.0-9
+- Rebuild for opencv 4.7.0
+
+* Wed Nov 2 2022 Diego Herrera <dherrera@redhat.com> 1.6.0-8
+- Expose static library dependency
+
+* Thu Aug 25 2022 Diego Herrera <dherrera@redhat.com> 1.6.0-7
+- Make exr patch compatible with upstream
+
+* Thu Aug 25 2022 Diego Herrera <dherrera@redhat.com> 1.6.0-6
+- Fix exr linking problems
+
+* Thu Aug 25 2022 Iñaki Úcar <iucar@fedoraproject.org> - 1.6.0-5
+- Adhere to BLAS/LAPACK guidelines
+
+* Fri Jul 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.0-4
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
+
+* Tue Jun 21 2022 Sérgio Basto <sergio@serjux.com> - 1.6.0-3
+- Rebuilt for opencv 4.6.0
+
+* Fri Apr 29 2022 Diego Herrera <dherrera@redhat.com> 1.6.0-2
+- Disable exr format because of linking problems
+
+* Mon Apr 18 2022 Diego Herrera <dherrera@redhat.com> 1.6.0-1
+- Updated to 1.6.0
+
+* Wed Mar 16 2022 Diego Herrera <dherrera@redhat.com> 1.5.0-5
+- Fixed build problems with cmake
+- libusb retired from rawhide
+
+* Sat Feb 5 2022 Diego Herrera <dherrera@redhat.com> 1.5.0-4
+- Restored metainfo
+
+* Fri Feb 4 2022 Diego Herrera <dherrera@redhat.com> 1.5.0-3
+- Added version macro to the source url
+
+* Fri Feb 4 2022 Diego Herrera <dherrera@redhat.com> 1.5.0-2
+- Added cmake macros
+- Used desktop-file-validate instead of desktop-file-install
+- Cleaned up requirements
+
+* Wed Feb 2 2022 Diego Herrera <dherrera@redhat.com> 1.5.0-1
+- First commit
diff --git a/opentoonz-1.5.0-lzo-fix.patch b/opentoonz-1.5.0-lzo-fix.patch
deleted file mode 100644
index c43f9ca..0000000
--- a/opentoonz-1.5.0-lzo-fix.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/toonz/sources/CMakeLists.txt b/toonz/sources/CMakeLists.txt
-index 7cf3d7c5..71a5d27f 100644
---- a/toonz/sources/CMakeLists.txt
-+++ b/toonz/sources/CMakeLists.txt
-@@ -614,7 +614,7 @@ add_subdirectory(image)
- add_subdirectory(toonzqt)
- add_subdirectory(tnztools)
-
--add_subdirectory(${SDKROOT}/lzo/driver lzodriver)
-+# add_subdirectory(${SDKROOT}/lzo/driver lzodriver)
-
- add_subdirectory(toonz)
- add_subdirectory(tcleanupper)
diff --git a/opentoonz-1.5.0-tiff-fix.patch b/opentoonz-1.5.0-tiff-fix.patch
deleted file mode 100644
index 4434167..0000000
--- a/opentoonz-1.5.0-tiff-fix.patch
+++ /dev/null
@@ -1,192 +0,0 @@
-diff --git a/toonz/cmake/FindTIFF.cmake b/toonz/cmake/FindTIFF.cmake
-index b3db5fa0..b4332cd8 100644
---- a/toonz/cmake/FindTIFF.cmake
-+++ b/toonz/cmake/FindTIFF.cmake
-@@ -3,28 +3,12 @@ find_path(
- TIFF_INCLUDE_DIR
- NAMES
- tiffio.h
-- HINTS
-- ${SDKROOT}
-- PATH_SUFFIXES
-- tiff-4.0.3/libtiff/
--# if mono or another framework with a tif library
--# is installed, ignore it.
--if(BUILD_ENV_APPLE)
-- NO_DEFAULT_PATH
-- NO_CMAKE_ENVIRONMENTPATH
-- NO_CMAKE_PATH
--endif()
- )
-
- find_library(
- TIFF_LIBRARY
- NAMES
-- libtiff.a
-- HINTS
-- ${SDKROOT}
-- PATH_SUFFIXES
-- tiff-4.0.3/libtiff/.libs
-- NO_DEFAULT_PATH
-+ libtiff.so
- )
-
- message("***** libtiff Header path:" ${TIFF_INCLUDE_DIR})
-diff --git a/toonz/sources/image/tif/tiio_tif.cpp b/toonz/sources/image/tif/tiio_tif.cpp
-index 590f0bff..1385642d 100644
---- a/toonz/sources/image/tif/tiio_tif.cpp
-+++ b/toonz/sources/image/tif/tiio_tif.cpp
-@@ -65,7 +65,6 @@ public:
-
- int skipLines(int lineCount) override;
- void readLine(char *buffer, int x0, int x1, int shrink) override;
-- void readLine(short *buffer, int x0, int x1, int shrink) override;
- };
-
- //------------------------------------------------------------
-@@ -422,145 +421,9 @@ int TifReader::skipLines(int lineCount) {
-
- #include "timage_io.h"
-
--void TifReader::readLine(short *buffer, int x0, int x1, int shrink) {
-- assert(shrink > 0);
--
-- const int pixelSize = 8;
-- int stripRowSize = m_rowLength * pixelSize;
--
-- if (m_row < m_info.m_y0 || m_row > m_info.m_y1) {
-- memset(buffer, 0, (x1 - x0 + 1) * pixelSize);
-- m_row++;
-- return;
-- }
--
-- int stripIndex = m_row / m_rowsPerStrip;
-- if (m_stripIndex != stripIndex) {
-- // Retrieve the strip holding current row. Please, observe that
-- // TIFF functions will return the strip buffer in the BOTTOM-UP orientation,
-- // no matter the internal tif's orientation storage
--
-- m_stripIndex = stripIndex;
--
-- if (TIFFIsTiled(m_tiff)) {
-- // Retrieve tiles size
-- uint32 tileWidth = 0, tileHeight = 0;
-- TIFFGetField(m_tiff, TIFFTAG_TILEWIDTH, &tileWidth);
-- TIFFGetField(m_tiff, TIFFTAG_TILELENGTH, &tileHeight);
-- assert(tileWidth > 0 && tileHeight > 0);
--
-- // Allocate a sufficient buffer to store a single tile
-- int tileSize = tileWidth * tileHeight;
-- std::unique_ptr<uint64[]> tile(new uint64[tileSize]);
--
-- int x = 0;
-- int y = tileHeight * m_stripIndex;
--
-- // In case it's the last tiles row, the tile size might exceed the image
-- // bounds
-- int lastTy = std::min((int)tileHeight, m_info.m_ly - y);
--
-- // Traverse the tiles row
-- while (x < m_info.m_lx) {
-- int ret = TIFFReadRGBATile_64(m_tiff, x, y, tile.get());
-- assert(ret);
--
-- int tileRowSize = std::min((int)tileWidth, m_info.m_lx - x) * pixelSize;
--
-- // Copy the tile rows in the corresponding output strip rows
-- for (int ty = 0; ty < lastTy; ++ty) {
-- memcpy(m_stripBuffer + (ty * m_rowLength + x) * pixelSize,
-- (UCHAR *)tile.get() + ty * tileWidth * pixelSize, tileRowSize);
-- }
--
-- x += tileWidth;
-- }
-- } else {
-- int y = m_rowsPerStrip * m_stripIndex;
-- int ok = TIFFReadRGBAStrip_64(m_tiff, y, (uint64 *)m_stripBuffer);
-- assert(ok);
-- }
-- }
--
-- uint16 orient = ORIENTATION_TOPLEFT;
-- TIFFGetField(m_tiff, TIFFTAG_ORIENTATION, &orient);
--
-- int r = m_rowsPerStrip - 1 - (m_row % m_rowsPerStrip);
-- switch (orient) // Pretty weak check for top/bottom orientation
-- {
-- case ORIENTATION_TOPLEFT:
-- case ORIENTATION_TOPRIGHT:
-- case ORIENTATION_LEFTTOP:
-- case ORIENTATION_RIGHTTOP:
-- // We have to invert the fixed BOTTOM-UP returned by TIFF functions - since
-- // this function is
-- // supposed to ignore orientation issues (which are managed outside).
--
-- // The last tiles row will actually start at the END OF THE IMAGE (not
-- // necessarily at
-- // m_rowsPerStrip multiples). So, we must adjust for that.
--
-- r = std::min(m_rowsPerStrip, m_info.m_ly - m_rowsPerStrip * m_stripIndex) -
-- 1 - (m_row % m_rowsPerStrip);
-- break;
--
-- case ORIENTATION_BOTRIGHT:
-- case ORIENTATION_BOTLEFT:
-- case ORIENTATION_RIGHTBOT:
-- case ORIENTATION_LEFTBOT:
-- r = m_row % m_rowsPerStrip;
-- break;
-- }
--
-- // Finally, copy the strip row to the output row buffer
-- TPixel64 *pix = (TPixel64 *)buffer;
-- USHORT *v = (USHORT *)(m_stripBuffer + r * stripRowSize);
--
-- pix += x0;
-- v += 4 * x0;
--
-- int width =
-- (x1 < x0) ? (m_info.m_lx - 1) / shrink + 1 : (x1 - x0) / shrink + 1;
--
-- for (int i = 0; i < width; i++) {
-- USHORT c = *v++;
-- pix->r = c;
-- c = *v++;
-- pix->g = c;
-- c = *v++;
-- pix->b = c;
-- c = *v++;
-- pix->m = c;
--
-- pix += shrink;
-- v += 4 * (shrink - 1);
-- }
--
-- m_row++;
--}
--
- //===============================================================
-
- void TifReader::readLine(char *buffer, int x0, int x1, int shrink) {
-- if (this->m_info.m_bitsPerSample == 16 &&
-- this->m_info.m_samplePerPixel >= 3) {
-- std::vector<short> app(4 * (m_info.m_lx));
-- readLine(&app[0], x0, x1, shrink);
--
-- TPixel64 *pixin = (TPixel64 *)&app[0];
--
-- TPixel32 *pixout = (TPixel32 *)buffer;
-- for (int j = 0; j < x0; j++) {
-- pixout++;
-- pixin++;
-- }
--
-- for (int i = 0; i < (x1 - x0) + 1; i++)
-- *pixout++ = PixelConverter<TPixel32>::from(*pixin++);
--
-- return;
-- }
--
- assert(shrink > 0);
-
- const int pixelSize = 4;
diff --git a/opentoonz-1.7.0-gethostbyname.patch b/opentoonz-1.7.0-gethostbyname.patch
deleted file mode 100644
index 306f59f..0000000
--- a/opentoonz-1.7.0-gethostbyname.patch
+++ /dev/null
@@ -1,256 +0,0 @@
-diff --git a/toonz/sources/toonzfarm/tfarm/tfarmtask.cpp b/toonz/sources/toonzfarm/tfarm/tfarmtask.cpp
-index 836266be..9f9cf8e2 100644
---- a/toonz/sources/toonzfarm/tfarm/tfarmtask.cpp
-+++ b/toonz/sources/toonzfarm/tfarm/tfarmtask.cpp
-@@ -22,13 +22,13 @@
- #elif defined(MACOSX)
- #include "tversion.h"
- using namespace TVER;
--#include <netdb.h> // gethostbyname
-+#include <netdb.h> // getaddrinfo
- #include <arpa/inet.h> // inet_ntoa
- #else
- // these were included for OSX, i'm not sure if they are required for linux or
- // not? leaving them in as linux was building successfully already. damies13 -
- // 2017-04-15.
--#include <netdb.h> // gethostbyname
-+#include <netdb.h> // getaddrinfo
- #include <arpa/inet.h> // inet_ntoa
- #endif
-
-@@ -488,6 +488,11 @@ QString TFarmTask::getCommandLinePrgName() const {
- QString TFarmTask::getCommandLineArguments() const {
- QString cmdline = "";
-
-+ struct addrinfo *ai = NULL;
-+ struct addrinfo hints;
-+ memset(&hints, 0, sizeof(struct addrinfo));
-+ hints.ai_family = AF_INET;
-+
- if (!m_taskFilePath.isEmpty())
- cmdline += " \"" +
- QString::fromStdWString(
-@@ -495,9 +500,12 @@ QString TFarmTask::getCommandLineArguments() const {
- "\"";
-
- if (m_callerMachineName != "") {
-- struct hostent *he = gethostbyname(m_callerMachineName.toLatin1());
-- if (he) {
-- char *ipAddress = inet_ntoa(*(struct in_addr *)*(he->h_addr_list));
-+ int suc = getaddrinfo(m_callerMachineName.toLatin1(), NULL, &hints, &ai);
-+ if (suc == 0) {
-+ struct sockaddr_in *ai_addr;
-+ ai_addr = (struct sockaddr_in *)ai->ai_addr;
-+
-+ char *ipAddress = inet_ntoa((struct in_addr)ai_addr->sin_addr);
- cmdline += " -tmsg " + QString::fromUtf8(ipAddress);
- }
- }
-diff --git a/toonz/sources/toonzfarm/tfarm/tserverproxy.cpp b/toonz/sources/toonzfarm/tfarm/tserverproxy.cpp
-index 035296c1..2ee4ba95 100644
---- a/toonz/sources/toonzfarm/tfarm/tserverproxy.cpp
-+++ b/toonz/sources/toonzfarm/tfarm/tserverproxy.cpp
-@@ -28,16 +28,23 @@ enum {
- //=============================================================================
-
- int askServer(string hostName, int portId, string question, string &answer) {
-- struct hostent *he = gethostbyname(hostName.c_str());
-- if (!he) return HOST_UNKNOWN;
--
-+ struct addrinfo *ai = NULL;
-+ struct addrinfo hints;
-+ memset(&hints, 0, sizeof(struct addrinfo));
-+ hints.ai_family = AF_INET;
-+
-+ int suc = getaddrinfo(hostName.c_str(), NULL, &hints, &ai);
-+ if (suc != 0) return HOST_UNKNOWN;
-+
- int socket_id = socket(AF_INET, SOCK_STREAM, 0);
--
-+ struct sockaddr_in *ai_addr;
-+ ai_addr = (struct sockaddr_in *)ai->ai_addr;
-+
- struct sockaddr_in addr;
- memset((char *)&addr, 0, sizeof addr);
-- addr.sin_family = he->h_addrtype;
-- addr.sin_port = htons(portId);
-- memcpy((char *)&(addr.sin_addr), he->h_addr, he->h_length);
-+ addr.sin_family = ai_addr->sin_family;
-+ addr.sin_port = htons(port);
-+ addr.sin_addr = ai_addr->sin_addr;
-
- int rcConnect = connect(socket_id, (struct sockaddr *)&(addr), sizeof addr);
- if (rcConnect == SOCKET_ERROR) return CONNECTION_FAILED;
-@@ -82,16 +89,23 @@ TServerProxy::~TServerProxy() {
- //-----------------------------------------------------------------------------
-
- bool TServerProxy::testConnection() const {
-- struct hostent *he = gethostbyname(m_hostName.c_str());
-- if (!he) return false;
--
-+ addrinfo *ai = NULL;
-+ struct addrinfo hints;
-+ memset(&hints, 0, sizeof(struct addrinfo));
-+ hints.ai_family = AF_INET;
-+
-+ int suc = getaddrinfo(m_hostName.c_str(), NULL, &hints, &ai);
-+ if (suc != 0) return false;
-+
- int socket_id = socket(AF_INET, SOCK_STREAM, 0);
-+ struct sockaddr_in *ai_addr;
-+ ai_addr = (struct sockaddr_in *)ai->ai_addr;
-
- struct sockaddr_in addr;
- memset((char *)&addr, 0, sizeof addr);
-- addr.sin_family = he->h_addrtype;
-- addr.sin_port = htons(m_portId);
-- memcpy((char *)&(addr.sin_addr), he->h_addr, he->h_length);
-+ addr.sin_family = ai_addr->sin_family;
-+ addr.sin_port = htons(port);
-+ addr.sin_addr = ai_addr->sin_addr;
-
- bool ret = (SOCKET_ERROR !=
- connect(socket_id, (struct sockaddr *)&(addr), sizeof addr));
-diff --git a/toonz/sources/toonzfarm/tfarm/ttcpipclient.cpp b/toonz/sources/toonzfarm/tfarm/ttcpipclient.cpp
-index f8a76450..89671de8 100644
---- a/toonz/sources/toonzfarm/tfarm/ttcpipclient.cpp
-+++ b/toonz/sources/toonzfarm/tfarm/ttcpipclient.cpp
-@@ -49,8 +49,13 @@ int TTcpIpClient::connect(const QString &hostName, const QString &addrStr,
- unsigned long ipAddr = inet_addr(addrStr.c_str());
- }
- */
-- struct hostent *he = gethostbyname(hostName.toUtf8());
-- if (!he) {
-+ struct addrinfo *ai = NULL;
-+ struct addrinfo hints;
-+ memset(&hints, 0, sizeof(struct addrinfo));
-+ hints.ai_family = AF_INET;
-+
-+ int suc = getaddrinfo(hostName.toUtf8(), NULL, &hints, &ai);
-+ if (suc != 0) {
- #ifdef _WIN32
- int err = WSAGetLastError();
- #else
-@@ -59,12 +64,14 @@ int TTcpIpClient::connect(const QString &hostName, const QString &addrStr,
- }
-
- int socket_id = socket(AF_INET, SOCK_STREAM, 0);
-+ struct sockaddr_in *ai_addr;
-+ ai_addr = (struct sockaddr_in *)ai->ai_addr;
-
- struct sockaddr_in addr;
- memset((char *)&addr, 0, sizeof addr);
-- addr.sin_family = he->h_addrtype;
-+ addr.sin_family = ai_addr->sin_family;
- addr.sin_port = htons(port);
-- memcpy((char *)&(addr.sin_addr), he->h_addr, he->h_length);
-+ addr.sin_addr = ai_addr->sin_addr;
-
- int rcConnect = ::connect(socket_id, (struct sockaddr *)&(addr), sizeof addr);
- if (rcConnect == SOCKET_ERROR) {
-diff --git a/toonz/sources/toonzfarm/tfarm/ttcpipserver.cpp b/toonz/sources/toonzfarm/tfarm/ttcpipserver.cpp
-index ac6df6ee..d76242f6 100644
---- a/toonz/sources/toonzfarm/tfarm/ttcpipserver.cpp
-+++ b/toonz/sources/toonzfarm/tfarm/ttcpipserver.cpp
-@@ -447,15 +447,21 @@ void TTcpIpServer::sendReply(int socket, const QString &reply) {
- int establish(unsigned short portnum, int &sock) {
- char myname[MAXHOSTNAME + 1];
- struct sockaddr_in sa;
-- struct hostent *hp;
-+ struct addrinfo *ai = NULL;
-+ struct addrinfo hints;
-+ memset(&hints, 0, sizeof(struct addrinfo));
-+ hints.ai_family = AF_INET;
-
- memset(&sa, 0, sizeof(struct sockaddr_in)); /* clear our address */
- gethostname(myname, MAXHOSTNAME); /* who are we? */
-- hp = gethostbyname(myname); /* get our address info */
-- if (hp == NULL) /* we don't exist !? */
-+ int suc = getaddrinfo(myname, NULL, &hints, &ai); /* get our address info */
-+ if (suc != 0) /* we don't exist !? */
- return (-1);
-
-- sa.sin_family = hp->h_addrtype; /* this is our host address */
-+ struct sockaddr_in *ai_addr;
-+ ai_addr = (struct sockaddr_in *)ai->ai_addr;
-+
-+ sa.sin_family = ai_addr->sin_family; /* this is our host address */
- sa.sin_port = htons(portnum); /* this is our port number */
- if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) /* create socket */
- {
-diff --git a/toonz/sources/toonzfarm/tfarmcontroller/tfarmcontroller_shutdown.cpp b/toonz/sources/toonzfarm/tfarmcontroller/tfarmcontroller_shutdown.cpp
-index 1e7005cc..32087d18 100644
---- a/toonz/sources/toonzfarm/tfarmcontroller/tfarmcontroller_shutdown.cpp
-+++ b/toonz/sources/toonzfarm/tfarmcontroller/tfarmcontroller_shutdown.cpp
-@@ -16,21 +16,28 @@
-
- int call_socket(char *hostname, unsigned short portnum) {
- struct sockaddr_in sa;
-- struct hostent *hp;
-+ struct addrinfo *ai = NULL;
-+ struct addrinfo hints;
-+ memset(&hints, 0, sizeof(struct addrinfo));
-+ hints.ai_family = AF_INET;
- int s;
-
-- if ((hp = gethostbyname(hostname)) == NULL) /* do we know the host's */
-+ int suc = getaddrinfo(hostname, NULL, &hints, &ai);
-+ if (suc != 0) /* do we know the host's */
- {
- errno = ECONNREFUSED; /* address? */
- return (-1); /* no */
- }
-
-+ struct sockaddr_in *ai_addr;
-+ ai_addr = (struct sockaddr_in *)ai->ai_addr;
-+
- memset(&sa, 0, sizeof(sa));
-- memcpy((char *)&sa.sin_addr, hp->h_addr, hp->h_length); /* set address */
-- sa.sin_family = hp->h_addrtype;
-+ sa.sin_addr = ai_addr->sin_addr;
-+ sa.sin_family = ai_addr->sin_family;
- sa.sin_port = htons((u_short)portnum);
-
-- if ((s = socket(hp->h_addrtype, SOCK_STREAM, 0)) < 0) /* get socket */
-+ if ((s = socket(ai_addr->sin_family, SOCK_STREAM, 0)) < 0) /* get socket */
- return (-1);
- if (connect(s, (struct sockaddr *)&sa, sizeof sa) < 0) /* connect */
- {
-diff --git a/toonz/sources/toonzfarm/tfarmserver/tfarmserver_shutdown.cpp b/toonz/sources/toonzfarm/tfarmserver/tfarmserver_shutdown.cpp
-index a3ff6fc6..7d22c760 100644
---- a/toonz/sources/toonzfarm/tfarmserver/tfarmserver_shutdown.cpp
-+++ b/toonz/sources/toonzfarm/tfarmserver/tfarmserver_shutdown.cpp
-@@ -16,21 +16,28 @@
-
- int call_socket(char *hostname, unsigned short portnum) {
- struct sockaddr_in sa;
-- struct hostent *hp;
-+ struct addrinfo *ai = NULL;
-+ struct addrinfo hints;
-+ memset(&hints, 0, sizeof(struct addrinfo));
-+ hints.ai_family = AF_INET;
- int s;
-
-- if ((hp = gethostbyname(hostname)) == NULL) /* do we know the host's */
-+ int suc = getaddrinfo(hostname, NULL, &hints, &ai);
-+ if (suc != 0) /* do we know the host's */
- {
- errno = ECONNREFUSED; /* address? */
- return (-1); /* no */
- }
-
-+ struct sockaddr_in *ai_addr;
-+ ai_addr = (struct sockaddr_in *)ai->ai_addr;
-+
- memset(&sa, 0, sizeof(sa));
-- memcpy((char *)&sa.sin_addr, hp->h_addr, hp->h_length); /* set address */
-- sa.sin_family = hp->h_addrtype;
-+ sa.sin_addr = ai_addr->sin_addr;
-+ sa.sin_family = ai_addr->sin_family;
- sa.sin_port = htons((u_short)portnum);
-
-- if ((s = socket(hp->h_addrtype, SOCK_STREAM, 0)) < 0) /* get socket */
-+ if ((s = socket(ai_addr->sin_family, SOCK_STREAM, 0)) < 0) /* get socket */
- return (-1);
- if (connect(s, (struct sockaddr *)&sa, sizeof sa) < 0) /* connect */
- {
diff --git a/opentoonz-1.7.0-install-path-fix.patch b/opentoonz-1.7.0-install-path-fix.patch
deleted file mode 100644
index 3286890..0000000
--- a/opentoonz-1.7.0-install-path-fix.patch
+++ /dev/null
@@ -1,74 +0,0 @@
-diff --git a/toonz/sources/toonz/CMakeLists.txt b/toonz/sources/toonz/CMakeLists.txt
-index d3aee491..dde69079 100644
---- a/toonz/sources/toonz/CMakeLists.txt
-+++ b/toonz/sources/toonz/CMakeLists.txt
-@@ -660,21 +660,20 @@ elseif(BUILD_ENV_UNIXLIKE AND NOT BUILD_TARGET_WIN)
- install(
- TARGETS
- OpenToonz
-- DESTINATION bin
-+ DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
- )
-
- # Shell script that copies files to the home directory as needed
- # and sets the library preload path.
- file(WRITE ${CMAKE_BINARY_DIR}/bin/opentoonz
- "#!/bin/sh
--OPENTOONZ_BASE=\$(dirname \"\$0\")/..
-
- if [ ! -d \$HOME/.config/OpenToonz ]; then
- mkdir -p \$HOME/.config/OpenToonz
- fi
-
- if [ ! -d \$HOME/.config/OpenToonz/stuff ]; then
-- cp -r \$OPENTOONZ_BASE/share/opentoonz/stuff \$HOME/.config/OpenToonz
-+ cp -r ${SHARE_INSTALL_PREFIX}/opentoonz/stuff \$HOME/.config/OpenToonz
- fi
-
- if [ ! -d \$HOME/.config/OpenToonz/stuff/projects/library ]; then
-@@ -701,9 +700,9 @@ TOONZSTUDIOPALETTE=\"\$HOME/.config/OpenToonz/stuff/studiopalette\"
- EOF
- fi
-
--export ${PRELOAD_VARIABLE}=\${OPENTOONZ_BASE}/lib/opentoonz:\${${PRELOAD_VARIABLE}}
-+export ${PRELOAD_VARIABLE}=${LIB_INSTALL_DIR}/opentoonz:\${${PRELOAD_VARIABLE}}
-
--exec \$OPENTOONZ_BASE/bin/OpenToonz \"\$@\"
-+exec ${CMAKE_INSTALL_PREFIX}/bin/OpenToonz \"\$@\"
- ")
- # only needed for executing without installing
- execute_process(COMMAND chmod +x ${CMAKE_BINARY_DIR}/bin/opentoonz)
-@@ -716,7 +715,7 @@ exec \$OPENTOONZ_BASE/bin/OpenToonz \"\$@\"
- "$<TARGET_FILE:tconverter>"
- "$<TARGET_FILE:tfarmcontroller>"
- "$<TARGET_FILE:tfarmserver>"
-- DESTINATION bin
-+ DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
- )
-
- if(LZODRIVER_FOUND)
-@@ -724,7 +723,7 @@ exec \$OPENTOONZ_BASE/bin/OpenToonz \"\$@\"
- PROGRAMS
- "$<TARGET_FILE:lzocompress>"
- "$<TARGET_FILE:lzodecompress>"
-- DESTINATION bin
-+ DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
- )
- endif()
-
-@@ -741,13 +740,13 @@ exec \$OPENTOONZ_BASE/bin/OpenToonz \"\$@\"
- "$<TARGET_FILE:tnztools>"
- "$<TARGET_FILE:tnzstdfx>"
- "$<TARGET_FILE:tfarm>"
-- DESTINATION lib/opentoonz
-+ DESTINATION ${LIB_INSTALL_DIR}/opentoonz
- )
-
- install(
- DIRECTORY
- ${CMAKE_SOURCE_DIR}/../../stuff
-- DESTINATION share/opentoonz
-+ DESTINATION ${SHARE_INSTALL_PREFIX}/opentoonz
- )
-
- endif()
diff --git a/opentoonz-1.7.0-toonzrle-rm.patch b/opentoonz-1.7.0-toonzrle-rm.patch
deleted file mode 100644
index b6fb05f..0000000
--- a/opentoonz-1.7.0-toonzrle-rm.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff --git a/toonz/sources/image/CMakeLists.txt b/toonz/sources/image/CMakeLists.txt
-index 87953ced..ccda91de 100644
---- a/toonz/sources/image/CMakeLists.txt
-+++ b/toonz/sources/image/CMakeLists.txt
-@@ -72,7 +72,8 @@ if(NOT BUILD_TARGET_BSD)
- tif/tiio_tif.cpp
- tzp/tiio_plt.cpp
- tzp/tiio_tzp.cpp
-- tzp/toonzrle.cpp
-+ # Removed since it requires libtiff internal API access.
-+ # tzp/toonzrle.cpp
- tzp/avl.c
- )
- endif()
diff --git a/opentoonz-1.7.0-tzp-tiffiop-fix.patch b/opentoonz-1.7.0-tzp-tiffiop-fix.patch
deleted file mode 100644
index b33c3e1..0000000
--- a/opentoonz-1.7.0-tzp-tiffiop-fix.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-diff --git a/toonz/sources/image/tzp/tiio_tzp.cpp b/toonz/sources/image/tzp/tiio_tzp.cpp
-index 080f9bdf..a22f9d0f 100644
---- a/toonz/sources/image/tzp/tiio_tzp.cpp
-+++ b/toonz/sources/image/tzp/tiio_tzp.cpp
-@@ -7,7 +7,7 @@
- #include "texception.h"
-
- #include "tiffio.h"
--#include "tiffiop.h"
-+// #include "tiffiop.h"
- // #include "tspecialstyleid.h"
- #include <set>
-
-@@ -225,8 +225,7 @@ void TzpReader::readLine(char *buffer, int x0, int x1, int shrink) {
- static std::set<int> table;
-
- /// per le tzp che vengono da Irix
-- bool bigEndian =
-- (m_tiff->tif_header.classic.tiff_magic == TIFF_BIGENDIAN);
-+ bool bigEndian = TIFFIsBigEndian(m_tiff);
-
- for (int i = 0; i < m_lx; i++) {
- unsigned short inPix = line[i];
-@@ -255,8 +254,7 @@ void TzpReader::readLine(char *buffer, int x0, int x1, int shrink) {
- static std::set<int> table;
-
- /// per le tzp che vengono da Irix
-- bool bigEndian =
-- (m_tiff->tif_header.classic.tiff_magic == TIFF_BIGENDIAN);
-+ bool bigEndian = TIFFIsBigEndian(m_tiff);
-
- for (int i = 0; i < m_lx; i++) {
- unsigned short inPix = line[i];
diff --git a/opentoonz-1.7.1-appdata.patch b/opentoonz-1.7.1-appdata.patch
deleted file mode 100644
index d3c3122..0000000
--- a/opentoonz-1.7.1-appdata.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff --git a/toonz/sources/xdg-data/io.github.OpenToonz.appdata.xml b/toonz/sources/xdg-data/io.github.OpenToonz.appdata.xml
-index 4f631a7e..7bfa1e39 100644
---- a/toonz/sources/xdg-data/io.github.OpenToonz.appdata.xml
-+++ b/toonz/sources/xdg-data/io.github.OpenToonz.appdata.xml
-@@ -18,6 +18,10 @@
- Dwango launched the OpenToonz project in cooperation
- with Digital Video and Studio Ghibli.
- </p>
-+ <p>
-+ This version was packaged for Fedora using the latest stable libraries
-+ available in the distribution, in exchange some features were disabled.
-+ </p>
- </description>
- <url type="homepage">https://opentoonz.github.io/e/</url>
- <url type="bugtracker">https://github.com/opentoonz/opentoonz/issues</url>
diff --git a/opentoonz-1.7.1-exr-fix.patch b/opentoonz-1.7.1-exr-fix.patch
deleted file mode 100644
index 8a47495..0000000
--- a/opentoonz-1.7.1-exr-fix.patch
+++ /dev/null
@@ -1,118 +0,0 @@
-diff --git a/toonz/sources/image/CMakeLists.txt b/toonz/sources/image/CMakeLists.txt
-index 87953ced..8c0b24fe 100644
---- a/toonz/sources/image/CMakeLists.txt
-+++ b/toonz/sources/image/CMakeLists.txt
-@@ -197,4 +197,6 @@ elseif(BUILD_ENV_UNIXLIKE)
- endif()
- endif()
-
-+set(EXTRA_LIBS ${EXTRA_LIBS} -ltinyexr)
-+
- target_link_libraries(image Qt5::Core Qt5::Gui Qt5::Network ${Z_LIB} ${GLUT_LIB} ${GL_LIB} ${JPEG_LIB} ${TIFF_LIB} ${PNG_LIB} ${EXTRA_LIBS})
-diff --git a/toonz/sources/image/exr/tinyexr_otmod.h b/toonz/sources/image/exr/tinyexr_otmod.h
-index ece31755..01a01786 100644
---- a/toonz/sources/image/exr/tinyexr_otmod.h
-+++ b/toonz/sources/image/exr/tinyexr_otmod.h
-@@ -1,7 +1,6 @@
- #ifndef TINYEXR_OTMOD_H_
- #define TINYEXR_OTMOD_H_
-
--#define TINYEXR_IMPLEMENTATION
- #include "tinyexr.h"
-
- /*
-@@ -76,6 +75,85 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- // End of OpenEXR license -------------------------------------------------
-
-+#ifndef TINYEXR_IMPLEMENTATION_DEFINED
-+
-+#include <cassert>
-+#include <cstdio>
-+#include <cstdlib>
-+#include <cstring>
-+
-+#include <algorithm>
-+#include <sstream>
-+#include <string>
-+#include <vector>
-+
-+namespace tinyexr {
-+
-+static const int kEXRVersionSize = 8;
-+
-+struct LayerChannel {
-+ explicit LayerChannel(size_t i, std::string n) : index(i), name(n) {}
-+ size_t index;
-+ std::string name;
-+};
-+
-+
-+static void SetErrorMessage(const std::string &msg, const char **err) {
-+ if (err) {
-+#ifdef _WIN32
-+ (*err) = _strdup(msg.c_str());
-+#else
-+ (*err) = strdup(msg.c_str());
-+#endif
-+ }
-+}
-+
-+static void GetLayers(const EXRHeader &exr_header,
-+ std::vector<std::string> &layer_names) {
-+ // Naive implementation
-+ // Group channels by layers
-+ // go over all channel names, split by periods
-+ // collect unique names
-+ layer_names.clear();
-+ for (int c = 0; c < exr_header.num_channels; c++) {
-+ std::string full_name(exr_header.channels[c].name);
-+ const size_t pos = full_name.find_last_of('.');
-+ if (pos != std::string::npos && pos != 0 && pos + 1 < full_name.size()) {
-+ full_name.erase(pos);
-+ if (std::find(layer_names.begin(), layer_names.end(), full_name) ==
-+ layer_names.end())
-+ layer_names.push_back(full_name);
-+ }
-+ }
-+}
-+
-+static void ChannelsInLayer(const EXRHeader &exr_header,
-+ const std::string layer_name,
-+ std::vector<LayerChannel> &channels) {
-+ channels.clear();
-+ for (int c = 0; c < exr_header.num_channels; c++) {
-+ std::string ch_name(exr_header.channels[c].name);
-+ if (layer_name.empty()) {
-+ const size_t pos = ch_name.find_last_of('.');
-+ if (pos != std::string::npos && pos < ch_name.size()) {
-+ ch_name = ch_name.substr(pos + 1);
-+ }
-+ } else {
-+ const size_t pos = ch_name.find(layer_name + '.');
-+ if (pos == std::string::npos) continue;
-+ if (pos == 0) {
-+ ch_name = ch_name.substr(layer_name.size() + 1);
-+ }
-+ }
-+ LayerChannel ch(size_t(c), ch_name);
-+ channels.push_back(ch);
-+ }
-+}
-+
-+}
-+
-+#endif
-+
- #ifdef __cplusplus
- extern "C" {
- #endif
-@@ -473,7 +551,7 @@ int SaveEXRImageToFileHandle(const EXRImage *exr_image,
- unsigned char *mem = NULL;
- size_t mem_size = SaveEXRImageToMemory(exr_image, exr_header, &mem, err);
- if (mem_size == 0) {
-- return TINYEXR_ERROR_SERIALZATION_FAILED;
-+ return TINYEXR_ERROR_SERIALIZATION_FAILED;
- }
-
- size_t written_size = 0;
diff --git a/opentoonz-1.7.1-funcptr-fix.patch b/opentoonz-1.7.1-funcptr-fix.patch
deleted file mode 100644
index 2aa40f4..0000000
--- a/opentoonz-1.7.1-funcptr-fix.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-diff --git a/toonz/sources/image/tzp/avl.h b/toonz/sources/image/tzp/avl.h
-index e48f9cd3..d7bf10b0 100644
---- a/toonz/sources/image/tzp/avl.h
-+++ b/toonz/sources/image/tzp/avl.h
-@@ -72,7 +72,7 @@ extern double Avl_Dummy[];
- #define AVL_DUP_USH (AVL_NODUP_USH | 1)
- #define AVL_DUP_CHR (AVL_NODUP_CHR | 1)
-
--#define AVL_AVLCMP (int (*)())0
-+#define AVL_AVLCMP (int (*)(void *, void *))0
-
- #define avl_tree_nodup(usrcmp) avl__tree(AVL_NODUP_MBR, (unsigned)0, (usrcmp))
- #define avl_tree_nodup_mbr(structure, member, usrcmp) \
-@@ -163,7 +163,7 @@ struct avl_path {
- typedef struct avl_tree {
- unsigned short keyinfo;
- unsigned short keyoffs;
-- int (*usrcmp)();
-+ int (*usrcmp)(void *, void *);
- long nodes;
- struct avl_node *root;
- struct avl_path *path;
-@@ -223,7 +223,7 @@ TNZAPI int avl_porting_problems();
-
- #else
-
--TNZAPI TREE *avl__tree(int treetype, unsigned keyoffs, int (*usrcmp)());
-+TNZAPI TREE *avl__tree(int treetype, unsigned keyoffs, int (*usrcmp)(void *, void *));
- TNZAPI TREE *avl_copy(TREE *tree);
-
- TNZAPI int avl_insert(TREE *tree, void *data);
-@@ -236,7 +236,7 @@ TNZAPI void *avl_locate_first(TREE *tree);
- TNZAPI void *avl_locate_last(TREE *tree);
- TNZAPI void *avl__remove(TREE *tree, long keyval);
-
--TNZAPI void avl__scan(TREE *tree, void (*usrfun)(), int back);
-+TNZAPI void avl__scan(TREE *tree, void (*usrfun)(void *), int back);
-
- TNZAPI void *avl_first(TREE *tree);
- TNZAPI void *avl_last(TREE *tree);
-@@ -247,7 +247,7 @@ TNZAPI void avl_stop(TREE *tree);
-
- TNZAPI void *avl__link(TREE *tree, unsigned ptroffs, int back);
-
--TNZAPI void avl_release(TREE *tree, void (*usrfun)());
-+TNZAPI void avl_release(TREE *tree, void (*usrfun)(void *));
- TNZAPI void avl_reset(TREE *tree);
- TNZAPI void avl_close(TREE *tree);
-
diff --git a/opentoonz-1.7.1-kissfft-fix.patch b/opentoonz-1.7.1-kissfft-fix.patch
deleted file mode 100644
index 2379bef..0000000
--- a/opentoonz-1.7.1-kissfft-fix.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-diff --git a/toonz/sources/stdfx/CMakeLists.txt b/toonz/sources/stdfx/CMakeLists.txt
-index 4de06ec8..c7af2c19 100644
---- a/toonz/sources/stdfx/CMakeLists.txt
-+++ b/toonz/sources/stdfx/CMakeLists.txt
-@@ -270,8 +270,8 @@ set(SOURCES
- iwa_noise1234.cpp
- iwa_pnperspectivefx.cpp
- iwa_soapbubblefx.cpp
-- ${SDKROOT}/kiss_fft130/kiss_fft.c
-- ${SDKROOT}/kiss_fft130/tools/kiss_fftnd.c
-+# ${SDKROOT}/kiss_fft130/kiss_fft.c
-+# ${SDKROOT}/kiss_fft130/tools/kiss_fftnd.c
- iwa_bokehfx.cpp
- iwa_timecodefx.cpp
- iwa_bokehreffx.cpp
-@@ -303,6 +303,7 @@ add_library(tnzstdfx SHARED ${HEADERS} ${SOURCES} ${OBJCSOURCES})
- add_definitions(
- -D_USRDLL
- -DTNZSTDFX_EXPORTS
-+ -Dkiss_fft_scalar=double
- )
-
- if(BUILD_ENV_APPLE)
-@@ -326,12 +327,13 @@ else()
- endif()
-
- include_directories(
-- ${SDKROOT}/kiss_fft130
-+# ${SDKROOT}/kiss_fft130
-+ /usr/include/kissfft/
- )
-
- _find_toonz_library(TNZLIBS "tnzcore;tnzbase;toonzlib")
-
--target_link_libraries(tnzstdfx Qt5::Core Qt5::Gui Qt5::OpenGL ${GL_LIB} ${GLEW_LIB} ${TNZLIBS} ${PTHREAD_LIBRARY})
-+target_link_libraries(tnzstdfx Qt5::Core Qt5::Gui Qt5::OpenGL ${GL_LIB} ${GLEW_LIB} ${TNZLIBS} ${PTHREAD_LIBRARY} kissfft-double)
-
- if(OpenCV_FOUND)
- target_link_libraries(tnzstdfx ${OpenCV_LIBS})
-diff --git a/toonz/sources/stdfx/iwa_bokeh_util.h b/toonz/sources/stdfx/iwa_bokeh_util.h
-index 5bb593c6..3e2735ee 100644
---- a/toonz/sources/stdfx/iwa_bokeh_util.h
-+++ b/toonz/sources/stdfx/iwa_bokeh_util.h
-@@ -6,7 +6,7 @@
- #include "tgeometry.h"
- #include "traster.h"
- #include "kiss_fft.h"
--#include "tools/kiss_fftnd.h"
-+#include "kiss_fftnd.h"
- #include "ttile.h"
- #include "stdfx.h"
- #include "tfxparam.h"
-diff --git a/toonz/sources/stdfx/iwa_glarefx.h b/toonz/sources/stdfx/iwa_glarefx.h
-index 49873a4d..be82b7bb 100644
---- a/toonz/sources/stdfx/iwa_glarefx.h
-+++ b/toonz/sources/stdfx/iwa_glarefx.h
-@@ -15,7 +15,7 @@ Iwa_GlareFx
- #include <QList>
- #include <QThread>
-
--#include "tools/kiss_fftnd.h"
-+#include "kiss_fftnd.h"
-
- const int LAYER_NUM = 5;
-
diff --git a/opentoonz.spec b/opentoonz.spec
index e7e7250..9bc2518 100644
--- a/opentoonz.spec
+++ b/opentoonz.spec
@@ -1,64 +1,62 @@
%undefine __cmake_in_source_build
%define _vpath_srcdir toonz/sources
-Name: opentoonz
-Version: 1.7.1
-Release: 21%{?dist}
-Summary: 2D animation software
+Name: opentoonz
+Version: 1.8.0
+Release: %autorelease
+Summary: 2D animation software
-# Automatically converted from old format: BSD - review is highly recommended.
-License: LicenseRef-Callaway-BSD
-URL: https://opentoonz.github.io/
-Source0: https://github.com/opentoonz/opentoonz/archive/refs/tags/v%{version}.tar.gz
+License: BSD-3-Clause
+URL: https://opentoonz.github.io/
+Source0: https://github.com/opentoonz/opentoonz/archive/refs/tags/v%{version}.tar.gz
-Patch0: opentoonz-1.5.0-lzo-fix.patch
+Patch: 0001-lzo-fix.patch
# https://github.com/opentoonz/opentoonz/issues/4199
-Patch1: opentoonz-1.5.0-tiff-fix.patch
-Patch2: opentoonz-1.7.1-exr-fix.patch
+Patch: 0002-tiff-fix.patch
+Patch: 0003-exr-fix.patch
# https://github.com/opentoonz/opentoonz/pull/4239
-Patch3: opentoonz-1.7.0-gethostbyname.patch
-Patch4: opentoonz-1.7.0-install-path-fix.patch
-Patch5: opentoonz-1.7.1-kissfft-fix.patch
-Patch6: opentoonz-1.7.0-toonzrle-rm.patch
-Patch7: opentoonz-1.7.0-tzp-tiffiop-fix.patch
-Patch8: opentoonz-1.7.1-appdata.patch
-Patch9: opentoonz-1.7.1-funcptr-fix.patch
-
-BuildRequires: flexiblas-devel
-BuildRequires: boost-devel
-BuildRequires: cmake
-BuildRequires: desktop-file-utils
-BuildRequires: freeglut-devel
-BuildRequires: freetype-devel
-BuildRequires: gcc
-BuildRequires: gcc-c++
-BuildRequires: glew-devel
-BuildRequires: kiss-fft-devel
-BuildRequires: libappstream-glib
-BuildRequires: libjpeg-turbo-devel
-BuildRequires: libmypaint-devel
-BuildRequires: libpng-devel
-BuildRequires: libtiff-devel
-BuildRequires: pkgconfig(libusb-1.0)
-BuildRequires: lz4-devel
-BuildRequires: lzo-devel
-BuildRequires: opencv-devel
-BuildRequires: qt5-qtbase-devel
-BuildRequires: qt5-qtmultimedia-devel
-BuildRequires: qt5-qtscript-devel
-BuildRequires: qt5-qtserialport-devel
-BuildRequires: qt5-qtsvg-devel
-BuildRequires: qt5-qttools-devel
-BuildRequires: SuperLU-devel
-BuildRequires: tinyexr-devel
-BuildRequires: turbojpeg-devel
-BuildRequires: xz-devel
-
-BuildRequires: qt5-qttools-static
-
-Requires: opencv
-Requires: hicolor-icon-theme
-Requires: %{name}-data = %{version}-%{release}
+Patch: 0004-gethostbyname.patch
+Patch: 0005-install-path-fix.patch
+Patch: 0006-kissfft-fix.patch
+Patch: 0007-toonzrle-rm.patch
+Patch: 0008-tzp-tiffiop-fix.patch
+Patch: 0009-appdata.patch
+
+BuildRequires: flexiblas-devel
+BuildRequires: boost-devel
+BuildRequires: cmake
+BuildRequires: desktop-file-utils
+BuildRequires: freeglut-devel
+BuildRequires: freetype-devel
+BuildRequires: gcc
+BuildRequires: gcc-c++
+BuildRequires: glew-devel
+BuildRequires: kiss-fft-devel
+BuildRequires: libappstream-glib
+BuildRequires: libjpeg-turbo-devel
+BuildRequires: libmypaint-devel
+BuildRequires: libpng-devel
+BuildRequires: libtiff-devel
+BuildRequires: pkgconfig(libusb-1.0)
+BuildRequires: lz4-devel
+BuildRequires: lzo-devel
+BuildRequires: opencv-devel
+BuildRequires: qt5-qtbase-devel
+BuildRequires: qt5-qtmultimedia-devel
+BuildRequires: qt5-qtscript-devel
+BuildRequires: qt5-qtserialport-devel
+BuildRequires: qt5-qtsvg-devel
+BuildRequires: qt5-qttools-devel
+BuildRequires: SuperLU-devel
+BuildRequires: tinyexr-devel
+BuildRequires: turbojpeg-devel
+BuildRequires: xz-devel
+
+BuildRequires: qt5-qttools-static
+
+Requires: opencv
+Requires: hicolor-icon-theme
+Requires: %{name}-data = %{version}-%{release}
%description
OpenToonz is a 2D animation software published by DWANGO. It is based on
@@ -139,121 +137,4 @@ appstream-util validate-relax --nonet \
%changelog
-* Thu Jul 16 2026 Fedora Release Engineering <releng@fedoraproject.org> - 1.7.1-21
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild
-
-* Thu Jan 29 2026 Nicolas Chauvet <kwizart@gmail.com> - 1.7.1-20
-- Rebuilt for OpenCV 4.13
-
-* Fri Jan 16 2026 Fedora Release Engineering <releng@fedoraproject.org> - 1.7.1-19
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild
-
-* Wed Dec 10 2025 Nicolas Chauvet <kwizart@gmail.com> - 1.7.1-18
-- Rebuilt for OpenCV-4.12
-
-* Thu Jul 24 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.7.1-17
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
-
-* Tue Feb 04 2025 Sérgio Basto <sergio@serjux.com> - 1.7.1-16
-- Rebuild for opencv-4.11.0
-
-* Mon Feb 3 2025 Diego Herrera <dherrera@redhat.com> 1.7.1-15
-- Fix ambiguosly defined function pointers
-
-* Fri Jan 17 2025 Fedora Release Engineering <releng@fedoraproject.org> - 1.7.1-14
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
-
-* Sun Sep 08 2024 Antonio Trande <sagitter@fedoraproject.org> 1.7.1-13
-- Rebuild for SuperLU-7.0.0
-
-* Mon Sep 02 2024 Miroslav Suchý <msuchy@redhat.com> - 1.7.1-12
-- convert license to SPDX
-
-* Thu Jul 25 2024 Sérgio Basto <sergio@serjux.com> - 1.7.1-11
-- Rebuild for opencv 4.10.0
-
-* Thu Jul 18 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.7.1-10
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
-
-* Tue Feb 06 2024 František Zatloukal <fzatlouk@redhat.com> - 1.7.1-9
-- Rebuilt for turbojpeg 3.0.2
-
-* Mon Feb 05 2024 Sérgio Basto <sergio@serjux.com> - 1.7.1-8
-- Rebuild for opencv 4.9.0
-
-* Thu Feb 1 2024 Diego Herrera <dherrera@redhat.com> 1.7.1-7
-- Fix for kissfft-v131.1.0
-- Fix for tinyexr-v1.0.7
-
-* Thu Jan 25 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.7.1-6
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
-
-* Sun Jan 21 2024 Fedora Release Engineering <releng@fedoraproject.org> - 1.7.1-5
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
-
-* Mon Aug 07 2023 Sérgio Basto <sergio@serjux.com> - 1.7.1-4
-- Rebuild for opencv 4.8.0
-
-* Thu Jul 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.7.1-3
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
-
-* Sat Jul 15 2023 Antonio Trande <sagitter@fedoraproject.org> 1.7.1-2
-- Rebuild for SuperLU-6.0.0
-
-* Tue Jun 20 2023 Diego Herrera <dherrera@redhat.com> 1.7.1-1
-- Updated to 1.7.1
-- Update package description
-
-* Wed May 10 2023 Diego Herrera <dherrera@redhat.com> 1.7.0-1
-- Updated to 1.7.0
-
-* Mon Feb 6 2023 Diego Herrera <dherrera@redhat.com> 1.6.0-11
-- Fix size_t redefinition issue on tgc::hash class.
-
-* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.0-10
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
-
-* Mon Jan 16 2023 Sérgio Basto <sergio@serjux.com> - 1.6.0-9
-- Rebuild for opencv 4.7.0
-
-* Wed Nov 2 2022 Diego Herrera <dherrera@redhat.com> 1.6.0-8
-- Expose static library dependency
-
-* Thu Aug 25 2022 Diego Herrera <dherrera@redhat.com> 1.6.0-7
-- Make exr patch compatible with upstream
-
-* Thu Aug 25 2022 Diego Herrera <dherrera@redhat.com> 1.6.0-6
-- Fix exr linking problems
-
-* Thu Aug 25 2022 Iñaki Úcar <iucar@fedoraproject.org> - 1.6.0-5
-- Adhere to BLAS/LAPACK guidelines
-
-* Fri Jul 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.6.0-4
-- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
-
-* Tue Jun 21 2022 Sérgio Basto <sergio@serjux.com> - 1.6.0-3
-- Rebuilt for opencv 4.6.0
-
-* Fri Apr 29 2022 Diego Herrera <dherrera@redhat.com> 1.6.0-2
-- Disable exr format because of linking problems
-
-* Mon Apr 18 2022 Diego Herrera <dherrera@redhat.com> 1.6.0-1
-- Updated to 1.6.0
-
-* Wed Mar 16 2022 Diego Herrera <dherrera@redhat.com> 1.5.0-5
-- Fixed build problems with cmake
-- libusb retired from rawhide
-
-* Sat Feb 5 2022 Diego Herrera <dherrera@redhat.com> 1.5.0-4
-- Restored metainfo
-
-* Fri Feb 4 2022 Diego Herrera <dherrera@redhat.com> 1.5.0-3
-- Added version macro to the source url
-
-* Fri Feb 4 2022 Diego Herrera <dherrera@redhat.com> 1.5.0-2
-- Added cmake macros
-- Used desktop-file-validate instead of desktop-file-install
-- Cleaned up requirements
-
-* Wed Feb 2 2022 Diego Herrera <dherrera@redhat.com> 1.5.0-1
-- First commit
+%autochangelog
diff --git a/sources b/sources
index 7d07b6d..82267f7 100644
--- a/sources
+++ b/sources
@@ -1,2 +1 @@
-SHA512 (v1.7.0.tar.gz) = 1240009b7d0cfe011566e384f6c47a0c8cf5bae2cacc708aef8e7d2d7e512a39194a04fb38a443581edbd246a7b276234929d8d661ff0355955bd137981b4cca
-SHA512 (v1.7.1.tar.gz) = e33df315b945510c2dbc5aef34b86fa20db571a3196888a1940f3dbb4c5340b8b57cd659abee456e49fc8f4f3d10b6ecfeccc7770ec3193ee3f5e60dad6fe5cf
+SHA512 (v1.8.0.tar.gz) = 3bd98a50aa7c96d73b3681259273ff89b8d1b71bde3792c19ccafcef1b2beb32f196560e51f49331809e70c6474cf97924b40bc32f7c485dc6a9d624c7f97354
reply other threads:[~2026-07-30 18:31 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=178543628962.1.2605255701096878051.rpms-opentoonz-63f7647fbc74@fedoraproject.org \
--to=dherrera@redhat.com \
--cc=git-commits@fedoraproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox