diff options
| -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  | 
