Mozilla Italia: la prima vera revisione di PYr2z e le nuove release

| |

Questo articolo richiede la lettura del suo predecessore, lo trovi qui: Mozilla Italia: migrazione di r2z, Dict e nuovo PYr2z.
Tolta di mezzo questa incombenza, ecco che puoi scoprire le novità che girano a oggi sotto il cofano della versione 2 di PYr2z e le stupide vicissitudini che ho passato per un banale errore di distrazione che mi ha impedito di vedere con chiarezza un dettaglio che mi avrebbe fatto risparmiare del tempo. Poco male, risultato comunque raggiunto e articolo ad-hoc per riepilogare le attività e i prossimi passi.

r2z: Public Archive

Firefox Nightly: nuova integrazione Firefox Monitor, blocco CryptoMining e Fingerprint

Ho definitivamente “spento” il vecchio repository di Release2Zip (per gli amici r2z). Ormai non aveva più senso alcuno continuare a mantenerlo aperto perché non riceve aggiornamenti da una vita e con l’arrivo di PYr2z questa cosa è andata assodandosi maggiormente. Ciò che rimane è il sito web mozillaitalia.github.io/r2z e chiaramente il repository ospitato all’interno dello spazio GitHub di Mozilla Italia, impostato in sola lettura come Public Archive: github.com/MozillaItalia/r2z.

È stato un bel progetto scritto insieme a Sandro, ci ha aiutato tantissimo in passato (soprattutto quando gestivamo manualmente i pacchetti portable da inserire nei download di Mozilla Italia) ed è tornato comodo anche ad altri, per questo sono contento di quanto fatto.

PYr2z: la v2, le release, la pulizia

Cambia il meccanismo, non la sostanza.
PYr2z è stato scritto per creare archivi 7z che contengono Mozilla Firefox e Mozilla Thunderbird privi del loro file di setup, così che chiunque possa utilizzarli sul proprio PC Windows anche senza diritti amministrativi, anche senza andare a “sporcare” più del dovuto l’AppData (perché Firefox – così come funziona per Chrome – può essere installato in ambiente utente con diritti non elevati).

Ciò che avrai forse notato è che ho tolto di mezzo tutti i vecchi archivi che prima occupavano lo stesso posto degli script all’interno del repository, iniziando a “scrivere” uno storico di rilasci direttamente accessibili dall’area release del progetto: github.com/MozillaItalia/pyr2z/releases.

Firefox Profilemaker: generatore di profili per il browser di Mozilla

È tutta questione di comportamento delle Actions di GitHub, il resto è rimasto più o meno identico.
Ora – prendendo a esempio l’azione di rilascio di Firefox stabile a 64 bit per Windows – questo è l’unico passaggio realmente nuovo:

- name: Release
  if: env.DIFF != 'None'
  uses: xresloader/upload-to-github-release@v1.3.11
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  with:
    file: "${{ env.FXZIPFILE }}"
    draft: false
    tag_name: 'fx-win64'

Questo permetterà di andare ad aggiungere il pacchetto portable di Firefox nel tag di rilascio fx-win64, questo: github.com/MozillaItalia/pyr2z/releases/tag/fx-win64.

Chiaramente ho già provveduto a modificare i puntamenti all’interno del sito web di Mozilla Italia affinché raggiungano il nuovo indirizzo e non più il vecchio che passava tramite il file HTML di caricamento dell’ultima release.

Ho potuto perciò lanciare una pulizia del repository per andare a spazzare via tutte le vecchie tracce dei file d’archivio precedentemente pubblicati. L’idea era quella di offrire anche un repository “come nuovo“, partendo dalla versione 2 del codice.

Mozilla Italia: la prima vera revisione di PYr2z e le nuove release

Per farlo ho “ucciso” tutta la cronistoria del repository GitHub:

git checkout --orphan latest_branch
git add -A
git commit -am "Pulizia"
git branch -D main
git branch -m main

rm -Rf .git/refs/original
rm -Rf .git/logs/

git gc --aggressive --prune=now
git prune --expire now
git push --force

