GL-Get: a Dependency Manager for Software Projects Jordi Vilalta Prat

GL-Get: a Dependency Manager for Software Projects Jordi Vilalta Prat

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

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    120 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us