https://github.com/kvz/depmake
A collection of bash functions and conventions for creating applications that can bundle all their code and dependencies inside a tar file.
https://github.com/kvz/depmake
Last synced: 5 months ago
JSON representation
A collection of bash functions and conventions for creating applications that can bundle all their code and dependencies inside a tar file.
- Host: GitHub
- URL: https://github.com/kvz/depmake
- Owner: kvz
- Archived: true
- Fork: true (felixge/depmake)
- Created: 2015-07-16T16:10:07.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2020-04-21T08:44:13.000Z (about 5 years ago)
- Last Synced: 2025-01-14T08:54:57.074Z (5 months ago)
- Language: Shell
- Homepage: https://www.npmjs.com/package/depmake
- Size: 13.7 KB
- Stars: 2
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# depmake
## Warning: No longer used or maintained!
depmake is a collection of bash functions and conventions for creating
applications that can bundle all their code and dependencies inside a tar file.
The tar can be used to extract and run your app on any system (of the same
kernel / architecture).depmake has a certain overlap with tools such as [chef][] and [puppet][], but
only contains features required to create deployable archives where version pinning of all libraries is paramount.depmake also has a certain overlap with package managers such as [apt][] and
[pacman][], but is yet again laser focused on creating deployable archives.However, [simple does not mean easy][]. depmake is a tool that allows you to
create simple deployment systems at the cost of more initial work.[chef]: http://www.opscode.com/chef/
[puppet]: http://puppetlabs.com/
[apt]: http://en.wikipedia.org/wiki/Advanced_Packaging_Tool
[pacman]: https://wiki.archlinux.org/index.php/Pacman
[simple does not mean easy]: http://www.infoq.com/presentations/Simple-Made-Easy## Overview
A typical depmake project allows you to check out a fresh copy of your project,
then:```bash
cd my-project
source my-config.sh
cd deps && make
```This will kick off a process in which all your dependencies are built and
installed into a folder called `stack`. Your `my-config.sh` then contains
some code like this:```bash
ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
export STACK_DIR="${ROOT_DIR}/stack"export ORIGINAL_PATH=${ORIGINAL_PATH:-$PATH}
export PATH="${ORIGINAL_PATH}:${STACK_DIR}/bin"
export CPPFLAGS="-I${STACK_DIR}/include"
export LDFLAGS="-L${STACK_DIR}/lib"
export LD_LIBRARY_PATH="${STACK_DIR}/lib"
export PKG_CONFIG_PATH="${STACK_DIR}/lib/pkgconfig"
```This makes sure that in addition to the usual paths your systems looks
for binaries, shared libraries, etc., it will also consider the stuff insided
of the `stack` folder.So effectively this creates a virtual environment that is activated by sourcing
a bash file, and de-activated by starting a new shell session.