commit 85e1b734da380da95e9a77535709f71c51e1c1af
Author: Translation commit bot <translation(a)torproject.org>
Date: Mon Oct 12 08:46:28 2020 +0000
https://gitweb.torproject.org/translation.git/commit/?h=snowflakeaddon-mess…
---
it/messages.json | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/it/messages.json b/it/messages.json
index 59aab94c82..62f2463eab 100644
--- a/it/messages.json
+++ b/it/messages.json
@@ -63,16 +63,16 @@
"message": "Segnala un Problema"
},
"fileBug": {
- "message": "If you encounter problems with Snowflake as a client or a proxy, please consider filing a bug report. There are two ways to file a bug report:"
+ "message": "Se incappi in qualche problema con Snowflake, sia come client che come proxy, considera di segnalare l'errore. Ci sono due modi per farlo:"
},
"sharedAccount": {
- "message": "Edit the <a href=\"https://pad.riseup.net/p/tor-anti-censorship-bugs-keep\">public bug-reporting pad</a> of the anti-censorship team."
+ "message": "Modifica il <a href=\"https://pad.riseup.net/p/tor-anti-censorship-bugs-keep\">pad di segnalazione pubblico</a> del team anti-censura."
},
"bugTracker": {
- "message": "<a href=\"https://gitlab.torproject.org/\">Request an account</a> at the Tor Project GitLab, then <a href=\"https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snow…">open a new issue</a> in the Snowflake project."
+ "message": "<a href=\"https://gitlab.torproject.org/\">Richiedi un account</a> nel GitLab di Tor Project, poi <a href=\"https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snow…">apri una segnalazione</a> nel progetto Snowflake."
},
"descriptive": {
- "message": "Please try to be as descriptive as possible with your ticket and if possible include log messages that will help us reproduce the bug."
+ "message": "Cerca di essere il più descrittivo possibile nel tuo ticket e se possibile includi messaggi di log che possano aiutarci a riprodurre l'errore."
},
"embed": {
"message": "Incorpora"
commit fc07e8aba067e82a517cc12569a5aafb251dfb41
Author: Translation commit bot <translation(a)torproject.org>
Date: Mon Oct 12 08:15:23 2020 +0000
https://gitweb.torproject.org/translation.git/commit/?h=fenix-torbrowserstr…
---
it/torbrowser_strings.xml | 28 +++++++++++++++++++++++++++-
1 file changed, 27 insertions(+), 1 deletion(-)
diff --git a/it/torbrowser_strings.xml b/it/torbrowser_strings.xml
index 099bf619f7..534f872b26 100644
--- a/it/torbrowser_strings.xml
+++ b/it/torbrowser_strings.xml
@@ -2,19 +2,30 @@
- License, v. 2.0. If a copy of the MPL was not distributed with this
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
<resources>
+ <!-- Preference for enabling non-Private Browsing Mode-->
+ <string name="preferences_disable_normal_mode">Permetti solo modalità di navigazione anonima</string>
<!-- Preference link to donate to The Tor Project-->
<string name="preferences_donate">Fai una donazione a The Tor Project</string>
+ <!-- Preference for allowing screenshots to be taken in the app-->
+ <string name="preferences_allow_screenshots">Permetti acquisizione schermate</string>
+
<string name="tor_bootstrap_connect">Connetti</string>
<string name="tor_bootstrap_connecting">Connessione in corso</string>
+ <string name="tor_bootstrap_connecting_failed">Connessione fallita</string>
<string name="tor_bootstrap_quick_start_label">Avvio Veloce</string>
<string name="tor_bootstrap_quick_start_disabled">Abilita Avvio Veloce per connetterti automaticamente in futuro</string>
+ <string name="tor_bootstrap_quick_start_enabled">%s si connetterà automaticamente alla rete Tor in futuro</string>
<string name="tor_bootstrap_swipe_for_logs">Scorri a sinistra per vedere i log di Tor</string>
<string name="tor_initializing_log">Inizializzazione di Tor Log</string>
+ <string name="tor_onboarding_security_level">Imposta il tuo livello di sicurezza</string>
+ <string name="tor_onboarding_security_level_description">Disabilita alcune funzionalità web che possono essere usate per attaccarti e danneggiare la tua sicurezza, anonimato e privacy.</string>
<string name="tor_onboarding_security_level_standard_option">Standard</string>
<string name="tor_onboarding_security_level_standard_button_description">Tutte le funzionalità di Tor Browser e dei siti sono attive.</string>
<string name="tor_onboarding_security_level_safer_option">Sicuro</string>
+ <string name="tor_onboarding_security_level_safer_button_description">Disattiva le caratteristiche dei siti spesso pericolose, causando la perdita di funzionalità di alcuni siti.</string>
<string name="tor_onboarding_security_level_safest_option">Il più sicuro</string>
+ <string name="tor_onboarding_security_level_safest_button_description">Permetti solo le funzionalità necessarie per siti statici e servizi di base. Queste modifiche influiscono su immagini, media e script.</string>
<string name="tor_onboarding_security_settings_button">Apri Impostazioni di Sicurezza</string>
<string name="tor_onboarding_donate_header">Fai una donazione e mantieni Tor sicuro</string>
<string name="tor_onboarding_donate_description">L\'utilizzo di Tor è gratuito grazie alle donazioni fatte da persone come te.</string>
@@ -24,13 +35,28 @@
<string name="preferences_tor_network_settings">Rete Tor</string>
<string name="preferences_tor_network_settings_explanation">Tor Browser indirizza il tuo traffico nella rete Tor, gestita da migliaia di volontari in tutto il mondo.</string>
+ <string name="preferences_tor_network_settings_bridge_config">Configura bridge</string>
+ <string name="preferences_tor_network_settings_bridge_config_description">Usa un bridge per connettere a Tor</string>
+ <string name="preferences_tor_network_settings_bridge_config_description_builtin_transport_enabled">Stai usando un bridge integrato per connetterti a Tor</string>
+ <string name="preferences_tor_network_settings_bridge_config_description_user_provided_enabled">Hai fornito un bridge per connettere a Tor</string>
+ <string name="preferences_tor_network_settings_bridge_config_explanation">I bridge sono ripetitori non elencati che rendono più difficile bloccare le connessioni alla rete Tor. A causa del fatto che Paesi diversi provano a bloccare Tor in modi diversi, alcuni bridge funzionano in certe nazioni e non in altre.</string>
+ <string name="preferences_tor_network_settings_bridge_config_toggle">Usa un bridge</string>
+ <string name="preferences_tor_network_settings_bridge_config_toggle_description">Configura un bridge per connettere a Tor</string>
<string name="preferences_tor_network_settings_bridge_config_builtin_bridge_obfs4">obfs4</string>
<string name="preferences_tor_network_settings_bridge_config_builtin_bridge_meek_azure">meek-azure</string>
+ <string name="preferences_tor_network_settings_bridge_config_builtin_bridge_snowflake">snowflake</string>
<string name="preferences_tor_network_settings_bridge_config_user_provided_bridge">Fornisci un bridge che conosci</string>
+ <string name="preferences_tor_network_settings_bridge_config_user_provided_bridge_description">Inserisci le informazioni del bridge da una fonte fidata</string>
+ <string name="preferences_tor_network_settings_bridge_config_current_bridge">Bridge attualmente configurato: %s</string>
+ <string name="tor_network_settings_bridge_not_configured">Non configurato</string>
+ <string name="preferences_tor_network_settings_status">Stato attuale</string>
+ <string name="preferences_tor_network_settings_tor_ready">Tor è pronto: %s</string>
+ <string name="preferences_tor_network_settings_state">Stato: %s</string>
<string name="preferences_tor_network_settings_yes">Sì</string>
<string name="preferences_tor_network_settings_no">No</string>
<string name="preferences_tor_network_settings_disconnected">Disconnesso</string>
<string name="preferences_tor_network_settings_connecting">Connessione in corso</string>
<string name="preferences_tor_network_settings_connected">Connesso</string>
<string name="preferences_tor_network_settings_restarting">Riavvio</string>
- </resources>
+ <string name="preferences_tor_network_settings_bridges_enabled">I bridge sono attivi: %s</string>
+</resources>
commit 5c0de343cbb33a3b77f9f7ed00b5390c66de0e7e
Author: Translation commit bot <translation(a)torproject.org>
Date: Mon Oct 12 05:46:06 2020 +0000
https://gitweb.torproject.org/translation.git/commit/?h=tails-misc
---
tr.po | 110 +++++++++++++++++++++++++++++++++---------------------------------
1 file changed, 55 insertions(+), 55 deletions(-)
diff --git a/tr.po b/tr.po
index c5d83789ec..8d3c82c588 100644
--- a/tr.po
+++ b/tr.po
@@ -33,7 +33,7 @@ msgstr ""
"Project-Id-Version: Tor Project\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-10-06 07:46+0200\n"
-"PO-Revision-Date: 2020-10-11 15:22+0000\n"
+"PO-Revision-Date: 2020-10-12 05:37+0000\n"
"Last-Translator: Kaya Zeren <kayazeren(a)gmail.com>\n"
"Language-Team: Turkish (http://www.transifex.com/otf/torproject/language/tr/)\n"
"MIME-Version: 1.0\n"
@@ -77,13 +77,13 @@ msgstr "Ek Uygulamalar"
msgid ""
"You can install additional software automatically from your persistent "
"storage when starting Tails."
-msgstr "Tails başlatılırken kalıcı depolama alanından otomatik olarak ek uygulamalar kurabilirsiniz."
+msgstr "Tails başlatılırken kalıcı depolama biriminden otomatik olarak ek uygulamalar kurabilirsiniz."
#: config/chroot_local-includes/usr/share/tails/additional-software/configuration-window.ui:77
msgid ""
"The following software is installed automatically from your persistent "
"storage when starting Tails."
-msgstr "Şu uygulamalar Tails başlatılırken kalıcı depolama alanından otomatik olarak kurulacak."
+msgstr "Şu uygulamalar Tails başlatılırken kalıcı depolama biriminden otomatik olarak kurulacak."
#: config/chroot_local-includes/usr/share/tails/additional-software/configuration-window.ui:135
#: config/chroot_local-includes/usr/local/bin/tails-additional-software-config:171
@@ -95,7 +95,7 @@ msgstr "Başka uygulamalar eklemek için <a href=\"synaptic.desktop\">Synaptic P
#: config/chroot_local-includes/usr/share/tails/additional-software/configuration-window.ui:154
msgid "_Create persistent storage"
-msgstr "_Kalıcı depolama oluştur"
+msgstr "_Kalıcı depolama birimi oluştur"
#: config/chroot_local-includes/usr/local/bin/electrum:62
msgid "Persistence is disabled for Electrum"
@@ -193,14 +193,14 @@ msgstr "Bu Tails sürümü güncel değil ve güvenlik sorunları olabilir."
msgid ""
"The available incremental upgrade requires {space_needed} of free space on "
"Tails system partition, but only {free_space} is available."
-msgstr "Yüklenebilecek artımlı güncelleme için Tails sistem bölümünde {space_needed} boş alan gerekli ancak yalnız {free_space} var."
+msgstr "Kullanılabilecek artımlı yükseltme için Tails sistem bölümünde {space_needed} boş alan gerekli ancak yalnız {free_space} var."
#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:407
#, perl-brace-format
msgid ""
"The available incremental upgrade requires {memory_needed} of free memory, "
"but only {free_memory} is available."
-msgstr "Kullanılabilir artağan yükseltme mevcut belleğin {memory_needed} kadarını gerektiriyor; ancak yalnızca {free_memory} kullanılabilir."
+msgstr "Kullanılabilecek artımlı yükseltme için {memory_needed} boş bellek gerekli ancak yalnız {free_memory} var."
#: config/chroot_local-includes/usr/src/iuk/lib/Tails/IUK/Frontend.pm:426
msgid ""
@@ -513,12 +513,12 @@ msgstr "_Tuş Takımı Düzeni"
#: config/chroot_local-includes/usr/lib/python2.7/dist-packages/tails_installer/creator.py:138
msgid "Extracting live image to the target device..."
-msgstr "Hedef cihaza canlı resim çıkartılıyor..."
+msgstr "Canlı İşletim Sistemi kalıbı hedef aygıta ayıklanıyor..."
#: config/chroot_local-includes/usr/lib/python2.7/dist-packages/tails_installer/creator.py:145
#, python-format
msgid "Wrote to device at %(speed)d MB/sec"
-msgstr "Aygıta %(speed)d MB/saniye hızında yazıldı"
+msgstr "Aygıta %(speed)d MB/saniye hızında yazılıyor"
#: config/chroot_local-includes/usr/lib/python2.7/dist-packages/tails_installer/creator.py:276
#, python-format
@@ -532,12 +532,12 @@ msgstr "Şu komut yürütülürken bir sorun çıktı: `%(command)s`.\nAyrıntı
msgid ""
"Not enough free space on device.\n"
"%dMB ISO + %dMB overlay > %dMB free space"
-msgstr "Aygıtta yeterli boş alan yok.\n%dMB ISO + %dMB kaplama > %dMB boş alan"
+msgstr "Aygıt üzerinde yeterli boş alan yok.\n%dMB ISO + %dMB kaplama > %dMB boş alan"
#: config/chroot_local-includes/usr/lib/python2.7/dist-packages/tails_installer/creator.py:299
#, python-format
msgid "Creating %sMB persistent overlay"
-msgstr "%sMB kalıcı kaplaması oluşturuluyor"
+msgstr "%sMB kalıcı depolama birimi kaplaması oluşturuluyor"
#: config/chroot_local-includes/usr/lib/python2.7/dist-packages/tails_installer/creator.py:349
#, python-format
@@ -572,7 +572,7 @@ msgstr "%s aygıtı bulunamadı"
#: config/chroot_local-includes/usr/lib/python2.7/dist-packages/tails_installer/creator.py:632
#, python-format
msgid "Unable to write on %(device)s, skipping."
-msgstr "%(device)s aygıtına yazılamadı, atlanıyor."
+msgstr "%(device)s aygıtına yazılamadı, atlanıyor."
#: config/chroot_local-includes/usr/lib/python2.7/dist-packages/tails_installer/creator.py:662
#, python-format
@@ -629,7 +629,7 @@ msgstr "Çıkarma işleminden sonra %s takılı"
#: config/chroot_local-includes/usr/lib/python2.7/dist-packages/tails_installer/creator.py:785
#, python-format
msgid "Partitioning device %(device)s"
-msgstr "%(device)s aygıtı bölümlendiriliyor "
+msgstr "%(device)s aygıtı bölümleniyor "
#: config/chroot_local-includes/usr/lib/python2.7/dist-packages/tails_installer/creator.py:914
#, python-format
@@ -651,7 +651,7 @@ msgstr "Birim etiketi değiştirişemedi: %(message)s"
#: config/chroot_local-includes/usr/lib/python2.7/dist-packages/tails_installer/creator.py:956
msgid "Installing bootloader..."
-msgstr "Bootloader kuruluyor..."
+msgstr "Başlatıcı kuruluyor..."
#: config/chroot_local-includes/usr/lib/python2.7/dist-packages/tails_installer/creator.py:963
#, python-format
@@ -834,7 +834,7 @@ msgid ""
"\n"
"\n"
"The persistent storage on this USB stick will be preserved."
-msgstr "\n\nBu USB bellekteki kalıcı depolama korunacak."
+msgstr "\n\nBu USB bellekteki kalıcı depolama birimi korunacak."
#: config/chroot_local-includes/usr/lib/python2.7/dist-packages/tails_installer/gui.py:666
#, python-format
@@ -913,7 +913,7 @@ msgid ""
"<i>KeePassXC</i> changed the default name of the database to <i>Passwords.kdbx</i>.\n"
"\n"
"Renaming your database to <i>Passwords.kdbx</i> would allow <i>KeePassXC</i> to open it automatically in the future."
-msgstr "<b><big><i>KeePassXC</i> veri tabanınızı yeniden adlandırmak istiyor musunuz?</big></b>\n\n<i>Kalıcı</i> klasörünüzde bir <i>KeePassXC</i> veritabanınız var:\n\n<i>${filename}</i>\n\n<i>KeePassXC</i>, veritabanının varsayılan adını şu şekilde değiştirdi: <i>Passwords.kdbx</i>\n\nVeritabanınız <i>Passwords.kdbx</i> olarak yeniden adlandırıldığında <i>KeePassXC</i> tarafından otomatik olarak açılabilir."
+msgstr "<b><big><i>KeePassXC</i> veri tabanınızı yeniden adlandırmak istiyor musunuz?</big></b>\n\n<i>Kalıcı depolama</i> klasörünüzde bir <i>KeePassXC</i> veritabanınız var:\n\n<i>${filename}</i>\n\n<i>KeePassXC</i>, veritabanının varsayılan adını şu şekilde değiştirdi: <i>Passwords.kdbx</i>\n\nVeritabanınız <i>Passwords.kdbx</i> olarak yeniden adlandırıldığında <i>KeePassXC</i> tarafından otomatik olarak açılabilir."
#: config/chroot_local-includes/usr/local/bin/keepassxc:25
msgid "Rename"
@@ -925,11 +925,11 @@ msgstr "Geçerli ad korunsun"
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Bootstrap.pm:94
msgid "Persistence wizard - Persistent volume creation"
-msgstr "Kalıcılık yardımcısı - Kalıcı depolama oluşturma"
+msgstr "Kalıcılık yardımcısı - Kalıcı depolama birimi oluşturma"
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Bootstrap.pm:97
msgid "Choose a passphrase to protect the persistent volume"
-msgstr "Kalıcı depolamayı korumak için bir parola seçin"
+msgstr "Kalıcı depolama birimini korumayacak bir parola seçin"
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Bootstrap.pm:100
#, perl-brace-format
@@ -937,7 +937,7 @@ msgid ""
"A {size} persistent volume will be created on the <b>{vendor} {model}</b> "
"device. Data on this volume will be stored in an encrypted form protected by"
" a passphrase."
-msgstr ""
+msgstr "<b>{vendor} {model}</b> aygıtında {size} boyutunda bir kalıcı depolama birimi oluşturulacak. Buradaki veriler parola ile şifrelenmiş olarak depolanacak."
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Bootstrap.pm:105
msgid "Create"
@@ -988,11 +988,11 @@ msgstr "Tails kalıcılık bölümü takılacak"
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Bootstrap.pm:325
msgid "Correcting permissions of the persistent volume."
-msgstr "Kalıcı depolama izinleri düzeltiliyor."
+msgstr "Kalıcı depolama birimi izinleri düzeltiliyor."
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Bootstrap.pm:328
msgid "The permissions of the persistent volume will be corrected."
-msgstr "Kalıcı depolama izinleri düzeltilecek."
+msgstr "Kalıcı depolama biriminin izinleri düzeltilecek."
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Bootstrap.pm:336
msgid "Creating default persistence configuration."
@@ -1008,22 +1008,22 @@ msgstr "Oluşturuluyor..."
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Bootstrap.pm:355
msgid "Creating the persistent volume..."
-msgstr "Kalıcı depolama oluşturuluyor..."
+msgstr "Kalıcı depolama birimi oluşturuluyor..."
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Configure.pm:86
msgid "Persistence wizard - Persistent volume configuration"
-msgstr "Kalıcılık yardımcısı - Kalıcı depolama yapılandırması"
+msgstr "Kalıcılık yardımcısı - Kalıcı depolama birimi yapılandırması"
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Configure.pm:89
msgid "Specify the files that will be saved in the persistent volume"
-msgstr "Kalıcı depolamaya kaydedilecek dosyaları belirtin"
+msgstr "Kalıcı depolama birimine kaydedilecek dosyaları belirtin"
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Configure.pm:92
#, perl-brace-format
msgid ""
"The selected files will be stored in the encrypted partition {partition} "
"({size}), on the <b>{vendor} {model}</b> device."
-msgstr ""
+msgstr "Seçilen dosyalar <b>{vendor} {model}</b> aygıtında bulunan şifreli {partition} ({size}) bölümüne depolanacak."
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Configure.pm:98
msgid "Save"
@@ -1039,18 +1039,18 @@ msgstr "Kalıcılık ayarları kaydediliyor..."
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Delete.pm:51
msgid "Persistence wizard - Persistent volume deletion"
-msgstr "Kalıcılık yardımcısı - Kalıcı depolamayı silme"
+msgstr "Kalıcılık yardımcısı - Kalıcı depolama birimini silme"
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Delete.pm:54
msgid "Your persistent data will be deleted."
-msgstr "Kalıcı depolama verileriniz silinecek."
+msgstr "Kalıcı depolama birimindeki verileriniz silinecek."
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Delete.pm:58
#, perl-brace-format
msgid ""
"The persistent volume {partition} ({size}), on the <b>{vendor} {model}</b> "
"device, will be deleted."
-msgstr ""
+msgstr "<b>{vendor} {model}</b> aygıtındaki, {partition} ({size}) kalıcı depolama birimi silinecek."
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Delete.pm:64
msgid "Delete"
@@ -1062,7 +1062,7 @@ msgstr "Siliniyor..."
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Step/Delete.pm:116
msgid "Deleting the persistent volume..."
-msgstr "Kalıcı depolama siliniyor..."
+msgstr "Kalıcı depolama birimi siliniyor..."
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Configuration/Presets.pm:53
msgid "Personal Data"
@@ -1163,7 +1163,7 @@ msgstr "Özel"
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:284
msgid "Setup Tails persistent volume"
-msgstr "Tails kalıcı depolaması kur"
+msgstr "Tails kalıcı depolama birimini kur"
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:362
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:489
@@ -1175,22 +1175,22 @@ msgstr "Hata"
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:388
msgid "Device already has a persistent volume."
-msgstr ""
+msgstr "Aygıt üzerinde zaten bir kalıcı depolama birimi var."
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:395
msgid "Device has not enough unallocated space."
-msgstr ""
+msgstr "Aygıt üzerinde yeteri kadar boş alan yok."
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:401
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:414
msgid "Device has no persistent volume."
-msgstr ""
+msgstr "Aygıt üzerinde bir kalıcı depolama birimi yok."
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:407
msgid ""
"Cannot delete the persistent volume while in use. You should restart Tails "
"without persistence."
-msgstr "Kullanımda olduğundan kalıcı birim silinemedi. Tails yazılımını kalıcılık olmadan yeniden başlatmalısınız."
+msgstr "Kullanımda olduğundan kalıcı depolama birimi silinemedi. Tails yazılımını kalıcılık olmadan yeniden başlatmalısınız."
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:419
msgid "Persistence volume is not unlocked."
@@ -1206,19 +1206,19 @@ msgstr "Kalıcılık birimi okunamıyor. İzin ya da sahiplik sorunları olabili
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:433
msgid "Persistence volume is not writable."
-msgstr ""
+msgstr "Kalıcı depolama birimi yazılabilir değil."
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:442
msgid "Tails is running from non-USB / non-SDIO device."
-msgstr ""
+msgstr "Tails, USB ya da SDIO özelliği olmayan bir aygıt üzerinden çalışıyor."
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:447
msgid "Device is optical."
-msgstr ""
+msgstr "Aygıt optik disk."
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:454
msgid "Device was not created using a USB image or Tails Installer."
-msgstr ""
+msgstr "Aygıt bir USB kalıbı ya da Tails kurucusu kullanılarak oluşturulmamış."
#: config/chroot_local-includes/usr/src/persistence-setup/lib/Tails/Persistence/Setup.pm:696
msgid "Persistence wizard - Finished"
@@ -1362,7 +1362,7 @@ msgstr "{packages} ek uygulamalara eklensin mi?"
msgid ""
"To install it automatically from your persistent storage when starting "
"Tails."
-msgstr "Tails başlatılırken kalıcı depolama alanınızdan otomatik olarak kurmak için."
+msgstr "Tails başlatılırken kalıcı depolama biriminizden otomatik olarak kurmak için."
#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:294
msgid "Install Every Time"
@@ -1383,15 +1383,15 @@ msgstr "Ek uygulamanız yapılandırılamadı."
msgid ""
"To install it automatically when starting Tails, you can create a persistent"
" storage and activate the <b>Additional Software</b> feature."
-msgstr "Tails başlatılırken otomatik kurulum yapılması için bir kalıcı depolama oluşturarak <b>Ek Uygulamalar</b> özelliğini etkinleştirebilirsiniz."
+msgstr "Tails başlatılırken otomatik kurulum yapılması için bir kalıcı depolama birimi oluşturarak <b>Ek Uygulamalar</b> özelliğini etkinleştirebilirsiniz."
#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:325
msgid "Create Persistent Storage"
-msgstr "Kalıcı Depolama Oluştur"
+msgstr "Kalıcı Depolama Birimi Oluştur"
#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:333
msgid "Creating your persistent storage failed."
-msgstr "Kalıcı depolama oluşturulamadı."
+msgstr "Kalıcı depolama birimi oluşturulamadı."
#. Translators: Don't translate {packages}, it's a placeholder and
#. will be replaced.
@@ -1425,7 +1425,7 @@ msgstr "Kaldır"
#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:544
msgid "Installing your additional software from persistent storage..."
-msgstr "Ek uygulamalarınız kalıcı depolama alanından kuruluyor..."
+msgstr "Ek uygulamalarınız kalıcı depolama biriminden kuruluyor..."
#: config/chroot_local-includes/usr/local/sbin/tails-additional-software:546
msgid "This can take several minutes."
@@ -1498,19 +1498,19 @@ msgid ""
"some software using <a href=\"synaptic.desktop\">Synaptic Package "
"Manager</a> or <a href=\"org.gnome.Terminal.desktop\">APT on the command "
"line</a>."
-msgstr "Bunun için Tails uygulamasını başlatırken kalıcı deponuzun kilidini açın ve <a href=\"synaptic.desktop\">Synaptic Paket Yöneticisi</a> ya da <a href=\"org.gnome.Terminal.desktop\">komut satırından APT kullanarak</a> diğer uygulamaları kurun."
+msgstr "Bunun için Tails uygulamasını başlatırken kalıcı depolama biriminizin kilidini açın ve <a href=\"synaptic.desktop\">Synaptic Paket Yöneticisi</a> ya da <a href=\"org.gnome.Terminal.desktop\">komut satırından APT kullanarak</a> diğer uygulamaları kurun."
#: config/chroot_local-includes/usr/local/bin/tails-additional-software-config:197
msgid ""
"To do so, create a persistent storage and install some software using <a "
"href=\"synaptic.desktop\">Synaptic Package Manager</a> or <a "
"href=\"org.gnome.Terminal.desktop\">APT on the command line</a>."
-msgstr "Bunun için, bir kalıcı depolama ekleyin ve <a href=\"synaptic.desktop\">Synaptic Paket Yöneticisi</a> ya da <a href=\"org.gnome.Terminal.desktop\">komut satırından APT kullanarak</a> diğer uygulamaları kurun."
+msgstr "Bunun için, bir kalıcı depolama birimi ekleyin ve <a href=\"synaptic.desktop\">Synaptic Paket Yöneticisi</a> ya da <a href=\"org.gnome.Terminal.desktop\">komut satırından APT kullanarak</a> diğer uygulamaları kurun."
#: config/chroot_local-includes/usr/local/bin/tails-additional-software-config:205
msgid ""
"To do so, install Tails on a USB stick and create a persistent storage."
-msgstr "Bunun için Tails uygulamasını bir USB belleğe kurun ve bir kalıcı depolama ekleyin."
+msgstr "Bunun için Tails uygulamasını bir USB belleğe kurun ve bir kalıcı depolama birimi ekleyin."
#: config/chroot_local-includes/usr/local/bin/tails-additional-software-config:251
msgid "[package not available]"
@@ -1840,7 +1840,7 @@ msgstr "Güvenli Olmayan Tarayıcı"
msgid ""
"The Unsafe Browser was not enabled in the Welcome Screen.\\n\\nTo use the Unsafe Browser, restart Tails and enable the Unsafe Browser in the additional settings of the Welcome Screen.\\n\n"
"To always enable the Unsafe Browser, turn on the Welcome Screen feature of the Persistent Storage."
-msgstr "Hoş geldiniz ekranında, Güvenli Olmayan Tarayıcı etkinleştirilmemiş.\\n\\nGüvenli Olmayan Tarayıcıyı kullanmak için, Tails uygulamasını yeniden başlatın ve Hoş Geldiniz Ekranındaki ek ayarlardan Güvenli Olmayan Tarayıcıyı etkinleştirin.\\n\nGüvenli Olmayan Tarayıcıyı kalıcı olarak etkinleştirmek için, Kalıcı Depolamada Hoş Geldiniz Ekranı özelliğini açın."
+msgstr "Hoş geldiniz ekranında, Güvenli Olmayan Tarayıcı etkinleştirilmemiş.\\n\\nGüvenli Olmayan Tarayıcıyı kullanmak için, Tails uygulamasını yeniden başlatın ve Hoş Geldiniz Ekranındaki ek ayarlardan Güvenli Olmayan Tarayıcıyı etkinleştirin.\\n\nGüvenli Olmayan Tarayıcıyı kalıcı olarak etkinleştirmek için, Kalıcı Depolama Biriminde Hoş Geldiniz Ekranı özelliğini açın."
#: config/chroot_local-includes/usr/local/sbin/unsafe-browser:99
msgid ""
@@ -2020,19 +2020,19 @@ msgstr "Tails hakkında ayrıntılı bilgi alın"
#: ../config/chroot_local-includes/usr/share/applications/tails-installer.desktop.in.h:2
msgid "Install, clone, upgrade Tails"
-msgstr ""
+msgstr "Tails uygulamasını kur, kopyala, yükselt"
#: ../config/chroot_local-includes/usr/share/applications/tails-persistence-delete.desktop.in.h:1
msgid "Delete persistent volume"
-msgstr "Kalıcı depolamayı sil"
+msgstr "Kalıcı depolama birimini sil"
#: ../config/chroot_local-includes/usr/share/applications/tails-persistence-delete.desktop.in.h:2
msgid "Delete the persistent volume and its content"
-msgstr "Kalıcı depolamayı ve içeriğini siler"
+msgstr "Kalıcı depolama birimini ve içeriğini siler"
#: ../config/chroot_local-includes/usr/share/applications/tails-persistence-setup.desktop.in.h:1
msgid "Configure persistent volume"
-msgstr "Kalıcı depolamayı yapılandır"
+msgstr "Kalıcı depolama birimini yapılandır"
#: ../config/chroot_local-includes/usr/share/applications/tails-persistence-setup.desktop.in.h:2
msgid ""
@@ -2064,7 +2064,7 @@ msgstr "VeraCrypt ile şifrelenmiş dosya kapsayıcı ve aygıtlarını bağla"
msgid ""
"Configure the additional software installed from your persistent storage "
"when starting Tails"
-msgstr "Tails başlatılırken kalıcı depolama alanınızdan kurulacak ek uygulamaları yapılandırın."
+msgstr "Tails başlatılırken kalıcı depolama biriminizden kurulacak ek uygulamaları yapılandırın."
#: ../config/chroot_local-includes/usr/share/applications/whisperback.desktop.in.h:1
msgid "WhisperBack Error Reporting"
@@ -2185,7 +2185,7 @@ msgstr "Unsafe Browser kullanılsın (varsayılan)"
#: ../config/chroot_local-includes/usr/share/tails/greeter/main.ui.in:100
msgid "Settings were loaded from the persistent storage."
-msgstr "Ayarlar kalıcı depolama alanından yüklendi."
+msgstr "Ayarlar kalıcı depolama biriminden yüklendi."
#: ../config/chroot_local-includes/usr/share/tails/greeter/main.ui.in:168
msgid ""
@@ -2207,17 +2207,17 @@ msgstr "Varsayılan Ayarlar"
#: ../config/chroot_local-includes/usr/share/tails/greeter/main.ui.in:353
msgid "Encrypted _Persistent Storage"
-msgstr "Şifreli _Kalıcı Depolama"
+msgstr "Şifreli _Kalıcı Depolama Birimi"
#. The label for this placeholder text is not very big, so keep this string
#. short.
#: ../config/chroot_local-includes/usr/share/tails/greeter/main.ui.in:447
msgid "Enter your passphrase to unlock the persistent storage"
-msgstr "Kalıcı depolamanın kilidini açmak için parolanızı yazın"
+msgstr "Kalıcı depolama biriminin kilidini açmak için parolanızı yazın"
#: ../config/chroot_local-includes/usr/share/tails/greeter/main.ui.in:495
msgid "Your persistent storage is unlocked. Restart Tails to lock it again."
-msgstr "Kalıcı depolama alanının kilidi açıldı. Yeniden kilitlemek için Tails uygulamasını yeniden başlatın."
+msgstr "Kalıcı depolama biriminin kilidi açıldı. Yeniden kilitlemek için Tails uygulamasını yeniden başlatın."
#: ../config/chroot_local-includes/usr/share/tails/greeter/main.ui.in:533
msgid "_Additional Settings"
commit 65e79d4262efb2d80a64e3826ddf4362970f6b0f
Author: Georg Koppen <gk(a)torproject.org>
Date: Mon Oct 5 10:18:34 2020 +0000
Bug 40097: Update toolchain for Fenix 82
As Fenix 82 uses clang 11.0.0-rc3 it is easier if we switch to using
the llvm-project repository directly. This fixes the mobile part of
bug 40048.
We need to use our compiled binutils version, too, as the one that comes
with Debian Buster (2.31.1) is breaking the build. We hit
https://bugs.llvm.org/show_bug.cgi?id=42994 which is essentially
an ld bug (https://sourceware.org/bugzilla/show_bug.cgi?id=24458). That
one is fixed on the 2.31 branch and onwards but never made it into a
2.31.x release.
---
projects/fenix-clang/43909.patch | 252 ---------------------------------------
projects/fenix-clang/build | 19 +--
projects/fenix-clang/config | 7 +-
projects/llvm-project/build | 8 ++
projects/llvm-project/config | 5 +
5 files changed, 26 insertions(+), 265 deletions(-)
diff --git a/projects/fenix-clang/43909.patch b/projects/fenix-clang/43909.patch
deleted file mode 100644
index 78d2a75..0000000
--- a/projects/fenix-clang/43909.patch
+++ /dev/null
@@ -1,252 +0,0 @@
-From c95310f2d4fd3c88241c3b5d6dbf6251d34a3256 Mon Sep 17 00:00:00 2001
-From: Nikita Popov <nikita.ppv(a)gmail.com>
-Date: Sat, 16 Nov 2019 16:22:18 +0100
-Subject: [PATCH] Restructure caching
-
-Variant on D70103. The caching is switched to always use a BB to
-cache entry map, which then contains per-value caches. A separate
-set contains value handles with a deletion callback. This allows us
-to properly invalidate overdefined values.
-
-A possible alternative would be to always cache by value first and
-have per-BB maps/sets in the each cache entry. In that case we could
-use a ValueMap and would avoid the separate value handle set. I went
-with the BB indexing at the top level to make it easier to integrate
-D69914, but possibly that's not the right choice.
-
-Differential Revision: https://reviews.llvm.org/D70376
-
-diff --git a/llvm/lib/Analysis/LazyValueInfo.cpp b/llvm/lib/Analysis/LazyValueInfo.cpp
-index 110c085d3f3..aa6862cb588 100644
---- a/llvm/lib/Analysis/LazyValueInfo.cpp
-+++ b/llvm/lib/Analysis/LazyValueInfo.cpp
-@@ -133,12 +133,9 @@ namespace {
- /// A callback value handle updates the cache when values are erased.
- class LazyValueInfoCache;
- struct LVIValueHandle final : public CallbackVH {
-- // Needs to access getValPtr(), which is protected.
-- friend struct DenseMapInfo<LVIValueHandle>;
--
- LazyValueInfoCache *Parent;
-
-- LVIValueHandle(Value *V, LazyValueInfoCache *P)
-+ LVIValueHandle(Value *V, LazyValueInfoCache *P = nullptr)
- : CallbackVH(V), Parent(P) { }
-
- void deleted() override;
-@@ -152,89 +149,63 @@ namespace {
- /// This is the cache kept by LazyValueInfo which
- /// maintains information about queries across the clients' queries.
- class LazyValueInfoCache {
-- /// This is all of the cached block information for exactly one Value*.
-- /// The entries are sorted by the BasicBlock* of the
-- /// entries, allowing us to do a lookup with a binary search.
-- /// Over-defined lattice values are recorded in OverDefinedCache to reduce
-- /// memory overhead.
-- struct ValueCacheEntryTy {
-- ValueCacheEntryTy(Value *V, LazyValueInfoCache *P) : Handle(V, P) {}
-- LVIValueHandle Handle;
-- SmallDenseMap<PoisoningVH<BasicBlock>, ValueLatticeElement, 4> BlockVals;
-+ /// This is all of the cached information for one basic block. It contains
-+ /// the per-value lattice elements, as well as a separate set for
-+ /// overdefined values to reduce memory usage.
-+ struct BlockCacheEntryTy {
-+ SmallDenseMap<AssertingVH<Value>, ValueLatticeElement, 4> LatticeElements;
-+ SmallDenseSet<AssertingVH<Value>, 4> OverDefined;
- };
-
-- /// This tracks, on a per-block basis, the set of values that are
-- /// over-defined at the end of that block.
-- typedef DenseMap<PoisoningVH<BasicBlock>, SmallPtrSet<Value *, 4>>
-- OverDefinedCacheTy;
-- /// Keep track of all blocks that we have ever seen, so we
-- /// don't spend time removing unused blocks from our caches.
-- DenseSet<PoisoningVH<BasicBlock> > SeenBlocks;
--
-- /// This is all of the cached information for all values,
-- /// mapped from Value* to key information.
-- DenseMap<Value *, std::unique_ptr<ValueCacheEntryTy>> ValueCache;
-- OverDefinedCacheTy OverDefinedCache;
--
-+ /// Cached information per basic block.
-+ DenseMap<PoisoningVH<BasicBlock>, BlockCacheEntryTy> BlockCache;
-+ /// Set of value handles used to erase values from the cache on deletion.
-+ DenseSet<LVIValueHandle, DenseMapInfo<Value *>> ValueHandles;
-
- public:
- void insertResult(Value *Val, BasicBlock *BB,
- const ValueLatticeElement &Result) {
-- SeenBlocks.insert(BB);
--
-+ auto &CacheEntry = BlockCache.try_emplace(BB).first->second;
- // Insert over-defined values into their own cache to reduce memory
- // overhead.
- if (Result.isOverdefined())
-- OverDefinedCache[BB].insert(Val);
-- else {
-- auto It = ValueCache.find_as(Val);
-- if (It == ValueCache.end()) {
-- ValueCache[Val] = make_unique<ValueCacheEntryTy>(Val, this);
-- It = ValueCache.find_as(Val);
-- assert(It != ValueCache.end() && "Val was just added to the map!");
-- }
-- It->second->BlockVals[BB] = Result;
-- }
-- }
--
-- bool isOverdefined(Value *V, BasicBlock *BB) const {
-- auto ODI = OverDefinedCache.find(BB);
--
-- if (ODI == OverDefinedCache.end())
-- return false;
-+ CacheEntry.OverDefined.insert(Val);
-+ else
-+ CacheEntry.LatticeElements.insert({ Val, Result });
-
-- return ODI->second.count(V);
-+ auto HandleIt = ValueHandles.find_as(Val);
-+ if (HandleIt == ValueHandles.end())
-+ ValueHandles.insert({ Val, this });
- }
-
- bool hasCachedValueInfo(Value *V, BasicBlock *BB) const {
-- if (isOverdefined(V, BB))
-- return true;
--
-- auto I = ValueCache.find_as(V);
-- if (I == ValueCache.end())
-+ auto It = BlockCache.find(BB);
-+ if (It == BlockCache.end())
- return false;
-
-- return I->second->BlockVals.count(BB);
-+ return It->second.OverDefined.count(V) ||
-+ It->second.LatticeElements.count(V);
- }
-
- ValueLatticeElement getCachedValueInfo(Value *V, BasicBlock *BB) const {
-- if (isOverdefined(V, BB))
-+ auto It = BlockCache.find(BB);
-+ if (It == BlockCache.end())
-+ return ValueLatticeElement();
-+
-+ if (It->second.OverDefined.count(V))
- return ValueLatticeElement::getOverdefined();
-
-- auto I = ValueCache.find_as(V);
-- if (I == ValueCache.end())
-+ auto LatticeIt = It->second.LatticeElements.find(V);
-+ if (LatticeIt == It->second.LatticeElements.end())
- return ValueLatticeElement();
-- auto BBI = I->second->BlockVals.find(BB);
-- if (BBI == I->second->BlockVals.end())
-- return ValueLatticeElement();
-- return BBI->second;
-+
-+ return LatticeIt->second;
- }
-
- /// clear - Empty the cache.
- void clear() {
-- SeenBlocks.clear();
-- ValueCache.clear();
-- OverDefinedCache.clear();
-+ BlockCache.clear();
-+ ValueHandles.clear();
- }
-
- /// Inform the cache that a given value has been deleted.
-@@ -248,23 +219,18 @@ namespace {
- /// OldSucc might have (unless also overdefined in NewSucc). This just
- /// flushes elements from the cache and does not add any.
- void threadEdgeImpl(BasicBlock *OldSucc,BasicBlock *NewSucc);
--
-- friend struct LVIValueHandle;
- };
- }
-
- void LazyValueInfoCache::eraseValue(Value *V) {
-- for (auto I = OverDefinedCache.begin(), E = OverDefinedCache.end(); I != E;) {
-- // Copy and increment the iterator immediately so we can erase behind
-- // ourselves.
-- auto Iter = I++;
-- SmallPtrSetImpl<Value *> &ValueSet = Iter->second;
-- ValueSet.erase(V);
-- if (ValueSet.empty())
-- OverDefinedCache.erase(Iter);
-+ for (auto &Pair : BlockCache) {
-+ Pair.second.LatticeElements.erase(V);
-+ Pair.second.OverDefined.erase(V);
- }
-
-- ValueCache.erase(V);
-+ auto HandleIt = ValueHandles.find_as(V);
-+ if (HandleIt != ValueHandles.end())
-+ ValueHandles.erase(HandleIt);
- }
-
- void LVIValueHandle::deleted() {
-@@ -274,18 +240,7 @@ void LVIValueHandle::deleted() {
- }
-
- void LazyValueInfoCache::eraseBlock(BasicBlock *BB) {
-- // Shortcut if we have never seen this block.
-- DenseSet<PoisoningVH<BasicBlock> >::iterator I = SeenBlocks.find(BB);
-- if (I == SeenBlocks.end())
-- return;
-- SeenBlocks.erase(I);
--
-- auto ODI = OverDefinedCache.find(BB);
-- if (ODI != OverDefinedCache.end())
-- OverDefinedCache.erase(ODI);
--
-- for (auto &I : ValueCache)
-- I.second->BlockVals.erase(BB);
-+ BlockCache.erase(BB);
- }
-
- void LazyValueInfoCache::threadEdgeImpl(BasicBlock *OldSucc,
-@@ -303,10 +258,11 @@ void LazyValueInfoCache::threadEdgeImpl(BasicBlock *OldSucc,
- std::vector<BasicBlock*> worklist;
- worklist.push_back(OldSucc);
-
-- auto I = OverDefinedCache.find(OldSucc);
-- if (I == OverDefinedCache.end())
-+ auto I = BlockCache.find(OldSucc);
-+ if (I == BlockCache.end() || I->second.OverDefined.empty())
- return; // Nothing to process here.
-- SmallVector<Value *, 4> ValsToClear(I->second.begin(), I->second.end());
-+ SmallVector<Value *, 4> ValsToClear(I->second.OverDefined.begin(),
-+ I->second.OverDefined.end());
-
- // Use a worklist to perform a depth-first search of OldSucc's successors.
- // NOTE: We do not need a visited list since any blocks we have already
-@@ -320,10 +276,10 @@ void LazyValueInfoCache::threadEdgeImpl(BasicBlock *OldSucc,
- if (ToUpdate == NewSucc) continue;
-
- // If a value was marked overdefined in OldSucc, and is here too...
-- auto OI = OverDefinedCache.find(ToUpdate);
-- if (OI == OverDefinedCache.end())
-+ auto OI = BlockCache.find(ToUpdate);
-+ if (OI == BlockCache.end() || OI->second.OverDefined.empty())
- continue;
-- SmallPtrSetImpl<Value *> &ValueSet = OI->second;
-+ auto &ValueSet = OI->second.OverDefined;
-
- bool changed = false;
- for (Value *V : ValsToClear) {
-@@ -333,11 +289,6 @@ void LazyValueInfoCache::threadEdgeImpl(BasicBlock *OldSucc,
- // If we removed anything, then we potentially need to update
- // blocks successors too.
- changed = true;
--
-- if (ValueSet.empty()) {
-- OverDefinedCache.erase(OI);
-- break;
-- }
- }
-
- if (!changed) continue;
---
-2.24.0
-
diff --git a/projects/fenix-clang/build b/projects/fenix-clang/build
index 10700ce..c3c15f1 100644
--- a/projects/fenix-clang/build
+++ b/projects/fenix-clang/build
@@ -10,20 +10,21 @@ export PATH="/var/tmp/dist/cmake/bin:$PATH"
[% pc('gcc', 'var/setup', { compiler_tarfile => c('input_files_by_name/gcc'),
hardened_gcc => 0 }) %]
ln -s gcc /var/tmp/dist/gcc/bin/cc
- tar -C /var/tmp/dist -xf [% c('input_files_by_name/binutils') %]
- export PATH="/var/tmp/dist/binutils/bin:$PATH"
[% END -%]
+tar -C /var/tmp/dist -xf [% c('input_files_by_name/binutils') %]
+export PATH="/var/tmp/dist/binutils/bin:$PATH"
+
mkdir -p /var/tmp/build
cd /var/tmp/build
-tar -xf $rootdir/[% c('input_files_by_name/clang-source') %]
-cd clang-source
-export LLVM_HOME=$(pwd)
+tar -xf $rootdir/[% c('input_files_by_name/llvm-project') %]
+cd llvm-project
mkdir build
cd build
-cmake .. -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=$distdir \
- -DCMAKE_BUILD_TYPE:STRING=Release \
- [% IF c("var/rlbox") -%]-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly \[% END -%]
- $LLVM_HOME
+cmake ../llvm -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=$distdir \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DLLVM_TARGETS_TO_BUILD="X86;ARM;AArch64" \
+ [% IF c("var/rlbox") -%]-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly \[% END -%]
+ -DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;compiler-rt;libcxx;libcxxabi;lld"
make -j[% c("buildconf/num_procs") %]
make install
cd /var/tmp/dist
diff --git a/projects/fenix-clang/config b/projects/fenix-clang/config
index 46d308a..4bc55f3 100644
--- a/projects/fenix-clang/config
+++ b/projects/fenix-clang/config
@@ -1,5 +1,5 @@
# vim: filetype=yaml sw=2
-version: 9.0.1
+version: '[% pc("llvm-project", "version") %]'
filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
var:
@@ -13,8 +13,7 @@ input_files:
enable: '[% c("var/linux") %]'
- name: binutils
project: binutils
- enable: '[% c("var/linux") %]'
- project: cmake
name: cmake
- - project: clang-source
- name: clang-source
+ - project: llvm-project
+ name: llvm-project
diff --git a/projects/llvm-project/build b/projects/llvm-project/build
new file mode 100644
index 0000000..ac0f21b
--- /dev/null
+++ b/projects/llvm-project/build
@@ -0,0 +1,8 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+tar xf [% project %]-[% c("version") %].tar.gz
+mv [% project %]-[% c("version") %] [% project %]
+[% c('tar', {
+ tar_src => [ project ],
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/llvm-project/config b/projects/llvm-project/config
new file mode 100644
index 0000000..1574177
--- /dev/null
+++ b/projects/llvm-project/config
@@ -0,0 +1,5 @@
+# vim: filetype=yaml sw=2
+version: 11.0.0-rc3
+git_hash: 8aca41f39c207b6f9efe2e448986d109892072ad
+git_url: https://github.com/llvm/llvm-project
+filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
commit dbdff9c7f064678194377acc0543ee1c51ccbc17
Author: Georg Koppen <gk(a)torproject.org>
Date: Thu Oct 8 06:57:24 2020 +0000
Bug 40097: Update toolchain for Fenix 82
application-services needs a newer Rust compiler as it now uses
features (strip_suffix()) that got stablizied in 1.45.0 first. We don't
want to risk GeckoView stability and thus bite the bullet and add a
different project solely used by application-services for the time being.
We omit the clean-up as this is supposed to be temporary until Rust for
GeckoView gets bumped.
It is noteworthy that we still need the patch for bug 43909 albeit in
a slightly updated fashion. Originally, this landed on trunk for the
10.0 release but it got backed out later on and did not reland in time
for any 10.0 release. Thus, we need to keep that patch until Rust
switches to LLVM 11.
---
projects/fenix-as-rust/43909.patch | 252 ++++++++++++++++++++++++++++++++++++
projects/fenix-as-rust/build | 65 ++++++++++
projects/fenix-as-rust/config | 103 +++++++++++++++
projects/fenix-as-rust/unwind.patch | 162 +++++++++++++++++++++++
4 files changed, 582 insertions(+)
diff --git a/projects/fenix-as-rust/43909.patch b/projects/fenix-as-rust/43909.patch
new file mode 100644
index 0000000..94e2ae2
--- /dev/null
+++ b/projects/fenix-as-rust/43909.patch
@@ -0,0 +1,252 @@
+From 74ca2aebcd26adc7e3259d0802c07cc61b77a40c Mon Sep 17 00:00:00 2001
+From: Nikita Popov <nikita.ppv(a)gmail.com>
+Date: Sat, 16 Nov 2019 16:22:18 +0100
+Subject: [PATCH] Restructure caching
+
+Variant on D70103. The caching is switched to always use a BB to
+cache entry map, which then contains per-value caches. A separate
+set contains value handles with a deletion callback. This allows us
+to properly invalidate overdefined values.
+
+A possible alternative would be to always cache by value first and
+have per-BB maps/sets in the each cache entry. In that case we could
+use a ValueMap and would avoid the separate value handle set. I went
+with the BB indexing at the top level to make it easier to integrate
+D69914, but possibly that's not the right choice.
+
+Differential Revision: https://reviews.llvm.org/D70376
+
+diff --git a/llvm/lib/Analysis/LazyValueInfo.cpp b/llvm/lib/Analysis/LazyValueInfo.cpp
+index 7ae7a1fd549..8c9e85e95b3 100644
+--- a/llvm/lib/Analysis/LazyValueInfo.cpp
++++ b/llvm/lib/Analysis/LazyValueInfo.cpp
+@@ -136,12 +136,9 @@ namespace {
+ /// A callback value handle updates the cache when values are erased.
+ class LazyValueInfoCache;
+ struct LVIValueHandle final : public CallbackVH {
+- // Needs to access getValPtr(), which is protected.
+- friend struct DenseMapInfo<LVIValueHandle>;
+-
+ LazyValueInfoCache *Parent;
+
+- LVIValueHandle(Value *V, LazyValueInfoCache *P)
++ LVIValueHandle(Value *V, LazyValueInfoCache *P = nullptr)
+ : CallbackVH(V), Parent(P) { }
+
+ void deleted() override;
+@@ -155,89 +152,63 @@ namespace {
+ /// This is the cache kept by LazyValueInfo which
+ /// maintains information about queries across the clients' queries.
+ class LazyValueInfoCache {
+- /// This is all of the cached block information for exactly one Value*.
+- /// The entries are sorted by the BasicBlock* of the
+- /// entries, allowing us to do a lookup with a binary search.
+- /// Over-defined lattice values are recorded in OverDefinedCache to reduce
+- /// memory overhead.
+- struct ValueCacheEntryTy {
+- ValueCacheEntryTy(Value *V, LazyValueInfoCache *P) : Handle(V, P) {}
+- LVIValueHandle Handle;
+- SmallDenseMap<PoisoningVH<BasicBlock>, ValueLatticeElement, 4> BlockVals;
++ /// This is all of the cached information for one basic block. It contains
++ /// the per-value lattice elements, as well as a separate set for
++ /// overdefined values to reduce memory usage.
++ struct BlockCacheEntryTy {
++ SmallDenseMap<AssertingVH<Value>, ValueLatticeElement, 4> LatticeElements;
++ SmallDenseSet<AssertingVH<Value>, 4> OverDefined;
+ };
+
+- /// This tracks, on a per-block basis, the set of values that are
+- /// over-defined at the end of that block.
+- typedef DenseMap<PoisoningVH<BasicBlock>, SmallPtrSet<Value *, 4>>
+- OverDefinedCacheTy;
+- /// Keep track of all blocks that we have ever seen, so we
+- /// don't spend time removing unused blocks from our caches.
+- DenseSet<PoisoningVH<BasicBlock> > SeenBlocks;
+-
+- /// This is all of the cached information for all values,
+- /// mapped from Value* to key information.
+- DenseMap<Value *, std::unique_ptr<ValueCacheEntryTy>> ValueCache;
+- OverDefinedCacheTy OverDefinedCache;
+-
++ /// Cached information per basic block.
++ DenseMap<PoisoningVH<BasicBlock>, BlockCacheEntryTy> BlockCache;
++ /// Set of value handles used to erase values from the cache on deletion.
++ DenseSet<LVIValueHandle, DenseMapInfo<Value *>> ValueHandles;
+
+ public:
+ void insertResult(Value *Val, BasicBlock *BB,
+ const ValueLatticeElement &Result) {
+- SeenBlocks.insert(BB);
+-
++ auto &CacheEntry = BlockCache.try_emplace(BB).first->second;
+ // Insert over-defined values into their own cache to reduce memory
+ // overhead.
+ if (Result.isOverdefined())
+- OverDefinedCache[BB].insert(Val);
+- else {
+- auto It = ValueCache.find_as(Val);
+- if (It == ValueCache.end()) {
+- ValueCache[Val] = std::make_unique<ValueCacheEntryTy>(Val, this);
+- It = ValueCache.find_as(Val);
+- assert(It != ValueCache.end() && "Val was just added to the map!");
+- }
+- It->second->BlockVals[BB] = Result;
+- }
+- }
+-
+- bool isOverdefined(Value *V, BasicBlock *BB) const {
+- auto ODI = OverDefinedCache.find(BB);
+-
+- if (ODI == OverDefinedCache.end())
+- return false;
++ CacheEntry.OverDefined.insert(Val);
++ else
++ CacheEntry.LatticeElements.insert({ Val, Result });
+
+- return ODI->second.count(V);
++ auto HandleIt = ValueHandles.find_as(Val);
++ if (HandleIt == ValueHandles.end())
++ ValueHandles.insert({ Val, this });
+ }
+
+ bool hasCachedValueInfo(Value *V, BasicBlock *BB) const {
+- if (isOverdefined(V, BB))
+- return true;
+-
+- auto I = ValueCache.find_as(V);
+- if (I == ValueCache.end())
++ auto It = BlockCache.find(BB);
++ if (It == BlockCache.end())
+ return false;
+
+- return I->second->BlockVals.count(BB);
++ return It->second.OverDefined.count(V) ||
++ It->second.LatticeElements.count(V);
+ }
+
+ ValueLatticeElement getCachedValueInfo(Value *V, BasicBlock *BB) const {
+- if (isOverdefined(V, BB))
++ auto It = BlockCache.find(BB);
++ if (It == BlockCache.end())
++ return ValueLatticeElement();
++
++ if (It->second.OverDefined.count(V))
+ return ValueLatticeElement::getOverdefined();
+
+- auto I = ValueCache.find_as(V);
+- if (I == ValueCache.end())
+- return ValueLatticeElement();
+- auto BBI = I->second->BlockVals.find(BB);
+- if (BBI == I->second->BlockVals.end())
++ auto LatticeIt = It->second.LatticeElements.find(V);
++ if (LatticeIt == It->second.LatticeElements.end())
+ return ValueLatticeElement();
+- return BBI->second;
++
++ return LatticeIt->second;
+ }
+
+ /// clear - Empty the cache.
+ void clear() {
+- SeenBlocks.clear();
+- ValueCache.clear();
+- OverDefinedCache.clear();
++ BlockCache.clear();
++ ValueHandles.clear();
+ }
+
+ /// Inform the cache that a given value has been deleted.
+@@ -251,23 +222,18 @@ namespace {
+ /// OldSucc might have (unless also overdefined in NewSucc). This just
+ /// flushes elements from the cache and does not add any.
+ void threadEdgeImpl(BasicBlock *OldSucc,BasicBlock *NewSucc);
+-
+- friend struct LVIValueHandle;
+ };
+ }
+
+ void LazyValueInfoCache::eraseValue(Value *V) {
+- for (auto I = OverDefinedCache.begin(), E = OverDefinedCache.end(); I != E;) {
+- // Copy and increment the iterator immediately so we can erase behind
+- // ourselves.
+- auto Iter = I++;
+- SmallPtrSetImpl<Value *> &ValueSet = Iter->second;
+- ValueSet.erase(V);
+- if (ValueSet.empty())
+- OverDefinedCache.erase(Iter);
++ for (auto &Pair : BlockCache) {
++ Pair.second.LatticeElements.erase(V);
++ Pair.second.OverDefined.erase(V);
+ }
+
+- ValueCache.erase(V);
++ auto HandleIt = ValueHandles.find_as(V);
++ if (HandleIt != ValueHandles.end())
++ ValueHandles.erase(HandleIt);
+ }
+
+ void LVIValueHandle::deleted() {
+@@ -277,18 +243,7 @@ void LVIValueHandle::deleted() {
+ }
+
+ void LazyValueInfoCache::eraseBlock(BasicBlock *BB) {
+- // Shortcut if we have never seen this block.
+- DenseSet<PoisoningVH<BasicBlock> >::iterator I = SeenBlocks.find(BB);
+- if (I == SeenBlocks.end())
+- return;
+- SeenBlocks.erase(I);
+-
+- auto ODI = OverDefinedCache.find(BB);
+- if (ODI != OverDefinedCache.end())
+- OverDefinedCache.erase(ODI);
+-
+- for (auto &I : ValueCache)
+- I.second->BlockVals.erase(BB);
++ BlockCache.erase(BB);
+ }
+
+ void LazyValueInfoCache::threadEdgeImpl(BasicBlock *OldSucc,
+@@ -306,10 +261,11 @@ void LazyValueInfoCache::threadEdgeImpl(BasicBlock *OldSucc,
+ std::vector<BasicBlock*> worklist;
+ worklist.push_back(OldSucc);
+
+- auto I = OverDefinedCache.find(OldSucc);
+- if (I == OverDefinedCache.end())
++ auto I = BlockCache.find(OldSucc);
++ if (I == BlockCache.end() || I->second.OverDefined.empty())
+ return; // Nothing to process here.
+- SmallVector<Value *, 4> ValsToClear(I->second.begin(), I->second.end());
++ SmallVector<Value *, 4> ValsToClear(I->second.OverDefined.begin(),
++ I->second.OverDefined.end());
+
+ // Use a worklist to perform a depth-first search of OldSucc's successors.
+ // NOTE: We do not need a visited list since any blocks we have already
+@@ -323,10 +279,10 @@ void LazyValueInfoCache::threadEdgeImpl(BasicBlock *OldSucc,
+ if (ToUpdate == NewSucc) continue;
+
+ // If a value was marked overdefined in OldSucc, and is here too...
+- auto OI = OverDefinedCache.find(ToUpdate);
+- if (OI == OverDefinedCache.end())
++ auto OI = BlockCache.find(ToUpdate);
++ if (OI == BlockCache.end() || OI->second.OverDefined.empty())
+ continue;
+- SmallPtrSetImpl<Value *> &ValueSet = OI->second;
++ auto &ValueSet = OI->second.OverDefined;
+
+ bool changed = false;
+ for (Value *V : ValsToClear) {
+@@ -336,11 +292,6 @@ void LazyValueInfoCache::threadEdgeImpl(BasicBlock *OldSucc,
+ // If we removed anything, then we potentially need to update
+ // blocks successors too.
+ changed = true;
+-
+- if (ValueSet.empty()) {
+- OverDefinedCache.erase(OI);
+- break;
+- }
+ }
+
+ if (!changed) continue;
+--
+2.28.0
+
diff --git a/projects/fenix-as-rust/build b/projects/fenix-as-rust/build
new file mode 100644
index 0000000..5d3d5c1
--- /dev/null
+++ b/projects/fenix-as-rust/build
@@ -0,0 +1,65 @@
+#!/bin/bash
+[% c("var/set_default_env") -%]
+distdir=/var/tmp/dist/[% project %]
+mkdir -p $distdir
+tar -C /var/tmp/dist -xf [% c('input_files_by_name/cmake') %]
+export PATH="/var/tmp/dist/cmake/bin:$PATH"
+tar -C /var/tmp/dist -xf [% c('input_files_by_name/prev_rust') %]
+cd /var/tmp/dist/rust-[% c('var/prev_version') %]-x86_64-unknown-linux-gnu
+./install.sh --prefix=$distdir-rust-old
+export PATH="$distdir-rust-old/bin:$PATH"
+
+[% pc(c('var/compiler'), 'var/setup', { compiler_tarfile => c('input_files_by_name/' _ c('var/compiler')) }) %]
+
+[% IF c("var/osx") %]
+ # We need to clear `CC` and `LDFLAGS` as they are used for the host platform
+ # (i.e. Linux).
+ unset CC
+ unset LDFLAGS
+
+ mkdir $distdir/helper
+ # We need to adapt our CFLAGS and make sure our flags are passed down to all
+ # dependencies. Using `CFLAGS_x86_apple-darwin` did not do the trick, so resort
+ # to a wrapper script.
+ cat > $distdir/helper/x86_64-apple-darwin-clang << 'EOF'
+#!/bin/sh
+BASEDIR=/var/tmp/dist/macosx-toolchain
+$BASEDIR/cctools/bin/x86_64-apple-darwin-clang -target x86_64-apple-darwin -B $BASEDIR/cctools/bin -isysroot $BASEDIR/MacOSX10.11.sdk/ -Wl,-syslibroot,$BASEDIR/MacOSX10.11.sdk/ -Wl,-dead_strip -Wl,-pie "$@"
+EOF
+
+ chmod +x $distdir/helper/x86_64-apple-darwin-clang
+ export PATH=$distdir/helper:$PATH
+[% END %]
+
+cd $rootdir
+mkdir /var/tmp/build
+tar -C /var/tmp/build -xf [% c('input_files_by_name/rust') %]
+cd /var/tmp/build/rustc-[% c('version') %]-src
+
+# LLVM has reproducibility issues when optimizing bitcode, which we need to
+# patch. See: #32053 for more details.
+cd src/llvm-project
+patch -p1 < $rootdir/43909.patch
+cd ../../
+
+[% IF c("var/windows-i686") %]
+ # Cross-compiling for Windows 32bit is currently not possible without any
+ # patches. The reason for that is libstd expecting DWARF unwinding while most
+ # toolchains on Linux, targeting Windows 32bit, use SjLj unwinding.
+ # See: https://github.com/rust-lang/rust/issues/12859 for discussion about
+ # that and https://github.com/rust-lang/rust/pull/49633 for a newer attempt to
+ # fix this problem. We apply the patch from neersighted.
+ patch -p1 < $rootdir/unwind.patch
+[% END %]
+
+mkdir build
+cd build
+../configure --prefix=$distdir [% c("var/configure_opt") %]
+
+make -j[% c("buildconf/num_procs") %]
+make install
+cd /var/tmp/dist
+[% c('tar', {
+ tar_src => [ project ],
+ tar_args => '-czf ' _ dest_dir _ '/' _ c('filename'),
+ }) %]
diff --git a/projects/fenix-as-rust/config b/projects/fenix-as-rust/config
new file mode 100644
index 0000000..4a4ae3c
--- /dev/null
+++ b/projects/fenix-as-rust/config
@@ -0,0 +1,103 @@
+# vim: filetype=yaml sw=2
+filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
+version: '[% c("input_file_var/rust_version") %]'
+
+# Those values can be changed from the input_files section of other
+# projects. See bug 32436.
+input_file_var:
+ rust_version: 1.45.2
+ prev_version: 1.44.1
+
+var:
+ prev_version: '[% c("input_file_var/prev_version") %]'
+ container:
+ use_container: 1
+
+targets:
+ android:
+ var:
+ arch_deps:
+ - libssl-dev
+ - pkg-config
+ - zlib1g-dev
+ configure_opt: --enable-local-rust --enable-vendor --enable-extended --release-channel=stable --sysconfdir=etc --target=[% c("var/cross_prefix") %] --set=target.[% c("var/cross_prefix") %].cc=[% c("var/CC") %] --set=target.[% c("var/cross_prefix") %].ar=[% c("var/cross_prefix") %]-ar
+
+ android-armv7:
+ var:
+ configure_opt: --enable-local-rust --enable-vendor --enable-extended --release-channel=stable --sysconfdir=etc --target=[% IF pc(c("origin_project"), "var/application_services") %]armv7-linux-androideabi[% ELSE %]thumbv7neon-linux-androideabi[% END %] --set=target.[% IF pc(c("origin_project"), "var/application_services") %]armv7-linux-androideabi[% ELSE %]thumbv7neon-linux-androideabi[% END %].cc=[% c("var/CC") %] --set=target.[% IF pc(c("origin_project"), "var/application_services") %]armv7-linux-androideabi[% ELSE %]thumbv7neon-linux-androideabi[% END %].ar=[% c("var/cross_prefix") %]-ar
+
+ linux:
+ var:
+ deps:
+ - libc6-dev-i386
+ - lib32stdc++6
+ - build-essential
+ - python
+ - automake
+ - libssl-dev
+ - pkg-config
+ - hardening-wrapper
+ # We use
+ # `--enable-local-rust` to avoid downloading the required compiler during
+ # build time
+ #
+ # `--enable-vendor` to avoid downloading crates during build time and just
+ # use the ones which are shipped with the source
+ #
+ # `--enable-extended` to build not only rustc but cargo as well
+ #
+ # `--enable-llvm-static-stdccp` to take a libstdc++ on Jessie into account
+ # which is too old and if used gives undefined reference errors
+ #
+ # `--release-channel=stable` to just include stable features in the
+ # compiler
+ #
+ # `--sysconfdir=etc` to avoid install failures as |make install| wants to
+ # write to /etc otherwise
+ #
+ # the `target` triple to explicitly specify the architecture and platform
+ # for the compiler/std lib. Ideally, it should not be needed unless one is
+ # cross-compiling, but compiling `alloc_jemalloc` fails without that in a
+ # 32bit container. "--host=x86_64-unknown-linux-gnu" is used in its
+ # configure script in this case.
+ # `--set=` to explicitly specify the C compiler. We need to compile the
+ # bundled LLVM and it wants to use `cc`. However, we don't have that in
+ # our compiled GCC resulting in weird errors due to C and C++ compiler
+ # version mismatch. We avoid that with this configure option.
+ configure_opt: --enable-local-rust --enable-vendor --enable-extended --enable-llvm-static-stdcpp --release-channel=stable --sysconfdir=etc --target=x86_64-unknown-linux-gnu,i686-unknown-linux-gnu --set=target.x86_64-unknown-linux-gnu.cc=gcc --set=target.i686-unknown-linux-gnu.cc=gcc
+
+ osx-x86_64:
+ var:
+ arch_deps:
+ - libssl-dev
+ - pkg-config
+ - zlib1g-dev
+ configure_opt: --enable-local-rust --enable-vendor --enable-extended --release-channel=stable --sysconfdir=etc --target=x86_64-apple-darwin --set=target.x86_64-apple-darwin.cc=x86_64-apple-darwin-clang
+
+ windows:
+ var:
+ arch_deps:
+ - libssl-dev
+ - pkg-config
+ - zlib1g-dev
+ configure_opt: --enable-local-rust --enable-vendor --enable-extended --release-channel=stable --sysconfdir=etc --target=[% c("arch") %]-pc-windows-gnu
+
+input_files:
+ - project: container-image
+ - project: cmake
+ name: cmake
+ - project: '[% c("var/compiler") %]'
+ name: '[% c("var/compiler") %]'
+ - URL: 'https://static.rust-lang.org/dist/rustc-[% c("version") %]-src.tar.gz'
+ name: rust
+ sig_ext: asc
+ file_gpg_id: 1
+ gpg_keyring: rust.gpg
+ - URL: 'https://static.rust-lang.org/dist/rust-[% c("var/prev_version") %]-x86_64-unknown-linux-gnu.tar.xz'
+ name: prev_rust
+ sig_ext: asc
+ file_gpg_id: 1
+ gpg_keyring: rust.gpg
+ - filename: unwind.patch
+ enable: '[% c("var/windows-i686") %]'
+ - filename: 43909.patch
diff --git a/projects/fenix-as-rust/unwind.patch b/projects/fenix-as-rust/unwind.patch
new file mode 100644
index 0000000..7b22dcb
--- /dev/null
+++ b/projects/fenix-as-rust/unwind.patch
@@ -0,0 +1,162 @@
+From b3bea7008ece7a5bdf9b5a5dcc95e82febad1854 Mon Sep 17 00:00:00 2001
+From: Bjorn Neergaard <bjorn(a)neersighted.com>
+Date: Sat, 9 Feb 2019 19:39:23 +0000
+Subject: [PATCH] Fix cross-compiling i686-pc-windows-gnu from Linux
+
+This is still very rough and serves as a proof-of-concept for fixing
+Linux -> 32-bit MinGW cross compilation workflow. Currently, clang and
+GCC's MinGW targets both only support DW2 (DWARF) or SJLJ (Set Jump Long
+Jump) unwinding on 32-bit Windows.
+
+The default for GCC (and the way it is shipped on every major distro) is
+to use SJLJ on Windows, as DWARF cannot traverse non-DWARF frames. This
+would work fine, except for the fact that libgcc (our C runtime on the
+MinGW platform) exports symbols under a different name when configured
+to use SJLJ-style unwinding, and uses a preprocessor macro internally to
+alias them.
+
+Because of this, we have to detect this scenario and link to the correct
+symbols ourselves. Linking has been tested with a full bootstrap on both
+x86_64-unknown-linux-gnu and i686-pc-windows-gnu, as well as
+cross-compilation of some of my own projects.
+
+Obviously, the detection is a bit unrefined. Right now we
+unconditionally use SJLJ when compiling Linux -> MinGW. I'd like to add
+feature detection using compiler build flags or autotools-style
+compilation and object analysis. Input on the best way to proceed here
+is welcome.
+
+Also, currently there is copy-pasted/duplicated code in libunwind.
+Ideally, this could be reduced, but this would likely require a
+rethinking of how iOS is special-cased above, to avoid further
+duplication. Input on how to best structure this file is requested.
+
+diff --git a/src/bootstrap/compile.rs b/src/bootstrap/compile.rs
+index 249a183189..df08d6eb0c 100644
+--- a/src/bootstrap/compile.rs
++++ b/src/bootstrap/compile.rs
+@@ -162,7 +162,12 @@ pub fn std_cargo(builder: &Builder<'_>,
+ .arg("--features")
+ .arg("compiler-builtins-mem");
+ } else {
+- let features = builder.std_features();
++ let mut features = builder.std_features();
++
++ // FIXME: Temporary detection of SJLJ MinGW compilers.
++ if builder.config.build.contains("linux") && target == "i686-pc-windows-gnu" {
++ features.push_str(" sjlj_eh");
++ }
+
+ if compiler.stage != 0 && builder.config.sanitizers {
+ // This variable is used by the sanitizer runtime crates, e.g.
+diff --git a/src/libstd/Cargo.toml b/src/libstd/Cargo.toml
+index 7d60a17042..d876d0b89a 100644
+--- a/src/libstd/Cargo.toml
++++ b/src/libstd/Cargo.toml
+@@ -71,3 +71,4 @@ wasm-bindgen-threads = []
+ # https://github.com/rust-lang-nursery/stdsimd/blob/master/crates/std_detect/…
+ std_detect_file_io = []
+ std_detect_dlsym_getauxval = []
++sjlj_eh = ["unwind/sjlj_eh"]
+diff --git a/src/libunwind/Cargo.toml b/src/libunwind/Cargo.toml
+index 2378b0a315..0b5979ed62 100644
+--- a/src/libunwind/Cargo.toml
++++ b/src/libunwind/Cargo.toml
+@@ -16,3 +16,6 @@ doc = false
+ core = { path = "../libcore" }
+ libc = { version = "0.2.43", features = ['rustc-dep-of-std'], default-features = false }
+ compiler_builtins = "0.1.0"
++
++[features]
++sjlj_eh = []
+diff --git a/src/libunwind/libunwind.rs b/src/libunwind/libunwind.rs
+index 339b554ed6..ec2f93ed60 100644
+--- a/src/libunwind/libunwind.rs
++++ b/src/libunwind/libunwind.rs
+@@ -1,10 +1,5 @@
+ #![allow(nonstandard_style)]
+
+-macro_rules! cfg_if {
+- ( $( if #[cfg( $meta:meta )] { $($it1:item)* } else { $($it2:item)* } )* ) =>
+- ( $( $( #[cfg($meta)] $it1)* $( #[cfg(not($meta))] $it2)* )* )
+-}
+-
+ use libc::{c_int, c_void, uintptr_t};
+
+ #[repr(C)]
+@@ -73,8 +68,8 @@ pub enum _Unwind_Context {}
+ pub type _Unwind_Exception_Cleanup_Fn = extern "C" fn(unwind_code: _Unwind_Reason_Code,
+ exception: *mut _Unwind_Exception);
+ extern "C" {
+- #[unwind(allowed)]
+- pub fn _Unwind_Resume(exception: *mut _Unwind_Exception) -> !;
++ #[cfg_attr(stage0, unwind)]
++ #[cfg_attr(not(stage0), unwind(allowed))]
+ pub fn _Unwind_DeleteException(exception: *mut _Unwind_Exception);
+ pub fn _Unwind_GetLanguageSpecificData(ctx: *mut _Unwind_Context) -> *mut c_void;
+ pub fn _Unwind_GetRegionStart(ctx: *mut _Unwind_Context) -> _Unwind_Ptr;
+@@ -206,26 +201,52 @@ if #[cfg(all(any(target_os = "ios", target_os = "netbsd", not(target_arch = "arm
+ pc
+ }
+ }
++} // cfg_if!
+
+-if #[cfg(not(all(target_os = "ios", target_arch = "arm")))] {
+- // Not 32-bit iOS
++cfg_if! {
++if #[cfg(all(target_os = "ios", target_arch = "arm"))] {
++ // 32-bit iOS uses SjLj and does not provide _Unwind_Backtrace()
+ extern "C" {
+- #[unwind(allowed)]
+- pub fn _Unwind_RaiseException(exception: *mut _Unwind_Exception) -> _Unwind_Reason_Code;
++ #[cfg_attr(stage0, unwind)]
++ #[cfg_attr(not(stage0), unwind(allowed))]
++ pub fn _Unwind_Resume(exception: *mut _Unwind_Exception) -> !;
++ pub fn _Unwind_SjLj_RaiseException(e: *mut _Unwind_Exception) -> _Unwind_Reason_Code;
++ }
++
++ #[inline]
++ pub unsafe fn _Unwind_RaiseException(exc: *mut _Unwind_Exception) -> _Unwind_Reason_Code {
++ _Unwind_SjLj_RaiseException(exc)
++ }
++
++} else if #[cfg(feature = "sjlj_eh")] {
++ extern "C" {
++ #[cfg_attr(stage0, unwind)]
++ #[cfg_attr(not(stage0), unwind(allowed))]
++ pub fn _Unwind_SjLj_Resume(e: *mut _Unwind_Exception) -> !;
++ pub fn _Unwind_SjLj_RaiseException(e: *mut _Unwind_Exception) -> _Unwind_Reason_Code;
+ pub fn _Unwind_Backtrace(trace: _Unwind_Trace_Fn,
+ trace_argument: *mut c_void)
+ -> _Unwind_Reason_Code;
+ }
+-} else {
+- // 32-bit iOS uses SjLj and does not provide _Unwind_Backtrace()
+- extern "C" {
+- #[unwind(allowed)]
+- pub fn _Unwind_SjLj_RaiseException(e: *mut _Unwind_Exception) -> _Unwind_Reason_Code;
++
++ #[inline]
++ pub unsafe fn _Unwind_Resume(exc: *mut _Unwind_Exception) -> ! {
++ _Unwind_SjLj_Resume(exc)
+ }
+
+ #[inline]
+ pub unsafe fn _Unwind_RaiseException(exc: *mut _Unwind_Exception) -> _Unwind_Reason_Code {
+ _Unwind_SjLj_RaiseException(exc)
+ }
++} else {
++ extern "C" {
++ #[cfg_attr(stage0, unwind)]
++ #[cfg_attr(not(stage0), unwind(allowed))]
++ pub fn _Unwind_Resume(exception: *mut _Unwind_Exception) -> !;
++ pub fn _Unwind_RaiseException(exception: *mut _Unwind_Exception) -> _Unwind_Reason_Code;
++ pub fn _Unwind_Backtrace(trace: _Unwind_Trace_Fn,
++ trace_argument: *mut c_void)
++ -> _Unwind_Reason_Code;
++ }
+ }
+ } // cfg_if!
+--
+2.23.0.rc0
+
commit a8fce676b2c870f1abd092199de5857f0055b84d
Author: Georg Koppen <gk(a)torproject.org>
Date: Tue Oct 6 17:45:36 2020 +0000
Bug 40115: Update components for switch to Fenix 82
Update application-services
---
projects/application-services/1651660.patch | 811 ----------------------------
projects/application-services/1651662.patch | 22 -
projects/application-services/build | 2 -
projects/application-services/config | 18 +-
projects/nss/config | 6 +-
projects/sqlcipher/config | 4 +-
6 files changed, 13 insertions(+), 850 deletions(-)
diff --git a/projects/application-services/1651660.patch b/projects/application-services/1651660.patch
deleted file mode 100644
index 8cf15b1..0000000
--- a/projects/application-services/1651660.patch
+++ /dev/null
@@ -1,811 +0,0 @@
-From 1641b74b17dad85a3ee65802a0a6320d2184c6c3 Mon Sep 17 00:00:00 2001
-From: Georg Koppen <gk(a)torproject.org>
-Date: Fri, 21 Aug 2020 19:26:37 +0000
-Subject: [PATCH] 1651660
-
-
-diff --git a/build.gradle b/build.gradle
-index 6b16a91d..58a4ddae 100644
---- a/build.gradle
-+++ b/build.gradle
-@@ -4,16 +4,16 @@ buildscript {
- ext.kotlin_version = '1.3.71'
- ext.jna_version = '5.2.0'
- ext.android_gradle_plugin_version = '3.6.0'
--
-- // N.B. try to keep these two in sync
-- ext.android_components_version = '24.0.0'
-- ext.glean_version = '21.3.0'
-+ ext.android_components_version = '47.0.0'
-
- ext.build = [
- ndkVersion: "21.3.6528147", // Keep it in sync in TC Dockerfile.
- compileSdkVersion: 29,
- targetSdkVersion: 28,
- minSdkVersion: 21, // So that we can publish for aarch64.
-+ // This is required to support new AndroidX support libraries.
-+ // See mozilla-mobile/android-components#842
-+ jvmTargetCompatibility: "1.8",
- ]
-
- repositories {
-@@ -44,6 +44,11 @@ buildscript {
-
- classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.12'
-
-+ // Since the Glean version depends on the Android components version,
-+ // it is very important to use a modern version of Glean and, ideally,
-+ // let this come from the embedding product itself.
-+ classpath "org.mozilla.components:tooling-glean-gradle:$android_components_version"
-+
- // NOTE: Do not place your application dependencies here; they belong
- // in the individual module build.gradle files
- }
-diff --git a/components/fxa-client/android/build.gradle b/components/fxa-client/android/build.gradle
-index 9981facd..e0cac485 100644
---- a/components/fxa-client/android/build.gradle
-+++ b/components/fxa-client/android/build.gradle
-@@ -36,6 +36,19 @@ android {
- }
- }
- }
-+
-+ // This is required to support new AndroidX support libraries.
-+ // See mozilla-mobile/android-components#842
-+ compileOptions {
-+ sourceCompatibility rootProject.ext.build.jvmTargetCompatibility
-+ targetCompatibility rootProject.ext.build.jvmTargetCompatibility
-+ }
-+
-+ tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
-+ kotlinOptions {
-+ jvmTarget = rootProject.ext.build.jvmTargetCompatibility
-+ }
-+ }
- }
-
- configurations {
-diff --git a/components/logins/android/build.gradle b/components/logins/android/build.gradle
-index be777e5b..166b81fe 100644
---- a/components/logins/android/build.gradle
-+++ b/components/logins/android/build.gradle
-@@ -46,6 +46,19 @@ android {
- includeAndroidResources = true
- }
- }
-+
-+ // This is required to support new AndroidX support libraries.
-+ // See mozilla-mobile/android-components#842
-+ compileOptions {
-+ sourceCompatibility rootProject.ext.build.jvmTargetCompatibility
-+ targetCompatibility rootProject.ext.build.jvmTargetCompatibility
-+ }
-+
-+ tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
-+ kotlinOptions {
-+ jvmTarget = rootProject.ext.build.jvmTargetCompatibility
-+ }
-+ }
- }
-
- configurations {
-@@ -80,6 +93,12 @@ protobuf {
- }
- }
-
-+// Needs to happen before `dependencies` in order for the variables
-+// exposed by the plugin to be available for this project.
-+ext.gleanGenerateMarkdownDocs = true
-+ext.gleanDocsDirectory = "$rootDir/docs/metrics/logins"
-+apply plugin: "org.mozilla.telemetry.glean-gradle-plugin"
-+
- dependencies {
- // Part of the public API.
- api project(':sync15')
-@@ -108,7 +127,7 @@ dependencies {
- testImplementation 'org.mockito:mockito-core:2.21.0'
- testImplementation 'androidx.test:core-ktx:1.2.0'
- testImplementation 'androidx.work:work-testing:2.2.0'
-- testImplementation "org.mozilla.telemetry:glean-forUnitTests:$glean_version"
-+ testImplementation "org.mozilla.telemetry:glean-forUnitTests:$project.ext.glean_version"
-
- androidTestImplementation 'com.android.support.test:runner:1.0.2'
- androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
-@@ -132,8 +151,3 @@ afterEvaluate {
-
- apply from: "$rootDir/publish.gradle"
- ext.configurePublish()
--
--ext.gleanGenerateMarkdownDocs = true
--ext.gleanDocsDirectory = "$rootDir/docs/metrics/logins"
--apply from: "https://github.com/mozilla-mobile/android-components/raw/v${android_compone…"
--
-diff --git a/components/logins/android/metrics.yaml b/components/logins/android/metrics.yaml
-index e7ddec62..c81d6e43 100644
---- a/components/logins/android/metrics.yaml
-+++ b/components/logins/android/metrics.yaml
-@@ -2,31 +2,36 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--# This file defines the metrics that will be gathered for the "logins" storage component.
--# These are emitted for all users of the component. Additional metrics specific to the
--# *syncing* of logins are defined in a separate "sync_ping" package.
-+# This file defines the metrics that will be gathered for the "logins"
-+# storage component.
-+# These are emitted for all users of the component. Additional metrics
-+# specific to the *syncing* of logins are defined in a separate "sync_ping"
-+# package.
- #
--# Changes to these metrics require data review, which should take into consideration
--# the following known consumers of the logins component Android bindings:
-+# Changes to these metrics require data review, which should take into
-+# consideration the following known consumers of the logins component
-+# Android bindings:
- #
- # * Firefox Preview
- # * Firefox Lockwise for Android
-
-+---
- $schema: moz://mozilla.org/schemas/glean/metrics/1-0-0
-
- logins_store:
-
-- # These help us understand how much the logins store is being used, and whether it's succeeding
-- # in the duties asked of it. We'll use them to graph e.g. the error rate of applications trying
-- # to use the logins store, and identify application or platform features that lead to unusually
-+ # These help us understand how much the logins store is being used, and
-+ # whether it's succeeding in the duties asked of it. We'll use them to
-+ # graph e.g. the error rate of applications trying to use the logins store,
-+ # and identify application or platform features that lead to unusually
- # high error rates.
-
- unlock_count:
- type: counter
- description: >
- The number of times the login store was unlocked.
-- It is intended to be used together with `unlock_error_count` to measure the overall
-- error rate of unlocking the logins store.
-+ It is intended to be used together with `unlock_error_count` to measure
-+ the overall error rate of unlocking the logins store.
- bugs:
- - https://github.com/mozilla/application-services/issues/2225
- data_reviews:
-@@ -39,9 +44,10 @@ logins_store:
- unlock_error_count:
- type: labeled_counter
- description: >
-- The number of errors encountered when unlocking the logins store, labeled by type.
-- It is intended to be used together with `unlock_count` to measure the overall error
-- rate of unlocking the logins store.
-+ The number of errors encountered when unlocking the logins store, labeled
-+ by type.
-+ It is intended to be used together with `unlock_count` to measure the
-+ overall error rate of unlocking the logins store.
- labels:
- - invalid_key
- - mismatched_lock
-@@ -59,9 +65,10 @@ logins_store:
- type: counter
- description: >
- The total number of read operations performed on the logins store.
-- The count only includes operations triggered by the application, not e.g. incidental reads performed
-- as part of a sync. It is intended to be used together with `read_query_error_count` to measure the
-- overall error rate of read operations on the logins store.
-+ The count only includes operations triggered by the application, not
-+ e.g. incidental reads performed as part of a sync. It is intended to be
-+ used together with `read_query_error_count` to measure the overall error
-+ rate of read operations on the logins store.
- bugs:
- - https://github.com/mozilla/application-services/issues/2225
- data_reviews:
-@@ -74,9 +81,10 @@ logins_store:
- read_query_error_count:
- type: labeled_counter
- description: >
-- The total number of errors encountered during read operations on the logins store, labeled by type.
-- It is intended to be used together with `read_query_count` to measure the overall error rate
-- of read operations on the logins store.
-+ The total number of errors encountered during read operations on the
-+ logins store, labeled by type.
-+ It is intended to be used together with `read_query_count` to measure
-+ the overall error rate of read operations on the logins store.
- labels:
- - interrupted
- - storage_error
-@@ -93,9 +101,10 @@ logins_store:
- type: counter
- description: >
- The total number of write operations performed on the logins store.
-- The count only includes operations triggered by the application, not e.g. incidental writes performed
-- as part of a sync. It is intended to be used together with `write_query_error_count` to measure the
-- overall error rate of write operations on the logins store.
-+ The count only includes operations triggered by the application, not
-+ e.g. incidental writes performed as part of a sync. It is intended to
-+ be used together with `write_query_error_count` to measure the overall
-+ error rate of write operations on the logins store.
- bugs:
- - https://github.com/mozilla/application-services/issues/2225
- data_reviews:
-@@ -108,9 +117,10 @@ logins_store:
- write_query_error_count:
- type: labeled_counter
- description: >
-- The total number of errors encountered during write operations on the logins store, labeled by type.
-- It is intended to be used together with `write_query_count` to measure the overall error rate
-- of write operations on the logins store.
-+ The total number of errors encountered during write operations on the
-+ logins store, labeled by type.
-+ It is intended to be used together with `write_query_count` to measure
-+ the overall error rate of write operations on the logins store.
- labels:
- - no_such_record
- - id_collision
-@@ -127,14 +137,16 @@ logins_store:
- expires: "2021-03-01"
-
- # These help us understand the performance of the logins store in the wild.
-- # We'll use them to identify any application or platform features that are leading to unacceptably
-- # slow performance of the store, and eventually for comparison with other logins store implementations
-- # (such as the one in Desktop).
-+ # We'll use them to identify any application or platform features that are
-+ # leading to unacceptably slow performance of the store, and eventually for
-+ # comparison with other logins store implementations (such as the one in
-+ # Desktop).
-
- unlock_time:
- type: timing_distribution
- description: >
-- The time taken to open the logins store on startup, or after locking it due to user inactivity.
-+ The time taken to open the logins store on startup, or after locking it
-+ due to user inactivity.
- bugs:
- - https://github.com/mozilla/application-services/issues/2225
- data_reviews:
-@@ -147,8 +159,8 @@ logins_store:
- read_query_time:
- type: timing_distribution
- description: >
-- The time taken to execute a read query on the logins store (such as listing all logins, or finding a
-- specific login by id).
-+ The time taken to execute a read query on the logins store (such as
-+ listing all logins, or finding a specific login by id).
- bugs:
- - https://github.com/mozilla/application-services/issues/2225
- data_reviews:
-@@ -161,8 +173,8 @@ logins_store:
- write_query_time:
- type: timing_distribution
- description: >
-- The time taken to execute a write query on the logins store (such as adding, updating, or deleting
-- a login record).
-+ The time taken to execute a write query on the logins store (such as
-+ adding, updating, or deleting a login record).
- bugs:
- - https://github.com/mozilla/application-services/issues/2225
- data_reviews:
-diff --git a/components/logins/android/src/main/java/mozilla/appservices/logins/DatabaseLoginsStorage.kt b/components/logins/android/src/main/java/mozilla/appservices/logins/DatabaseLoginsStorage.kt
-index ae2ba8b1..8eb2ee7a 100644
---- a/components/logins/android/src/main/java/mozilla/appservices/logins/DatabaseLoginsStorage.kt
-+++ b/components/logins/android/src/main/java/mozilla/appservices/logins/DatabaseLoginsStorage.kt
-@@ -23,7 +23,6 @@ import org.mozilla.appservices.logins.GleanMetrics.LoginsStore as LoginsStoreMet
- * on version updates.
- */
- import mozilla.components.service.glean.private.CounterMetricType
--import mozilla.components.service.glean.private.TimingDistributionMetricType
- import mozilla.components.service.glean.private.LabeledMetricType
-
- /**
-@@ -419,22 +418,6 @@ internal fun Pointer.getRustString(): String {
- return this.getString(0, "utf8")
- }
-
--/**
-- * A helper extension method for conveniently measuring execution time of a closure.
-- *
-- * N.B. since we're measuring calls to Rust code here, the provided callback may be doing
-- * unsafe things. It's very imporant that we always call the function exactly once here
-- * and don't try to do anything tricky like stashing it for later or calling it multiple times.
-- */
--inline fun <U> TimingDistributionMetricType.measure(funcToMeasure: () -> U): U {
-- val timerId = this.start()
-- try {
-- return funcToMeasure()
-- } finally {
-- this.stopAndAccumulate(timerId)
-- }
--}
--
- /**
- * A helper class for gathering basic count metrics on different kinds of LoginsStore operation.
- *
-diff --git a/components/places/android/build.gradle b/components/places/android/build.gradle
-index 4debb737..5655326c 100644
---- a/components/places/android/build.gradle
-+++ b/components/places/android/build.gradle
-@@ -44,6 +44,19 @@ android {
- includeAndroidResources = true
- }
- }
-+
-+ // This is required to support new AndroidX support libraries.
-+ // See mozilla-mobile/android-components#842
-+ compileOptions {
-+ sourceCompatibility rootProject.ext.build.jvmTargetCompatibility
-+ targetCompatibility rootProject.ext.build.jvmTargetCompatibility
-+ }
-+
-+ tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
-+ kotlinOptions {
-+ jvmTarget = rootProject.ext.build.jvmTargetCompatibility
-+ }
-+ }
- }
-
- configurations {
-@@ -77,6 +90,11 @@ protobuf {
- }
- }
-
-+// Generate markdown docs for the collected metrics.
-+ext.gleanGenerateMarkdownDocs = true
-+ext.gleanDocsDirectory = "$rootDir/docs/metrics/places"
-+apply plugin: "org.mozilla.telemetry.glean-gradle-plugin"
-+
- dependencies {
- // Part of the public API.
- api project(':sync15')
-@@ -105,7 +123,7 @@ dependencies {
- testImplementation 'org.mockito:mockito-core:2.21.0'
- testImplementation 'androidx.test:core-ktx:1.2.0'
- testImplementation 'androidx.work:work-testing:2.2.0'
-- testImplementation "org.mozilla.telemetry:glean-forUnitTests:$glean_version"
-+ testImplementation "org.mozilla.telemetry:glean-forUnitTests:$project.ext.glean_version"
-
- androidTestImplementation 'com.android.support.test:runner:1.0.2'
- androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
-@@ -130,8 +148,3 @@ afterEvaluate {
- apply from: "$rootDir/publish.gradle"
-
- ext.configurePublish()
--
--// Generate markdown docs for the collected metrics.
--ext.gleanGenerateMarkdownDocs = true
--ext.gleanDocsDirectory = "$rootDir/docs/metrics/places"
--apply from: "https://github.com/mozilla-mobile/android-components/raw/v${android_compone…"
-diff --git a/components/places/android/metrics.yaml b/components/places/android/metrics.yaml
-index 2c4b7891..dcfd1318 100644
---- a/components/places/android/metrics.yaml
-+++ b/components/places/android/metrics.yaml
-@@ -2,15 +2,19 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--# This file defines the metrics that will be gathered for the "places" storage component.
--# These are emitted for all users of the component. Additional metrics specific to the
--# *syncing* of places are defined in a separate "sync_ping" package.
-+# This file defines the metrics that will be gathered for the "places"
-+# storage component.
-+# These are emitted for all users of the component. Additional metrics
-+# specific to the *syncing* of places are defined in a separate "sync_ping"
-+# package.
- #
--# Changes to these metrics require data review, which should take into consideration
-+# Changes to these metrics require data review, which should take into
-+# consideration
- # the following known consumers of the places component Android bindings:
- #
- # * Fenix for Andriod
-
-+---
- $schema: moz://mozilla.org/schemas/glean/metrics/1-0-0
-
- places_manager:
-@@ -19,9 +23,10 @@ places_manager:
- type: counter
- description: >
- The total number of read operations performed on the places store.
-- The count only includes operations triggered by the application, not e.g. incidental reads performed
-- as part of a sync. It is intended to be used together with `read_query_error_count` to measure the
-- overall error rate of read operations on the places store.
-+ The count only includes operations triggered by the application, not
-+ e.g. incidental reads performed as part of a sync. It is intended to
-+ be used together with `read_query_error_count` to measure the overall
-+ error rate of read operations on the places store.
- bugs:
- - https://github.com/mozilla/application-services/issues/2300
- - https://github.com/mozilla/application-services/issues/2299
-@@ -35,9 +40,10 @@ places_manager:
- read_query_error_count:
- type: labeled_counter
- description: >
-- The total number of errors encountered during read operations on the places store, labeled by type.
-- It is intended to be used together with `read_query_count` to measure the overall error rate
-- of read operations on the places store.
-+ The total number of errors encountered during read operations on the
-+ places store, labeled by type.
-+ It is intended to be used together with `read_query_count` to measure
-+ the overall error rate of read operations on the places store.
- labels:
- - url_parse_failed
- - operation_interrupted
-@@ -55,9 +61,10 @@ places_manager:
- type: counter
- description: >
- The total number of write operations performed on the places store.
-- The count only includes operations triggered by the application, not e.g. incidental writes performed
-- as part of a sync. It is intended to be used together with `write_query_error_count` to measure the
-- overall error rate of write operations on the places store.
-+ The count only includes operations triggered by the application, not
-+ e.g. incidental writes performed as part of a sync. It is intended to
-+ be used together with `write_query_error_count` to measure the overall
-+ error rate of write operations on the places store.
- bugs:
- - https://github.com/mozilla/application-services/issues/2300
- - https://github.com/mozilla/application-services/issues/2299
-@@ -71,9 +78,10 @@ places_manager:
- write_query_error_count:
- type: labeled_counter
- description: >
-- The total number of errors encountered during write operations on the places store, labeled by type.
-- It is intended to be used together with `write_query_count` to measure the overall error rate
-- of write operations on the places store.
-+ The total number of errors encountered during write operations on the
-+ places store, labeled by type.
-+ It is intended to be used together with `write_query_count` to measure
-+ the overall error rate of write operations on the places store.
- labels:
- - url_parse_failed
- - invalid_bookmark_update
-@@ -108,8 +116,9 @@ places_manager:
- scan_query_time:
- type: timing_distribution
- description: >
-- The time taken to execute a scan query on the places store. This metric is for queries that we
-- expect to be costly e.g. getBookmarksTree(guid, recursive=True).
-+ The time taken to execute a scan query on the places store. This metric
-+ is for queries that we expect to be costly
-+ e.g. getBookmarksTree(guid, recursive=True).
- bugs:
- - https://github.com/mozilla/application-services/issues/2300
- - https://github.com/mozilla/application-services/issues/2299
-diff --git a/components/places/android/src/main/java/mozilla/appservices/places/PlacesConnection.kt b/components/places/android/src/main/java/mozilla/appservices/places/PlacesConnection.kt
-index 518bf77a..df2110c4 100644
---- a/components/places/android/src/main/java/mozilla/appservices/places/PlacesConnection.kt
-+++ b/components/places/android/src/main/java/mozilla/appservices/places/PlacesConnection.kt
-@@ -27,7 +27,6 @@ import org.mozilla.appservices.places.GleanMetrics.PlacesManager as PlacesManage
- * on version updates.
- */
- import mozilla.components.service.glean.private.CounterMetricType
--import mozilla.components.service.glean.private.TimingDistributionMetricType
- import mozilla.components.service.glean.private.LabeledMetricType
-
- /**
-@@ -1273,22 +1272,6 @@ data class VisitInfosWithBound(
- }
- }
-
--/**
-- * A helper extension method for conveniently measuring execution time of a closure.
-- *
-- * N.B. since we're measuring calls to Rust code here, the provided callback may be doing
-- * unsafe things. It's very imporant that we always call the function exactly once here
-- * and don't try to do anything tricky like stashing it for later or calling it multiple times.
-- */
--inline fun <U> TimingDistributionMetricType.measure(funcToMeasure: () -> U): U {
-- val timerId = this.start()
-- try {
-- return funcToMeasure()
-- } finally {
-- this.stopAndAccumulate(timerId)
-- }
--}
--
- /**
- * A helper class for gathering basic count metrics on different kinds of PlacesManager operations.
- *
-diff --git a/components/push/android/build.gradle b/components/push/android/build.gradle
-index c68815f1..9dcc0678 100644
---- a/components/push/android/build.gradle
-+++ b/components/push/android/build.gradle
-@@ -36,6 +36,19 @@ android {
- }
- }
- }
-+
-+ // This is required to support new AndroidX support libraries.
-+ // See mozilla-mobile/android-components#842
-+ compileOptions {
-+ sourceCompatibility rootProject.ext.build.jvmTargetCompatibility
-+ targetCompatibility rootProject.ext.build.jvmTargetCompatibility
-+ }
-+
-+ tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
-+ kotlinOptions {
-+ jvmTarget = rootProject.ext.build.jvmTargetCompatibility
-+ }
-+ }
- }
-
- configurations {
-diff --git a/components/rc_log/android/build.gradle b/components/rc_log/android/build.gradle
-index 07f6b238..ad813fca 100644
---- a/components/rc_log/android/build.gradle
-+++ b/components/rc_log/android/build.gradle
-@@ -29,6 +29,19 @@ android {
- // has their own build dir)
- test.resources.srcDirs += "${project(':full-megazord').buildDir}/rustJniLibs/desktop"
- }
-+
-+ // This is required to support new AndroidX support libraries.
-+ // See mozilla-mobile/android-components#842
-+ compileOptions {
-+ sourceCompatibility rootProject.ext.build.jvmTargetCompatibility
-+ targetCompatibility rootProject.ext.build.jvmTargetCompatibility
-+ }
-+
-+ tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
-+ kotlinOptions {
-+ jvmTarget = rootProject.ext.build.jvmTargetCompatibility
-+ }
-+ }
- }
-
- configurations {
-diff --git a/components/support/android/build.gradle b/components/support/android/build.gradle
-index 6555c057..0454acb2 100644
---- a/components/support/android/build.gradle
-+++ b/components/support/android/build.gradle
-@@ -25,6 +25,18 @@ android {
- }
- }
-
-+ // This is required to support new AndroidX support libraries.
-+ // See mozilla-mobile/android-components#842
-+ compileOptions {
-+ sourceCompatibility rootProject.ext.build.jvmTargetCompatibility
-+ targetCompatibility rootProject.ext.build.jvmTargetCompatibility
-+ }
-+
-+ tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
-+ kotlinOptions {
-+ jvmTarget = rootProject.ext.build.jvmTargetCompatibility
-+ }
-+ }
- }
-
- dependencies {
-diff --git a/components/sync15/android/build.gradle b/components/sync15/android/build.gradle
-index cd9f7c63..48520a94 100644
---- a/components/sync15/android/build.gradle
-+++ b/components/sync15/android/build.gradle
-@@ -25,6 +25,18 @@ android {
- }
- }
-
-+ // This is required to support new AndroidX support libraries.
-+ // See mozilla-mobile/android-components#842
-+ compileOptions {
-+ sourceCompatibility rootProject.ext.build.jvmTargetCompatibility
-+ targetCompatibility rootProject.ext.build.jvmTargetCompatibility
-+ }
-+
-+ tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
-+ kotlinOptions {
-+ jvmTarget = rootProject.ext.build.jvmTargetCompatibility
-+ }
-+ }
- }
-
- dependencies {
-diff --git a/components/sync_manager/android/build.gradle b/components/sync_manager/android/build.gradle
-index 7593e09c..2f1bc7fb 100644
---- a/components/sync_manager/android/build.gradle
-+++ b/components/sync_manager/android/build.gradle
-@@ -33,6 +33,19 @@ android {
- }
- }
- }
-+
-+ // This is required to support new AndroidX support libraries.
-+ // See mozilla-mobile/android-components#842
-+ compileOptions {
-+ sourceCompatibility rootProject.ext.build.jvmTargetCompatibility
-+ targetCompatibility rootProject.ext.build.jvmTargetCompatibility
-+ }
-+
-+ tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
-+ kotlinOptions {
-+ jvmTarget = rootProject.ext.build.jvmTargetCompatibility
-+ }
-+ }
- }
-
- configurations {
-diff --git a/components/tabs/android/build.gradle b/components/tabs/android/build.gradle
-index 7593e09c..2f1bc7fb 100644
---- a/components/tabs/android/build.gradle
-+++ b/components/tabs/android/build.gradle
-@@ -33,6 +33,19 @@ android {
- }
- }
- }
-+
-+ // This is required to support new AndroidX support libraries.
-+ // See mozilla-mobile/android-components#842
-+ compileOptions {
-+ sourceCompatibility rootProject.ext.build.jvmTargetCompatibility
-+ targetCompatibility rootProject.ext.build.jvmTargetCompatibility
-+ }
-+
-+ tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
-+ kotlinOptions {
-+ jvmTarget = rootProject.ext.build.jvmTargetCompatibility
-+ }
-+ }
- }
-
- configurations {
-diff --git a/components/viaduct/android/build.gradle b/components/viaduct/android/build.gradle
-index 842da737..bbffa362 100644
---- a/components/viaduct/android/build.gradle
-+++ b/components/viaduct/android/build.gradle
-@@ -37,6 +37,19 @@ android {
- }
- }
- }
-+
-+ // This is required to support new AndroidX support libraries.
-+ // See mozilla-mobile/android-components#842
-+ compileOptions {
-+ sourceCompatibility rootProject.ext.build.jvmTargetCompatibility
-+ targetCompatibility rootProject.ext.build.jvmTargetCompatibility
-+ }
-+
-+ tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
-+ kotlinOptions {
-+ jvmTarget = rootProject.ext.build.jvmTargetCompatibility
-+ }
-+ }
- }
-
- configurations {
-diff --git a/docs/metrics/logins/metrics.md b/docs/metrics/logins/metrics.md
-index 1a8cce22..bd16ea75 100644
---- a/docs/metrics/logins/metrics.md
-+++ b/docs/metrics/logins/metrics.md
-@@ -4,7 +4,6 @@
- This document enumerates the metrics collected by this project.
- This project may depend on other projects which also collect metrics.
- This means you might have to go searching through the dependency tree to get a full picture of everything collected by this project.
--Sorry about that.
-
- # Pings
-
-@@ -12,21 +11,24 @@ Sorry about that.
-
-
- ## metrics
-+
- This is a built-in ping that is assembled out of the box by the Glean SDK.
-+
- See the Glean SDK documentation for the [`metrics` ping](https://mozilla.github.io/glean/book/user/pings/metrics.html).
-+
- The following metrics are added to the ping:
-
- | Name | Type | Description | Data reviews | Extras | Expiration |
- | --- | --- | --- | --- | --- | --- |
--| logins_store.read_query_count |[counter](https://mozilla.github.io/glean/book/user/metrics/counter.html) |The total number of read operations performed on the logins store. The count only includes operations triggered by the application, not e.g. incidental reads performed as part of a sync. It is intended to be used together with `read_query_error_count` to measure the overall error rate of read operations on the logins store. |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895)||2020-07-01 |
--| logins_store.read_query_error_count |[labeled_counter](https://mozilla.github.io/glean/book/user/metrics/labeled_counters.html) |The total number of errors encountered during read operations on the logins store, labeled by type. It is intended to be used together with `read_query_count` to measure the overall error rate of read operations on the logins store. |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895)|<ul><li>interrupted</li><li>storage_error</li></ul>|2020-07-01 |
--| logins_store.read_query_time |[timing_distribution](https://mozilla.github.io/glean/book/user/metrics/timing_distribution.html) |The time taken to execute a read query on the logins store (such as listing all logins, or finding a specific login by id). |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895)||2020-07-01 |
--| logins_store.unlock_count |[counter](https://mozilla.github.io/glean/book/user/metrics/counter.html) |The number of times the login store was unlocked. It is intended to be used together with `unlock_error_count` to measure the overall error rate of unlocking the logins store. |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895)||2020-07-01 |
--| logins_store.unlock_error_count |[labeled_counter](https://mozilla.github.io/glean/book/user/metrics/labeled_counters.html) |The number of errors encountered when unlocking the logins store, labeled by type. It is intended to be used together with `unlock_count` to measure the overall error rate of unlocking the logins store. |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895)|<ul><li>invalid_key</li><li>mismatched_lock</li><li>storage_error</li></ul>|2020-07-01 |
--| logins_store.unlock_time |[timing_distribution](https://mozilla.github.io/glean/book/user/metrics/timing_distribution.html) |The time taken to open the logins store on startup, or after locking it due to user inactivity. |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895)||2020-07-01 |
--| logins_store.write_query_count |[counter](https://mozilla.github.io/glean/book/user/metrics/counter.html) |The total number of write operations performed on the logins store. The count only includes operations triggered by the application, not e.g. incidental writes performed as part of a sync. It is intended to be used together with `write_query_error_count` to measure the overall error rate of write operations on the logins store. |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895)||2020-07-01 |
--| logins_store.write_query_error_count |[labeled_counter](https://mozilla.github.io/glean/book/user/metrics/labeled_counters.html) |The total number of errors encountered during write operations on the logins store, labeled by type. It is intended to be used together with `write_query_count` to measure the overall error rate of write operations on the logins store. |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895)|<ul><li>no_such_record</li><li>id_collision</li><li>interrupted</li><li>invalid_record</li><li>storage_error</li></ul>|2020-07-01 |
--| logins_store.write_query_time |[timing_distribution](https://mozilla.github.io/glean/book/user/metrics/timing_distribution.html) |The time taken to execute a write query on the logins store (such as adding, updating, or deleting a login record). |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895)||2020-07-01 |
-+| logins_store.read_query_count |[counter](https://mozilla.github.io/glean/book/user/metrics/counter.html) |The total number of read operations performed on the logins store. The count only includes operations triggered by the application, not e.g. incidental reads performed as part of a sync. It is intended to be used together with `read_query_error_count` to measure the overall error rate of read operations on the logins store. |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=1649044)||2021-03-01 |
-+| logins_store.read_query_error_count |[labeled_counter](https://mozilla.github.io/glean/book/user/metrics/labeled_counters.html) |The total number of errors encountered during read operations on the logins store, labeled by type. It is intended to be used together with `read_query_count` to measure the overall error rate of read operations on the logins store. |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=1649044)|<ul><li>interrupted</li><li>storage_error</li></ul>|2021-03-01 |
-+| logins_store.read_query_time |[timing_distribution](https://mozilla.github.io/glean/book/user/metrics/timing_distribution.html) |The time taken to execute a read query on the logins store (such as listing all logins, or finding a specific login by id). |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=1649044)||2021-03-01 |
-+| logins_store.unlock_count |[counter](https://mozilla.github.io/glean/book/user/metrics/counter.html) |The number of times the login store was unlocked. It is intended to be used together with `unlock_error_count` to measure the overall error rate of unlocking the logins store. |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=1649044)||2021-03-01 |
-+| logins_store.unlock_error_count |[labeled_counter](https://mozilla.github.io/glean/book/user/metrics/labeled_counters.html) |The number of errors encountered when unlocking the logins store, labeled by type. It is intended to be used together with `unlock_count` to measure the overall error rate of unlocking the logins store. |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=1649044)|<ul><li>invalid_key</li><li>mismatched_lock</li><li>storage_error</li></ul>|2021-03-01 |
-+| logins_store.unlock_time |[timing_distribution](https://mozilla.github.io/glean/book/user/metrics/timing_distribution.html) |The time taken to open the logins store on startup, or after locking it due to user inactivity. |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=1649044)||2021-03-01 |
-+| logins_store.write_query_count |[counter](https://mozilla.github.io/glean/book/user/metrics/counter.html) |The total number of write operations performed on the logins store. The count only includes operations triggered by the application, not e.g. incidental writes performed as part of a sync. It is intended to be used together with `write_query_error_count` to measure the overall error rate of write operations on the logins store. |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=1649044)||2021-03-01 |
-+| logins_store.write_query_error_count |[labeled_counter](https://mozilla.github.io/glean/book/user/metrics/labeled_counters.html) |The total number of errors encountered during write operations on the logins store, labeled by type. It is intended to be used together with `write_query_count` to measure the overall error rate of write operations on the logins store. |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=1649044)|<ul><li>no_such_record</li><li>id_collision</li><li>interrupted</li><li>invalid_record</li><li>storage_error</li></ul>|2021-03-01 |
-+| logins_store.write_query_time |[timing_distribution](https://mozilla.github.io/glean/book/user/metrics/timing_distribution.html) |The time taken to execute a write query on the logins store (such as adding, updating, or deleting a login record). |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1597895), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=1649044)||2021-03-01 |
-
-
- <!-- AUTOGENERATED BY glean_parser. DO NOT EDIT. -->
-diff --git a/docs/metrics/places/metrics.md b/docs/metrics/places/metrics.md
-index efdc5723..8f7cb68c 100644
---- a/docs/metrics/places/metrics.md
-+++ b/docs/metrics/places/metrics.md
-@@ -4,7 +4,6 @@
- This document enumerates the metrics collected by this project.
- This project may depend on other projects which also collect metrics.
- This means you might have to go searching through the dependency tree to get a full picture of everything collected by this project.
--Sorry about that.
-
- # Pings
-
-@@ -12,19 +11,22 @@ Sorry about that.
-
-
- ## metrics
-+
- This is a built-in ping that is assembled out of the box by the Glean SDK.
-+
- See the Glean SDK documentation for the [`metrics` ping](https://mozilla.github.io/glean/book/user/pings/metrics.html).
-+
- The following metrics are added to the ping:
-
- | Name | Type | Description | Data reviews | Extras | Expiration |
- | --- | --- | --- | --- | --- | --- |
--| places_manager.read_query_count |[counter](https://mozilla.github.io/glean/book/user/metrics/counter.html) |The total number of read operations performed on the places store. The count only includes operations triggered by the application, not e.g. incidental reads performed as part of a sync. It is intended to be used together with `read_query_error_count` to measure the overall error rate of read operations on the places store. |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1607621)||2020-07-01 |
--| places_manager.read_query_error_count |[labeled_counter](https://mozilla.github.io/glean/book/user/metrics/labeled_counters.html) |The total number of errors encountered during read operations on the places store, labeled by type. It is intended to be used together with `read_query_count` to measure the overall error rate of read operations on the places store. |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1607621)|<ul><li>url_parse_failed</li><li>operation_interrupted</li></ul>|2020-07-01 |
--| places_manager.read_query_time |[timing_distribution](https://mozilla.github.io/glean/book/user/metrics/timing_distribution.html) |The time taken to execute a read query on the places store. |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1607621)||2020-07-01 |
--| places_manager.scan_query_time |[timing_distribution](https://mozilla.github.io/glean/book/user/metrics/timing_distribution.html) |The time taken to execute a scan query on the places store. This metric is for queries that we expect to be costly e.g. getBookmarksTree(guid, recursive=True). |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1607621)||2020-07-01 |
--| places_manager.write_query_count |[counter](https://mozilla.github.io/glean/book/user/metrics/counter.html) |The total number of write operations performed on the places store. The count only includes operations triggered by the application, not e.g. incidental writes performed as part of a sync. It is intended to be used together with `write_query_error_count` to measure the overall error rate of write operations on the places store. |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1607621)||2020-07-01 |
--| places_manager.write_query_error_count |[labeled_counter](https://mozilla.github.io/glean/book/user/metrics/labeled_counters.html) |The total number of errors encountered during write operations on the places store, labeled by type. It is intended to be used together with `write_query_count` to measure the overall error rate of write operations on the places store. |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1607621)|<ul><li>url_parse_failed</li><li>invalid_bookmark_update</li><li>invalid_parent</li><li>unknown_bookmark_item</li><li>url_too_long</li><li>cannot_update_root</li></ul>|2020-07-01 |
--| places_manager.write_query_time |[timing_distribution](https://mozilla.github.io/glean/book/user/metrics/timing_distribution.html) |The time taken to execute a write query on the places store. |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1607621)||2020-07-01 |
-+| places_manager.read_query_count |[counter](https://mozilla.github.io/glean/book/user/metrics/counter.html) |The total number of read operations performed on the places store. The count only includes operations triggered by the application, not e.g. incidental reads performed as part of a sync. It is intended to be used together with `read_query_error_count` to measure the overall error rate of read operations on the places store. |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1607621), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=1649044)||2021-03-01 |
-+| places_manager.read_query_error_count |[labeled_counter](https://mozilla.github.io/glean/book/user/metrics/labeled_counters.html) |The total number of errors encountered during read operations on the places store, labeled by type. It is intended to be used together with `read_query_count` to measure the overall error rate of read operations on the places store. |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1607621), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=1649044)|<ul><li>url_parse_failed</li><li>operation_interrupted</li></ul>|2021-03-01 |
-+| places_manager.read_query_time |[timing_distribution](https://mozilla.github.io/glean/book/user/metrics/timing_distribution.html) |The time taken to execute a read query on the places store. |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1607621), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=1649044)||2021-03-01 |
-+| places_manager.scan_query_time |[timing_distribution](https://mozilla.github.io/glean/book/user/metrics/timing_distribution.html) |The time taken to execute a scan query on the places store. This metric is for queries that we expect to be costly e.g. getBookmarksTree(guid, recursive=True). |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1607621), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=1649044)||2021-03-01 |
-+| places_manager.write_query_count |[counter](https://mozilla.github.io/glean/book/user/metrics/counter.html) |The total number of write operations performed on the places store. The count only includes operations triggered by the application, not e.g. incidental writes performed as part of a sync. It is intended to be used together with `write_query_error_count` to measure the overall error rate of write operations on the places store. |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1607621), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=1649044)||2021-03-01 |
-+| places_manager.write_query_error_count |[labeled_counter](https://mozilla.github.io/glean/book/user/metrics/labeled_counters.html) |The total number of errors encountered during write operations on the places store, labeled by type. It is intended to be used together with `write_query_count` to measure the overall error rate of write operations on the places store. |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1607621), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=1649044)|<ul><li>url_parse_failed</li><li>invalid_bookmark_update</li><li>invalid_parent</li><li>unknown_bookmark_item</li><li>url_too_long</li><li>cannot_update_root</li></ul>|2021-03-01 |
-+| places_manager.write_query_time |[timing_distribution](https://mozilla.github.io/glean/book/user/metrics/timing_distribution.html) |The time taken to execute a write query on the places store. |[1](https://bugzilla.mozilla.org/show_bug.cgi?id=1607621), [2](https://bugzilla.mozilla.org/show_bug.cgi?id=1649044)||2021-03-01 |
-
-
- <!-- AUTOGENERATED BY glean_parser. DO NOT EDIT. -->
-diff --git a/megazords/full/android/build.gradle b/megazords/full/android/build.gradle
-index 91d4071e..6da43879 100644
---- a/megazords/full/android/build.gradle
-+++ b/megazords/full/android/build.gradle
-@@ -29,6 +29,19 @@ android {
-
- // Uncomment to include debug symbols in native library builds.
- // packagingOptions { doNotStrip "**/*.so" }
-+
-+ // This is required to support new AndroidX support libraries.
-+ // See mozilla-mobile/android-components#842
-+ compileOptions {
-+ sourceCompatibility rootProject.ext.build.jvmTargetCompatibility
-+ targetCompatibility rootProject.ext.build.jvmTargetCompatibility
-+ }
-+
-+ tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
-+ kotlinOptions {
-+ jvmTarget = rootProject.ext.build.jvmTargetCompatibility
-+ }
-+ }
- }
-
- configurations {
-diff --git a/megazords/lockbox/android/build.gradle b/megazords/lockbox/android/build.gradle
-index 5f4d5234..be7654ee 100644
---- a/megazords/lockbox/android/build.gradle
-+++ b/megazords/lockbox/android/build.gradle
-@@ -29,6 +29,19 @@ android {
-
- // Uncomment to include debug symbols in native library builds.
- // packagingOptions { doNotStrip "**/*.so" }
-+
-+ // This is required to support new AndroidX support libraries.
-+ // See mozilla-mobile/android-components#842
-+ compileOptions {
-+ sourceCompatibility rootProject.ext.build.jvmTargetCompatibility
-+ targetCompatibility rootProject.ext.build.jvmTargetCompatibility
-+ }
-+
-+ tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
-+ kotlinOptions {
-+ jvmTarget = rootProject.ext.build.jvmTargetCompatibility
-+ }
-+ }
- }
-
- configurations {
---
-2.28.0
-
diff --git a/projects/application-services/1651662.patch b/projects/application-services/1651662.patch
deleted file mode 100644
index 0275da2..0000000
--- a/projects/application-services/1651662.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 1818764e69145839ab33a2f885139ea320f2283f Mon Sep 17 00:00:00 2001
-From: Georg Koppen <gk(a)torproject.org>
-Date: Wed, 26 Aug 2020 15:56:49 +0000
-Subject: [PATCH] 1651662
-
-
-diff --git a/build.gradle b/build.gradle
-index 58a4ddae..c6e0be82 100644
---- a/build.gradle
-+++ b/build.gradle
-@@ -4,7 +4,7 @@ buildscript {
- ext.kotlin_version = '1.3.71'
- ext.jna_version = '5.2.0'
- ext.android_gradle_plugin_version = '3.6.0'
-- ext.android_components_version = '47.0.0'
-+ ext.android_components_version = '56.0.0'
-
- ext.build = [
- ndkVersion: "21.3.6528147", // Keep it in sync in TC Dockerfile.
---
-2.28.0
-
diff --git a/projects/application-services/build b/projects/application-services/build
index 5c6b5e0..7c5da2d 100644
--- a/projects/application-services/build
+++ b/projects/application-services/build
@@ -82,8 +82,6 @@ patch -p1 < $rootdir/no-git.patch
# XXX: We don't build the code for Linux for now as this involves additional
# complexity. That's needed for running unit tests later on, though.
patch -p1 < $rootdir/target.patch
-patch -p1 < $rootdir/1651660.patch
-patch -p1 < $rootdir/1651662.patch
[% IF c('var/fetch_gradle_dependencies') %]
# XXX: `assemble` is still not enough to see all fetched dependencies via
# Gradle's --debug. See: tor-browser-build#40056.
diff --git a/projects/application-services/config b/projects/application-services/config
index 336de62..e4ea05d 100644
--- a/projects/application-services/config
+++ b/projects/application-services/config
@@ -1,7 +1,7 @@
# vim: filetype=yaml sw=2
filename: '[% project %]-[% c("version") %]-[% c("var/build_id") %].tar.gz'
-version: 61.0.13
-git_hash: 8faa8313bcec03775ddaa194438391c4731eb840 # v61.0.13
+version: 63.0.0
+git_hash: 8e63363359c3d20385ed55f5308d19e321816898
git_url: https://github.com/mozilla/application-services
var:
@@ -10,7 +10,7 @@ var:
# This should be updated when the list of gradle dependencies is changed.
gradle_dependencies_version: 2
# This should be updated when the list of rust dependencies is changed.
- rust_vendor_version: 1
+ rust_vendor_version: 2
# For armv7 we need a different target than the default one we use for
# GeckoView. We set this variable so the Rust project in the `input_files`
# below can set the correct target when built for use in this project,
@@ -24,19 +24,19 @@ input_files:
- project: '[% c("var/compiler") %]'
name: '[% c("var/compiler") %]'
# We need the torbrowser-* targets for Rust, see: #40094.
- - project: fenix-rust
+ - project: fenix-as-rust
name: rust-armv7
target_prepend:
- torbrowser-android-armv7
- - project: fenix-rust
+ - project: fenix-as-rust
name: rust-aarch64
target_prepend:
- torbrowser-android-aarch64
- - project: fenix-rust
+ - project: fenix-as-rust
name: rust-x86
target_prepend:
- torbrowser-android-x86
- - project: fenix-rust
+ - project: fenix-as-rust
name: rust-x86_64
target_prepend:
- torbrowser-android-x86_64
@@ -85,10 +85,8 @@ input_files:
# `cargo vendor vendor` in the `application-services` directory has vendored
# the sources.
- URL: https://people.torproject.org/~gk/mirrors/sources/application-services-vend… c('var/rust_vendor_version') %].tar.bz2
- sha256sum: fd90572db453b5d83bc7dbb50b09d75c5019f09ee747054fdc12f42605d9da69
+ sha256sum: 70e02d587661e5d93dbe30ffa9265fb8b6b66ba8483f3268017ca919623688bc
- filename: no-git.patch
- filename: mavenLocal.patch
enable: '[% !c("var/fetch_gradle_dependencies") %]'
- filename: target.patch
- - filename: 1651660.patch
- - filename: 1651662.patch
diff --git a/projects/nss/config b/projects/nss/config
index 2b5b4d3..fb3550c 100644
--- a/projects/nss/config
+++ b/projects/nss/config
@@ -2,8 +2,8 @@
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
# The required versions for application-services can be found at the respective
# commit in libs/build-all.sh
-version: 3.53.1
-nspr_version: 4.25
+version: 3.56
+nspr_version: 4.28
var:
container:
use_container: 1
@@ -19,7 +19,7 @@ input_files:
project: ninja
- URL: 'https://ftp.mozilla.org/pub/security/nss/releases/NSS_[% c("version") | replace("\\.", "_") %]_RTM/src/nss-[% c("version") %]-with-nspr-[% c("nspr_version") %].tar.gz'
name: nss
- sha256sum: 132ce527f3963e3ae5be3337ed4e1099e160b9402be177b5704de3ed2f5271d2
+ sha256sum: 989b548aa5589d15e31a306218d3c48dbc472b6043b78c6846b5acc54ebfed67
- filename: configure.patch
- filename: config.patch
- filename: bug_13028.patch
diff --git a/projects/sqlcipher/config b/projects/sqlcipher/config
index da78dcd..fb4ae3a 100644
--- a/projects/sqlcipher/config
+++ b/projects/sqlcipher/config
@@ -2,7 +2,7 @@
filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.gz'
# The required versions for application-services can be found at the respective
# commit in libs/build-all.sh
-version: 4.3.0
+version: 4.4.0
var:
container:
use_container: 1
@@ -18,4 +18,4 @@ input_files:
project: nss
- URL: 'https://github.com/sqlcipher/sqlcipher/archive/v[% c("version") %].tar.gz'
name: sqlcipher
- sha256sum: fccb37e440ada898902b294d02cde7af9e8706b185d77ed9f6f4d5b18b4c305f
+ sha256sum: 0924b2ae1079717954498bda78a30de20ce2a6083076b16214a711567821d148