Είχαμε ανακοινώσει ότι η πρώτη εικόνα μας ISO alpha θα ήταν διαθέσιμη τέλος Ιανουαρίου… και μέχρι τώρα δεν υπάρχει διαθέσιμο ISO. Να πάρει! Τι συμβαίνει; Αφήστε με να σας εξηγήσω.
Ήταν μια φορά ένα bootstrap…
Όπως αναφέραμε στα προηγούμενα άρθρα, το σύστημα κατασκευής μας είχε έντονη δραστηριότητα τις τελευταίες εβδομάδες και κατασκευάστηκαν πάνω από 4000 πακέτα. Το σύνολο των πακέτων είναι αυτό που λέμε ένα bootstrap.
Αν κοιτάξετε στην Wikipedia, θα δείτε πως ένα bootstrap είναι ένα μικρο πρόγραμμα εκκίνησης που επιτρέπει την εκκίνηση ενός μεγαλύτερου. Στην περίπτωση της Mageia, η έννοια αυτή αναφέρεται στην τρέχουσα φάση στην οποία το βασικό σύστημα και οι κύριες εξαρτήσεις έχουν δημιουργηθεί ώστε να μπορέσουν να δημιουργηθούν όλες οι εφαρμογές μέσω των δικών της εργαλείων και πακέτων της Mageia. Όλες οι διανομές Linux χρησιμοποιούν τα δικά τους πακέτα για την κατασκευή των διαθέσιμων πακέτων στα αποθετήριά τους.
Τώρα είναι το πιο πολύπλοκο μέρος της ιστορίας, που μοιάζει με το δίλημμα της κότας και του αυγού. Μερικά πακέτα χαμηλού επιπέδου, τα συνήθως επονομαζόμενα εργαλεία ανάπτυξης, απαιτούν τους ίδιους τους τους εαυτούς για να μεταγλωττιστούν: gcc, glibc… Αυτά τα πακέτα υπάρχουν ήδη σε πολλές διανομές, γι’ αυτό το λόγο το bootstrapping ξεκινά με βάσει μια από τις διανομές αυτές.
Στην περίπτωση της Mageia, επιλέξαμε να χρησιμοποιήσουμε τα πακέτα της Mandriva επειδή η πρώτη κυκλοφορία βασίζεται στην Cooker. Για να είναι δυνατή η χρησιμοποίησή τους, θα πρέπει να τα έχουμε καθαρίσει:
- αφαιρώντας τα ειδικά στοιχεία της Mandriva (macro RPM, αντικείμενα που υπόκεινται σε πνευματικά δικαιώματα όπως εικόνες, πεπαλαιωμένα στοιχεία…)
- αφαιρώντας της μη αναγκαίες συνθήκες από τους απαραίτητους ορισμούς για την κατασκευή
- στέλνοντας patch upstream, ώστε να μην χρειάζεται να τα συντηρούμε ενώ μπορούν να επωφεληθούν όλοι αν γίνουν αποδεκτά upstream.
- απενεργοποιώντας προσωρινά ορισμένες εξαρτήσεις υψηλού επιπέδου καθώς δεν έχουν ακόμα κατασκευαστεί και δεν είναι διαθέσιμες για τη Mageia (Java, Mono).
Ας πάρουμε ένα παράδειγμα
Το gcc είναι ένας μεταγλωττιστής της C, και είναι ένα σημαντικό κομμάτι του βασικού συστήματος καθώς ένα πλήθος εφαρμογών το χρειάζεται για να κατασκευαστούν από την πηγή.
Η Mageia χρειάζεται να έχει το δικό της πακέτο του GCC για την δημιουργία όλων των εφαρμογών που χρησιμοποιούν την γλώσσα C (το οποίο λέγεται και dogfooding στα αγγλικά, όταν μια εταιρεία χρησιμοποιεί τα δικά της προϊόντα). Είναι μια κρίσιμη επιχείρηση για την Mageia, γιατί εκτελώντας την σωστά, εξασφαλίζουμε πως όλα θα δουλεύουν και μπορούμε την ίδια στιγμή να έχουμε μια λίστα με τα τυχόν προβλήματα και να διορθώσουμε. Τότε δημιουργείται το GCC της Mageia.
Αφού ολοκληρωθεί η κατασκευή του εργαλείου ανάπτυξης, μπορούμε να ανακατασκευάσουμε τον πυρήνα της Mageia, τους οδηγούς του X, τον εξυπηρετητή X, κλπ. και τις εφαρμογές του υψηλότερου επιπέδου. Ένα σύστημα bootstrap δεν προσφέρει στους δημιουργούς πακέτων παρά μόνο μερικές βιβλιοθήκες και ένα μεταγλωττιστή. Χρειάζεται έτσι να συμπληρωθεί από τα σημαντικά πακέτα του συστήματος πριν την έναρξη των εργασιών της ομάδας δημιουργίας πακέτων. Πλήθος πακέτων απαιτεί εξαρτήσεις οι οποίες με τη σειρά τους απαιτούν άλλες εξαρτήσεις για να κατασκευαστούν.
Τελικά, απαιτούνται χιλιάδες πακέτα για την κατασκευή των βασικών συστατικών που θα χρησιμοποιούνται από τις εφαρμογές σε υψηλό επίπεδο.
Φυσικά, πρόκειται για μια απλοποιημένη έκδοση της διεργασίας, χωρίς όλα τα διασκεδαστικά συμβάντα που μπορεί να διαδραματιστούν κατά την διεργασία την ανακατασκευής. Αλλά είναι η γενική ιδέα.
Γιατί το bootstrap είναι σημαντικό;
Όπως είπαμε πριν, το bootstrap είναι ένα βήμα κατά το οποίο οι δημιουργοί πακέτων και οι ειδικοί του βασικού συστήματος μπορούν να ελέγξουν την συνοχή των στοιχείων σε χαμηλό επίπεδο στην διανομή, να καθαρίσουν τα πακέτα και να σιγουρευτούν για την συμβατότητα με την πολιτική της Mageia. Άρα το bootstrap δεν είναι μόνο για τα άτομα που ενδιαφέρονται για τα fork 🙂 . Εξ’ αυτού, η βελτίωση και η συγγραφή μιας σωστής τεκμηρίωσης στο bootstrap θα βοηθήσει πάρα πολύ κατά την προσθήκη υποστήριξης νέων αρχιτεκτονικών. Θα χρειαστεί ένα κατάλληλο εργαλείο ανάπτυξης, ένα βασικό σύστημα… η ίδια ιστορία.
Τα ISO!
Επιστρέφοντας στο αρχικό μας ερώτημα: για πότε μπορούμε να ελπίζουμε το πρώτο δοκιμαστικό ISO; Το στάδιο του bootstrap ξεκίνησε εδώ και ένα μήνα και θα έπρεπε να ολοκληρωθεί αύριο. Χρειάστηκαν γύρω στις 1500 ώρες για την κατασκευή των διαθέσιμων πακέτων, υπολογίζοντας τις επιτυχημένες και τις αποτυχημένες προσπάθειες, τις ανακατασκευές, την λήψη τεχνικών αποφάσεων, τα αναπάντεχα προβλήματα, τις συζητήσεις…
Και τώρα εδώ είμαστε 🙂 . Το αποθετήριο είναι έτοιμο για τις πρώτες δοκιμές κατασκευής, το σύστημα κατασκευής των ISO είναι ολοκληρωτικά διαμορφωμένο και η έκδοση Alpha1 αναμένεται για τις 15 Φεβρουαρίου. Θα έχετε σύντομα περισσότερα νέα για το μελλοντικό φύλλο πορείας, γι’ αυτό μείνετε συντονισμένοι!
Μετάφραση από το άρθρο στα αγγλικά της ennael.

