Skip to content

Commit

Permalink
"Justify" the build system
Browse files Browse the repository at this point in the history
  • Loading branch information
ryanabx committed Feb 24, 2024
1 parent e837966 commit 91fce0b
Show file tree
Hide file tree
Showing 3 changed files with 103 additions and 61 deletions.
61 changes: 0 additions & 61 deletions Makefile

This file was deleted.

29 changes: 29 additions & 0 deletions data/justfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
appid := env_var('APPID')
share-dir := env_var('SHARE_DIR')
lib-dir := env_var('LIB_DIR')
bin-dir := env_var('BIN_DIR')

desktop-src := 'cosmic' + '.desktop'
desktop-dst := share-dir / 'wayland-sessions' / desktop-src

ccservice-src := 'cosmic-comp' + '.service'
ccservice-dst := lib-dir / 'systemd' / 'user' / ccservice-src

session-target-src := 'cosmic-session' + '.target'
session-target-dst := lib-dir / 'systemd' / 'user' / session-pretarget-src

session-pretarget-src := 'cosmic-session-pre' + '.target'
session-pretarget-dst := lib-dir / 'systemd' / 'user' / session-pretarget-src

cosmic-service-src := 'cosmic-service'
cosmic-service-dst := bin-dir / cosmic-service-src

install-bare-session:
install -Dm0644 {{desktop-src}} {{desktop-dst}}
install -Dm0644 {{ccservice-src}} {{ccservice-dst}}
install -Dm0644 {{session-pretarget-src}} {{session-pretarget-dst}}
install -Dm0644 {{session-target-src}} {{session-target-dst}}
install -Dm0755 {{cosmic-service-src}} {{cosmic-service-dst}}

uninstall-bare-session:
rm {{desktop-dst}} {{ccservice-dst}} {{session-pretarget-dst}} {{session-target-dst}} {{cosmic-service-dst}}
74 changes: 74 additions & 0 deletions justfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
name := 'cosmic-comp'
export APPID := 'com.system76.CosmicComp'

rootdir := ''
prefix := '/usr'

base-dir := absolute_path(clean(rootdir / prefix))

export SHARE_DIR := sharedir
export BIN_DIR := base-dir / 'bin'
export LIB_DIR := libdir

bin-src := 'target' / 'release' / name
bin-dst := base-dir / 'bin' / name

libdir := base-dir / 'lib'
sharedir := base-dir / 'share'

# Default recipe which runs `just build-release`
default: build-release

# Runs `cargo clean`
clean:
cargo clean

# `cargo clean` and removes vendored dependencies
clean-dist: clean
rm -rf .cargo vendor vendor.tar

# Compiles with debug profile
build-debug *args:
cargo build {{args}}

# Compiles with release profile
build-release *args: (build-debug '--release' args)

# Compiles release profile with vendored dependencies
build-vendored *args: vendor-extract (build-release '--frozen --offline' args)

# Runs a clippy check
check *args:
cargo clippy --all-features {{args}} -- -W clippy::pedantic

# Runs a clippy check with JSON message format
check-json: (check '--message-format=json')

# Installs files
install:
install -Dm0755 {{bin-src}} {{bin-dst}}

install-bare-session:
@just data/install-bare-session

# Uninstalls installed files
uninstall:
rm {{bin-dst}}

uninstall-bare-session:
@just data/uninstall-bare-session

# Vendor dependencies locally
vendor:
mkdir -p .cargo
cargo vendor --sync Cargo.toml \
| head -n -1 > .cargo/config
echo 'directory = "vendor"' >> .cargo/config
tar pcf vendor.tar vendor
rm -rf vendor

# Extracts vendored dependencies
vendor-extract:
#!/usr/bin/env sh
rm -rf vendor
tar pxf vendor.tar

0 comments on commit 91fce0b

Please sign in to comment.