diff --git a/graphics/fotoxx/Makefile b/graphics/fotoxx/Makefile index 52f71293f067..a646a6eb62ea 100644 --- a/graphics/fotoxx/Makefile +++ b/graphics/fotoxx/Makefile @@ -1,51 +1,51 @@ # Created by: Rod Person PORTNAME= fotoxx -PORTVERSION= 21.60 +PORTVERSION= 22.1 CATEGORIES= graphics MASTER_SITES= https://kornelix.net/downloads/downloads/ MAINTAINER= danfe@FreeBSD.org COMMENT= Application to organize and edit image collections LICENSE= GPLv3+ LIB_DEPENDS= libchamplain-gtk-0.12.so:graphics/libchamplain \ libclutter-gtk-1.0.so:graphics/clutter-gtk3 \ liblcms2.so:graphics/lcms2 \ libpng.so:graphics/png \ libtiff.so:graphics/tiff RUN_DEPENDS= xdg-open:devel/xdg-utils \ exiftool:graphics/p5-Image-ExifTool \ ufraw-batch:graphics/ufraw USES= desktop-file-utils gmake gnome jpeg pkgconfig USE_GNOME= cairo glib20 gdkpixbuf2 gtk30 ALL_TARGET= fotoxx WRKSRC= ${WRKDIR}/${PORTNAME} PORTDOCS= * PORTDATA= * PLIST_FILES= bin/fotoxx \ share/man/man1/fotoxx.1.gz \ share/applications/fotoxx.desktop OPTIONS_DEFINE= DOCS post-patch: @${REINPLACE_CMD} -e \ 's,= thread,= cartoon::thread,' ${WRKSRC}/f.effects.cc @${REINPLACE_CMD} -e \ '/#include /d' ${WRKSRC}/f.meta.cc @${REINPLACE_CMD} -e \ 's,pidof,pgrep -d\\\\ ,' ${WRKSRC}/fotoxx.cc @${REINPLACE_CMD} -e \ '/#include/s,wait\.h,sys/&,' ${WRKSRC}/fotoxx.h @${REINPLACE_CMD} -e \ 's|/usr/share/fotoxx|${DATADIR}|' ${WRKSRC}/fotoxx.desktop post-install: ${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/fotoxx .include diff --git a/graphics/fotoxx/distinfo b/graphics/fotoxx/distinfo index 00f4dfcba873..5710d3cf0a92 100644 --- a/graphics/fotoxx/distinfo +++ b/graphics/fotoxx/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1634502156 -SHA256 (fotoxx-21.60.tar.gz) = 2973e967b04b79ed85ec4dc9ed77d78cd5881340dfc976a61ba85dcbeb4b0dfd -SIZE (fotoxx-21.60.tar.gz) = 8679841 +TIMESTAMP = 1641036641 +SHA256 (fotoxx-22.1.tar.gz) = 8c69f8029ca971c51dad55461c14f9a6ec35550e1f71436ec25bdcc4365d575f +SIZE (fotoxx-22.1.tar.gz) = 8801382 diff --git a/graphics/fotoxx/files/patch-f.enhance.cc b/graphics/fotoxx/files/patch-f.enhance.cc deleted file mode 100644 index 51a2cc8cd300..000000000000 --- a/graphics/fotoxx/files/patch-f.enhance.cc +++ /dev/null @@ -1,29 +0,0 @@ ---- f.enhance.cc.orig 2021-10-17 20:02:26 UTC -+++ f.enhance.cc -@@ -224,7 +224,7 @@ void m_editBD(GtkWidget *, cchar *menu) - EFeditBD.Farea = 2; // select area usable - EFeditBD.Frestart = 1; // restart allowed - EFeditBD.Fscript = 1; // scripting supported -- EFeditBD.threadfunc = thread; -+ EFeditBD.threadfunc = editBD_names::thread; - if (! edit_setup(EFeditBD)) return; // setup edit - - /*** -@@ -590,7 +590,7 @@ void m_flattenBD(GtkWidget *, cchar *menu) - EFflattenBD.Frestart = 1; // restartable - EFflattenBD.Fpaintedits = 1; // use with paint edits OK - EFflattenBD.Fscript = 1; // scripting supported -- EFflattenBD.threadfunc = thread; -+ EFflattenBD.threadfunc = flattenBD_names::thread; - if (! edit_setup(EFflattenBD)) return; // setup edit - - Eww = E0pxm->ww; -@@ -1067,7 +1067,7 @@ void flattenBDfunc(int _NZ, int _flatten, int _deband1 - EFflattenBD.menufunc = m_flattenBD; - EFflattenBD.Farea = 2; // select area usable - EFflattenBD.Frestart = 1; // restartable -- EFflattenBD.threadfunc = thread; -+ EFflattenBD.threadfunc = flattenBD_names::thread; - - if (! edit_setup(EFflattenBD)) return; // setup edit - diff --git a/graphics/fotoxx/files/patch-f.refine.cc b/graphics/fotoxx/files/patch-f.refine.cc new file mode 100644 index 000000000000..e123f0053fe2 --- /dev/null +++ b/graphics/fotoxx/files/patch-f.refine.cc @@ -0,0 +1,29 @@ +--- f.refine.cc.orig 2022-01-01 11:16:58 UTC ++++ f.refine.cc +@@ -223,7 +223,7 @@ void m_edit_dist(GtkWidget *, cchar *menu) + EFedit_dist.Farea = 2; // select area usable + EFedit_dist.Frestart = 1; // restart allowed + EFedit_dist.Fscript = 1; // scripting supported +- EFedit_dist.threadfunc = thread; ++ EFedit_dist.threadfunc = edit_dist_names::thread; + if (! edit_setup(EFedit_dist)) return; // setup edit + + /*** +@@ -589,7 +589,7 @@ void m_flatten_dist(GtkWidget *, cchar *menu) + EFflatten_dist.Frestart = 1; // restartable + EFflatten_dist.Fpaintedits = 1; // use with paint edits OK + EFflatten_dist.Fscript = 1; // scripting supported +- EFflatten_dist.threadfunc = thread; ++ EFflatten_dist.threadfunc = flatten_dist_names::thread; + if (! edit_setup(EFflatten_dist)) return; // setup edit + + Eww = E0pxm->ww; +@@ -1066,7 +1066,7 @@ void flatten_dist_func(int _NZ, int _flatten, int _deb + EFflatten_dist.menufunc = m_flatten_dist; + EFflatten_dist.Farea = 2; // select area usable + EFflatten_dist.Frestart = 1; // restartable +- EFflatten_dist.threadfunc = thread; ++ EFflatten_dist.threadfunc = flatten_dist_names::thread; + + if (! edit_setup(EFflatten_dist)) return; // setup edit + diff --git a/graphics/fotoxx/files/patch-zfuncs.cc b/graphics/fotoxx/files/patch-zfuncs.cc index 68438dff0c73..53a47b39738e 100644 --- a/graphics/fotoxx/files/patch-zfuncs.cc +++ b/graphics/fotoxx/files/patch-zfuncs.cc @@ -1,180 +1,171 @@ --- zfuncs.cc.orig 2021-10-17 20:02:26 UTC +++ zfuncs.cc @@ -551,6 +551,7 @@ int zmalloc_test(int64 cc) double realmemory() // 21.55 { +#if defined(__linux__) FILE *fid; char buff[100], *pp; double rmem = 0; @@ -569,15 +570,45 @@ double realmemory() } fclose(fid); +#elif defined(__FreeBSD__) + long rmem; + rmem = sysconf(_SC_PAGESIZE) / 1024 * sysconf(_SC_PHYS_PAGES) / 1024; +#endif return rmem; } +#ifdef __FreeBSD__ +static int +freeswap() // return total free swap space in megabytes +{ + struct xswdev xsw; + size_t mibsize, size; + int mib[16], n, total; + mibsize = sizeof mib / sizeof mib[0]; + if (sysctlnametomib("vm.swap_info", mib, &mibsize) == -1) { + perror("sysctlnametomib()"); + return -1; + } + + int pagesize = getpagesize() / 1024; + for (total = n = 0; ; ++n) { + mib[mibsize] = n; + size = sizeof xsw; + if (sysctl(mib, mibsize + 1, &xsw, &size, NULL, 0) == -1) + break; + total += pagesize * (xsw.xsw_nblks - xsw.xsw_used) / 1024; + } + return total; +} +#endif + // get available memory in MB units // typical < 0.1 milliseconds double availmemory() { +#if defined(__linux__) FILE *fid; char buff[100], *pp; double avmem = 0; @@ -602,6 +633,11 @@ double availmemory() } fclose(fid); +#elif defined(__FreeBSD__) + double avmem; + avmem = realmemory(); + avmem += freeswap(); +#endif return avmem; } @@ -996,7 +1032,7 @@ double get_seconds() timespec time1; double time2; - clock_gettime(CLOCK_MONOTONIC_RAW,&time1); + clock_gettime(CLOCK_MONOTONIC,&time1); time2 = time1.tv_sec; time2 += time1.tv_nsec * 0.000000001; return time2; @@ -1020,7 +1056,7 @@ void logtime_init(cchar *text) using namespace logtime_names; printf("logtime init: %s\n",text); - clock_gettime(CLOCK_MONOTONIC_RAW,&time1); + clock_gettime(CLOCK_MONOTONIC,&time1); return; } @@ -1028,7 +1064,7 @@ void logtime(cchar *text) { using namespace logtime_names; - clock_gettime(CLOCK_MONOTONIC_RAW,&time2); + clock_gettime(CLOCK_MONOTONIC,&time2); elapsed = time2.tv_sec - time1.tv_sec; elapsed += 0.000000001 * (time2.tv_nsec - time1.tv_nsec); time1 = time2; -@@ -1432,7 +1468,7 @@ void zloop(double dsecs) - // ... protected code // only one thread at a time can be in here - // spinlock(0); - --pthread_mutex_t spinmutex = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP; // 21.44 -+pthread_mutex_t spinmutex = PTHREAD_MUTEX_INITIALIZER; - - void spinlock(int lock) - { @@ -1649,6 +1685,10 @@ int main_thread() return 0; } +int get_nprocs() +{ + return sysconf(_SC_NPROCESSORS_ONLN); +} /********************************************************************************/ @@ -1659,7 +1699,7 @@ void set_cpu_affinity(int cpu) { int err; static int ftf = 1, Nsmp; - cpu_set_t cpuset; + cpuset_t cpuset; if (ftf) { // first call ftf = 0; @@ -1670,7 +1710,8 @@ void set_cpu_affinity(int cpu) CPU_ZERO(&cpuset); CPU_SET(cpu,&cpuset); - err = sched_setaffinity(0,sizeof(cpuset),&cpuset); + err = cpuset_setaffinity(CPU_LEVEL_WHICH,CPU_WHICH_PID,0, + sizeof(cpuset),&cpuset); if (err) Plog(1,"set_cpu_affinity() %s \n",strerror(errno)); return; } @@ -2234,7 +2275,7 @@ int diskspace(cchar *file) int avail; FILE *fid; - snprintf(command,200,"df --output=avail \"%s\" ",file); + snprintf(command,200,"df -k '%s' | awk '{print $4}'",file); pp = strchr(command,'/'); if (! pp) return 0; @@ -4115,14 +4156,18 @@ cchar * SearchWildCase(cchar *wpath, int &uflag) flist and flist[*] are subjects for zfree(). zfind() works for files containing quotes (") - dotfiles (/. and /..) are not included + dotfiles (/. and /..) are not included, if possible *********************************************************************************/ int zfind(cchar *pattern, char **&flist, int &NF) { char **zfind_filelist = 0; // list of filespecs returned +#ifdef GLOB_PERIOD int globflags = GLOB_PERIOD; // include dotfiles +#else + int globflags = 0;; +#endif int ii, jj, err, cc; glob_t globdata; char *pp; @@ -5805,9 +5850,16 @@ int zinitapp(cchar *appvers, int argc, char *argv[]) if (argc > 1 && strmatchV(argv[1],"-ver","-v",0)) exit(0); // exit if nothing else wanted progexe = 0; +#if defined(__linux__) cc = readlink("/proc/self/exe",buff,300); // get my executable program path if (cc <= 0) zexit("readlink() /proc/self/exe) failed"); buff[cc] = 0; // readlink() quirk +#elif defined(__FreeBSD__) + const int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1 }; + size_t len = sizeof(buff); + cc = sysctl(mib, 4, buff, &len, 0x0, 0); + if (cc == -1) zexit("sysctl(KERN_PROC_PATHNAME) failed"); +#endif progexe = zstrdup(buff,"zinitapp"); err = appimage_install(zappname); // if appimage, menu integration