Skip to content

Latest commit

 

History

History
142 lines (87 loc) · 4.3 KB

mac-dmg.pod

File metadata and controls

142 lines (87 loc) · 4.3 KB

Guide to building DMG packages

Rakudo Star releases are based on Rakudo compiler releases. Since some time is often needed for module updates and testing after each Rakudo compiler release, the timing of Star releases varies from one release to the next. The dmg packages are based on these Star releases.

Also, while the Rakudo compiler issues monthly releases; Star releases are free to choose a longer release cycle. Star releases are also free to choose older releases of the compiler, NQP, and/or MoarVM. The goal is to balance end-user stability needs with progress being made on the compiler, modules, and other runtime components.

Steps to create an DMG package

A .dmg is a file extension used for an Apple Disk Image which is the most popular way of running an installer on the Mac desktop

If this is your first time releasing, read the whole guide before starting. That way you can ask questions and clear up any confusions before you're in the thick of it.

If you have done this before, you might want to check for and read any changes to this release guide since your last run.

Step 0

Download and install Xcode from Apple if you don't already have the clang C compiler installed. This process was tested on OS X 10.11.x as a build system using clang-700.1.76 and the result is known to run on as least far back as OS X 10.9 (and probably further).

Step 1

Use your browser to download the latest star release, replace YYYY.MM by year and month: https://rakudo.perl6.org/downloads/star/rakudo-star-YYYY.MM.tar.gz

Unpack this .tar.gz to your hard disk. You will get a folder rakudo-star-YYYY.MM, again YYYY.MM is year and month of the star release.

Step 2

Change the path to the directory created in the previous step, and run:

cd ports/darwin_dmg
perl package_darwin_dmg.pl --build -v YYYY MM

This should automatically compile the MoarVM version of star and all modules and create the .dmg

In theory this all that needs doing and you can jump to step 4 below.

Step 3

Watch the scrollback for errors.

If the build is interrupted you will have to manually make clean in the top level directory before rerunning the previous step.

Note the --build option will automatically delete the binary destination directory of /Applications/Rakudo if it exists before running but leaves it in place after finishing.

Omitting the --build option will just rebuild the .dmg from /Applications/Rakudo which is useful when debugging the final stage of .dmg build since it's much faster.

Step 4

A correct build will create ports/darwin_dmg/Temp_build/Rakudo-Star-YYYY-MM.dmg

To sanity test

open Temp_build/Rakudo-Star-YYYY-MM.dmg

This should automount /Volumes/Rakudo and open a Finder window with a background image of Camelia and "Drag the Rakudo Folder to Applications" containing a README.txt, a Rakudo folder, Docs folder and a folder representing a sym link to Applications.

Delete the directory used to create the .dmg.

rm -rf /Applications/Rakudo

Now dragging the Rakudo folder to the Applications Link folder (with arrow) should repopulate /Applications/Rakudo.

Append your PATH as suggested in the README.txt and look for reasonable output from the following kind of commands.

perl6 -e "say 'hello'"
zef list --installed
p6doc -l
Step 5

Stop the release process if you see serious issues with no obvious fix and post them to the IRC channel or mailing list. If you alter scripts recommit them.

Step 6

Generate a SHA256 sum:

sha256sum rakudo-star-YYYY.MM.dmg | cut -f1 -d" " > rakudo-star-YYYY.MM.dmg.sha256.txt
Step 7

Generate a GPG signature for the DMG file:

gpg --armor --detach-sig rakudo-star-YYYY.MM.dmg

This will create rakudo-star-YYYY.MM.dmg.asc.

Step 8

Upload the dmg and SHA256 to https://rakudo.perl6.org/downloads/star:

rsync -avz rakudo-star-YYYY.MM.dmg* rakudo@www.p6c.org:public_html/downloads/star

If you don't have permission to do this step, please ask one(pmichaud, jnthn, masak, PerlJam/perlpilot, tadzik, moritz) on #perl6 to do it for you.

Step 9

Publicize the dmg packages in the appropriate places. These include:

  • rakudo.org

  • #perl6

Step 10

You're done! Celebrate with the appropriate amount of fun.