rawtherapee: 5.8 -> 5.9

This commit is contained in:
Weijia Wang 2023-02-09 18:39:27 +01:00
parent 59ec2e613f
commit 260d6e52da
3 changed files with 62 additions and 384 deletions

View File

@ -1,29 +1,66 @@
{ lib, stdenv, fetchFromGitHub, pkg-config, cmake, pixman, libpthreadstubs, gtkmm3, libXau
, libXdmcp, lcms2, libiptcdata, libcanberra-gtk3, fftw, expat, pcre, libsigcxx, wrapGAppsHook
, lensfun, librsvg, gtk-mac-integration
{ lib
, stdenv
, fetchFromGitHub
, cmake
, pkg-config
, wrapGAppsHook
, makeWrapper
, pixman
, libpthreadstubs
, gtkmm3
, libXau
, libXdmcp
, lcms2
, libiptcdata
, fftw
, expat
, pcre
, libsigcxx
, lensfun
, librsvg
, libcanberra-gtk3
, gtk-mac-integration
}:
stdenv.mkDerivation rec {
version = "5.8";
pname = "rawtherapee";
version = "5.9";
src = fetchFromGitHub {
owner = "Beep6581";
repo = "RawTherapee";
rev = version;
sha256 = "0d644s4grfia6f3k6y0byd5pwajr12kai2kc280yxi8v3w1b12ik";
hash = "sha256-kdctfjss/DHEcaSDPXcmT20wXTwkI8moRX/i/5wT5Hg=";
};
nativeBuildInputs = [ cmake pkg-config wrapGAppsHook ];
postPatch = ''
echo "set(HG_VERSION ${version})" > ReleaseInfo.cmake
substituteInPlace tools/osx/Info.plist.in rtgui/config.h.in \
--replace "/Applications" "${placeholder "out"}/Applications"
'';
# This patch is upstream; remove it in 5.9.
patches = [ ./fix-6324.patch ]
# Disable upstream-enforced bundling on macOS.
++ lib.optionals stdenv.isDarwin [ ./do-not-bundle.patch ];
nativeBuildInputs = [
cmake
pkg-config
wrapGAppsHook
] ++ lib.optionals stdenv.isDarwin [
makeWrapper
];
buildInputs = [
pixman libpthreadstubs gtkmm3 libXau libXdmcp
lcms2 libiptcdata fftw expat pcre libsigcxx lensfun librsvg
pixman
libpthreadstubs
gtkmm3
libXau
libXdmcp
lcms2
libiptcdata
fftw
expat
pcre
libsigcxx
lensfun
librsvg
] ++ lib.optionals stdenv.isLinux [
libcanberra-gtk3
] ++ lib.optionals stdenv.isDarwin [
@ -33,12 +70,22 @@ stdenv.mkDerivation rec {
cmakeFlags = [
"-DPROC_TARGET_NUMBER=2"
"-DCACHE_NAME_SUFFIX=\"\""
] ++ lib.optionals stdenv.isDarwin [
"-DCMAKE_OSX_DEPLOYMENT_TARGET=${stdenv.hostPlatform.darwinMinVersion}"
];
CMAKE_CXX_FLAGS = "-std=c++11 -Wno-deprecated-declarations -Wno-unused-result";
CMAKE_CXX_FLAGS = toString [
"-std=c++11"
"-Wno-deprecated-declarations"
"-Wno-unused-result"
];
postUnpack = ''
echo "set(HG_VERSION $version)" > $sourceRoot/ReleaseInfo.cmake
postInstall = lib.optionalString stdenv.isDarwin ''
mkdir -p $out/Applications/RawTherapee.app $out/bin
cp -R Release $out/Applications/RawTherapee.app/Contents
for f in $out/Applications/RawTherapee.app/Contents/MacOS/*; do
makeWrapper $f $out/bin/$(basename $f)
done
'';
meta = {

View File

@ -1,13 +0,0 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0a55ca6d5..68c059aa5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -233,6 +233,6 @@ if(WIN32 OR APPLE)
endif()
- set(BUILD_BUNDLE ON FORCE)
+ set(BUILD_BUNDLE OFF)
endif()
if(NOT DEFINED BUNDLE_BASE_INSTALL_DIR)
- if(APPLE)
+ if(FALSE)

View File

@ -1,356 +0,0 @@
See:
https://github.com/Beep6581/RawTherapee/issues/6324
https://github.com/Beep6581/RawTherapee/commit/2e0137d54243eb729d4a5f939c4320ec8f8f415d
diff --git a/rtengine/canon_cr3_decoder.cc b/rtengine/canon_cr3_decoder.cc
index 6274154cb..98c743dad 100644
--- a/rtengine/canon_cr3_decoder.cc
+++ b/rtengine/canon_cr3_decoder.cc
@@ -662,7 +662,7 @@ std::uint32_t _byteswap_ulong(std::uint32_t x)
#endif
struct LibRaw_abstract_datastream {
- IMFILE* ifp;
+ rtengine::IMFILE* ifp;
void lock()
{
diff --git a/rtengine/dcraw.cc b/rtengine/dcraw.cc
index 812f122b3..5da696af2 100644
--- a/rtengine/dcraw.cc
+++ b/rtengine/dcraw.cc
@@ -2025,7 +2025,7 @@ void CLASS phase_one_load_raw_c()
#endif
{
int len[2], pred[2];
- IMFILE ifpthr = *ifp;
+ rtengine::IMFILE ifpthr = *ifp;
ifpthr.plistener = nullptr;
#ifdef _OPENMP
@@ -3380,7 +3380,7 @@ void CLASS sony_arw2_load_raw()
{
uchar *data = new (std::nothrow) uchar[raw_width + 1];
merror(data, "sony_arw2_load_raw()");
- IMFILE ifpthr = *ifp;
+ rtengine::IMFILE ifpthr = *ifp;
int pos = ifpthr.pos;
ushort pix[16];
@@ -6394,7 +6394,7 @@ int CLASS parse_tiff_ifd (int base)
unsigned sony_curve[] = { 0,0,0,0,0,4095 };
unsigned *buf, sony_offset=0, sony_length=0, sony_key=0;
struct jhead jh;
-/*RT*/ IMFILE *sfp;
+/*RT*/ rtengine::IMFILE *sfp;
/*RT*/ int pana_raw = 0;
if (tiff_nifds >= sizeof tiff_ifd / sizeof tiff_ifd[0])
@@ -6958,7 +6958,7 @@ it under the terms of the one of two licenses as you choose:
fread (buf, sony_length, 1, ifp);
sony_decrypt (buf, sony_length/4, 1, sony_key);
sfp = ifp;
-/*RT*/ ifp = fopen (buf, sony_length);
+/*RT*/ ifp = rtengine::fopen (buf, sony_length);
// if ((ifp = tmpfile())) {
// fwrite (buf, sony_length, 1, ifp);
// fseek (ifp, 0, SEEK_SET);
@@ -7264,7 +7264,7 @@ void CLASS parse_external_jpeg()
{
const char *file, *ext;
char *jname, *jfile, *jext;
-/*RT*/ IMFILE *save=ifp;
+/*RT*/ rtengine::IMFILE *save=ifp;
ext = strrchr (ifname, '.');
file = strrchr (ifname, '/');
@@ -7292,7 +7292,7 @@ void CLASS parse_external_jpeg()
*jext = '0';
}
if (strcmp (jname, ifname)) {
-/*RT*/ if ((ifp = fopen (jname))) {
+/*RT*/ if ((ifp = rtengine::fopen (jname))) {
// if ((ifp = fopen (jname, "rb"))) {
if (verbose)
fprintf (stderr,_("Reading metadata from %s ...\n"), jname);
diff --git a/rtengine/dcraw.h b/rtengine/dcraw.h
index 89c1fcaff..f25157088 100644
--- a/rtengine/dcraw.h
+++ b/rtengine/dcraw.h
@@ -73,7 +73,7 @@ public:
protected:
int exif_base, ciff_base, ciff_len;
- IMFILE *ifp;
+ rtengine::IMFILE *ifp;
FILE *ofp;
short order;
const char *ifname;
@@ -125,7 +125,7 @@ protected:
int cur_buf_size; // buffer size
uchar *cur_buf; // currently read block
int fillbytes; // Counter to add extra byte for block size N*16
- IMFILE *input;
+ rtengine::IMFILE *input;
struct int_pair grad_even[3][41]; // tables of gradients
struct int_pair grad_odd[3][41];
ushort *linealloc;
@@ -278,7 +278,7 @@ void parse_redcine();
class getbithuff_t
{
public:
- getbithuff_t(DCraw *p,IMFILE *&i, unsigned &z):parent(p),bitbuf(0),vbits(0),reset(0),ifp(i),zero_after_ff(z){}
+ getbithuff_t(DCraw *p,rtengine::IMFILE *&i, unsigned &z):parent(p),bitbuf(0),vbits(0),reset(0),ifp(i),zero_after_ff(z){}
unsigned operator()(int nbits, ushort *huff);
private:
@@ -288,7 +288,7 @@ private:
DCraw *parent;
unsigned bitbuf;
int vbits, reset;
- IMFILE *&ifp;
+ rtengine::IMFILE *&ifp;
unsigned &zero_after_ff;
};
getbithuff_t getbithuff;
@@ -296,7 +296,7 @@ getbithuff_t getbithuff;
class nikbithuff_t
{
public:
- explicit nikbithuff_t(IMFILE *&i):bitbuf(0),errors(0),vbits(0),ifp(i){}
+ explicit nikbithuff_t(rtengine::IMFILE *&i):bitbuf(0),errors(0),vbits(0),ifp(i){}
void operator()() {bitbuf = vbits = 0;};
unsigned operator()(int nbits, ushort *huff);
unsigned errorCount() { return errors; }
@@ -309,7 +309,7 @@ private:
}
unsigned bitbuf, errors;
int vbits;
- IMFILE *&ifp;
+ rtengine::IMFILE *&ifp;
};
nikbithuff_t nikbithuff;
@@ -378,7 +378,7 @@ void parse_qt (int end);
// ph1_bithuff(int nbits, ushort *huff);
class ph1_bithuff_t {
public:
- ph1_bithuff_t(DCraw *p, IMFILE *i, short &o):order(o),ifp(i),bitbuf(0),vbits(0){}
+ ph1_bithuff_t(DCraw *p, rtengine::IMFILE *i, short &o):order(o),ifp(i),bitbuf(0),vbits(0){}
unsigned operator()(int nbits, ushort *huff);
unsigned operator()(int nbits);
unsigned operator()();
@@ -412,7 +412,7 @@ private:
}
short ℴ
- IMFILE* const ifp;
+ rtengine::IMFILE* const ifp;
UINT64 bitbuf;
int vbits;
};
@@ -430,11 +430,11 @@ void nokia_load_raw();
class pana_bits_t{
public:
- pana_bits_t(IMFILE *i, unsigned &u, unsigned enc):
+ pana_bits_t(rtengine::IMFILE *i, unsigned &u, unsigned enc):
ifp(i), load_flags(u), vbits(0), encoding(enc) {}
unsigned operator()(int nbits, unsigned *bytes=nullptr);
private:
- IMFILE *ifp;
+ rtengine::IMFILE *ifp;
unsigned &load_flags;
uchar buf[0x4000];
int vbits;
diff --git a/rtengine/dfmanager.cc b/rtengine/dfmanager.cc
index 1fb1d2e1b..951df2248 100644
--- a/rtengine/dfmanager.cc
+++ b/rtengine/dfmanager.cc
@@ -540,7 +540,7 @@ std::vector<badPix> *DFManager::getHotPixels ( const std::string &mak, const std
int DFManager::scanBadPixelsFile( Glib::ustring filename )
{
- FILE *file = fopen( filename.c_str(), "r" );
+ FILE *file = ::fopen( filename.c_str(), "r" );
if( !file ) {
return false;
diff --git a/rtengine/myfile.cc b/rtengine/myfile.cc
index 842766dcf..2321d18bb 100644
--- a/rtengine/myfile.cc
+++ b/rtengine/myfile.cc
@@ -70,7 +70,7 @@ int munmap(void *start, size_t length)
#ifdef MYFILE_MMAP
-IMFILE* fopen (const char* fname)
+rtengine::IMFILE* rtengine::fopen (const char* fname)
{
int fd;
@@ -123,13 +123,13 @@ IMFILE* fopen (const char* fname)
return mf;
}
-IMFILE* gfopen (const char* fname)
+rtengine::IMFILE* rtengine::gfopen (const char* fname)
{
return fopen(fname);
}
#else
-IMFILE* fopen (const char* fname)
+rtengine::IMFILE* rtengine::fopen (const char* fname)
{
FILE* f = g_fopen (fname, "rb");
@@ -152,7 +152,7 @@ IMFILE* fopen (const char* fname)
return mf;
}
-IMFILE* gfopen (const char* fname)
+rtengine::IMFILE* rtengine::gfopen (const char* fname)
{
FILE* f = g_fopen (fname, "rb");
@@ -176,7 +176,7 @@ IMFILE* gfopen (const char* fname)
}
#endif //MYFILE_MMAP
-IMFILE* fopen (unsigned* buf, int size)
+rtengine::IMFILE* rtengine::fopen (unsigned* buf, int size)
{
IMFILE* mf = new IMFILE;
@@ -190,7 +190,7 @@ IMFILE* fopen (unsigned* buf, int size)
return mf;
}
-void fclose (IMFILE* f)
+void rtengine::fclose (IMFILE* f)
{
#ifdef MYFILE_MMAP
@@ -207,7 +207,7 @@ void fclose (IMFILE* f)
delete f;
}
-int fscanf (IMFILE* f, const char* s ...)
+int rtengine::fscanf (IMFILE* f, const char* s ...)
{
// fscanf not easily wrapped since we have no terminating \0 at end
// of file data and vsscanf() won't tell us how many characters that
@@ -253,7 +253,7 @@ int fscanf (IMFILE* f, const char* s ...)
}
-char* fgets (char* s, int n, IMFILE* f)
+char* rtengine::fgets (char* s, int n, IMFILE* f)
{
if (f->pos >= f->size) {
@@ -270,7 +270,7 @@ char* fgets (char* s, int n, IMFILE* f)
return s;
}
-void imfile_set_plistener(IMFILE *f, rtengine::ProgressListener *plistener, double progress_range)
+void rtengine::imfile_set_plistener(IMFILE *f, rtengine::ProgressListener *plistener, double progress_range)
{
f->plistener = plistener;
f->progress_range = progress_range;
@@ -278,7 +278,7 @@ void imfile_set_plistener(IMFILE *f, rtengine::ProgressListener *plistener, doub
f->progress_current = 0;
}
-void imfile_update_progress(IMFILE *f)
+void rtengine::imfile_update_progress(IMFILE *f)
{
if (!f->plistener || f->progress_current < f->progress_next) {
return;
diff --git a/rtengine/myfile.h b/rtengine/myfile.h
index 423edea9a..c655696e6 100644
--- a/rtengine/myfile.h
+++ b/rtengine/myfile.h
@@ -30,8 +30,6 @@ namespace rtengine
class ProgressListener;
-}
-
struct IMFILE {
int fd;
ssize_t pos;
@@ -141,3 +139,5 @@ inline unsigned char* fdata(int offset, IMFILE* f)
int fscanf (IMFILE* f, const char* s ...);
char* fgets (char* s, int n, IMFILE* f);
+
+}
diff --git a/rtengine/rtthumbnail.cc b/rtengine/rtthumbnail.cc
index 9da601e2a..097b9e711 100644
--- a/rtengine/rtthumbnail.cc
+++ b/rtengine/rtthumbnail.cc
@@ -1922,7 +1922,7 @@ bool Thumbnail::writeImage (const Glib::ustring& fname)
Glib::ustring fullFName = fname + ".rtti";
- FILE* f = g_fopen (fullFName.c_str (), "wb");
+ FILE* f = ::g_fopen (fullFName.c_str (), "wb");
if (!f) {
return false;
@@ -1965,7 +1965,7 @@ bool Thumbnail::readImage (const Glib::ustring& fname)
return false;
}
- FILE* f = g_fopen(fullFName.c_str (), "rb");
+ FILE* f = ::g_fopen(fullFName.c_str (), "rb");
if (!f) {
return false;
@@ -2191,7 +2191,7 @@ bool Thumbnail::writeData (const Glib::ustring& fname)
return false;
}
- FILE *f = g_fopen (fname.c_str (), "wt");
+ FILE *f = ::g_fopen (fname.c_str (), "wt");
if (!f) {
if (settings->verbose) {
@@ -2214,7 +2214,7 @@ bool Thumbnail::readEmbProfile (const Glib::ustring& fname)
embProfile = nullptr;
embProfileLength = 0;
- FILE* f = g_fopen (fname.c_str (), "rb");
+ FILE* f = ::g_fopen (fname.c_str (), "rb");
if (f) {
if (!fseek (f, 0, SEEK_END)) {
@@ -2242,7 +2242,7 @@ bool Thumbnail::writeEmbProfile (const Glib::ustring& fname)
{
if (embProfileData) {
- FILE* f = g_fopen (fname.c_str (), "wb");
+ FILE* f = ::g_fopen (fname.c_str (), "wb");
if (f) {
fwrite (embProfileData, 1, embProfileLength, f);
@@ -2257,7 +2257,7 @@ bool Thumbnail::writeEmbProfile (const Glib::ustring& fname)
bool Thumbnail::readAEHistogram (const Glib::ustring& fname)
{
- FILE* f = g_fopen(fname.c_str(), "rb");
+ FILE* f = ::g_fopen(fname.c_str(), "rb");
if (!f) {
aeHistogram.reset();
@@ -2280,7 +2280,7 @@ bool Thumbnail::writeAEHistogram (const Glib::ustring& fname)
{
if (aeHistogram) {
- FILE* f = g_fopen (fname.c_str (), "wb");
+ FILE* f = ::g_fopen (fname.c_str (), "wb");
if (f) {
fwrite (&aeHistogram[0], 1, (65536 >> aeHistCompression)*sizeof (aeHistogram[0]), f);