FreBSD Ports workshops

Documentation

Outlines of suggested workflows

General instructions on how you can start hacking on the FreeBSD Ports.

Creating a new port

  1. Prepare your environment.
    1. Create a new directory for your new port somewhere. For example in your home directory.
      mkdir ~/newport
    2. Go to the newport directory and create a Makefile there.

      cd ~/newport
      touch Makefile
  2. See FreeBSD Porter's Handbook: Chapter 3. Quick Porting and try to work on your Makefile as much as you can.

  3. Let's try to build and install the new port. Normally, it is done by running make install inside the port's directory. For development purposes it might be easier to run every command involved in the process manually.

    1. Run
      make fetch
      Troubleshooting:
      • You might need to become a root to do this. By default, the archives with source code are downloaded to /usr/ports/distfiles/, which can only be modified by root. Solution: sudo make fetch.

      • If you've not created a distinfo file it might be a good moment to do it. Otherwise, make fetch will likely fail. See FreeBSD Porter's Handbook: 3.3. Creating the Checksum File.

    2. Run
      make extract
    3. Run
      make build
    4. Run
      make install
      • You might need to become a root to do this. Solution: sudo make install.

  4. At this point you've managed to build and install that new port on the system. It is time to clean up the files you've created and do some testing.
    1. Run
      portlint
      Fix everything this tool complains about.
      • Install portlint first with pkg install portlint.

    2. Run
      port test
      Fix everything this tool complains about.
      • Install port first with pkg install porttools.

Updating a port

/!\ TODO

Simple tasks and issues for first timers

Ideas for (potentially) fun ports contributions

New ports

Abricotine

Open-source markdown editor built for desktop.

Antares

Tactical space combat game.

Beaker

Peer-to-peer Web browser.

Communi

IRC client for desktop environments.

eplot

Ruby script which allows to pipe data easily through gnuplot and create plots quickly, which can be saved in PostScript, PDF, PNG or EMF files.

escrotum

Screen capture using pygtk, inspired by scrot.

hyperfine

Command-line benchmarking tool.

modernish

Cross-platform POSIX shell feature detection and language extension library.

PowerShell

Task-based command-line shell and scripting language built on the .NET Framework to help IT professionals control and automate the administration of MS-Windows and (now) other platforms.

progress(1) from NetBSD (archive.org alternative)

Feed input to a command, displaying a progress bar.

PyTorch

Tensors and dynamic neural networks in Python with strong GPU acceleration.

:( The /201802 workshop participants started to work on this port but it turned out to be a little bit too big to fit in one workshop.

Although CUDA is not supported on FreeBSD it might be nice to have at least some of the PyTorch functionalities available on FreeBSD.

quark

Extremely small and simple HTTP GET-only web server. It only serves static pages on a single host.

;) The participants of the /201802 workshop have managed to successfully port this software. See the port submission on FreeBSD Bugzilla.

rentry

Markdown pastebin from command line.

saait

Static site generator in C.

shellen

Interactive shellcoding environment to easily craft shellcodes.

shellharden

Corrective Bash syntax highlighter.

slstatus

Suckless status monitor for window managers that use WM_NAME (e.g. dwm) or stdin to fill the status bar.

st

Simple terminal from https://suckless.org.

There already exists a port of st (x11/sterm) but its version is 0.7, which is the latest release. It'd be nice to have a port of the bleeding-edge version of st.

When x11/sterm-devel is ready then the next goal might adding some of the community patches as port options. For example: scrollback, right click to plumb.

tootstream

Command line interface for interacting with Mastodon instances.

whohas

Command line tool that allows querying several package lists at once written in Perl.

vim-anywhere

Integrate Vim editing capabilities into any text buffer

Will It Scale

Benchmark utility which takes a testcase and runs it from 1 through to n parallel copies to see if the testcase.

There is a NetBSD port, which might be helpful. Ping MateuszPiotrowski for details.

MateuszGuzik is using it for benchmarking. He might have some patches laying aroud.

with

Command prefixing for continuous workflow using a single tool.

;) The participants of the /201802 workshop have managed to successfully port this software. See the port submission on FreeBSD Bugzilla.

New features and modifications

Ding

Dictionary lookup program.

Add a toki pona dictionary to the existing german/ding port.

The license set in the german/ding Makefile is not 100% correct. Fix it.

dwm

It might be fun to make port options from some of the patches: noborder, fakefullscreen.

intel-backlight

The task is to get interesting commits from the jcs's fork of intel-backlight, send a PR with to upstream and then submit an update to the intel-backlight port itself.

JonoF's Shadow Warrior

Jonathon Fowler's port of the 3D Realms game "Shadow Warrior".

<:( As of the /201802 workshop, the game does not start. It is probably related to the fact that you need to obtain a couple of extra files to run this game (namely, sw.grp and sw.rts)


CategoryCommunity CategoryHowTo CategoryPorts

MateuszPiotrowski/Ports/Workshops (last edited 2020-10-31T01:43:56+0000 by SashaVigole)