דפים

יום שישי, 26 בדצמבר 2014

הדרך שלי אל ה deb

הערה חשובה, מאמר זה נכתב הרבה לפני שלמדתי מדעי המחשב בצורה מסודרת,
המאמר וכתיבת הקוד נעשו בצורה חובבנית למדי וכצפוי לא הבשילו לכדי תוצאה אמיתית.
קוד המקור שלי כתוב ב c++ ב QT
הכנתי את כל הקוד בתיקייה ששמה src בתוך תיקיית הפרוייקט שם נמצא כל הקוד עם קובץ src.pro שמכיל כמה פקודות התקנה בנוסף לפקודות של qt
ניתן לראות אותו כאן
ובתיקיית הפרוייקט יצרתי קובץ pro חדש עם הפנייה לתיקיית המקור
ניתן לראות כאן
יצרתי קובץ README וCOPYING
בתיקיית data נמצאים הסמל וקובץ desktop די פשוט
קוד המקור מוכן. עכשיו נאתחל git
$ git init
עכשיו ניצור את הענפים
$ git checkout -b upstream
נוסיף את קבצי הקוד (לא כולל תיקיית debian וgitignore) לענף
$ git add .
$ git commit -a -m "initial source files"
עכשיו נוסיף תג
$ git tag -a upstream/1.0 -m "created upstream/1.0 tag"
עכשיו ניצור את ענף debian שבו יהיו כל הקבצים שקשורים לאריזה
$ git checkout master
$ git checkout -b debian
ניצור תיקיית debian
ניצור בה את הקבצים האלו, אני אסביר על חלק מהם , ומה שלא מובן יש די הרבה מידע ברשת
changelog
compat
control
copyright
docs
rules
source/format
hebrew-cal.lintian-overrides
upstream/signing-key.asc
watch

