diff options
author | Přemysl Eric Janouch <p@janouch.name> | 2022-08-11 14:49:23 +0200 |
---|---|---|
committer | Přemysl Eric Janouch <p@janouch.name> | 2022-08-11 16:11:07 +0200 |
commit | 7cbd24dd2f99c160b0e4c9765783b2294caca6dc (patch) | |
tree | 85c37ca3a67af4c837a249908b13c3c7e607fbb1 | |
parent | 1a163bdb8b4878f456fb04b33978a92f3fcd8e91 (diff) | |
download | fiv-7cbd24dd2f99c160b0e4c9765783b2294caca6dc.tar.gz fiv-7cbd24dd2f99c160b0e4c9765783b2294caca6dc.tar.xz fiv-7cbd24dd2f99c160b0e4c9765783b2294caca6dc.zip |
Bundle a fuller installation of Perl/ExifTool
wperl is necessary to get rid of the console window,
which is merely one of several issues with the PAR Packer-based
ExifTool bundle used in the last commit.
The Perl installation could be heavily trimmed down,
but it seems to require a very manual process.
-rw-r--r-- | README.adoc | 2 | ||||
-rw-r--r-- | fiv-context-menu.c | 9 | ||||
-rwxr-xr-x | msys2-cross-configure.sh | 15 | ||||
-rwxr-xr-x | msys2-cross-install.sh | 9 |
4 files changed, 22 insertions, 13 deletions
diff --git a/README.adoc b/README.adoc index 2dc1464..40fc97c 100644 --- a/README.adoc +++ b/README.adoc @@ -61,7 +61,7 @@ Windows 'fiv' can be cross-compiled for Windows, provided that you install a bunch of dependencies listed at the beginning of 'msys2-cross-configure.sh', plus rsvg-convert from librsvg2, and icotool from icoutils. -Beware that the build will take up close to a gigabyte of disk space. +Beware that the build will take up about a gigabyte of disk space. $ sh -e msys2-cross-configure.sh builddir $ meson install -C builddir diff --git a/fiv-context-menu.c b/fiv-context-menu.c index 223558a..b5dafc4 100644 --- a/fiv-context-menu.c +++ b/fiv-context-menu.c @@ -188,9 +188,12 @@ info_spawn(GtkWidget *dialog, const char *path, GBytes *bytes_in) // TODO(p): Add a fallback to internal capabilities. // The simplest is to specify the filename and the resolution. GError *error = NULL; - GSubprocess *subprocess = g_subprocess_new(flags, &error, "exiftool", - "-tab", "-groupNames", "-duplicates", "-extractEmbedded", "--binary", - "-quiet", "--", path, NULL); + GSubprocess *subprocess = g_subprocess_new(flags, &error, +#ifdef G_OS_WIN32 + "wperl", +#endif + "exiftool", "-tab", "-groupNames", "-duplicates", "-extractEmbedded", + "--binary", "-quiet", "--", path, NULL); if (error) { info_redirect_error(dialog, error); return; diff --git a/msys2-cross-configure.sh b/msys2-cross-configure.sh index 848749a..8887928 100755 --- a/msys2-cross-configure.sh +++ b/msys2-cross-configure.sh @@ -34,10 +34,11 @@ fetch() { [ -f "packages/$name" ] || curl -#o "packages/$name" "$repository/$name" done - name=exiftool-$(curl -# https://exiftool.org/ver.txt).zip - status Fetching "$name" - [ -f "$name" ] || curl -#o "$name" "https://exiftool.org/$name" - ln -sf "$name" exiftool.zip + version=$(curl -# https://exiftool.org/ver.txt) + name=exiftool-$version.tar.gz remotename=Image-ExifTool-$version.tar.gz + status Fetching "$remotename" + [ -f "$name" ] || curl -#o "$name" "https://exiftool.org/$remotename" + ln -sf "$name" exiftool.tar.gz } verify() { @@ -54,7 +55,10 @@ extract() { do bsdtar -xf "$i" --strip-components 1 mingw64 done - bsdtar -xOf exiftool.zip > bin/exiftool.exe + bsdtar -xf exiftool.tar.gz + mv Image-ExifTool-*/exiftool bin + mv Image-ExifTool-*/lib/* lib/perl5/site_perl + rm -rf Image-ExifTool-* } configure() { @@ -111,6 +115,7 @@ cd "$msys2_root" dbsync fetch mingw-w64-x86_64-gtk3 mingw-w64-x86_64-lcms2 \ mingw-w64-x86_64-libraw mingw-w64-x86_64-libheif \ + mingw-w64-x86_64-perl mingw-w64-x86_64-perl-win32-api \ mingw-w64-x86_64-libwinpthread-git # Because we don't do "provides"? verify extract diff --git a/msys2-cross-install.sh b/msys2-cross-install.sh index b98a227..7cbc2cc 100755 --- a/msys2-cross-install.sh +++ b/msys2-cross-install.sh @@ -3,15 +3,17 @@ export LC_ALL=C cd "$MESON_INSTALL_DESTDIR_PREFIX" msys2_root=$1 -# Copy libraries we depend on, and a few files required by GLib/GTK+. -cp -p "$msys2_root"/bin/exiftool.exe . +# Copy binaries we directly or indirectly depend on. cp -p "$msys2_root"/bin/*.dll . +cp -p "$msys2_root"/bin/wperl.exe . +cp -p "$msys2_root"/bin/exiftool . # The console helper is only useful for debug builds. cp -p "$msys2_root"/bin/gspawn-*-helper*.exe . cp -pR "$msys2_root"/etc/ . mkdir -p lib cp -pR "$msys2_root"/lib/gdk-pixbuf-2.0/ lib +cp -pR "$msys2_root"/lib/perl5/ lib mkdir -p share/glib-2.0/schemas cp -pR "$msys2_root"/share/glib-2.0/schemas/*.Settings.* share/glib-2.0/schemas mkdir -p share @@ -36,8 +38,7 @@ awk 'function whitelist(binary) { orphans[$0]++ while (("find . -type f -path \"./*.[Ee][Xx][Ee]\"" | getline) > 0) whitelist($0) - while (("find ./lib/gdk-pixbuf-2.0 -type f " \ - "-path \"./*.[Dd][Ll][Ll]\"" | getline) > 0) + while (("find ./lib -type f -path \"./*.[Dd][Ll][Ll]\"" | getline) > 0) whitelist($0) for (library in orphans) print library |