> ## Content Index
> Fetch the complete content index at: https://ostreff.info/llms.txt
> Use this file to discover other available public pages before exploring further.

# How to Fix the Circular Dependency Between GLib and GObject-Introspection on FreeBSD
- URL: https://ostreff.info/how-to-fix-the-circular-dependency-between-glib-and-gobject-introspection-on-freebsd/
- Published: 2026-08-07T12:27:05.000Z
- Updated: 2026-08-07T12:27:05.000Z
- Description: Updating ports on FreeBSD, you might hit a frustrating wall with devel/glib20 and devel/gobject-introspection. You try to update glib, but it fails because it requires a newer gobject-introspection. However, updating gobject-introspection fails because it needs a newer glib.
- Author: Jordan Ostreff
- Tags: #FreeBSD, FreeBSD

Welcome to the classic chicken-and-egg (circular dependency) problem.

The Root Cause

- gobject-introspection requires a current version of glib to build.
- glib (in its default configuration) requires gobject-introspection to generate introspection data.

When both ports fall out of sync, neither can compile first.  
The Solution: Using the bootstrap Flavor  
Fortunately, the FreeBSD `devel/glib20` port includes a bootstrap flavor. This flavor builds a minimal version of GLib without depending on `gobject-introspection`, allowing you to break the loop cleanly.  
Here is the step-by-step procedure to resolve it:  
Step 1: Build GLib in Bootstrap Mode  
First, switch to the `glib20` directory and reinstall it using the `bootstrap` flavor. This installs the core GLib libraries without requiring `gobject-introspection`:

```bash
cd /usr/ports/devel/glib20
make FLAVOR=bootstrap clean reinstall clean
```

Step 2: Rebuild GObject-Introspection  
Now that your system has the updated core GLib binaries, you can successfully rebuild `gobject-introspection`:  

```bash
cd /usr/ports/devel/gobject-introspection
make clean reinstall clean
```

Step 3: Restore GLib to the Default Flavor  
Finally, rebuild `glib20` using its `default` flavor so you get the full package with complete introspection support:  

```bash
cd /usr/ports/devel/glib20
make FLAVOR=default clean reinstall clean
```

TL;DR / Quick Commands

```bash
# 1. Break the cycle with bootstrap GLib
cd /usr/ports/devel/glib20 && make FLAVOR=bootstrap clean reinstall clean
# 2. Upgrade gobject-introspection
cd /usr/ports/devel/gobject-introspection && make clean reinstall clean
# 3. Rebuild full GLib
cd /usr/ports/devel/glib20 && make FLAVOR=default clean reinstall clean
```

That's it! Your ports system is back in sync without having to force-delete packages or break system dependencies.