PackageMaker is a GAP package that makes it easy and convenient to create new GAP packages.
It provides an interactive wizard that creates a usable package skeleton and, depending on your choices, can also set up a git repository, GitHub workflows, code coverage configuration, and a simple kernel extension build system.
You can use it as follows:
-
Download PackageMaker and extract it into a GAP
pkgdirectory. Or just clone its git repository inside thepkgdirectory:git clone https://github.com/gap-packages/PackageMakerAlternatively you could install PackageMaker using the PackageManager GAP package by entering these commands in GAP:
LoadPackage("PackageManager"); InstallPackage("https://github.com/gap-packages/PackageMaker"); -
Start GAP, load the PackageMaker package:
LoadPackage("PackageMaker"); -
Run the package wizard:
PackageWizard(); -
Answer the questions about your new package. Afterwards, PackageMaker creates a new directory for the new package and populates it with the files needed for a basic package skeleton.
If you also ask PackageMaker to create a git repository, make sure git has
user.nameanduser.emailconfigured. If they are missing, PackageMaker will show the commands to run, let you retry, or keep the generated package directory without creating a git repository. -
Edit the generated files, especially
README.mdandPackageInfo.g, then move the newly created package directory to a suitable place.
Note:
PackageWizard()creates the new package in the current directory. The recommended long-term location is usually~/.gap/pkg(which you may have to create first). For quick testing on GAP 4.15 or newer,gap --packagedirs .can also be useful. See the manual section “Where should the generated package go?” for the details and the older-GAP alternatives.
The package manual contains a fuller walkthrough of the wizard, including a worked transcript, an explanation of the important wizard choices, a tour of the generated files, and a checklist of what to edit next.
Two practical points are easy to miss:
PackageWizard()creates the new package in the current directory.- The generated package is only a starting point: it still contains TODO text and placeholder values that you should replace before publishing or releasing the package.
If you want more background on the purpose of the generated files and on
the meaning of the entries in PackageInfo.g, these references are also
useful:
- the GAP manual chapter on "Using and Developing GAP Packages".
- the manual of the
Example - the comments in the
PackageInfo.gfile of theExamplepackage.
Please submit bug reports, suggestions for improvements and patches via the issue tracker.
You can also contact me directly via email.
PackageMaker is free software you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the Free
Software Foundation; either version 2 of the License, or (at your option) any
later version. For details, see the file COPYING distributed as part of
this package or see the FSF's own site.
As a special exception to the terms of the GNU General Public License, you are granted permission to distribute a package you generated using PackageMaker under any open source license recognized as such by the Open Source Initiative (OSI).