d72896a674d05e12cd61e43ffe3439fb04de38b0
[geeqie.git] / web / geeqie-install-debian.sh
1 #!/bin/bash
2 version="2019-07-03"
3 description=$'
4 Geeqie is an image viewer.
5 This script will download, compile, and install Geeqie on Debian-based systems.
6 If run from a folder that already contains the Geeqie sources, the source
7 code will be updated from the repository.
8 Dialogs allow the user to install additional features, including
9 additional pixbuf loaders.
10
11 Command line options are:
12 -v --version The version of this file
13 -h --help Output this text
14 -c --commit=ID Checkout and compile commit ID
15 -t --tag=TAG Checkout and compile TAG (e.g. v1.4 or v1.3)
16 -b --back=N Checkout commit -N (e.g. "-b 1" for last-but-one commit)
17 -d --debug=yes Compile with debug output
18 '
19
20 # Essential for compiling
21 essential_array=(
22 "git"
23 "build-essential"
24 "autoconf"
25 "libglib2.0-0"
26 "intltool"
27 "libtool"
28 )
29
30 # Optional for both GTK2 and GTK3
31 optional_array=(
32 "LCMS (for color management)"
33 "liblcms2-dev"
34 "exiv2 (for exif handling)"
35 "libgexiv2-dev"
36 "lua (for --remote commands)"
37 "liblua5.1-0-dev"
38 "libffmpegthumbnailer (for mpeg thumbnails)"
39 "libffmpegthumbnailer-dev"
40 "libtiff (for tiff support)"
41 "libtiff-dev"
42 "libjpeg (for jpeg support)"
43 "libjpeg-dev"
44 "librsvg2 (for viewing .svg images)"
45 "librsvg2-common"
46 "libwmf (for viewing .wmf images)"
47 "libwmf0.2-7-gtk"
48 "exiftran (for image rotation)"
49 "exiftran"
50 "imagemagick (for image rotation)"
51 "imagemagick"
52 "ufraw (for RAW file handling)"
53 "ufraw"
54 "exiv2 command line (for jpeg export)"
55 "exiv2"
56 "jpgicc (for jpeg export color correction)"
57 "liblcms2-utils"
58 "markdown (for generating README help file)"
59 "markdown"
60 "gphoto2 (for tethered photography and camera download plugins)"
61 "gphoto2"
62 "libimage-exiftool-perl (for jpeg extraction plugin)"
63 "libimage-exiftool-perl"
64 "libheif (for HEIF support)"
65 "libheif-dev"
66 )
67
68 # Optional for GTK3 only
69 optional_gtk3_array=(
70 "libchamplain gtk (for GPS maps)"
71 "libchamplain-gtk-0.12-dev"
72 "libchamplain (for GPS maps)"
73 "libchamplain-0.12-dev"
74 "libpoppler (for pdf file preview)"
75 "libpoppler-glib-dev"
76 )
77
78 # Optional pixbuf loaders
79 optional_loaders_array=(
80 ".webp WebP images"
81 "webp"
82 ".psd Photoshop images"
83 "psd"
84 ".xcf Gimp files"
85 "xcf"
86 )
87
88 ####################################################################
89 # Get System Info
90 # Derived from: https://github.com/coto/server-easy-install (GPL)
91 ####################################################################
92 lowercase()
93 {
94         echo "$1" | sed "y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/"
95 }
96
97 systemProfile()
98 {
99         OS=`lowercase \`uname\``
100         KERNEL=`uname -r`
101         MACH=`uname -m`
102
103         if [ "${OS}" == "windowsnt" ]
104         then
105                 OS=windows
106         elif [ "${OS}" == "darwin" ]
107         then
108                 OS=mac
109         else
110                 OS=`uname`
111                 if [ "${OS}" = "SunOS" ]
112                 then
113                         OS=Solaris
114                         ARCH=`uname -p`
115                         OSSTR="${OS} ${REV}(${ARCH} `uname -v`)"
116                 elif [ "${OS}" = "AIX" ]
117                 then
118                         OSSTR="${OS} `oslevel` (`oslevel -r`)"
119                 elif [ "${OS}" = "Linux" ]
120                 then
121                         if [ -f /etc/redhat-release ]
122                         then
123                                 DistroBasedOn='RedHat'
124                                 DIST=`cat /etc/redhat-release |sed s/\ release.*//`
125                                 PSUEDONAME=`cat /etc/redhat-release | sed s/.*\(// | sed s/\)//`
126                                 REV=`cat /etc/redhat-release | sed s/.*release\ // | sed s/\ .*//`
127                         elif [ -f /etc/SuSE-release ]
128                         then
129                                 DistroBasedOn='SuSe'
130                                 PSUEDONAME=`cat /etc/SuSE-release | tr "\n" ' '| sed s/VERSION.*//`
131                                 REV=`cat /etc/SuSE-release | tr "\n" ' ' | sed s/.*=\ //`
132                         elif [ -f /etc/mandrake-release ]
133                         then
134                                 DistroBasedOn='Mandrake'
135                                 PSUEDONAME=`cat /etc/mandrake-release | sed s/.*\(// | sed s/\)//`
136                                 REV=`cat /etc/mandrake-release | sed s/.*release\ // | sed s/\ .*//`
137                         elif [ -f /etc/debian_version ]
138                         then
139                                 DistroBasedOn='Debian'
140                                 if [ -f /etc/lsb-release ]
141                                 then
142                                         DIST=`cat /etc/lsb-release | grep '^DISTRIB_ID' | awk -F=  '{ print $2 }'`
143                                         PSUEDONAME=`cat /etc/lsb-release | grep '^DISTRIB_CODENAME' | awk -F=  '{ print $2 }'`
144                                         REV=`cat /etc/lsb-release | grep '^DISTRIB_RELEASE' | awk -F=  '{ print $2 }'`
145                                 fi
146                         fi
147                         if [ -f /etc/UnitedLinux-release ]
148                         then
149                                 DIST="${DIST}[`cat /etc/UnitedLinux-release | tr "\n" ' ' | sed s/VERSION.*//`]"
150                         fi
151                         OS=`lowercase $OS`
152                         DistroBasedOn=`lowercase $DistroBasedOn`
153                         readonly OS
154                         readonly DIST
155                         readonly DistroBasedOn
156                         readonly PSUEDONAME
157                         readonly REV
158                         readonly KERNEL
159                         readonly MACH
160                 fi
161         fi
162 }
163
164 install_essential()
165 {
166         arraylength=${#essential_array[@]}
167         for (( i=0; i<${arraylength}; i=i+1 ));
168         do
169                 package_query ${essential_array[$i]}
170                 if [ $? != 0 ]
171                 then
172                         package_install ${essential_array[$i]}
173                 fi
174         done
175
176         if [[ $1 == "GTK3" ]]
177         then
178                 package_query "libgtk-3-dev"
179                 if [ $? != 0 ]
180                 then
181                         package_install libgtk-3-dev
182                 fi
183         else
184                 package_query "libgtk2.0-dev"
185                 if [ $? != 0 ]
186                 then
187                         package_install libgtk2.0-dev
188                 fi
189         fi
190 }
191
192 install_options()
193 {
194         if [ -n "$options" ]
195         then
196                 OLDIFS=$IFS
197                 IFS='|'
198                 set $options
199                 while [ $# -gt 0 ];
200                 do
201                         package_install $1
202                         shift
203                 done
204                 IFS=$OLDIFS
205         fi
206 }
207
208 install_webp()
209 {
210         rm -rf webp-pixbuf-loader-master
211         package_install libglib2.0-dev libgdk-pixbuf2.0-dev libwebp-dev python-minimal
212         wget https://github.com/aruiz/webp-pixbuf-loader/archive/master.zip
213         unzip master.zip
214         cd webp-pixbuf-loader-master
215         ./waf configure
216         ./waf build
217         sudo --askpass ./waf install
218         sudo --askpass gdk-pixbuf-query-loaders --update-cache
219         cd -
220         rm -rf webp-pixbuf-loader-master
221         rm master.zip
222 }
223
224 install_psd()
225 {
226         rm -rf gdk-pixbuf-psd
227         git clone https://github.com/and-rom/gdk-pixbuf-psd.git
228         cd gdk-pixbuf-psd
229         ./autogen.sh
230         make
231         sudo --askpass make install
232         sudo --askpass gdk-pixbuf-query-loaders --update-cache
233         cd -
234         rm -rf gdk-pixbuf-psd
235 }
236
237 install_xcf()
238 {
239         rm -rf xcf-pixbuf-loader
240         package_install libbz2-dev
241         git clone https://github.com/StephaneDelcroix/xcf-pixbuf-loader.git
242         cd xcf-pixbuf-loader
243         ./autogen.sh
244         make
245
246         # There must be a better way...
247         loader_locn=$(gdk-pixbuf-query-loaders | grep "LoaderDir" | tr -d '#[:space:]')
248
249         OLDIFS=$IFS
250         IFS='='
251         set $loader_locn
252         OLDIFS=$IFS
253
254         if [ -d $2 ]
255         then
256                 sudo --askpass cp .libs/libioxcf.so $2
257                 sudo --askpass gdk-pixbuf-query-loaders --update-cache
258         fi
259         cd -
260         rm -rf xcf-pixbuf-loader
261 }
262
263 install_extra_loaders()
264 {
265         if [ -n "$extra_loaders" ]
266         then
267                 OLDIFS=$IFS
268                 IFS='|'
269                 set $extra_loaders
270                 while [ $# -gt 0 ];
271                 do
272                         case $1 in
273                         "webp" )
274                                 install_webp
275                         ;;
276                         "psd" )
277                                 install_psd
278                         ;;
279                         "xcf" )
280                                 install_xcf
281                         ;;
282                         esac
283
284                         shift
285                 done
286                 IFS=$OLDIFS
287         fi
288         return
289 }
290
291 uninstall()
292 {
293         current_dir=$(basename $PWD)
294         if [[ $current_dir == "geeqie" ]]
295         then
296                 sudo --askpass make uninstall
297                 zenity --title="Uninstall Geeqie" --width=370 --text="WARNING.\nThis will delete folder:\n\n$PWD\n\nand all sub-folders!" --question --ok-label="Cancel" --cancel-label="OK" 2>/dev/null
298
299                 if [[ $? == 1 ]]
300                 then
301                         cd ..
302                         sudo --askpass rm -rf geeqie
303                 fi
304         else
305                 zenity --title="Uninstall Geeqie" --width=370 --text="This is not a geeqie installation folder!\n\n$PWD" --warning 2>/dev/null
306         fi
307
308         exit_install
309 }
310
311 package_query()
312 {
313         if [[ $DistroBasedOn == "debian" ]]
314         then
315                 res=$(dpkg-query --show --showformat='${Status}' $1 2>>$install_log)
316                 if [[ "$res" == "install ok installed"* ]]
317                 then
318                         status=0
319                 else
320                         status=1
321                 fi
322         fi
323         return $status
324 }
325
326 package_install()
327 {
328         if [[ $DistroBasedOn == "debian" ]]
329         then
330                 sudo --askpass apt-get --assume-yes install $@ >>$install_log 2>&1
331         fi
332 }
333
334 exit_install()
335 {
336         rm $install_pass_script >/dev/null 2>&1
337         #~ rm $install_log >/dev/null 2>&1
338
339         if [[ -p $zen_pipe ]]
340         then
341                 echo "100" > $zen_pipe
342                 echo "#End" > $zen_pipe
343         fi
344
345         zenity --title="$title" --width=370 --text=$'Geeqie is not installed\nLog file: '$install_log --info 2>/dev/null
346
347         rm $zen_pipe >/dev/null 2>&1
348
349         exit 1
350 }
351
352 # Entry point
353
354 # If uninstall has been run, maybe the current directory no longer exists
355 ls $PWD >/dev/null
356 if [[ $? != 0 ]]
357 then
358         zenity --error --title="Install Geeqie and dependencies" --width=370 --text="Folder $PWD does not exist!" 2>/dev/null
359
360         exit
361 fi
362
363 # Check system type
364 systemProfile
365 if [[ $DistroBasedOn != "debian" ]]
366 then
367         zenity --error --title="Install Geeqie and dependencies" --width=370 --text="Unknown operating system:\n
368 Operating System: $OS
369 Distribution: $DIST
370 Psuedoname: $PSUEDONAME
371 Revision: $REV
372 DistroBasedOn: $DistroBasedOn
373 Kernel: $KERNEL
374 Machine: $MACH" 2>/dev/null
375
376         exit
377 fi
378
379 # Parse the comand line
380 OPTS=$(getopt -o vhc:t:b:d: --long version,help,commit:,tag:,back:,debug: -- "$@")
381 eval set -- "$OPTS"
382
383 while true;
384 do
385         case "$1" in
386         -v | --version )
387                 echo "$version"
388                 exit
389                 ;;
390         -h | --help )
391                 echo "$description"
392                 exit
393                 ;;
394         -c | --commit )
395                 COMMIT="$2"
396                 shift
397                 shift
398                 ;;
399         -t | --tag )
400                 TAG="$2"
401                 shift;
402                 shift
403                 ;;
404         -b | --back )
405                 BACK="$2"
406                 shift;
407                 shift
408                 ;;
409         -d | --debug )
410                 DEBUG="$2"
411                 shift;
412                 shift
413                 ;;
414         * ) break
415                 ;;
416         esac
417 done
418
419 # If a Geeqie folder already exists here, warn the user
420 if [ -d "geeqie" ]
421 then
422         zenity --info --title="Install Geeqie and dependencies" --width=370 --text="This script is for use on Ubuntu and other\nDebian-based installations.\nIt will download, compile, and install Geeqie source\ncode and its dependencies.\n\nA sub-folder named \"geeqie\" will be created in the\nfolder this script is run from, and the source code\nwill be downloaded to that sub-folder.\n\nA sub-folder of that name already exists.\nPlease try another folder." 2>/dev/null
423
424         exit
425 fi
426
427 # If it looks like a Geeqie download folder, assume an update
428 if [ -d ".git" ] && [ -d "src" ] && [ -f "geeqie.1" ]
429 then
430         mode="update"
431 else
432         # If it looks like something else is already installed here, warn the user
433         if [ -d ".git" ] || [ -d "src" ]
434         then
435                 zenity --info --title="Install Geeqie and dependencies" --width=370 --text="This script is for use on Ubuntu and other\nDebian-based installations.\nIt will download, compile, and install Geeqie source\ncode and its dependencies.\n\nIt looks like you are running this script from a folder which already has software installed.\n\nPlease try another folder." 2>/dev/null
436
437                 exit
438         else
439                 mode="install"
440         fi
441 fi
442
443 # Use GTK3 as default
444 gk2_installed=FALSE
445 gtk3_installed=TRUE
446
447 if [[ $mode == "install" ]]
448 then
449         message="This script is for use on Ubuntu and other\nDebian-based installations.\nIt will download, compile, and install Geeqie source\ncode and its dependencies.\n\nA sub-folder named \"geeqie\" will be created in the\nfolder this script is run from, and the source code\nwill be downloaded to that sub-folder.\n\nIn this dialog you must select whether to compile\nfor GTK2 or GTK3.\nIf you want to use GPS maps or pdf preview,\nyou must choose GTK3.\nThe GTK2 version has a slightly different\nlook-and-feel compared to the GTK3 version,\nbut otherwise has the same features.\nYou may easily switch between the two after\ninstallation.\n\nIn subsequent dialogs you may choose which\noptional features to install."
450
451         title="Install Geeqie and dependencies"
452         install_option=TRUE
453 else
454         message="This script is for use on Ubuntu and other\nDebian-based installations.\nIt will update the Geeqie source code and its\ndependencies, and will compile and install Geeqie.\n\nYou may also switch the installed version from\nGTK2 to GTK3 and vice versa.\n\nIn this dialog you must select whether to compile\nfor GTK2 or GTK3.\nIf you want to use GPS maps or pdf preview,\nyou must choose GTK3.\nThe GTK2 version has a slightly different\nlook-and-feel compared to the GTK3 version,\nbut otherwise has the same features.\n\nIn subsequent dialogs you may choose which\noptional features to install."
455
456         title="Update Geeqie and re-install"
457         install_option=FALSE
458
459         # When updating, use previous installation as default
460         if [[ -f config.log ]]
461         then
462                 grep gtk-2.0 config.log >/dev/null
463                 if [[ $? != 0 ]]
464                 then
465                         gtk2_installed=FALSE
466                         gtk3_installed=TRUE
467                 else
468                         gtk2_installed=TRUE
469                         gtk3_installed=FALSE
470                 fi
471         fi
472 fi
473
474 # Ask whether to install GTK2 or GTK3 or uninstall
475
476 gtk_version=$(zenity --title="$title" --width=370 --text="$message" --list --radiolist --column "" --column "" "$gtk3_installed" "GTK3 (required for GPS maps and pdf preview)" "$gtk2_installed" "GTK2" FALSE "Uninstall" --cancel-label="Cancel" --ok-label="OK" --hide-header 2>/dev/null)
477
478 if [[ $? == 1 ]]
479 then
480         exit
481 fi
482
483 # Environment variable SUDO_ASKPASS cannot be "zenity --password",
484 # so create a temporary script containing the command
485 install_pass_script=$(mktemp --tmpdir geeqie_install_XXXXXX.sh)
486 echo $'#!/bin/bash
487 zenity --password --title=\"'$title$'\" --width=370 2>/dev/null
488 if [[ $? > 0 ]]
489 then
490         exit 1
491 fi
492 \n' > $install_pass_script
493 chmod +x $install_pass_script
494 export SUDO_ASKPASS=$install_pass_script
495
496 if [[ $gtk_version == "Uninstall" ]]
497 then
498         uninstall
499         exit
500 fi
501
502 # Put the install log in tmp, to avoid writing to PWD during a new install
503 rm install.log 2>/dev/null
504 install_log=$(mktemp --tmpdir geeqie_install_XXXXXX.log)
505
506 sleep 100 | zenity --title="$title" --text="Checking for installed files" --width=370 --progress --pulsate 2>/dev/null &
507 zen_pid=$!
508
509 # Get the standard options that are not yet installed
510 arraylength=${#optional_array[@]}
511 for (( i=0; i<${arraylength}; i=i+2 ));
512 do
513         package_query ${optional_array[$i+1]}
514         if [ $? != 0 ]
515         then
516                 if [ -z "$option_string" ]
517                 then
518                         option_string="$install_option"$'\n'"${optional_array[$i]}"$'\n'"${optional_array[$i+1]}"
519                 else
520                         option_string="$option_string"$'\n'"$install_option"$'\n'"${optional_array[$i]}"$'\n'"${optional_array[$i+1]}"
521                 fi
522         fi
523 done
524
525 # If GTK3 required, get the GTK3 options not yet installed
526 if [[ "$gtk_version" == "GTK3"* ]]
527 then
528         arraylength=${#optional_gtk3_array[@]}
529         for (( i=0; i<${arraylength}; i=i+2 ));
530         do
531                 package_query ${optional_gtk3_array[$i+1]}
532                 if [ $? != 0 ]
533                 then
534                         if [ -z "$option_string" ]
535                         then
536                                 option_string="$install_option"$'\n'"${optional_gtk3_array[$i]}"$'\n'"${optional_gtk3_array[$i+1]}"
537                         else
538                                 option_string="$option_string"$'\n'"$install_option"$'\n'"${optional_gtk3_array[$i]}"$'\n'"${optional_gtk3_array[$i+1]}"
539                         fi
540                 fi
541         done
542 fi
543
544 # Get the optional loaders not yet installed
545 ((i=0))
546 gdk-pixbuf-query-loaders | grep WebP >/dev/null
547 if [[ $? == 1 ]]
548 then
549         if [ -z "$loaders_string" ]
550         then
551                 loaders_string=$'FALSE\n'"${optional_loaders_array[$i]}"$'\n'"${optional_loaders_array[$i+1]}"
552         else
553                 loaders_string="$loaders_string"$'\nFALSE\n'"${optional_loaders_array[$i]}"$'\n'"${optional_loaders_array[$i+1]}"
554
555         fi
556 fi
557
558 ((i=i+2))
559 gdk-pixbuf-query-loaders | grep psd >/dev/null
560 if [[ $? == 1 ]]
561 then
562         if [ -z "$loaders_string" ]
563         then
564                 loaders_string=$'FALSE\n'"${optional_loaders_array[$i]}"$'\n'"${optional_loaders_array[$i+1]}"
565         else
566                 loaders_string="$loaders_string"$'\nFALSE\n'"${optional_loaders_array[$i]}"$'\n'"${optional_loaders_array[$i+1]}"
567         fi
568 fi
569
570 ((i=i+2))
571 gdk-pixbuf-query-loaders | grep xcf >/dev/null
572 if [[ $? == 1 ]]
573 then
574         if [ -z "$loaders_string" ]
575         then
576                 loaders_string=$'FALSE\n'"${optional_loaders_array[$i]}"$'\n'"${optional_loaders_array[$i+1]}"
577         else
578                 loaders_string="$loaders_string"$'\nFALSE\n'"${optional_loaders_array[$i]}"$'\n'"${optional_loaders_array[$i+1]}"
579         fi
580 fi
581
582 kill $zen_pid 2>/dev/null
583
584 # Ask the user which options to install
585 if [ -n "$option_string" ]
586 then
587         options=$(echo "$option_string" | zenity --title="$title" --width=400 --height=500 --list --checklist --text 'Select which library files to install:' --column='Select' --column='Library files' --column='Library' --hide-column=3 --print-column=3 2>/dev/null)
588
589         if [[ $? == 1 ]]
590         then
591                 exit_install
592         fi
593 fi
594
595 # Ask the user which extra loaders to install
596 if [ -n "$loaders_string" ]
597 then
598         extra_loaders=$(echo "$loaders_string" | zenity --title="$title" --width=370 --height=400 --list --checklist --text 'These loaders are not part of the main repository,\nbut are known to work to some extent.' --column='Select' --column='Library files' --column='Library' --hide-column=3 --print-column=3 2>/dev/null)
599
600         if [[ $? == 1 ]]
601         then
602                 exit_install
603         fi
604 fi
605
606 # Start of Zenity progress section
607 zen_pipe=$(mktemp --dry-run --tmpdir geeqie_install_pipe_XXXXXX)
608 mkfifo $zen_pipe
609 (tail  -f $zen_pipe 2>/dev/null) | zenity --progress --title="$title" --width=370 --text="Installing options..." --auto-close --auto-kill --percentage=0 2>/dev/null &
610
611 echo "2" > $zen_pipe
612 echo "#Installing essential libraries..." > $zen_pipe
613
614 install_essential $gtk_version
615
616 echo "4" > $zen_pipe
617 echo "#Installing options..." > $zen_pipe
618
619 install_options
620
621 echo "6" > $zen_pipe
622 echo "#Installing extra loaders..." > $zen_pipe
623
624 install_extra_loaders
625
626 echo "10" > $zen_pipe
627 echo "#Getting new sources from server..." > $zen_pipe
628
629 if [[ $mode == "install" ]]
630 then
631         ret=$(git clone git://www.geeqie.org/geeqie.git >>$install_log 2>&1)
632 else
633         git checkout master >>$install_log 2>&1
634         if [[ $? != 0 ]]
635         then
636                 git_error=$(tail -n5 $install_log 2>&1)
637                 zenity --title="$title" --width=370 --height=400 --error --text=$'Git error:\n\n'"$git_error" 2>/dev/null
638                 exit_install
639         fi
640         ret=$(git pull >>$install_log 2>&1)
641 fi
642
643 if [[ $? != 0 ]]
644 then
645         git_error=$(tail -n5 $install_log 2>&1)
646         zenity --title="$title" --width=370 --height=400 --error --text=$'Git error:\n\n'"$git_error" 2>/dev/null
647         exit_install
648 fi
649
650 echo "20" > $zen_pipe
651 echo "#Cleaning installed version..." > $zen_pipe
652
653 if [[ $mode == "install" ]]
654 then
655         cd geeqie
656 else
657         sudo --askpass make uninstall >>$install_log 2>&1
658         sudo --askpass make maintainer-clean >>$install_log 2>&1
659 fi
660
661 echo "30" > $zen_pipe
662 echo "#Checkout required version..." > $zen_pipe
663
664 if [[ "$BACK" ]]
665 then
666         ret=$(git checkout master~"$BACK" >>$install_log 2>&1)
667         if [[ $? != 0 ]]
668         then
669                 git_error=$(tail -n5 $install_log 2>&1)
670                 zenity --title="$title" --width=370 --height=400 --error --text=$'Git error:\n\n'"$git_error" 2>/dev/null
671                 exit_install
672         fi
673 elif [[ "$COMMIT" ]]
674 then
675         ret=$(git checkout "$COMMIT" >>$install_log 2>&1)
676         if [[ $? != 0 ]]
677         then
678                 git_error=$(tail -n5 $install_log 2>&1)
679                 zenity --title="$title" --width=370 --height=400 --error --text=$'Git error:\n\n'"$git_error" 2>/dev/null
680                 exit_install
681         fi
682 elif [[ "$TAG" ]]
683 then
684         ret=$(git checkout "$TAG" >>$install_log 2>&1)
685         if [[ $? != 0 ]]
686         then
687         echo "error"
688                 git_error=$(tail -n5 $install_log 2>&1)
689                 zenity --title="$title" --width=370 --height=400 --error --text=$'Git error:\n\n'"$git_error" 2>/dev/null
690                 exit_install
691                 exit
692         fi
693 fi
694 if [[ "$DEBUG" == "yes" ]]
695 then
696         debug_opt=""
697 else
698         debug_opt="--disable-debug-log"
699 fi
700
701 echo "40" > $zen_pipe
702 echo "#Creating configuration files..." > $zen_pipe
703
704 if [[ $gtk_version == "GTK3"* ]]
705 then
706         ./autogen.sh "$debug_opt" >>$install_log 2>&1
707 else
708         ./autogen.sh "$debug_opt" --disable-gtk3 >>$install_log 2>&1
709 fi
710
711 echo "60" > $zen_pipe
712 echo "#Compiling..." > $zen_pipe
713
714 export CFLAGS=$CFLAGS" -Wno-deprecated-declarations"
715 export CXXFLAGS=$CXXFLAGS" -Wno-deprecated-declarations"
716 make -j >>$install_log 2>&1
717
718 if [[ $? != 0 ]]
719 then
720         zenity --title="$title" --width=370 --height=400 --error --text=$'Compile error' 2>/dev/null
721         exit_install
722         exit
723 fi
724
725 echo "90 " > $zen_pipe
726 echo "#Installing Geeqie..." > $zen_pipe
727
728 sudo --askpass make install >>$install_log 2>&1
729
730 # This is a temporary fix until the ZoneDetect project releases its source code
731 zonedetect_message="ZoneDetect database not loaded"
732 if [[ -d "/usr/local/lib/geeqie" ]]
733 then
734         if [[ ! -f "/usr/local/lib/geeqie/timezone21.bin" ]]
735         then
736                 sudo --askpass wget --directory-prefix=/usr/local/lib/geeqie/ https://github.com/BertoldVdb/ZoneDetect/raw/master/database/timezone21.bin >>$install_log 2>&1
737                 if [[ $? == 0 ]]
738                 then
739                         zonedetect_message=""
740                 fi
741         else
742                 zonedetect_message=""
743         fi
744 fi
745
746 rm $install_pass_script
747 mv -f $install_log install.log;
748
749 echo "100 " > $zen_pipe
750 rm $zen_pipe
751
752 (for i in $(seq 0 4 100); do echo "$i"; sleep 0.1; done) | zenity --progress --title="$title" --width=370 --text="Geeqie installation complete...\n$zonedetect_message" --auto-close --percentage=0 2>/dev/null
753
754 exit