diff --git a/.gitignore b/.gitignore
index d6342fb..28a9e39 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,7 +1,7 @@
 SOURCES/Python-2.7.13.tar.xz
 SOURCES/gtk3-private-3.22.26-1.el6.src.rpm
-SOURCES/l10n-lightning-60.2.1.tar.xz
 SOURCES/libffi-3.0.13-18.el7_3.src.rpm
-SOURCES/thunderbird-60.2.1.source.tar.xz
-SOURCES/thunderbird-langpacks-60.2.1-20181003.tar.xz
+SOURCES/lightning-langpacks-60.4.0.tar.xz
+SOURCES/thunderbird-60.4.0.source.tar.xz
+SOURCES/thunderbird-langpacks-60.4.0-20190103.tar.xz
 SOURCES/yasm-1.2.0-3.el5.src.rpm
diff --git a/.thunderbird.metadata b/.thunderbird.metadata
index c18d07e..37bab28 100644
--- a/.thunderbird.metadata
+++ b/.thunderbird.metadata
@@ -1,7 +1,7 @@
 18a8f30a0356c751b8d0ea6f76e764cab13ee046 SOURCES/Python-2.7.13.tar.xz
 0de63f863b158454b9429234b52ed28a397ec45c SOURCES/gtk3-private-3.22.26-1.el6.src.rpm
-68f9529acf49d1d3b0970e3d81c60bf4ca4e4a3b SOURCES/l10n-lightning-60.2.1.tar.xz
 e188ab1a444697bc649e223c28389d82ca94c472 SOURCES/libffi-3.0.13-18.el7_3.src.rpm
-c88a3c949756574b6c92631105a57238ce7c329c SOURCES/thunderbird-60.2.1.source.tar.xz
-82178960fd71e500d7d05793883b13f3eb3a1fd7 SOURCES/thunderbird-langpacks-60.2.1-20181003.tar.xz
+147cffbafb9672855a3a60c276c3f7b80a7a9103 SOURCES/lightning-langpacks-60.4.0.tar.xz
+bcdd2096a0e6cdfb28a8bef384688a03625ce4c5 SOURCES/thunderbird-60.4.0.source.tar.xz
+446f167505f108dea8c647537154a9a804e39223 SOURCES/thunderbird-langpacks-60.4.0-20190103.tar.xz
 77fd30f7ebc12a629a31c1e252cec06af55a71fe SOURCES/yasm-1.2.0-3.el5.src.rpm
diff --git a/README.debrand b/README.debrand
deleted file mode 100644
index 01c46d2..0000000
--- a/README.debrand
+++ /dev/null
@@ -1,2 +0,0 @@
-Warning: This package was configured for automatic debranding, but the changes
-failed to apply.
diff --git a/SOURCES/build-nss-version.patch b/SOURCES/build-nss-version.patch
index 734005d..58e62c9 100644
--- a/SOURCES/build-nss-version.patch
+++ b/SOURCES/build-nss-version.patch
@@ -5,7 +5,7 @@ diff -up firefox-60.1.0/old-configure.in.nss-version firefox-60.1.0/old-configur
      _USE_SYSTEM_NSS=1 )
  
  if test -n "$_USE_SYSTEM_NSS"; then
