Advertisement
Guest User

Untitled

a guest
Apr 27th, 2013
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Title of the proposal
  2.  
  3. [NetBSD] Enhancements to the pkgin binary package manager
  4.  
  5. Short description
  6.  
  7. This project aims to improve pkgin, a binary package manager relying on pkgsrc, the NetBSD package management framework.
  8. Focus will be put on overall performance enhancements and code portability.
  9.  
  10. Content - Actual proposal
  11.  
  12. Name : Elias BOUTALEB
  13. Handle : Jambato@irc.freenode.net
  14. Location/Timezone : Paris, France (GMT+2)
  15. Proposal Title : [NetBSD] Enhancements to the pkgin binary package manager
  16.  
  17. Motivation:
  18. Binary packages and package manager software are widespread in the Linux ecosystem-distributions. BSD-like systems can also handle binaries via pkg_add/pkg_delete, but managing upgrades, dependencies and conflicts with those tools can be tedious.
  19.  
  20. pkgin has been created in order to handle binaries in a similar manner to package management utilities such as yum and apt on Linux.
  21. Though the installation, upgrade and removal of packages is correctly supported, there is still room for improvement.
  22.  
  23. Benefits to the Community:
  24.  
  25. pkgin inherited the emphasis on portability from NetBSD and pkgsrc.
  26. Besides the visibility gained by the promotion of the project within the GSoC setting, other systems and entities can make the most of pkgsrc/pkgin (currently used by Joyent [1], is in the base system of DragonflyBSD and Minix), allowing the project to go towards an ideal of a universal package manager (pkgin) bundled with a universal package management framework (pkgsrc).
  27.  
  28. Tasks/Deliverables:
  29.  
  30. According to the maintainer[2], those goals are organized in such a way the mentee can immerse himself progressively within the project/code.
  31.  
  32. 1) Multiple repositories support
  33. 2) Speeding up the calculation of the number of installed packages in the database
  34. 3) Speeding up the matching of local packages agaisnt remote packages
  35. 4) Implement an automated-test system
  36. 5) Better conflict handling
  37. 6) Better logging
  38. 7) Make pkgin independent from pkg_install binaries
  39.  
  40. Optional Tasks
  41.  
  42. I) Factor all pkgin's package manipulation functions into its own library - libpkgin
  43. II) Make pkgin able to interface with any database system
  44.  
  45. Schedule/Milestones/Implementation Details:
  46.  
  47. Disclaimer : The estimates given about the learning and coding time should not be taken at face value. At the moment, I cannot offer an implementation solution for all the tasks enumerated in the project wiki page. However, I can assure that by the time the SoC begins, solutions shall be found for all tasks.
  48.  
  49. - I'm currently preparing for my terms in 2 weeks. I should begin properly studying pkgsrc and pkgin around the 20th of May.
  50.  
  51.  
  52. (May 20th - June 16th)
  53. - Prior to the coding tasks, in order to fully contribute to pkgin and understand it well, I'll have to understand how pkgsrc works: to test it and use it on 2 environments : a NetBSD virtual machine and a native Linux environment.
  54. An understanding of the pkg_summary[3] file format will also be required, as pkgin's binaries and dependencies management facilities are based on it.
  55. Only then, I should begin reading pkgin's source code and understanding its workings.
  56. Time will be allocated to find implementation solutions to the tasks.
  57.  
  58. (June 17th - July 1st)
  59. 1) Support for multiple repositories : make pkgin memorise repositories URLs, then synchronize the different database entries in accordance with the repository. Ensure there aren't any conflicts
  60.  
  61. (July 2nd - July 9th)
  62. 2) Speeding up the calculation of the number of installed packages in the database : pure algorithmic matter. No solution found yet.
  63.  
  64. (July 10th - July 17th)
  65. 3) Speeding up the matching of local packages agaisnt remote packages : pure algorithmic matter. No solution found yet.
  66.  
  67. (July 18th - July 25th)
  68. 4) Implement an automated-test system : it is just plain unit test writing. If there is a lack of time, a focus shall be put on testing critical operations (install/remove/upgrade)
  69.  
  70. 5) Better conflict handling
  71.  
  72. for example, let's take a line from the MySQL makefile[4] :
  73.  
  74. CONFLICTS= {mysql-server-[0-9]*,mysql3-server-[0-9]*}
  75.  
  76. The globbing of the version number make the currently installed package conflict with itself. The fault lies with the regex. I don't think I can offer a solution for that task.
  77.  
  78. (July 26th - July 31st)
  79. 6) Better logging : plain formatting.
  80.  
  81. (August 1st - August 15th)
  82. 7) Make pkgin independent from pkg_install binaries : pkgin currently uses pkg_add/delete to manage binaries. However, pkg_add/delete doesn't handle dependecies well (that's why pkgin is here for).
  83. It would probably be better to use directly a pkg_install library instead of directly using pkg_install/delete, or abstract their functionality.
  84.  
  85. At that stage, there should be some time left to do the optional tasks:
  86.  
  87. I) should be trivial, it's about gathering the package manipulation functions into a header. About II)......I don't know.
  88.  
  89. The rest of the time should be spent hunting bugs, reviewing and testing code and writing documentation.
  90.  
  91. About me:
  92.  
  93. I am a sophomore college student, currently studying Computer Science at the Pierre and Marie Curie university in Paris, France.
  94. I manifest a great interest in computer security, programming and open source software, though I mostly use them rather than participate to their development.
  95. I began programming 2 years ago, but it wasn't very intensive. I mostly wrote small programs (less than 100 lines of code), showed some distant interest in Project Euler and the ACM ICPC contests.
  96. I have some experience with the C programming language, though I don't use it for a long time enough to consider myself 'fluent' with it. I can also use git and shell scripting.
  97.  
  98.  
  99. [1] http://joyent.com/
  100. [2] Emile 'iMil' Heitor imil@NetBSD.org
  101. [3] http://netbsd.gw.com/cgi-bin/man-cgi?pkg_summary+5+NetBSD-current
  102. [4] http://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc/databases/mysql55-server/Makefile
  103.  
  104. Additional info :
  105.  
  106. [] http://wiki.netbsd.org/projects/project/pkgin_improve/
  107. [] http://pkgin.net/
  108. [] https://github.com/NetBSDfr/pkgin
  109. [] http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/pkgtools/pkgin/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement