Aufgrund der Unvereinbarkeit mit der Mozilla-Politik sowie den Distributionen, die keine Builds von Firefox verbreiten, die die Installation nicht signierter Erweiterungen und die Nutzung von API WebExtensions Experiments ermöglichen, wurde ein Werkzeug entwickelt, das regulĂ€re Firefox-Bauten in eine âDeveloper Editionâ umwandelt, die die Verwendung von nicht digital signierten Erweiterungen erlaubt.
Die Entwicklung des Werkzeugs wurde dadurch erleichtert, dass die erforderliche FunktionalitĂ€t in Firefox bereits in ECMAScript-Code integriert ist und Teil jeder Firefox-Version ist, jedoch zur Laufzeit entsprechend den festgelegten Konstanten aktiviert wird. Die Konstanten (âMOZ_DEV_EDITIONâ, âMOZ_REQUIRE_SIGNINGâ) sind in einer Datei (âmodules/addons/AddonSettings.jsmâ) definiert, die sich im zip-Archiv â/usr/lib/firefox/omni.jaâ befindet.
Das vorgeschlagene Tool analysiert die benötigte Datei mit esprima-python, patcht den AST und serialisiert ihn mit jscodegen.py. Der Umgang mit dem zip-Format erfolgt ĂŒber libzip.py â Bindings zu libzip. Es wird empfohlen, die genannten Bibliotheken manuell aus den entsprechenden Git-Repositories zu installieren.
ZusĂ€tzlich kann das Skript unpin.py erwĂ€hnt werden, das die EinschrĂ€nkungen fĂŒr die Versionsangaben «{«, «==» und «~=» in vorgefertigten Wheel-Paketen aufhebt, die von vielen Entwicklern verwendet werden. Dadurch wird ein automatisches Downgrade bei der Installation des benötigten Pakets ĂŒber pip mit den Standard-Einstellungen vermieden.
Quelle: opennet.ru