--    AM_PATH_NSS(3.36.4, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
+-    AM_PATH_NSS(3.36.6, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
 +    AM_PATH_NSS(3.36.0, [MOZ_SYSTEM_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
  fi
  
diff --git a/SOURCES/get-calendar-langpacks.sh b/SOURCES/get-calendar-langpacks.sh
new file mode 100755
index 0000000..d3f5e86
--- /dev/null
+++ b/SOURCES/get-calendar-langpacks.sh
@@ -0,0 +1,126 @@
+#!/bin/bash
+#set -x
+set -e
+usage()
+{
+cat << EOF
+usage: $0 options
+
+This script downloads calendar langpacks for Thunderbird.
+
+OPTIONS:
+   -h      Show this message
+   -v      Version string (7.0.1)
+   -b      Build number (1, 2, 3)
+   -r      Reuse downloaded files (when you don't want to redownload)
+EOF
+}
+
+VER=
+BUILDNUM=
+LANG_DATE=`date "+%Y%m%d"`
+while getopts “hv:b:r” OPTION
+do
+     case $OPTION in
+         h)
+             usage
+             exit 1
+             ;;
+         v)
+             VER=$OPTARG
+             ;;
+         b)
+             BUILDNUM=$OPTARG
+             ;;
+         ?)
+             usage
+             exit
+             ;;
+     esac
+done
+
+if [ -z "$VER" -o -z "$BUILDNUM"  ]
+then
+     echo "Missing version or build number."
+     usage
+     exit 1
+fi
+
+WHITE='\033[1;33m'
+NC='\033[0m' # No Color
+
+LOCALES=`curl -f https://archive.mozilla.org/pub/thunderbird/candidates/$VER-candidates/build$BUILDNUM/linux-i686/ | grep "a href"|sed -e "s|.*/\([^/]*\)/\".*|\1|"|tail -n+2 |grep -v xpi`
+#echo $LOCALES
+rm -rf lightning-langpacks
+mkdir -p lightning-langpacks
+cd lightning-langpacks
+LOCALE_COUNT=`echo $LOCALES| tr ' ' '\n' | wc -l`
+LOCALE_NUM=0
+for lang in $LOCALES; do
+  LOCALE_NUM=$((LOCALE_NUM+1))
+  echo -e "${WHITE}Processing calendar locale: $lang ($LOCALE_NUM/$LOCALE_COUNT)${NC}"
+  mkdir -p extracted_lightning
+  mkdir -p calendar-locales
+  #echo Downloading TB binary for locale: $lang
+  wget --quiet https://archive.mozilla.org/pub/thunderbird/candidates/$VER-candidates/build$BUILDNUM/linux-i686/$lang/thunderbird-$VER.tar.bz2
+
+  cd extracted_lightning
+  tar -xf ../thunderbird-$VER.tar.bz2 thunderbird/distribution/extensions/\{e2fda1a4-762b-4020-b5ad-a41df1933103\}.xpi
+  set +e
+  unzip -qq thunderbird/distribution/extensions/\{e2fda1a4-762b-4020-b5ad-a41df1933103\}.xpi
+  set -e
+  LIGHTNING_VERSION=`cat app.ini |grep "^Version="|sed -e 's/Version=//'`
+  BUILD_ID=`cat app.ini |grep "^BuildID="|sed -e 's/BuildID=//'`
+  MAX_VERSION=`cat app.ini |grep MaxVersion|sed -e s/MaxVersion=//`
+  MIN_VERSION=`cat app.ini |grep MinVersion|sed -e s/MinVersion=//`
+  rm -rf thunderbird
+  mkdir -p ../calendar-locales/chrome
+  cp -r chrome/calendar-$lang ../calendar-locales/chrome
+  cp -r chrome/lightning-$lang ../calendar-locales/chrome
+  cd -
+
+  cd calendar-locales
+  # create manifest
+  cat > manifest.json <<EOL
+{
+  "languages": {
+    "$lang": {
+      "chrome_resources": {
+        "calendar": "chrome/calendar-$lang/locale/$lang/calendar/",
+        "lightning": "chrome/lightning-$lang/locale/$lang/lightning/"
+      },
+      "version": "$LIGHTNING_VERSION"
+    }
+  },
+  "applications": {
+    "gecko": {
+      "strict_min_version": "$MIN_VERSION",
+      "id": "langpack-cal-$lang@lightning.mozilla.org",
+      "strict_max_version": "$MAX_VERSION"
+    }
+  },
+  "langpack_id": "$lang",
+  "version": "$LIGHTNING_VERSION$BUILD_ID",
+  "name": "$lang Language Pack Calendar",
+  "manifest_version": 2,
+  "sources": {
+    "browser": {
+      "base_path": "browser/"
+    }
+  },
+  "author": "Mozilla.cz (contributors: Pavel Cvrček, Pavel Franc, Michal Stanke, Michal Vašíček)",
+  "description": "Language pack for Thunderbird for $lang, this was repacked by Fedora/RHEL package maintainer from original binaries."
+}
+
+EOL
+  zip --quiet -r ../langpack-cal-$lang@lightning.mozilla.org.xpi *
+  cd -
+  rm -rf calendar-locales
+  rm -rf extracted_lightning
+
+  rm -f thunderbird-$VER.tar.bz2
+done
+echo "Creating lightning-langpacks-$VER.tar.xz..."
+tar cJf ../lightning-langpacks-$VER.tar.xz *.xpi
+cd ..
+rm -rf lightning-langpacks
diff --git a/SOURCES/gtk3-private-3.22.26-1-files.inc b/SOURCES/gtk3-private-3.22.26-1-files.inc
index cf89c66..8e1e31a 100644
--- a/SOURCES/gtk3-private-3.22.26-1-files.inc
+++ b/SOURCES/gtk3-private-3.22.26-1-files.inc
@@ -40,6 +40,7 @@
 %{gtk3_install_path}/%{_lib}/gio
 %ghost %attr(644, root, root) %{gtk3_install_path}/%{_lib}/gio/modules/giomodule.cache
 %{gtk3_install_path}/%{_lib}/gtk-3.0
+%ghost %attr(644, root, root) %{gtk3_install_path}/%{_lib}/gtk-3.0/3.0.0/immodules.cache
 
 %{gtk3_install_path}/libexec
 
diff --git a/SOURCES/mklangsource.sh b/SOURCES/mklangsource.sh
deleted file mode 100755
index fd2205f..0000000
--- a/SOURCES/mklangsource.sh
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/bin/bash
-# This checks out and builds the language sources.  The lightning source needs
-# to already be unpacked
-#lver=`awk '/^%global *lightning_ver/ { print $3; exit }' thunderbird.spec`
-tbver=`awk '/^Version:/ { print $2; exit }' thunderbird.spec`
-#tag=CALENDAR_${lver//./_}_RELEASE
-tag=THUNDERBIRD_${tbver//./_}_RELEASE
-branch=`awk '/^%define *tarballdir/ { print $3; exit }' thunderbird.spec`
-locales=$PWD/thunderbird-${tbver}/${branch}/comm/calendar/locales/shipped-locales
-#locales=$PWD/shipped-locales
-if [ ! -f $locales ]
-then
-  echo "ERROR: missing $locales, try fedpkg prep first"
-  exit 1
-fi
-[ ! -d l10n ] && mkdir l10n
-cd l10n
-for lang in $(<$locales)
-do
-  if [ -d $lang ]
-  then
-    pushd $lang
-    hg pull
-    hg update $tag
-    #hg update
-    popd
-  else
-    hg clone -u $tag http://hg.mozilla.org/releases/l10n/mozilla-release/$lang
-    #hg clone http://hg.mozilla.org/l10n-central/$lang
-  fi
-done
-cd ..
-# Need to merge by compare-locale tool
-# More info here: https://developer.mozilla.org/en-US/docs/Mozilla/Projects/compare-locales
-# how to get compare-locales: sudo easy_install -U compare-locales
-
-# Make copy to merge with
-rm -rf l10n-merged
-cp -R l10n l10n-merged
-for lang in $(<$locales)
-do
-  compare-locales --merge l10n-merged/$lang $PWD/thunderbird-${tbver}/${branch}/comm/calendar/locales/l10n.ini l10n $lang
-done
-
-
-# Tar up, minus the mercurial files
-rm -f l10n-${lver}.tar.xz
-tar caf l10n-lightning-${tbver}.tar.xz --exclude='.hg*'  l10n-merged
diff --git a/SOURCES/mozilla-1475775-key3-revert.patch b/SOURCES/mozilla-1475775-key3-revert.patch
deleted file mode 100644
index 5ab7cbc..0000000
--- a/SOURCES/mozilla-1475775-key3-revert.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-diff --git a/security/manager/ssl/nsNSSComponent.cpp b/security/manager/ssl/nsNSSComponent.cpp
---- a/security/manager/ssl/nsNSSComponent.cpp
-+++ b/security/manager/ssl/nsNSSComponent.cpp
-@@ -1654,6 +1654,51 @@
-   }
-   return AttemptToRenamePKCS11ModuleDB(profilePath, sqlModuleDBFilename);
- }
-+
-+// When we changed from the old dbm database format to the newer sqlite
-+// implementation, the upgrade process left behind the existing files. Suppose a
-+// user had not set a password for the old key3.db (which is about 99% of
-+// users). After upgrading, both the old database and the new database are
-+// unprotected. If the user then sets a password for the new database, the old
-+// one will not be protected. In this scenario, we should probably just remove
-+// the old database (it would only be relevant if the user downgraded to a
-+// version of Firefox before 58, but we have to trade this off against the
-+// user's old private keys being unexpectedly unprotected after setting a
-+// password).
-+// This was never an issue on Android because we always used the new
-+// implementation.
-+static void
-+MaybeCleanUpOldNSSFiles(const nsACString& profilePath)
-+{
-+  UniquePK11SlotInfo slot(PK11_GetInternalKeySlot());
-+  if (!slot) {
-+    return;
-+  }
-+  // Unfortunately we can't now tell the difference between "there already was a
-+  // password when the upgrade happened" and "there was not a password but then
-+  // the user added one after upgrading".
-+  bool hasPassword = PK11_NeedLogin(slot.get()) &&
-+                     !PK11_NeedUserInit(slot.get());
-+  if (!hasPassword) {
-+    return;
-+  }
-+  nsCOMPtr<nsIFile> dbFile = do_CreateInstance("@mozilla.org/file/local;1");
-+  if (!dbFile) {
-+    return;
-+  }
-+  nsresult rv = dbFile->InitWithNativePath(profilePath);
-+  if (NS_FAILED(rv)) {
-+    return;
-+  }
-+  NS_NAMED_LITERAL_CSTRING(keyDBFilename, "key3.db");
-+  rv = dbFile->AppendNative(keyDBFilename);
-+  if (NS_FAILED(rv)) {
-+    return;
-+  }
-+  // Since this isn't a directory, the `recursive` argument to `Remove` is
-+  // irrelevant.
-+  Unused << dbFile->Remove(false);
-+}
- #endif // ifndef ANDROID
- 
- // Given a profile directory, attempt to initialize NSS. If nocertdb is true,
-@@ -1685,6 +1730,9 @@
-   SECStatus srv = ::mozilla::psm::InitializeNSS(profilePath, false, !safeMode);
-   if (srv == SECSuccess) {
-     MOZ_LOG(gPIPNSSLog, LogLevel::Debug, ("initialized NSS in r/w mode"));
-+#ifndef ANDROID
-+    MaybeCleanUpOldNSSFiles(profilePath);
-+#endif // ifndef ANDROID
-     return NS_OK;
-   }
- #ifndef ANDROID
-
diff --git a/SOURCES/thunderbird-mozconfig b/SOURCES/thunderbird-mozconfig
index efada3a..c304223 100644
--- a/SOURCES/thunderbird-mozconfig
+++ b/SOURCES/thunderbird-mozconfig
@@ -15,7 +15,6 @@ ac_add_options --enable-release
 ac_add_options --enable-startup-notification
 ac_add_options --libdir="$LIBDIR"
 ac_add_options --prefix="$PREFIX"
