Binary packages
perl5 relies on external packagers to update and maintain packages for various distributions. It only provides source packages as tarballs.
cperl does a bit better by also providing binary packages for all major platforms. See also Installation at the STATUS page. win32, win64, debian 7 i686, debian 8 amd64, centos 7 x86_64, centos 6 i686+x86_64 and darwin amd64.
Packaging was done with this do-make-cperl-release script, leading to
Centos/Fedora/RHEL as el6 or el7 /etc/yum.repos.d/perl11.repo
:
[perl11]
name=perl11
baseurl=https://perl11.github.io/rpm/el7/$basearch
enabled=1
gpgkey=https://perl11.github.io/rpm/RPM-GPG-KEY-rurban
gpgcheck=1
or for Debian/Ubuntu /etc/apt/sources.list.d/perl11.list
:
deb https://perl11.github.io/deb/ sid main
So far the packaging was done on private build VM’s, and the hosting was done on github. Yes, you can easily host deb and rpm distros for free at github pages. But the idea is also to use external package providers, like OpenSUSE OBS or Bintray, which do packaging and hosting for many more platforms.
Autodeploy
With cperl-5.26.0c the packaging for at least win32 and the new win64 platforms with MSVC12 and darwin is done automatically via tagging a release and pushing it to github. For MSVC12 you’ll need the msvcr120.dll runtime, available e.g. from the Microsoft VS 2013 C++ Redistributable Package from https://www.microsoft.com/en-us/download/details.aspx?id=40784
Since today appveyor provides the windows deployments, and travis the linux src tarballs and darwin deployments.
Additionally appveyor provides also nightly builds on every master change. This is for now only in private draft releases, but I’ll think about enabling it as pre-releases.
Travis does not support nightly builds as easy as Appveyor. With Appveyor you can tag your deployments as
draft: true
prerelease: true
force_update: true
but with Travis you can only deploy tags. So for a nightly you would need to add a tag for every master change, there’s no deploy condition:
on:
appveyor_repo_tag: true
vs.
on:
branch: /(master|relprep)/
The missing prerelease
or draft
tag on Travis also means that
every deployment on tags is a proper release, and you have to manually
change that to a Pre-Release on the github release page. You cannot
change that to an invisible Draft release.
The Appveyor force_update: true
deploy tag means that you can start
a deployment from win32/msvc12 and add files from e.g. win64 later to
that github release. Travis always allows that. E.g. the src tarballs
are added first and darwin pkgbuild files are added later.
One could also think of extending that to CPAN uploads, by encrypting the PAUSE key and let Travis-CI trigger the cpan upload on every new release tag.