
Facultat d'Informàtica de Barcelona (FIB) Universitat Politècnica de Catalunya (UPC) Barcelona School of Informatics BarcelonaTech GL-Get: A dependency manager for software projects Jordi Vilalta Prat September 2016 Director: Lluís Solano Albajes Department of Computer science (CS) Informatics Engineering (2003) 2 Thanks This is the end of a very important phase for me, and it wouldn’t have been possible for me to reach it without the help of many great people. Erica and litle Aina, who help me wake up every day. My parents for their unconditional support. My coworkers in general, for making me want to go to work everyday… even when you ask me “How’s GL-Get going? Already finished?” The GL-Get team: Albert, Jeremy and Alex (just pish to master!) And the rest of the company: you rock! 3 4 Table of contents Table of figures....................................................................................................................................8 Table of tables......................................................................................................................................9 Part 1. Introduction............................................................................................................................11 1. Preamble....................................................................................................................................13 1.1. Context...............................................................................................................................13 1.2. Motivation..........................................................................................................................14 1.3. Objectives...........................................................................................................................15 1.4. Document structure............................................................................................................15 2. Beginnings.................................................................................................................................17 2.1. Initial status........................................................................................................................17 2.2. Team...................................................................................................................................17 2.3. Programming languages.....................................................................................................17 Part 2. Development..........................................................................................................................19 3. Specification..............................................................................................................................21 3.1. Problem..............................................................................................................................21 3.1.1. Sharing code...............................................................................................................21 3.1.2. Versioning...................................................................................................................22 3.1.3. Project file creation....................................................................................................23 3.1.4. Continuous integration...............................................................................................25 3.2. Analysis of the existing tools.............................................................................................25 3.2.1. System package managers..........................................................................................26 3.2.2. Language package managers......................................................................................27 3.2.3. Project dependency managers....................................................................................28 3.2.4. Project file creators.....................................................................................................28 3.2.5. Build tools..................................................................................................................28 3.2.6. Continuous integration tools......................................................................................28 3.3. Requirements analysis........................................................................................................29 3.3.1. Functional requirements.............................................................................................29 3.3.2. Non-functional requirements......................................................................................32 3.4. Used tools...........................................................................................................................34 3.5. Use cases............................................................................................................................35 3.5.1. Actors..........................................................................................................................35 3.5.2. Use case diagram........................................................................................................35 3.5.3. Use case description...................................................................................................37 4. Design........................................................................................................................................43 4.1. Concepts.............................................................................................................................43 4.2. System architecture............................................................................................................44 4.3. Application architecture.....................................................................................................46 4.3.1. Actions and command line options............................................................................46 4.3.2. Configuration..............................................................................................................47 4.3.3. Logging......................................................................................................................48 4.3.4. Platform specification.................................................................................................49 4.3.5. VCS abstraction..........................................................................................................52 4.3.6. Embedded Premake integration..................................................................................54 4.3.7. Embedded scripts.......................................................................................................54 4.3.8. Source extractor..........................................................................................................55 4.3.9. Build system...............................................................................................................55 5 4.3.10. Remote build system................................................................................................56 4.3.11. Package definition....................................................................................................57 4.3.12. Manifest....................................................................................................................58 4.3.13. Package cache...........................................................................................................60 4.3.14. Premake extension and translation tree....................................................................62 4.3.15. Package resolution....................................................................................................63 4.3.16. Package checkout.....................................................................................................64 4.3.17. Workspace................................................................................................................67 5. Implementation..........................................................................................................................69 5.1. Lua code.............................................................................................................................69 5.1.1. Arguments checking...................................................................................................69 5.1.2. Modules......................................................................................................................69 5.1.3. Classes........................................................................................................................71 5.1.4. Error handling.............................................................................................................73 5.2. C/C++ code........................................................................................................................75 5.3. Standalone executable........................................................................................................76 5.3.1. Embedded scripts.......................................................................................................76 5.3.2. Dependencies..............................................................................................................77 5.3.3. Main application.........................................................................................................78
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages120 Page
-
File Size-