-ac_add_options --with-l10n-base=../../l10n-merged
 ac_add_options --without-system-libvpx
 ac_add_options --with-pthreads
 ac_add_options --with-system-jpeg
diff --git a/SPECS/thunderbird.spec b/SPECS/thunderbird.spec
index e42beda..7055e8e 100644
--- a/SPECS/thunderbird.spec
+++ b/SPECS/thunderbird.spec
@@ -89,8 +89,8 @@
 
 Summary:        Mozilla Thunderbird mail/newsgroup client
 Name:           thunderbird
-Version:        60.2.1
-Release:        4%{?dist}
+Version:        60.4.0
+Release:        1%{?dist}
 URL:            http://www.mozilla.org/projects/thunderbird/
 License:        MPLv1.1 or GPLv2+ or LGPLv2+
 Group:          Applications/Internet
@@ -105,11 +105,11 @@ ExclusiveArch:  i686 x86_64 ppc64 s390x
 # From ftp://archive.mozilla.org/pub/thunderbird/releases/%{version}%{?ext_version}/source
 Source0:        https://archive.mozilla.org/pub/thunderbird/releases/%{version}%{?pre_version}/source/thunderbird-%{version}%{?pre_version}.source.tar.xz
 %if %{build_langpacks}
-Source1:        thunderbird-langpacks-%{version}%{?ext_version}-20181003.tar.xz
-%endif
+Source1:        thunderbird-langpacks-%{version}%{?ext_version}-20190103.tar.xz
 # Locales for lightning
