It is an intended use case of the Coq Platform to create custom variants and installers, e.g. for projects or lectures, by creating additional files in the package_picks folder.
The scripts for creating binary packages and installers should be able to handle such variants, so that it should be easy to create a custom installer e.g. for a lecture.
- Create a new file in the package_picks folder by copying one of the existing files as template.
- Please always change the opam switch name, that is the variable
COQ_PLATFORM_PACKAGE_PICK_POSTFIX
- Make sure that the value assigned to
COQ_PLATFORM_PACKAGE_PICK_POSTFIX
matches the postfix of the package pick file name. - Give appropriate values to other variables in the header section of the package pick file, especially
COQ_PLATFORM_VERSION_TITLE
andCOQ_PLATFORM_VERSION_DESCRIPTION
. - Add or remove packages or change package versions according to your requirements.
- You should include specific versions for all packages to get a reproducible result. The opam database changes daily and unless you specify a version for each package you get different results and possibly the build will fail. Opam CI does not test all possible combinations of package versions.
- In case you want to include pre release packages, which don't have a published opam package as yet, you can add opam packages in the folders under opam. opam packages in thes folder take precedence over packages from the published repositories.
- You can set the variable
COQ_PLATFORM_USE_DEV_REPOSITORY
in the header of the package pick file toY
in case you want to include the public and localextra-dev
opam repositories in the opam package search.
As soon as you have created a package pick file, you can create an opam switch from it by running coq_platform_make.sh/.bat
and selecting the new pick.
You can also give the pick on the command line e.g. by running:
./coq_platform_make.sh -packages="my_new_pick" -extent=x -parallel=p -jobs=6 -compcert=y -large=i -switch=k
On Windows you can either create a new cygwin with:
CALL coq_platform_make_windows.bat ^
-arch=64 ^
-destcyg=C:\bin\cygwin64_coq_platform_my_new_pick ^
-cygcache=C:\bin\cygwin_cache ^
-cygrepo=https://mirrors.kernel.org/sourceware/cygwin ^
-packages="my_new_pick" -extent=x -parallel=p -jobs=6 -compcert=y -large=i -switch=k
or you can reuse an existing Coq Platform created cygwin and run the same shell script as above. The Coq Platform cygwin hardly ever changes, so there is no point in creating a new cygwin for each package pick. In case your pick requires additional cygwin supplied MinGW libraries, this is handled automatically by opam depext - if not it is better to fix the opam package than adding teh package to the cygwin install command line.
Since package picks should specify all versions, it is quite common that opam says: Sorry, no solution found: there seems to be a problem with your request.
simply because you requested conflicting versions.
There is a script maintainer_scripts/build_seq.sh
which builds a pick package by package and disables the opam "auto-yes". This way, when you have a conflict, opam will stop and ask you if it should change the package versions. At this point you can exactly see which package (the which shall be installed) requires which versions (the requested recompiles).
If you have issues, please contact us on zulip chat Coq-Platform & users
After you created and built a new package pick, you can create a macOS DMG installer from it as follows:
- Activate the opam switch with
opam switch CP.2023.11.0~my_new_pick
- Navigate to your Coq Platform git folder, e.g.
cd ~/platform
- Run
macos/create_installer_macos.sh -sign=Y -signcert=path_to_certificate_file -signid=signature_id
- Above the
path_to_certificate_file
is the path and name of the.cer
and.p12
file without the file extension. The signature ID is typically the name of the institution to which the certificate is issued.
On recent macOS one can't start the application - that is CoqIDE - without signing the installer. One can still use the installed tools from the command line, though. One can even start coqide from the command line even without signing.
After you created a new package pick, you can create a Snap package from it as follows:
- First note that for snap it is not required to build the switch first - the snap building process will build it inside of the snapcraft VM.
- Navigate to your Coq Platform git folder, e.g.
cd ~/platform
- Run
linux/create_snapcraft_yaml.sh -packages=my_new_pick -extent=x -parallel=p -jobs=6 -large=i -compcert=y -set-switch=y -switch=k
- Run
SNAPCRAFT_BUILD_ENVIRONMENT_CPU=12 SNAPCRAFT_BUILD_ENVIRONMENT_MEMORY=24G snapcraft snap
- the CPU (thread) count and memory depends on your machine - you should have 2GB per CPU and you should have twice as many CPU threads as the job count you specified initially. - Building the snap will take a while.
- You can install the snap with
snap install --dangerous coq-prover_2022-09-0_amd64.snap
. - The snap file name will not depend on your package pick name.
- You can distribute the
.snap
file and people can install it with the above command.
After you created and built a new package pick, you can create a Windows installer from it as follows:
- Open the Coq Platform cygwin shell, e.g.
C:\bin\cygwin64_coq_platform\cygwin.bat
. - Activate the opam switch with
opam switch CP.2023.11.0~my_new_pick
- Navigate to the
coq-platform
folder. - Run
windows/create_installer_windows.sh
On Windows it depends on the exact version and variant if you need to sign the installer or not.