On 03/08/2017 06:34 PM, Pétùr wrote:
> I tried to remove the comments in /usr/bin/thunderbird to obtain:
This patch definitely worked for me:
--- /usr/bin/thunderbird~ 2017-03-07 02:39:23.000000000 +0100
+++ /usr/bin/thunderbird 2017-03-07 13:18:46.598453301 +0100
@@ -193,9 +193,9 @@
# is a state we can't solve on our own !!! The user needs to interact and
# has probably an old or otherwise used Thunderbird installation. Which one
# is the correct one to use?
-elif { [ -d "${ID_PROFILE_FOLDER}" ] || [ -L "${ID_PROFILE_FOLDER}" ]; } && \
# .icedove exists as folder or symlink
- { [ -d "${TB_PROFILE_FOLDER}" ] || [ -L "${TB_PROFILE_FOLDER}" ]; } && \
# .thunderbird exists as folder or symlink
- [ "$(readlink -e "${TB_PROFILE_FOLDER}")" != "${ID_PROFILE_FOLDER}" ];
then # compare if canonical name of both folders equal
+elif { [ -d "${ID_PROFILE_FOLDER}" ] || [ -L "${ID_PROFILE_FOLDER}" ]; } && \
+ { [ -d "${TB_PROFILE_FOLDER}" ] || [ -L "${TB_PROFILE_FOLDER}" ]; } && \
+ [ "$(readlink -e "${TB_PROFILE_FOLDER}")" != "${ID_PROFILE_FOLDER}" ];
then
output_debug "There is already a folder or symlink '${TB_PROFILE_FOLDER}',
will do nothing."
output_debug "Please investigate by yourself! Some more information below."
> I repeat: I don't have a .icedove folder or symlink.
Yes, this is known from the bug.
> Any ideas?
Try the attached version of the startup script or just wait for maintainers to
update the package.
Adrian
--
.''`. John Paul Adrian Glaubitz
: :' : Debian Developer - [email protected]
`. `' Freie Universitaet Berlin - [email protected]
`- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913
#!/bin/bash
# vim: autoindent tabstop=4 shiftwidth=4 expandtab softtabstop=4 filetype=sh
textwidth=76
#
# File:
# /usr/bin/thunderbird
#
# Purpose:
# This is a wrapper script for starting the thunderbird binary with taking
# care of the searching for an old user Icedove profile folder and adopting
# the folder into the new place if possible.
#
# Environment:
# The Icedove binary was using the profile folder '${HOME}/.icedove'. The
# Mozilla default for the Thunderbird binary is '${HOME}/.thunderbird'.
# The script will looking for the old profile folder and will symlink the
# folder '${HOME}/.thunderbird' to the profile folder '${HOME}/.icedove'.
#
# Copyright:
# Licensed under the terms of GPLv2+.
#set -x
TB_HELPER="/usr/lib/thunderbird/thunderbird-wrapper-helper.sh"
# sourcing external variables and helper functions
if [ -f "${TB_HELPER}" ]; then
. "${TB_HELPER}"
else
# this needs improving, the user isn't seen this error!
output_info "helper ${TB_HELPER} not found!"
exit 1
fi
# some global variables
MOZ_APP_NAME=thunderbird
MOZ_APP_LAUNCHER=$(which "$0")
MOZ_LIBDIR=/usr/lib/${MOZ_APP_NAME}
ID_PROFILE_FOLDER=${HOME}/.icedove
TB_PROFILE_FOLDER=${HOME}/.thunderbird
export HELP=0
export FAIL=0
export FORCE_MIMEAPPS_MIGRATE=0
export VERBOSE=0
# set MOZ_APP_LAUNCHER for gnome-session
export MOZ_APP_LAUNCHER
TB_ARGS=""
while [ $# -gt 0 ]; do
ARG="$1"
case ${ARG} in
--fixmime)
FIXMIME=1
FORCE_MIMEAPPS_MIGRATE=1
;;
-g)
DEBUGGER=1
DEBUG=1
;;
# -d)
# USER_DEBUGGER=$2
# DEBUG=1
# shift
# ;;
--help)
HELP=1
;;
--show-backup)
SHOW_BACKUP=1
;;
--verbose) output_info "[[ ... using verbose mode ... ]]"
VERBOSE=1
;;
'?')
usage >&2
exit 1
;;
# every other argument is needed to get down to the TB starting call
*) TB_ARGS="${TB_ARGS} ${ARG}"
;;
esac
shift
done
# sanity check
if [ "$DEBUGGER" != "" ] && [ "$USER_DEBUGGER" != "" ]; then
output_info "You can't use option '-g and '-d' at the same time!"
usage
exit 1
fi
# If '--help' was called show usage() and exit immediately without other
# helpers can be called.
if [ "${HELP}" = "1" ]; then
usage
exit 0
fi
if [ "${FIXMIME}" = "1" ]; then
do_fix_mimetypes_rdf
do_migrate_old_icedove_desktop
do_collect_backup_files
exit 0
fi
if [ "${SHOW_BACKUP}" = "1" ]; then
do_collect_backup_files
exit 0
fi
#############################################################################
# User Thunderbird Profile Adoptions #
# #
# The users Icedove/Thunderbird profile(s) doesn't need to be modified in a #
# different and complicated way. We simply need to ensure that the #
# Thunderbird binary is finding the existing profiles in the folder #
# $(HOME)/.thunderbird folder or a valid symlink pointing to the profiles. #
# #
# To "migrate" an old existing Icedove profile we can simply do a symlink #
# from $(HOME)/.thunderbird --> $(HOME)/.icedove . #
# #
# Afterwards do some changes to the file mimeTypes.rdf within every #
# profile. Also we can modify existing *icedove*.desktop entries in the #
# files. #
# #
# $(HOME)/.config/mimeapps.list #
# $(HOME)/.local/share/applications/mimeapps.list #
# #
#############################################################################
# First try the default case for modification, there is only a folder
# ${ID_PROFILE_FOLDER} and we can symlink to this.
if { [ -d "${ID_PROFILE_FOLDER}" ] || [ -L "${ID_PROFILE_FOLDER}" ]; } && \
{ [ ! -d "${TB_PROFILE_FOLDER}" ] && [ ! -L "${TB_PROFILE_FOLDER}" ]; }; then
output_debug "found folder '${ID_PROFILE_FOLDER}'"
output_debug "not found folder or symlink '${TB_PROFILE_FOLDER}'"
output_debug "Start Thunderbird profile adoptions, please be patient!"
# open a pop-up window with a message about starting migration
do_inform_migration_start
# do the symlinking
do_thunderbird2icedove_symlink
# fixing mimeTypes.rdf which may have registered the iceweasel binary
# as browser, instead of x-www-browser
do_fix_mimetypes_rdf
# Fix local mimeapp.list and *.desktop entries
do_migrate_old_icedove_desktop
# we are finished
output_info "Thunderbird Profile adoptions done."
do_collect_backup_files
fi
# We found both profile folder, and .thunderbird is a symlink,
# we need to check if .thunderbird is symlinked to .icedove
if { [ -d "${ID_PROFILE_FOLDER}" ] && [ -L "${TB_PROFILE_FOLDER}" ]; } && \
[ "$(readlink -e "${TB_PROFILE_FOLDER}")" = "${ID_PROFILE_FOLDER}" ];then
output_debug "Found folder ${ID_PROFILE_FOLDER}, found a symlink
${TB_PROFILE_FOLDER} pointing to ${ID_PROFILE_FOLDER}"
# Check if we need to do some migration, the linking could be existing
# before we switched back to Thunderbird.
if [ ! -f "${TB_PROFILE_FOLDER}/.migrated" ]; then
# Fixing mimeTypes.rdf which may have registered the iceweasel binary
# as browser, instead of x-www-browser
do_fix_mimetypes_rdf
# Fix local mimeapp.list and *.desktop entries
do_migrate_old_icedove_desktop
fi
# ... or the opposite if .icedove is symlinked to .thunderbird
elif { [ -d "${TB_PROFILE_FOLDER}" ] && [ -L "${ID_PROFILE_FOLDER}" ]; } && \
[ "$(readlink -e "${ID_PROFILE_FOLDER}")" != "${TB_PROFILE_FOLDER}" ];then
output_debug "Found folder ${TB_PROFILE_FOLDER}, found a symlink
${ID_PROFILE_FOLDER} pointing to ${TB_PROFILE_FOLDER}"
output_debug "You may want to remove the symlink ${ID_PROFILE_FOLDER}? It's
probably not needed anymore."
# Check if we need to do some migration ...
if [ ! -f "${TB_PROFILE_FOLDER}/.migrated" ]; then
# Fixing mimeTypes.rdf which may have registered the iceweasel binary
# as browser, instead of x-www-browser
do_fix_mimetypes_rdf
# Fix local mimeapps.list and *.desktop entries
do_migrate_old_icedove_desktop
fi
# We found both profile folder, but they are not linked to each other! This
# is a state we can't solve on our own !!! The user needs to interact and
# has probably an old or otherwise used Thunderbird installation. Which one
# is the correct one to use?
elif { [ -d "${ID_PROFILE_FOLDER}" ] || [ -L "${ID_PROFILE_FOLDER}" ]; } && \
{ [ -d "${TB_PROFILE_FOLDER}" ] || [ -L "${TB_PROFILE_FOLDER}" ]; } && \
[ "$(readlink -e "${TB_PROFILE_FOLDER}")" != "${ID_PROFILE_FOLDER}" ];
then
output_debug "There is already a folder or symlink '${TB_PROFILE_FOLDER}',
will do nothing."
output_debug "Please investigate by yourself! Some more information below."
logger -i -p warning -s "$0: [profile migration] Couldn't migrate Icedove
into Thunderbird profile due existing or symlinked folder
'${TB_PROFILE_FOLDER}'!"
for CHECK in ${ID_PROFILE_FOLDER} ${TB_PROFILE_FOLDER}; do
FILE_CHECK=$(readlink -e "${CHECK}")
if [ "${FILE_CHECK}" != "" ] && [ -L "${CHECK}" ]; then
output_debug "Found symlink '${FILE_CHECK}'"
elif [ "${FILE_CHECK}" != "" ] && [ -d "${CHECK}" ]; then
output_debug "Found folder '${FILE_CHECK}'"
else
output_debug "${CHECK} is probably a symlink pointing to a non
existing target, at least not to ${ID_PROFILE_FOLDER}."
logger -i -p warning -s "$0: [profile migration] ${CHECK} is
probably a symlink pointing to a non existing target, at least not to
${ID_PROFILE_FOLDER}."
fi
done
# display a graphical advice if possible
do_thunderbird2icedove_error_out
fi
if [ "$FAIL" = 1 ]; then
output_info "An error happened while trying to migrate the old Icedove
profile folder '${ID_PROFILE_FOLDER}'."
output_info "Please take a look into the syslog file!"
exit 1
fi
# If we are here we going simply further by starting Thunderbird.
if [ "${DEBUG}" = "" ]; then
output_debug "call '$MOZ_LIBDIR/$MOZ_APP_NAME ${TB_ARGS}'"
$MOZ_LIBDIR/$MOZ_APP_NAME "${TB_ARGS}"
else
# User has selected GDB?
if [ "$DEBUGGER" = "1" ]; then
# checking for GDB
if [ -f /usr/bin/gdb ]; then
if [ -f /usr/lib/debug/usr/lib/thunderbird/thunderbird ]; then
output_info "Starting Thunderbird with GDB ..."
LANG='' /usr/lib/thunderbird/run-mozilla.sh -g
/usr/lib/thunderbird/thunderbird-bin "${TB_ARGS}"
else
output_info "No package 'thunderbird-dbg' installed! Please
install first and restart."
exit 1
fi
else
output_info "No package 'gdb' installed! Please install first and
try again."
exit 1
fi
fi
fi
exit 0