לדלג לתוכן

פתרון בנייה והפצה ניתנות לשחזור

החבילה המינימלית מכילה את ה־EXE ואת ה־DLL הפרטי, ואת מדיניות התקנת ה־runtime הנדרש. הסמלים נשמרים בארכיון תחקיר תואם גם אם אינם חלק מהחבילה שנמסרת למשתמש.

הבדיקה מתחילה מפלט הבנייה המפורט. אם נבנה בטעות debug במקום release, או אם צד אחד משתמש ב־runtime שונה, צריך לתקן את ההגדרה לפני השוואת ביצועים או תלויות.

אפשר לתעד גרסאות כלים בקובץ טקסט לצד המניפסט. יש להפעיל את הפקודות מתוך אותה סביבת כלים שבה בוצעה הבנייה.

cmake --version
where.exe cl
cl /Bv
where.exe link

הפקודה cl /Bv עשויה לסיים עם הודעה שאין קובץ קלט, אך עדיין מספקת מידע על הכלים. אין לפרש את קוד היציאה שלה כבדיקת קומפילציה מוצלחת.

אם hashes שונים, בודקים קודם את סוג התוצר ואת metadata לפני שמסיקים שהקוד השתנה. למשל נתיב סמלים אחר יכול להיכנס למידע debug. השוואה של imports, sections ואסמבלי יכולה לעזור לצמצם את ההבדל, אך גם היא אינה הוכחת שקילות מלאה.

הוספת export שאינו משנה exports קיימים יכולה לאפשר ללקוח הישן להמשיך לעבוד. שינוי החתימה של פונקציה קיימת מחייב ממשק חדש או גרסה חדשה שהלקוח מזהה. שינוי המכפיל בדוגמה עשוי לשמור על ABI ובכל זאת להפר את המשמעות שהובטחה.

בתיקייה נקייה על אותו מחשב עדיין קיימים runtimeים והגדרות מערכת של מחשב הפיתוח. לכן הדוח אומר שהפריסה המקומית נבדקה, ולא שהוכחה הפצה למחשב ללא כלי פיתוח. בדיקה ב־VM נקייה יכולה להוסיף את הראיה החסרה.

הוראות השחזור כוללות את שמות קובצי המקור, פקודות configure ו־build, תצורת היעד, רשימת תוצרים ובדיקת smoke עם תוצאה צפויה. אם נדרשת התקנת runtime, היא מצוינת כתלות מפורשת ולא נפתרת באמצעות העתקה אקראית של קבצים.