Ζητώ (σχεδόν απεγνωσμένα) βοήθεια γιά compilation με Qt

Ξεκίνησε από mandarinos, 03 Σεπ 2021, 01:22:59 ΜΜ

« προηγούμενο - επόμενο »

mandarinos

Λοιπόν, το πρόβλημα είναι το εξής:

Αρχές της σχολικής χρονιάς, και πρέπει να βγεί το (πρώτο) ωρολόγιο πρόγραμμα. Προς τούτο, χρησιμοποιώ εδώ και χρόνια το πρόγραμμα FET timetable. (Download από εδώ: https://www.lalescu.ro/liviu/fet/download.html )

Όμως, επειδή δεν είδα φέτος να υποστηρίζεται έστω μιά παλιότερη έκδοση κατ' ευθείαν από τη διανομή (Linux Mint 20.2 Uma), θα σας πω τί έκανα μέχρι τώρα - και πού κολλάει το θέμα:

(1) Κατέβασα τα sources, τα αποσυμπίεσα, μπήκα στο δικό τους directory, διάβασα το readme, και πήγα να τα κομπαϊλάρω.

Άμ, δέ!!!

Εκεί υπάρχει το αρχείο fet.pro, το οποίο θέλει, λέει, Qt - και δή, την εντολή qmake. Δίνω (απ' τη γραμμή εντολών) qmake fet.pro, "- Χαμπερίμ γιόκ, εφέντημ!" απαντάει ο υπολογιστής! (Υπόψη, οι οδηγίες στο αρχείο readme είναι λιγάκι αλλού 'ντ' αλλού. Ούτε με σκέτο make τσιμπάει.)

(2) Οπότε, λογικά έπρεπε να κατεβάσω / εγκαταστήσω το Qt.
Πάω, λοιπόν, στο site του Qt, όπου πρώτα πρέπει να κάνεις λογαριασμό και να δηλώσεις ότι το θες γιά προσωπική χρήση, όχι γιά εταιρεία. Εντάξει όλ' αυτά, οπότε μετά από εκτενές ψάξιμο σ' ένα μάλλον χαώδες site, κατέβασα (από εδώ: https://www.qt.io/download-qt-installer?hsCtaTracking=99d9dd4f-5681-48d2-b096-470725510d34%7C074ddad0-fdef-4e53-8aa8-5e8a876d6ab4) το αρχείο qt-unified-linux-x64-4.1.1-online.run .

(3) Αυτό το αρχείο είναι ο on-line installer του Qt, αλλά πρώτα θέλει: chmod +x qt-unified-linux-x64-4.1.1-online.run . Μετά, (sudo) ./qt-unified-linux-x64-4.1.1-online.run , σε βγάζει σ' ένα πράσινο μπακακί παραθυρικό περιβάλλον, τσεκάρεις την τελευταία έκδοση 6.1.3. ολόκληρη, κι αρχίζει να κατεβάζει και να εγκαθιστά.

(4) Νομίζω χρειάζεται κι ο Qt Creator, αν δεν έχει ήδη εγκατασταθεί. (Έψαχνα ανάκατα οδηγίες στο Διαδίκτυο, οπότε πιθανόν να έκανα και περιττές ενέργειες.) Τότε, δώστε: sudo apt install qtcreator και: sudo apt install build-essential, γιά να εγκατασταθούν οι βιβλιοθήκες. Μετά απ' όλ' αυτά, στο υπομενού programming (της "έναρξης" κάτω αριστερά) πρέπει να σας εμφανίσει μιά πεντάδα επιλογών: Qt Creator, Qt Maintenance Tool, Qt 5 Assistant, Qt 5 Designer, Qt 5 Linguist.

(5) Εγκαθιστούμε τους οδηγούς του OpenGl. Δίνουμε:

sudo apt-get install mesa-common-dev
sudo apt-get install libglu1-mesa-dev -y

Σημειώστε, όμως, πως η υποστήριξη του Qt γιά OpenGL θα σταματήσει προσεχώς στην έκδοση Open Source Qt Linux 5.15.0, αν και θα ισχύει μέχρι την 5.14.2 .

Μετά απ' όλ' αυτά, πάμε πάλι στο directory των sources του FET timetable, τσεκάρουμε με το ποντίκι το αρχείο fet.pro, το ανοίγουμε με το Qt Creator, και περιμένουμε. (Κι ο Βούδδας -ή ο Κούδας!- βοηθός!  ;D )

. . . . . . . . . . . .

Ερώτηση, επειδή ακόμη δεν είδα αποτέλεσμα (αν καί μέσα στο περιβάλλον του Qt Creator έδωσα "build project fet.pro" - αυτό δεν έπρεπε να δώσω; ) :

ΤΙ ΔΕΝ ΕΚΑΝΑ ΣΩΣΤΑ;

Λογικά, θα πρέπει να βγάλει ένα compiled executable binary, ναι; Έ, πού 'ν' το, γιά;

Επόμενη ερώτηση (προαιρετική) :

Γιά να μάθουμε να οδηγούμε, πρέπει πρώτα να μάθουμε πώς σχεδιάζεται ο κινητήρας της Ferrari;...

Ευχαριστίες προκαταβολικά!

mandarinos

#1
Σημειώστε πως δεν είμαι ξανθός! LOL!!!

Είμαι παλιός λινουξάς (αν και δεν τα ξέρω όλα - και δή, ένας λόγος παραπάνω, σε επίπεδο system programmer), αλλά είχα καλομάθει με compilations με make, make config, κι όξω απ' την πόρτα.

Εντάξει, το Linux κι ως desktop είναι κορυφή - και κανένα παράπονο δεν έχω. Αλλ' αυτές οι ιστορίες, τώρα, όπου ο καθένας (και κάθε τρείς και λίγο) αλλάζει την software engine από κάτω (σε οποιονδήποτε τομέα: γραφικά, δικτύωση, εγκαταστάσεις προγραμμάτων...), πάει να επιβάλει τη δική του, και δείχνει ασυμβατότητα με τους άλλους, ή τις ήδη υπάρχουσες engines, όλ' αυτά τα καμώματα βάζουν βούτυρο στο ψωμί της εταιρείας του Μπίλλη Πόρτα του 3ου.

(Και, ναί, αμαρτία εξομολογούμενη: η τελευταία έκδοση του FET γιά Win έκατσε μιά χαρά σ' έναν απ' τους ΗΥ του συλλόγου διδασκόντων, με Ms-Windows δεκάρια. Τί κάνουμε, όμως, που στο σπίτι έχω / δουλεύω μόνο Linux, και πρέπει να δουλέψω το ωρολόγιο πρόγραμμα το Σαββατοκύριακο; Δυστυχώς η τελευταία έκδοση του FET δεν είδα να σώζει σε format προηγουμένων, ώστε να μου φύγει ο πονοκέφαλος αυτός.)

Αν τά 'παιξα εγώ μ' αυτά και μ' αυτά, σκεφθήτε τί θα κάνει η οποιαδήποτε άσχετη συνάδελφος, που της εκθειάζουμε το Linux. Θα ζητάει ένα Ζάλογγο να πέσει! lol!!!

Κρίμα, πολύ κρίμα. Δεν θά 'πρεπε. Μέχρι το 2025 θά 'πρεπε να έχουμε ξεμπερδέψει με τα διάφορα παρά φύσιν λειτουργικά!  :)  (Αφού πρώτα θα έχουμε τακτοποιήσει τα του οίκου μας, εννοείται.)


mandarinos

Και, ως υστερόγραφο, ούτε ο συνδυασμός Wine / PlayOnLinux σηκώνει το fet.exe ... Κρίμα τη διαφήμιση γιά τα σούπερ-παιχνίδια της μοδός που σηκώνει.

Άρα, μονάχα compilation.

mandarinos

Έλα, Παναΐαμ'!!!

Πράγματι έκανε compilation (μόνο που πήρε πολλή ώρα), αλλά τα έβγαλε σε ξεχωριστό directory, το: build-fet-Desktop-Debug.

Εκεί μέσα έβγαλε δύο "εντολές", τις fet και fet-cl , αν και ως ζωγραφιές δεν δείχνουν εκτελέσιμα. Δείχνουν σκέτο κείμενο (καί είναι - αν καί είναι scripts, απ' όσα κατάλαβα). (Συνημμένη εικόνα 1.)

Πάντως, με: ./fet ξεκινάει μιά χαρά! Λύθηκε το πρόβλημα! (Συνημμένη εικόνα 2.)

Τελικά, ακόμη και σήμερα συμβαίνουν ιστορίες με happy end!...

mandarinos

"Old dog doesn't learn new tricks", λένε.

Βρέ, μαθαίνει καί παραμαθαίνει - και πάει και σε τσίρκο, άμα λάχει!  :D

alkisg

Το fet είναι διαθέσιμο από τα αποθετήρια, γιατί παιδεύεσαι με χειρωνακτικό compilation;

https://packages.ubuntu.com/fet

mandarinos

Είναι παλιότερες εκδόσεις, και δεν ξέρω αν στη δημιουργία των αρχείων τους συμφωνούν με τις τελευταίες.

Επίσης, έχω παρατηρήσει ότι ο Λαλέσκου (ο δημιουργός του FET) κάνει πολύ καλή δουλειά, και κάθε νέα έκδοση είναι ταχύτερη απ' τις παλιότερες... πράγμα πολύ σημαντικό ειδικά στην περίοδο της έναρξης των σχολείων, όπου εκπαιδευτικοί έρχονται και φεύγουν καθημερινά (κι αλλάζουν οι αναθέσεις).

Παιδεύτηκα λιγάκι με το compilation, αλλά καλύτερα αυτό, απ' το να λούζομαι δυό-τρείς καθημερινές αλλαγές αναθέσεων από πανικόβλητες υποδιευθύντριες!  :) (Και μετά να ξηγιέμαι χέρι, στυλό, και μπλάνκο.)

mandarinos

Άλκη, έχεις δουλέψει το Qt, ειδικά από έκδοση 6.0 και πάνω;

Μήπως στο τέλος (αφού τελειώσει το Qt τη δουλειά του) πρέπει να κάνω και κλασικό compilation, γιά να μην ξεκινάω το πρόγραμμα από γραμμή εντολών με ./fet ; Αν και δουλεύει μιά χαρά, έχω την αίσθηση πως παρέλειψα κάποιο βήμα. (Στο directory που δημιουργεί, περιλαμβάνει κι ένα makefile. Προς τί, όμως; )

alkisg

Οι διανομές Linux έχουν ως κύριο στόχο τη σταθερότητα και όχι το να τρέχουμε τις τελευταίες εκδόσεις των προγραμμάτων.
Η πρώτη LTS έκδοση του Qt θα βγει στο τέλος του Σεπτεμβρίου:

Παράθεση από: https://www.qt.io/blog/qt-roadmap-for-2021
Qt 6.2 LTS is targeted for the end of September 2021. It is the first long-term supported release of the Qt 6 series.

Επομένως η τρέχουσα έκδοση του Qt στην πλειονότητα των διανομών είναι η 5.x:
https://repology.org/project/qt/versions

Αν τώρα κάποιος developer θέλει ντε και καλά να βασίζεται σε βιβλιοθήκες οι οποίες δεν έχουν ακόμα βγάλει LTS εκδόσεις, τα προγράμματά του θα πρέπει να πακετάρονται σε μορφή snap, flatpak ή appimage, ώστε να περιλαμβάνουν και τις εξαρτήσεις τους και να μην διαλύουν το υπόλοιπο σύστημα.

Επίσης, αν έχει αλλάξει το φορμάτ των αρχείων timetable χωρίς να υποστηρίζει συμβατότητα προς τα πίσω, θα είναι απαράδεκτος. Δεν νομίζω όμως να έχει κάνει τέτοιο χοντροκομμένο πράγμα.

mandarinos

Σωστό το σχόλιό σου γιά την συμβατότητα προς τα πίσω και τις εκδόσεις.

Πάντως, αν δεν κάνω λάθος, τα παραγόμενα αρχεία του FET είναι τύπου xml (έστω: στηρίζονται στην xml), οπότε η όποια ασυμφωνία θα προέρχεται από τυχόν διαφορετικές εκδόσεις της xml (νεώτερες vs. παλιότερες). Ειλικρινά, όμως, δεν το έψαξα.

vovos

Το FET είναι κορυφή στα προγράμματα δημιουργίας προγράμματος (++ότι είναι και open source). Θυμάμαι όταν όλα τα υπόλοιπα κόλλαγαν από τους πολλούς και σύνθετους περιορισμούς το FET με έβγαζε ασπροπρόσωπο πάντα (και ταχύτατο)!
Thanks mandarinos για το walkthrough, πολύ χρήσιμο!

mandarinos

Τίποτε!  :)

Ευτυχώς, από τον περασμένο Δεκέμβριο, έχω εργαστήριο server-clients όπως ακριβώς το ήθελα τόσα χρόνια: με καινούργια ( ; ) 64μπιτα μηχανήματα (αν και ήδη καταργημένα από τη Lenovo, και με προδιαγραφές όχι τόσο σόϊ, πχ δεν έχουν usb >= 3.0 / έχουν άθλιο μεικτό BIOS/UEFI, να σκεφτείς ότι το παλιότερο μηχάνημα που έχω σπίτι -motherboard της ASRock- έχει UEFI που φυσάει, αλλά οκ) και Linux στον server με τα scripts της ΤΣ. (Συν όσα utils εγκαθιστώ εγώ.) Power, λέμε!  :)

Αλλά, επειδή είναι η πρώτη φορά που έχω στη διάθεσή μου τέτοια καλούδια, συνεχώς ψάχνω τις δυνατότητες του εργαστηρίου. Κρατάω συνεχώς σημειώσεις, και σκοπεύω μιά μέρα να ολοκληρώσω ένα εγχειρίδιο "hands-on" γιά συναδέλφους-ισσες που δεν έχουν ιδέα από Linux και τις τρο-με-ρές δυνατότητές του. (Θα μου βγεί καμιά 300άρα σελίδες, αλλά χαλάλι. Αν δεν βοηθηθούμε και μεταξύ μας...)
Σκέψου πχ ότι -εκτός των άλλων- ψάχνω να κάνω κάθε client να βλέπει στον server το ηλεκτρονικό αρμόνιο του σχολείου μέσα από το Rosegarden!

Όταν ολοκληρώσω το εγχειρίδιο, θα το ανεβάσω, κι όποιος θέλει το παίρνει· ίσως γίνει και συλλογικό έργο, αν κάποιοι (πιό έμπειροι) επεξεργαστούν τις πρωτόλειες χοντράδες τις δικές μου και το κάνουν πιό κυριλάτο. Φυσικά, περιττό να πούμε, τα θέματα που πρέπει να ψάξω είναι πολλά.

Στο μεταξύ, όταν βρίσκω μιά απάντηση σε κάποιο θέμα (όχι απαραίτητα μονοσήμαντη - απλά, θα είναι αυτή που δούλεψα στην πράξη), θα την αναρτώ στο ιστολόγιο που ξεκίνησα στο My School - και θα σας ειδοποιώ εδώ.

mandarinos

Κυριακάτικες καλημέρες!

Λοιπόν. Δοκίμασα να δω τί γίνεται, αν δώσω στο FET παλιότερης έκδοσης αρχείο δεδομένων νεώτερης. Τσινάει λίγο, βγάζει διαγνωστικό ότι δεν αναγνωρίζει κάποιες καινούργιες ετικέττες της XML, με προτρέπει να κάνω αναβάθμιση, αλλά παρ' όλ' αυτά υπολογίζει το ωρολόγιο πρόγραμμα - και γρήγορα! (Επισυναπτόμενα 1, 2, 3 κατά σειρά.)

Συνεχίζω στο επόμενο, επειδή η πλατφόρμα αυτή δέχεται 4 επισυναπτόμενα ανά μήνυμα, και τα επόμενα 2 επισυναπτόμενα πάνε εννοιολογικώς μαζί.


mandarinos

(συνέχεια από προηγούμενο)

Εάν πάρω έναν text editor (τον xed, εδώ) κι ανοίξω ένα αρχείο του FET της έκδοσης Αυγούστου 2021 (6.1.5), καθώς κι ένα αρχείο της περυσινής (Αύγουστος 2020, 5.46.1), θα δω αμέσως-αμέσως την πρώτη ετικέττα, που δεν περιέχεται στην πρόσφατη· παρά το ότι και τα δύο αρχεία .fet μου δείχνουν έκδοση 1.0 της XML (στην οποία και είναι δημιουργημένα). (Επισυναπτόμενα 4, 5 - το 4 είναι το νεώτερο αρχείο.) Πιστεύω ότι θα διαφέρει κάποια υποέκδοσή της, αν και η Wiki (στο άρθρο: https://en.wikipedia.org/wiki/XML ) λέει ότι η XML σταμάτησε στην έκδοση 1.1 εδώ και 15 χρόνια.

Τέλος πάντων, είναι καθαρά προσωπικό θέμα το πώς θα το αντιμετωπίσει ο καθένας - αν, δηλαδή, θα σπεύδει ν' αναβαθμίζει τον ΗΥ του στις νέες εκδόσεις των προγραμμάτων, ή όχι. (Κι αν θα δέχεται την ευκολία της εγκατάστασης μέσα από τον διαχειριστή προγραμμάτων, ή όχι.) Η δική μου άποψη είναι πως δεν πρέπει ν' αφήνω την συνεχή ενημέρωση επάνω στις εξελίξεις, διότι αν την αφήσω, θα μ' αφήσει και η Πληροφορική! Τα πράγματα στον τομέα αυτόν προχωράνε πολύ γρήγορα, και το ξέρουμε όλοι!

alkisg

Η XML είναι γλώσσα αποθήκευσης (περιγραφής) δεδομένων.
Το πρόβλημα δεν είναι η έκδοση της γλώσσας XML, δεν αναμένουμε να αποκτήσει ξαφνικά νέες και ασύμβατες λέξεις περιγραφής.

Το πρόβλημα είναι στη γραμμή "fet version", η οποία αναφέρεται στα ίδια τα δεδομένα και όχι στη γλώσσα περιγραφής τους.
Αν το fet 4 αποθηκεύει το δεδομένο "καθηγητής" με 10 πεδία και το fet 5 προσπαθεί να διαβάσει 11 πεδία, εκεί είναι η ασυμβατότητα, και θα πρέπει το κάθε νεότερο fet να προσπαθεί να είναι συμβατό τουλάχιστον με την προηγούμενη έκδοση για να γίνεται ορθό upgrade των δεδομένων.

Για παράδειγμα, το Moodle αναφέρει:

Παράθεση από: https://docs.moodle.org/311/en/Upgrading#Check_the_requirements
You can only upgrade to Moodle 3.11 from Moodle 3.6 or later. If upgrading from earlier versions, you must upgrade to 3.6 as a first step.

Αυτοί οι περιορισμοί υπάρχουν ακριβώς για τη δυνατότητα αναβάθμισης των δεδομένων στη νέα τους έκδοση.

Ένα σημαντικότατο χαρακτηριστικό όλων των διανομών Linux είναι ότι εγγυώνται αναβάθμιση των δεδομένων όλων των προγραμμάτων τους από την προηγούμενή τους έκδοση. Είναι ένας από τους πολλούς λόγους που αποφεύγουμε να βάζουμε εκδόσεις εκτός αποθετηρίων.