You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Nicolas Hafner f9122a6f2c
11 months ago
src Some attempts at working around failed macos runs. 11 months ago More codesign stuff. 11 months ago Bump versions 2 years ago Bump versions 2 years ago Add warning for clean op. 11 months ago Properly skip busybox 4 years ago Fix compute-dependencies to not be as stupid 2 years ago Tear out config files to separate repository. Fixes #35 4 years ago Dictionary "build" file 4 years ago Update more to make it build on Windows again. 1 year ago Use a site-start.el file for portacle-specific Emacs setup 2 years ago Update more to make it build on Windows again. 1 year ago Fix font download 2 years ago Attempt to fix up lib dependency problems on OS X. 3 years ago Libnss fixes 1 year ago Minor 11 months ago Version bumps 3 years ago Sbcl 2.1.0 11 months ago


Install the build prerequisites:

  1. SBCL, GIT, time, xsel, texinfo, curl
  2. Your distribution's basis build stuff (base-devel, build-essential, etc).
  3. Development files for ncurses x11 xpm gtk2 zlib pcre pcre2 curl4 ssl gcrypt glfw3 liblzma.

For Debian based systems, simply run: apt-get install sbcl git gpg time curl build-essential autoconf automake autogen autopoint libncurses-dev libx11-dev libxpm-dev libgtk2.0-dev zlib1g-dev libpcre2-dev libcurl4-gnutls-dev libssl-dev libgcrypt-dev libglfw3-dev libtool liblzma-dev texinfo xsel

Proceed with the General Procedure section.


Install the build prerequisites:

  1. SBCL, download and install
  2. MSYS2, download and install
  3. 7Zip, download and install
  4. 7ZipSFX, download and extract into C:\Program Files\7-zip
  5. Open the MSYS shell and run pacman -Sy pacman
  6. Reopen the shell and run pacman -Syu
  7. Reopen the shell and run pacman -Su
  8. Install these packages: pacman -S unzip git gpg curl base-devel mingw-w64-x86_64-toolchain mingw-w64-x86_64-xpm-nox mingw-w64-x86_64-pcre2 mingw-w64-x86_64-curl mingw-w64-x86_64-gnutls mingw-w64-x86_64-iconv mingw-w64-x86_64-libgcrypt mingw-w64-x86_64-glfw
  9. Launch the MinGW64 shell (not the MSYS shell!)

Proceed with the General Procedure section.

Mac OS X

Install the build prerequisites:

  1. XCode and the XCode command line developer tools
  2. MacPorts, Homebrew, or Fink
  3. From one of those package managers, install autoconf automake sbcl git gpg gettext pcre openssl libtool gnu-sed glfw libgcrypt pkg-config xz automake gnutls pcre2, making sure they are in your PATH.
  4. With brew, you need to link gettext: brew link gettext --force

Proceed with the General Procedure section.

Note that the in the source folder cannot be launched outside of it, so do not copy it outside the source tree.

General Procedure

Using the appropriate terminal, simply run:

git clone
cd portacle/build

This will generate a ready-to-deploy package. In case you are only doing this for your own local needs and don't want it packaged up, you can instead run:

./ upgrade

You can use this again every time you'd like to upgrade the binary components of Portacle to a new version. Should you ever desire a packaged deal, this will do it for you:

./ package

If you need a completely fresh start that will delete everything that is not in a clean clone, run the clean target or refresh if you want to build a complete package.

Each component being built has its own build script that you can run individually as well. They all accept the name of a stage to run, usually one of: clean, download, prepare, build, or install, defaulting to running all of them in that sequence. The components are:

  • asdf -- The de-facto standard Common Lisp build system. Bundled because SBCL's internal one is not always new enough.
  • busybox -- A self-contained distribution of coreutils used on Linux as an independent base.
  • dictionaries -- Dictionary files for use by the spellchecker.
  • emacs -- Emacs is a long-standing, massively extensible editor ideal for editing Lisp code.
  • emacsd -- Since Emacs is extensible, we need some sensible configuration for it.
  • git -- Developing anything without version control is madness. Besides it's an easy way to access other people's projects and update Portacle itself.
  • global -- Files required in general, or minor parts that don't fit anywhere else in specific.
  • hunspell -- A cross-platform spell checker utility.
  • launcher -- The Portacle launcher binary, responsible for preparing the runtime environment and launching other applications.
  • quicklisp -- The de-facto standard Common Lisp package manager. Bundled because getting by without it would be much less than simple.
  • sbcl -- The best and most simple to build open source Common Lisp implementation.

The other scripts, build, common, and package are integral parts of the build system. The first is responsible for allowing a more convenient interface to building. The second contains all sorts of general functions and parts required by the various scripts. The third handles the packaging process and knows how to bundle things together for the various formats required for deployment.