-Source2:        l10n-lightning-%{version}.tar.xz
-Source3:        mklangsource.sh
+Source2:        lightning-langpacks-%{version}.tar.xz
+%endif
+Source3:        get-calendar-langpacks.sh
 
 Source10:       thunderbird-mozconfig
 Source20:       thunderbird.desktop
@@ -167,7 +167,6 @@ Patch413:        mozilla-1353817.patch
 Patch415:        mozilla-1436242.patch
 Patch416:        mozilla-1460871-ldap-query.patch
 #Removing this patch would lead to losing user saved credentials in profile!
-Patch417:        mozilla-1475775-key3-revert.patch
 
 ## Thunderbird patches
 
@@ -355,7 +354,6 @@ Mozilla Thunderbird is a standalone mail and newsgroup client.
 # This needs to stay for the future releases
 %if 0%{?rhel} < 8
 %patch230 -p1 -b .1503632-nss
-%patch417 -R -p1 -b .1475775-key3-revert
 %endif
 
 #ARM run-time patch
@@ -719,16 +717,6 @@ export MOZ_MAKE_FLAGS="$MOZ_SMP_FLAGS"
 export STRIP=/bin/true
 ./mach build -v
 
-# Package l10n files
-cd objdir/comm/calendar/lightning
-grep -v 'osx' ../../../calendar/locales/shipped-locales | while read lang x
-do
-   make AB_CD=en-US L10N_XPI_NAME=lightning libs-$lang
-done
-# install l10n files
-make tools
-cd -
-
 #---------------------------------------------------------------------
 
 %install
