This is a set of PKGBUILD-based recipes for downloading and packaging free Windows software. It integrates with MSYS2 and its package manager pacman (ported from Arch Linux).
I'm not a lawyer and I'm definitely not familiar with the laws of every country, so the claims I make here about licenses and copyright may be not applicable to you or just plain wrong. Don't hold me responsible for any damage or lawsuits based on using this repository.
The recipes are free to use and modify by anyone, but I'd be glad if all improvements make it to my repository. If you need a specific license, create a ticket or contact me.
The applications are under various licenses, including both OSI-certified licenses and EULAs. Hopefully, no license can prevent making these recipes.
There will never be a public repository with built packages because many licenses forbid re-distributing binaries. You can make a private binary repository for yourself though.
- Install MSYS2 and upgrade your installation. Pacman version 5.0 or newer is required.
- Clone the
app-packages
repository (or download a snapshot). - Run MSYS2 shell. It's better if you clean your
PATH
so it contains only msys (but not mingw) and Windows system directories. You can do it this way: - Open a command prompt.
- Run
set MSYS2_PATH_TYPE=minimal
. - Run
C:\msys64\msys2_shell.cmd
(change this path if you installed MSYS2 elsewhere). - Enter the directory of the package you want to create.
- Run
makepkg
.
- If it complains about missing dependencies, install them with
pacman
.
- Enjoy. You can install the package by running
pacman -U <pkgfile>.pkg.tar.*
.
- Follow MSYS2 and Arch Linux guidelines except where stated otherwise.
- Follow the style set in existing recipes.
- Use 64-bit builds where available.
- Prefer HTTPS URLs.
- De-duplication takes place only on the level of whole applications, e.g. every package includes its own OpenSSL library, if it needs one, but a TeX editor and a TeX distribution should be separate packages.
- Include all available localizations.
- User configuration goes into per-user directories.
- Files and directories in the first level of the package should be lower-case. Main executables should be spaceless.
- Do not include auto-updaters and uninstallers.
- Do not include copies of Microsoft re-distributable libraries, e.g.
msvc*.dll
,mfc*.dll
,atl*.dll
.msvb*.dll
. - If the URL in
$source
doesn't use$pkgver
, create apkgver()
function. If the URL in$source
is dependent on version, but unpredictable, use a$_realver
. prepare()
is for extracting and various file manipulations; anything complex like silent installs go intobuild()
.- If you're extracting a downloaded file in
prepare()
, put it into$noextract
. - Declare runtime dependencies inside
package()
. This way makepkg doesn't consider them as build dependencies. - Extract everything into subdirectories. Suppress verbose output, but not errors.
- Know that the working directory is set to
$srcdir
and don't change it much. - Know that you can use the results of
prepare()
inpkgver()
. - Use quotes, braces and locals.
- Indent code using 4 spaces.
- Use aliases in
$source
and don't leave version numbers in them. - Try to copy everything in
package()
and then move or delete what's necessary. This way, if there's a new file upstream, it won't get overlooked.
man PKGBUILD
in MSYS2 shell- Creating packages on MSYS2 wiki
- PKGBUILD on ArchWiki
- Creating packages on ArchWiki
- Arch packaging standards on ArchWiki