Ma questo non basta perché su GitHub rimangono in conservazione i vecchi file affinché si possano sempre e comunque recuperare in caso di necessità. Vengono semplicemente compattati e conservati all’interno di archivi .pack che trovano spazio nella cartella .git/objects/pack (nella cartella del repository su server e in locale quando ne tieni una copia):

Mozilla Italia: la prima vera revisione di PYr2z e le nuove release 2

Questo comporta che – per qualsiasi nuovo fork del progetto – si vada a effettuare download dai server Microsoft (GitHub) circa 10 GB di dati, cosa tutt’altro che comoda. Per questo motivo, su suggerimento di Daniele, ho scaricato e utilizzato BFG Repo-Cleaner che permette di intervenire in maniera semplice e veloce sullo storico repository e sui file pack, permettendone una profonda pulizia (e sostituendosi così al comando di git-filter-branch).

Seguendo la documentazione ufficiale del prodotto ho semplicemente pensato di lanciare la pulizia di tutti i file che superavano i 10MB di spazio disco (all’inizio ho filtrato per 50MB, poi sono sceso e ho fatto ulteriore pulizia). L’operazione è stata lanciata direttamente dall’interno della cartella del repository (via Terminale su macOS, ma la stessa cosa la ottieni su Windows o Linux):

git clone --mirror https://github.com/MozillaItalia/pyr2z.git
java -jar bfg.jar --strip-blobs-bigger-than 10M
git reflog expire --expire=now --all && git gc --prune=now --aggressive && git push --force

Mozilla Italia: la prima vera revisione di PYr2z e le nuove release 1

Al termine tutto il repository è arrivato a occupare circa 600 Kb su disco, per la mia (e – forse – di qualcun altro) felicità.

Extra: il download in locale

Paragrafo extra dedicato a un nuovo arrivo. La cartella “local” del progetto ospiterà eventuali script a uso locale, quindi pensati e scritti per vivere e funzionare sul tuo PC.

Il primo a fare la sua comparsa ha colmato una lacuna personale: scaricare e tenere aggiornata la cartella portable del mio Thunderbird Daily. Lo script r2ztb-nightly-win64.py richiede che ci sia installato sul PC Python (puoi usare quello presente sul Microsoft Store se vuoi percorrere la strada comoda) e che tu vada a modificare la variabile destfolder che si trova a riga 8 dello stesso. Ricorda che su Windows – contrariamente al suo standard – le cartelle in Python vanno dichiarate con backslash (quindi \) e non con lo slash classico (/).

Dovrai inoltre installare alcune librerie necessarie (ammesso non siano già presenti sul sistema):

import hashlib
import json
import os
import shutil
import subprocess
import urllib.request

Una volta fatta questa piccola modifica e installate le librerie necessarie potrai lanciare lo script e attendere che questo vada a popolare la cartella da te specificata con tutto il necessario per far funzionare un Thunderbird Daily (quindi la versione più instabile) per Windows a 64 bit.

Questo è quanto. Grazie per aver letto fino a qui, se hai dubbi in merito a questo articolo o alle modifiche apportate al repository sentiti libero di chiedere lumi nell’area commenti. Seguiranno certamente ulteriori modifiche al codice (sto pensando già ad alcuni miglioramenti per identificare più univocamente le release), ma quel giorno non è oggi 🍻

#StaySafe


Ringraziamenti:
github.com/18F/C2/issues/439
rtyley.github.io/bfg-repo-cleaner
github.com/rtyley/bfg-repo-cleaner/issues/278
stackoverflow.com/questions/38509127/how-do-i-get-rid-of-a-big-pack-file-in-my-git-repo
junyonglee.me/github/How-to-clean-up-git-repository
stackoverflow.com/questions/2100907/how-to-remove-delete-a-large-file-from-commit-history-in-the-git-repository

Correzioni, suggerimenti? Lascia un commento nell'apposita area qui di seguito o contattami privatamente.
Ti è piaciuto l'articolo? Offrimi un caffè! ☕ :-)

L'articolo potrebbe non essere aggiornato

Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)

Condividi l'articolo con i tuoi contatti:
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Commenti
Oldest
Newest Most Voted
Inline Feedbacks
View all comments