pkg.soopen package index

brew / rank 9243

Install tradcpp with Homebrew, MacPorts, Nix

K&R-style C preprocessor. Version 0.5.3 via Homebrew; verified from local package data. Also installable with nix: nix profile install nixpkgs#tradcpp.

install

Additional install commands

macOS

Homebrewverified · 100%
brew install tradcpp

local Homebrew formula metadata

MacPortsverified · 94%
sudo port install tradcpp

MacPorts ports tree · devel/tradcpp/Portfile · source: api.github.com

Linux

Nixverified · 92%
nix profile install nixpkgs#tradcpp

nixpkgs package indexes · pkgs/by-name/tr/tradcpp/package.nix · source: api.github.com

overview

Package summary

K&R-style C preprocessor

Commands and aliases

  • tradcpp

history

Project history and usage

tradcpp is a small traditional, K&R-style C preprocessor maintained from David Holland's NetBSD pages. Its history is tied less to compiling C and more to preserving old build techniques that used cpp as a general text preprocessor.

Project history

The official tradcpp page says the tool was written for historical uses of the C preprocessor on non-C input, because modern compiler-bundled preprocessors increasingly do not provide a traditional mode or preserve the behavior old build systems expect. The project deliberately keeps a narrow scope and does not try to become a full modern C89/C99/C11 preprocessor.

A distinctive implementation goal is whitespace preservation. The author calls out makefiles, old Emacs build logic, and imake as examples where rearranging whitespace can break legacy systems. tradcpp also includes a trace mode for diagnosing complex preprocessor use; the page says it was written to investigate an imake problem on Solaris.

Adoption history

The most explicit adoption history is in pkgsrc: the official page says pkgsrc, the NetBSD package system, has used tradcpp for these purposes since 2013. That makes tradcpp a package-system support tool rather than a broad end-user application.

How it is used

In package-manager culture, tradcpp is used when a build recipe needs a traditional cpp that preserves old preprocessing behavior for files such as makefiles. Users are explicitly steered away from using it for normal modern C code.

Why package nerds care

tradcpp matters to package nerds because it is infrastructure for keeping old source packages buildable. It represents the unglamorous compatibility layer a portability framework like pkgsrc sometimes needs when upstream build systems rely on historical Unix behavior.

Timeline

  • 2013: pkgsrc begins using tradcpp for legacy preprocessing use cases.
  • Current official release: tradcpp 0.5.3 is listed on the NetBSD-hosted project page.

Related projects

  • pkgsrc uses tradcpp for package builds with legacy preprocessing needs.
  • imake and old Emacs build systems are named by the author as examples of the historical cpp usage tradcpp was designed to support.

security posture

Risk level: green

narrow executable package without higher-risk signals.

Risk classifier

green risk · low confidence · appliance

Why

  • narrow executable package without higher-risk signals

Signals

  • metadata:no-higher-risk-signals

Install behavior

  • No Homebrew bottle metadata was recorded.

Recommended review

Before unattended agent use, check whether the tool reads plaintext credentials, writes remote state, publishes artifacts, or shells out to plugins.

executables

Installed executables

CommandKindExposureNote
tradcppexecutableindexed executableDiscovered from the local executable index.

freshness

Version and freshness

These signals separate page generation age, package-manager activity, and upstream release comparison. Version lag is warned only when an evidence URL and comparable versions are present.

page generated2026-08-03
manager version0.5.3
manager updated
local dataunknown
upstreamnot available
latest detectednot detected
  • okNo freshness warnings were generated.

install metadata

Package metadata

Package keybrew:tradcpp
Version0.5.3
Package managerHomebrew
Homepagehttps://www.netbsd.org/~dholland/tradcpp/
Bottlenot recorded
Servicenone declared

source database matches

Other package-manager records

Matches are pulled from external package-manager indexes and kept separate from local Automic Vault package links.

Nix95%

tradcpp

nix profile install nixpkgs#tradcpp
  • normalized package name match
  • Matched by: Tradcpp
nixpkgs package indexes · api.github.com · nixpkgs package indexes: pkgs/by-name/tr/tradcpp/package.nix from https://api.github.com/repos/NixOS/nixpkgs/git/trees/master?recursive=1
MacPorts95%

tradcpp

sudo port install tradcpp
  • normalized package name match
  • Matched by: Tradcpp
MacPorts ports tree · api.github.com · MacPorts ports tree: devel/tradcpp/Portfile from https://api.github.com/repos/macports/macports-ports/git/trees/master?recursive=1

source trail

Generated from repository data

This page is generated by av-web from the private package SQLite artifact built by scripts/generate-pkg-sqlite.py.

Used sources

  • Geiger risk classifier
  • cross-ecosystem install command graph
  • curated package history
  • external package-manager database matches
  • pkg.so package database
  • pkgdb category and tag curation