נערוך את changelog
hebrew-cal (1.0-1) unstable; urgency=low
* Initial release (Closes: #773822)
-- avi <avisoftware123@gmail.com> Thu, 25 Dec 2014 17:34:04 +0200
#773822 זה מספר הבאג שפתחתי
במאמר המוסגר
[פתחתי באג לפני זה בדביאן, שלחתי מייל וזה התוכן שלו:
From: avi <avisoftare123@gmail.com>
To: Debian Bug Tracking System <submit@bugs.debian.org>
Subject: ITP: hebrew-cal -- Hebrew Calendar
Package: wnpp
Severity: wishlist
Owner: avi <avisoftare123@gmail.com>
* Package name : hebrew-cal
Version : 1.0-1
* URL : https://github.com/avi-software/hebrew-cal
* License : GPL
Programming Lang: C++,qt
Description : Hebrew Calendar
hebrew-cal is a nice designed calandar for the Hebrew calendar, dates, holidays,
and reading sequence and daf hyomi and more. It is written in C++ by QT
all the Hebrew Calendars for debian are not like this..
a lot of thought on design and user comfortable.
נקווה שיסתדר מהר]
נערוך את rules
#!/usr/bin/make -f
%:
QT_SELECT=5 dh $@
נערוך גם את source/format ל
3.0 (quilt)
בקובץ hebrew-cal.lintian-overrides
אני מראש מסתיר שגיאת lintian מכיוון שהיא לא שגיאה
#it is not a misspell
hebrew-cal: spelling-error-in-binary usr/bin/hebrew-cal alot a lot
קובץ watch הוא קובץ שמעוזר ל uscan למצוא את הגרסה האחרונה של הקוד מקור שלכם
מכיוון שאני משתמש ב github כדי לאחסן את הקוד שלי הקובץ יראה ככה
version=3
opts=filenamemangle=s/.+\/v?(\d\S*)\.tar\.gz/hebrew-cal-$1\.tar\.gz/,\
pgpsigurlmangle=s/$/.asc/ \
https://github.com/avi-software/hebrew-cal/tags .*/v?(\d\S*)\.tar\.gz
וקובץ upstream/signing-key.asc זה החתימה שלכם, אני מייצא אותה דרך מנהל המפתחות בממשק גרפי ושומר אותה
עכשיו נעדכן את כל השינויים ל git
$ git add .
$ git commit -a -m "initial debian files"
נחזור בחזרה לענף הראשי שלנו
$ git checkout master
נוסיף קובץ לתיקיית הפרוייקט .gitignore
כדי ש git יתעלם מהקבצים של הקומפילציה וכדו' .gitignore
תראו אותו כבר בעצמכם, אין מה להסביר
עכשיו נעדכן את כל השינויים ל git
$ git add .
$ git commit -a -m "add .gitignore file"
עכשיו נאחד את הענפים לענף המרכזי שלנו
$ git merge upstream
$ git merge debian
כעת סיימנו למעשה
הכל מוכן לקמפול
נקמפל בעזרת
$ git buildpackage -uc -us
אחרי זה זה מריץ פקודת lintian שנראה את הפלט שלה בסוף הפלט, שם נראה אם יש שגיאות התאמה לדביאן וכדו' ומה צריך לתקן
שגיאות בקוד המקור נוכל לתקן רק בגרסה הבאה או באמצעות patch (לא כל כך מכיר את זה)
אבל טעויות בקבצים של דביאן נוכל לתקן ולעדכן כל פעם למאגר של git ולקמפל שוב.
נריץ בדיקה חיצונית על החבילה (בדיקה מחמירה יותר)
$ lintian -IE --pedantic ../hebrew-cal_1.0-1_amd64.changes
וזהו!
יש לנו חבילה מוכנה

איך עושים עדכון?

טוב, תמיד יש מה לעדכן ואני רוצה ליצור גרסה חדשה לתוכנה לשנות כל מיני דברים.
אני יעבור לענף ה upstream ויעשה את השינויים בו, ואחר כך יאחד את הענפים שוב
אחרי ששיניתי הכל ועדכנתי בgit את השינויים שעשיתי (add,commit)
אני יוצר תגית חדשה
$ git tag -a upstream/1.1
תגית בgit זה בעצם מצביע לתמונת מצב בזמן מסויים בקוד. במקרה הזה ה buildpackage בונה את החבילה לפי התג שמופיע אחרון ב changelog לכן לא מספיק להוסיף תג, ואנחנו צריכים להכריז על שינוי
$ git-dch --snapshot –debian-tag=upstream/1.0
זה מכריז על תג בשביל שנדע שהולכים לשחרר את הגרסה.
ונשחרר את הגרסה ככה
$ git-dch -R -N 1.1 --debian-tag=upstream/1.1
זה יפתח לי חלון שאני עורך את השינוי , מי ייצר אותו וכו' זה צריך להיות לפי הכללים של דביאן כמובן
ונריץ שוב את
$ git buildpackage -uc -us
סיימנו בינתיים.
עדיין החבילה שלי לא התקבלה לדביאן ככה שכאן זה נגמר. נראה מה יהיה.
קצת עברתי על הרשימה של החבילות שמנסות להתקבל, ושלי נראית הכי מוכנה מבחינת הכללים
תודה רבה לצפריר שעזר לי בזה. אחרת הייתי מסתבך קשות בקריאת מדריכים בשפת דביאן.
את כל המאגר ניתן לראות ב
וזה הבאג שפתחתי , מי שיכול לעזור....
אחר כך נרשמתי ב debian וחתמתי את הקבצים ככה
$ git buildpackage --git-keyid=0x0AEA3455E
עכשיו אני צריך להעלות את הקבצים ל mentors.debian.net
ניצור בתיקיית הבית קובץ בשם .dput.cf
נעתיק לתוכו את השורות האלו
[mentors]
fqdn = mentors.debian.net
incoming = /upload
method = http
allow_unsigned_uploads = 0
progress_indicator = 2
# Allow uploads for UNRELEASED packages
allowed_distributions = .*
ואז נריץ
$ dput mentors hebrew-cal_1.0-1_amd64.changes
ואם הכל ילך כשורה אנחנו אמורים לראות
$ dput mentors hebrew-cal_1.0_amd64.changes
Checking signature on .changes
gpg: Signature made IST 20:47:22 2014 דצמ 30 ג' using RSA key ID AEA3455E
gpg: Good signature from "Avi Software "
gpg: aka "avisoftware "
Good signature on /home/avi/qt/hebrew-cal_1.0_amd64.changes.
Checking signature on .dsc
gpg: Signature made IST 20:47:22 2014 דצמ 30 ג' using RSA key ID AEA3455E
gpg: Good signature from "Avi Software "
gpg: aka "avisoftware "
Good signature on /home/avi/qt/hebrew-cal_1.0.dsc.
Uploading to mentors (via http to mentors.debian.net):
Uploading hebrew-cal_1.0_amd64.deb: done.
Uploading hebrew-cal_1.0.dsc: done.
Uploading hebrew-cal_1.0.tar.xz: done.
Uploading hebrew-cal_1.0_amd64.changes: done.
Successfully uploaded packages.
ניתן לראות כאן
עדכון: כרגע אני כבר בגרסה 1.1-2 אחרי ששיניתי כמה טעויות שעשיתי, המאמר כאן למעלה מסכם את מה שעשיתי בלי הטעויות שבדרך

אין תגובות:

הוסף רשומת תגובה