aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPřemysl Eric Janouch <p@janouch.name>2022-08-11 14:49:23 +0200
committerPřemysl Eric Janouch <p@janouch.name>2022-08-11 16:11:07 +0200
commit7cbd24dd2f99c160b0e4c9765783b2294caca6dc (patch)
tree85c37ca3a67af4c837a249908b13c3c7e607fbb1
parent1a163bdb8b4878f456fb04b33978a92f3fcd8e91 (diff)
downloadfiv-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.adoc2
-rw-r--r--fiv-context-menu.c9
-rwxr-xr-xmsys2-cross-configure.sh15
-rwxr-xr-xmsys2-cross-install.sh9
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