Opened 8 years ago
Last modified 16 months ago
#56055 accepted enhancement
Support creating MacPorts pkg/dmg by using 'pkg' and 'dmg' targets in the base builds system
| Reported by: | neverpanic (Clemens Lang) | Owned by: | ryandesign (Ryan Carsten Schmidt) |
|---|---|---|---|
| Priority: | Normal | Milestone: | MacPorts Future |
| Component: | base | Version: | |
| Keywords: | Cc: | ctreleaven (Craig Treleaven) | |
| Port: |
Description
Do not use MacPorts port to produce the pkg/dmg, use a make pkg target in the build system instead. This would allow us to automate release creation more, since we could build a base dmg/pkg on the buildbot (#51996).
Change History (11)
comment:1 Changed 8 years ago by ctreleaven (Craig Treleaven)
| Cc: | ctreleaven added |
|---|
comment:2 Changed 8 years ago by ryandesign (Ryan Carsten Schmidt)
| Cc: | ryandesign removed |
|---|---|
| Owner: | set to ryandesign |
| Status: | new → accepted |
comment:3 Changed 8 years ago by ryandesign (Ryan Carsten Schmidt)
| Milestone: | → MacPorts 2.5.0 |
|---|
comment:4 Changed 8 years ago by jmroot (Joshua Root)
comment:5 Changed 8 years ago by ryandesign (Ryan Carsten Schmidt)
The package creation facilities of MacPorts are generic, and not suited to the specifics needed to package MacPorts itself. The MacPorts port already overrides a lot of it. Putting the code to do that into MacPorts base Makefiles moves it where it belongs. This will allow us to further extend the packaging of MacPorts base in ways that aren't as easy when MacPorts itself is controlling the process. It also allows us to package MacPorts on a machine that does not have MacPorts installed.
The PR to move the configure phase functionality of the MacPorts port to the standard_configure.sh script is https://github.com/macports/macports-base/pull/86. The Makefile portion of the changes is still in development.
comment:6 Changed 8 years ago by jmroot (Joshua Root)
I disagree. It really seems like you're reinventing the wheel here.
comment:7 Changed 8 years ago by ryandesign (Ryan Carsten Schmidt)
I'm making a better wheel. I'll upload my new work-in-progress installer somewhere to show you.
comment:8 Changed 8 years ago by ryandesign (Ryan Carsten Schmidt)
| Milestone: | MacPorts 2.5.0 → MacPorts 2.6.0 |
|---|
comment:9 Changed 7 years ago by jmroot (Joshua Root)
| Milestone: | MacPorts 2.6.0 → MacPorts 2.7.0 |
|---|
Ticket retargeted after milestone closed
comment:10 Changed 5 years ago by jmroot (Joshua Root)
| Milestone: | MacPorts 2.7.0 → MacPorts Future |
|---|
Ticket retargeted after milestone closed
comment:11 Changed 16 months ago by ryandesign (Ryan Carsten Schmidt)
My work in progress on this is very old by now but here are some of the goals I was working towards:
- Use subpackages extensively.
- Move
selfupdateto a subpackage so that it can be disabled when installing MacPorts in CI (#57698). - Add subpackages to let the user choose their preferred mirror server (#49496).
- Add a subpackage to let the user opt in to installing the mpstats port.
- Gather the MacPorts pkgs produced on each OS version onto one machine, unpack them all, find their commonalities, and move those into a common pkg and their differences into OS-version-specific pkgs. Add all these pkgs into a single universal MacPorts pkg that auto-selects the right OS-version-specfic pkg. This way we can offer a single pkg that works on all OS versions (which is simpler for the user) while not needing to be very much larger than our old single-OS installers. In fact I had settled on two installers: one for 10.7 and later (new flat pkg format, for x86_64) and one for 10.6 and older (old bundle pkg format on a dmg, for ppc, i386, and x86_64).
- Move
- Write a custom installer pane to better show the progress of the post-install script.
- Have the installer run the post-install script in the background so the install step completes before the script does.
- Have the script write progress information to a logfile. This is probably the most complicated part, since there are many optional steps in the script and each part takes a different amount of time.
- In a subsequent custom installer pane, monitor the log file and use it to show our own progress bar.

How is implementing all this in base easier than running
port pkg MacPortsin a buildbot job?