Skip to main content

Started from an idea on twitter and used to reduce the dependencies of a port, here a python script to produce dependencies’ graph of a(ll) FreeBSD ports.

# Install ## Using pip

pip install portgraph

## Using FreeBSD pkg

pkg install py36-portgraph

## Using FreeBSD ports

make -C /usr/ports/ports-mgmt/py-portgraph

# Usage portgraph produces a graph representing the dependencies needed for a given port or all ports.

Options are: ` -h or --help: Show this help -l my_dir or --localbase my_dir: Sets my_dir as the directory where ports are located (/usr/ports by default) -p my_port or --port my_port: Sets my_port as the port to produce the graph (ports-mgmt/py-portgraph by default). -b or --build: build-depends-list (if -b or -r is not present, -b is actived by default). -r or --run: run-depends-list (if -b or -r is not present, -b is actived by default). -f my_flavor or --flavor my_flavor: Sets the flavor for the port. -c or --recursion: Sets the maximum recursion. -u or --url: Adds a link to freshports. -w or --with-pkg: Since pkg is always required, this is disabled by default. You can enable it with this option. -a or --all: Build a graph for each port -v or --verbose: Print the port being traversed `

The result is a svg and a graphviz file.

# Examples

## Without arguments:

portgraph

[<img src=”https://glcdn.githack.com/lbartoletti/portgraph/raw/master/img/py-portgraph.png” alt=”without arguments”/>](https://glcdn.githack.com/lbartoletti/portgraph/raw/master/img/py-portgraph.svg)

## Using a specific local ports, like poudriere:

portgraph -l /usr/local/poudriere/ports/default

## Most important arguments, the port:

portgraph -p ports-mgmt/portscout

[<img src=”https://glcdn.githack.com/lbartoletti/portgraph/raw/master/img/portscout.png” alt=”portscout”/>](https://glcdn.githack.com/lbartoletti/portgraph/raw/master/img/portscout.svg)

## Sets the flavor for the port:

portgraph -p databases/py-psycopg2 -f py36

[<img src=”https://glcdn.githack.com/lbartoletti/portgraph/raw/master/img/py-psycopg2@py36.png” alt=”py36-psycopg2”/>](https://glcdn.githack.com/lbartoletti/portgraph/raw/master/img/py-psycopg2@py36.svg)

portgraph -p databases/py-psycopg2 -f py27

[<img src=”https://glcdn.githack.com/lbartoletti/portgraph/raw/master/img/py-psycopg2@py27.png” alt=”py27-psycopg2”/>](https://glcdn.githack.com/lbartoletti/portgraph/raw/master/img/py-psycopg2@py27.svg)

## You can define the depth of the dependencies to display

portgraph -p databases/pgmodeler -c 1

[<img src=”https://glcdn.githack.com/lbartoletti/portgraph/raw/master/img/pgmodeler_rec_1.png” alt=”pgmodeler with max recursion defined” width=”20%” height=”20%”/>](https://glcdn.githack.com/lbartoletti/portgraph/raw/master/img/pgmodeler_rec_1.svg)

## You want a link to freshports? Add the -u/–url option.

portgraph -p databases/sfcgal -u -c 2

[<img src=”https://glcdn.githack.com/lbartoletti/portgraph/raw/master/img/sfcgal.png” alt=”sfcgal with freshports url” width=”20%” height=”20%”/>](https://glcdn.githack.com/lbartoletti/portgraph/raw/master/img/sfcgal.svg)

## ports-mgmt/pkg is the god of all. Do you want to put it?

portgraph -p ports-mgmt/portscout -w

[<img src=”https://glcdn.githack.com/lbartoletti/portgraph/raw/master/img/portscout_pkg.png” alt=”portscout with pkg”/>](https://glcdn.githack.com/lbartoletti/portgraph/raw/master/img/portscout_pkg.svg)

## Run and build depends list

build-depends-list are blue and run-depends-list are red.

portgraph -p lang/python36 -rb -c 2 -u

[<img src=”https://glcdn.githack.com/lbartoletti/portgraph/raw/master/img/python36.png” alt=”python36 with run-depends-list, build-depends-list, url and max recursion defined “/>](https://glcdn.githack.com/lbartoletti/portgraph/raw/master/img/python36.svg)

## Build all ports (accept all arguments except -p/–ports)

For freshports with only one dependency.

portgraph -a -c 1 -u

It can take a long time (880s on my desktop computer and produces 245M of files).

> Note: examples were made on 2018-02-15. The results may differ depending on port updates.

Metadata

Release files for portgraph 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for portgraph 0.1.0
File Size Uploaded
portgraph-0.1.0.tar.gz 1.0 MB Details

Release files / portgraph-0.1.0.tar.gz

Download URL portgraph-0.1.0.tar.gz
Size 1.0 MB
Tags Source
SHA-256 checksum
How to use checksums
52052e5e4f08b41d1e633ecb34cc90a0f280c118c931342d92f94d36d9a22a81
BLAKE2b-256 checksum
How to use checksums
b260f2d1e7a7c73fd83aa69c45a325e99efbf388fc81051447060739fd381fbb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.18

Release history Release notifications | RSS feed

This release

0.1.0 This release

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page