public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/opentoonz] rawhide: Update to 1.8.0
@ 2026-07-30 18:31 Diego Herrera
  0 siblings, 0 replies; only message in thread
From: Diego Herrera @ 2026-07-30 18:31 UTC (permalink / raw)
  To: git-commits

            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

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-07-30 18:31 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-07-30 18:31 [rpms/opentoonz] rawhide: Update to 1.8.0 Diego Herrera

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox