Changes between Version 20 and Version 21 of SummerOfCode
- Timestamp:
- Mar 13, 2007, 12:37:11 AM (18 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SummerOfCode
v20 v21 52 52 ==== Task 4: Binaries ==== 53 53 54 MacPorts project unfortunately does not 55 Working in concert (or cooperatively) with whomever does (virtual chroot), get package building working all the way to a point where complete package builds can be done for all of MacPorts and the results made available to users as pre-build package collections. 54 MacPorts project does not provide binaries yet (installation of software without compiling them). This project consists in working in concert (or cooperatively) with whomever does (virtual chroot) to setup a mechanism to automatically build packages, send reports on failures and implement a distribution mechanisms to allow users to fetch binary packages. This task could extend to support universal binaries, cross-testing (building on an intel box and testing on a powerpc box) and extending the livecheck mechanism to automatically send reports when ports are updated. 56 55 57 Classification: major task[[BR]] 56 Classification: relatively challenging to challenging task[[BR]] 57 Programming language: Tcl[[BR]] 58 58 Potential mentor: pguyot 59 59 … … 61 61 Come up with a front-end for installing packages (or building ports, where no package exists) for naive end-users. 62 62 63 Classification: major task 63 Classification: major task[[BR]] 64 Programming languages: Tcl and any other language for the GUI part (e.g. ObjC) 64 65 65 ==== Task 6: Pkgview (depot-to-depot dependencies) ====66 ==== Task 6: Images (Pkgview, depot-to-depot dependencies) ==== 66 67 67 Take what Will started with the notion of a depot location vs an installed location (e.g. /opt/local/var/db/dports/software/gawk/3.1.5_2/opt/local/bin/gawk vs /opt/local/bin/gawk) and finish the job, making depot-to-depot dependencies finally work. That is to say that if port foo depends on version 1.2.3 of port bar, it should be compiled and linked in such a way that it's wired to the depot location of bar, not the "activated" location. That will finally fix the fragility problem where deactivating port bar vers n-1 in order to install port bar vers n (because other things depend on n) won't also require breaking everything that relies on n-1.68 MacPorts implements what we call the Image mode where software are stored in a depot (e.g. /opt/local/var/db/dports/software/gawk/3.1.5_2/opt/local/bin/gawk). For the moment, this functions like an archive and files are hardlinked to their active location (/opt/local/bin/gawk). If port A depends on dynamic library B.dylib from port B, it actually links to /opt/local/lib/B.dylib. The idea of this task is to figure out a way for port A to be linked to the library in the depot and to work even if port B is not active. That is to say that if port foo depends on version 1.2.3 of port bar, it should be compiled and linked in such a way that it's wired to the depot location of bar, not the "activated" location. That will finally fix the fragility problem where deactivating port bar vers n-1 in order to install port bar vers n (because other things depend on n) won't also require breaking everything that relies on n-1. This mechanism also has additional advantages such as limiting the unavailability time to a minimum, especially when upgrading libraries every other package depends on (such as gettext). 68 69 69 Classification: major task[[BR]] 70 Classification: challenging to very challenging task[[BR]] 71 Programming language: Tcl[[BR]] 70 72 Potential mentor: pguyot 71 73