• LD_PRELOAD
  • PKG_CONFIG_PATH
  • Far often enough, I would also be working on various python projects with specific module requirements. To ensure that installing these packages doesn't conflict with my local system, I used a virtualenv for each project.

    Both of these tasks get rather tedious, and I'm a big fan of disposable, short-lived terminal tabs.

    Furthermore, I wanted to be able to very easily sync my environments between my desktop, laptop, and server environments with minimal effort.

    buildenv is an overly-complicated set of bash scripts that can do wonderful things for your workflow if you don't look too closely. You can visit the github page for more documentation, but here's a brief overview of what it can do:

    "/>

    As with most folks, I've worked on a number of various projects here and there. Many of those projects relied on bleeding-edge code that isn't available in the fedora update repositories, along with a various number of environment variables. For example, when developing against a newer version of glib I'd want to set these when building and running against it:

    • LD_PRELOAD
    • PKG_CONFIG_PATH

    Far often enough, I would also be working on various python projects with specific module requirements. To ensure that installing these packages doesn't conflict with my local system, I used a virtualenv for each project.

    Both of these tasks get rather tedious, and I'm a big fan of disposable, short-lived terminal tabs.

    Furthermore, I wanted to be able to very easily sync my environments between my desktop, laptop, and server environments with minimal effort.

    buildenv is an overly-complicated set of bash scripts that can do wonderful things for your workflow if you don't look too closely. You can visit the github page for more documentation, but here's a brief overview of what it can do:

    • Manages a set of filesystem roots in /opt/buildenv/ for each environment to install software to
    • Massages LD_PRELOAD, PKG_CONFIG_PATH, and a handful of other useful variables
    • Lets you run makefiles and other scripts when an environment is loaded. For example, downloading, building, and installing the latest boost if something needs it
    • A set of "feature flags" for buildenvs to do things such as activating a python virtualenv
    • Load "parent" buildenvs, such as when building something that requires the latest gstreamer-1.0, you can also pull in the latest glib as a dependency