@@ -864,6 +852,12 @@ function create_default_langpack() {
 #create_default_langpack "pt-PT" "pt"
 #create_default_langpack "sv-SE" "sv"
 #create_default_langpack "zh-TW" "zh"
+
+# lightning langpacks install
+cd %{buildroot}%{langpackdir}
+%{__tar} xf %{SOURCE2}
+chmod a+r *.xpi
+cd -
 %endif # build_langpacks
 
 # Get rid of devel package and its debugsymbols
@@ -989,7 +983,16 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
 #===============================================================================
 
 %changelog
-* Tue Oct 16 2018 Jan Horak <jhorak@redhat.com> - 60.2.1-4
+* Thu Jan  3 2019 Jan Horak <jhorak@redhat.com> - 60.4.0-1
+- Update to 60.4.0
+
+* Wed Oct 31 2018 Jan Horak <jhorak@redhat.com> - 60.3.0-1
+- Update to 60.3.0
+
+* Wed Oct 31 2018 Jan Horak <jhorak@redhat.com> - 60.2.1-6
+- Fixed missing calendar langpacks
+
+* Tue Oct 16 2018 Jan Horak <jhorak@redhat.com> - 60.2.1-5
 - Fixing minor issues
 
 * Wed Oct 10 2018 Jan Horak <jhorak@redhat.com> - 60.2.1-3