• Stars
    star
    110
  • Rank 316,857 (Top 7 %)
  • Language
    Shell
  • Created about 11 years ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Wrapper script for managing clean chroots under Arch Linux

clean-chroot-manager

Wrapper script to manage buildroots when building packages under Arch Linux.

Why use it?

Ccm provides several advantages over the standard arch-build scripts:

  • Automatically manages a local repo so dependencies that you build are pulled transparently from that local repo.
  • Automatically setups and uses distcc to speed up compilation (if enabled).

Managing a local repo is helpful if building a package that has a dependency that also has to be built (i.e. one that is not available from the Arch repos). Another key point of differentiation is that ccm can build packages using distcc.

For example, let's say that we want to build "bar" from the AUR. "Bar" has a build dependency of "foo" which is also in the AUR. Rather than first building "foo", then installing "foo", then building "bar", and finally removing "foo", the local repo will save a copy of foo.pkg.tar.xz which is indexed automatically therein. Pacman within the buildroot is aware of the "foo" package thanks to the local repo. So, when the user tries to build "bar", pacman will silently grabs foo.pkg.tar.xz from the local repo as any other dependency.

Download

AUR Package: https://aur.archlinux.org/packages/clean-chroot-manager

Setup

$XDG_CONFIG_HOME/clean-chroot-manager.conf will be created on the first invocation of ccm and contains all user managed settings. Edit this file prior to running ccm a second time. Make sure the user running ccm has sudo rights to execute /usr/bin/clean-chroot-manager or /usr/bin/ccm.

Options

Command Description
a Add packages in current dir to the local repo.
c Create the buildroot.
cd Create the buildroot with distcc enabled (if you do not want to set up in the config file).
cp Purge all files in the CCACHE_DIR (optional if building with ccache).
d Delete all packages in the local repo without nuking the entire build (i.e. the packages you built to date).
l List the contents of the local repo (i.e. the packages you built to date).
N Nuke the buildroot and the external repo (if defined).
n Nuke the buildroot (delete it and everything under it).
p Preview settings. Show some bits about the buildroot itself.
R Repackage the current package if built. The equivalent of makepkg -sR in the buildroot.
s Run makepkg in build mode under the buildroot. The equivalent of makepkg -s in the buildroot.
S Run makepkg in build mode under the buildroot without first cleaning it. Useful for rebuilds without dirtying the pristine buildroot or when building packages with many of the same deps.
t Toggle [core-testing]/[extra-testing] on/off in the buildroot and update packages accordingly (upgrade or downgrade).
u Update the packages inside the buildroot. The equivalent of pacman -Syu in the buildroot.

Example Usage

Create a clean 64-bit buildroot under the path defined in the aforementioned config file:

$ sudo ccm c

Attempt to build the package in the clean 64-bit buildroot. If successful, the package will be added to a local repo so that it will be available for use as a dependency for building other packages:

 $ cd /path/to/PKGBUILD
 $ sudo ccm s

List out the contents of the 64-bit buildroot's local repo assuming something has been built. Useful to see what is present:

 $ sudo ccm l

Deletes everything under the top level of the 64-bit buildroot effectively removing it from the system:

 $ sudo ccm n

Tips

  • Since ccm requires sudo rights, consider making an alias for invoking it as such in your ~/.bashrc or the like. For example:
 alias ccm='sudo ccm'
  • If you have multiple PCs on your LAN, consider having them help you compile via distcc which is supported within ccm. See $XDG_CONFIG_HOME/clean-chroot-manager.conf for setup instructions.
  • If your machine has lots of memory, consider locating the buildroot to tmpfs to avoid disk usage/minimize access times. One way is to simply define a directory to mount as tmpfs like so in /etc/fstab:

tmpfs /scratch tmpfs nodev,size=20G 0 0

In order to have the expected CHROOTPATH64 directory created, we can use a systemd tmpfile like so:

/etc/tmpfiles.d/ccm_dirs.conf
d /scratch/.buildroot 0750 foo users -

Note that this is only needed if the location of the buildroot are on a volatile filesystem like tmpfs.

More Repositories

1

profile-sync-daemon

Symlinks and syncs browser profile dirs to RAM thus reducing HDD/SDD calls and speeding-up browsers.
Shell
899
star
2

kernel_compiler_patch

Kernel patch enables compiler optimizations for additional CPUs.
652
star
3

xscreensaver-aerial

xscreensaver that randomly selects one of the Apple TV4 aerial movies
Shell
426
star
4

anything-sync-daemon

Symlinks and syncs user specified dirs to RAM thus reducing HDD/SDD calls and speeding-up the system.
Shell
345
star
5

pulseaudio-ctl

Control pulseaudio volume from the shell or mapped to keyboard shortcuts. No need for alsa-utils.
Shell
275
star
6

lostfiles

Simple script that identifies files not owned by any Arch Linux package.
Shell
270
star
7

profile-cleaner

Simple script to vacuum and reindex sqlite databases used by Firefox and by Chrome/Chromium.
Shell
203
star
8

modprobed-db

Keeps track of EVERY kernel module that has ever been probed. Useful for those of us who make localmodconfig :)
Shell
171
star
9

kodi-standalone-service

Use systemd to allow for standalone operation of kodi.
Roff
158
star
10

configs

User and system config files.
Shell
53
star
11

ovpngen

Generate an OpenVPN Connect private tunnel profile in the unified format
Shell
44
star
12

hosts-update

Updates /etc/hosts with the mvps blocklist to prevent thousands of parasites, hijackers and unwanted adware/spyware/privacy websites from working.
Shell
42
star
13

sleepnoise

Turn a Raspberry Pi into a white noise generator
Shell
36
star
14

auto-reencode

Mass convert wmv and flv files to mp4 contained x264 files using ffmpeg.
Shell
19
star
15

adblock-by_haarp

A clean, lean and mean adblocking script for TomatoUSB routers
Shell
19
star
16

bin

Collection of scripts perhaps of utility to others.
Shell
17
star
17

lxc-service-snapshots

Run disposable (read-only then delete) Linux containers (LXC) to serve up OpenVPN (server only), Pi-Hole, or WireGuard.
Shell
17
star
18

newsboat_custom_stuff

Hacky shell scripts to generate RSS feeds on the fly for newsboat
Shell
15
star
19

mplayer-resumer

An mplayer wrapper script that will resume playback of previously-stopped video where you left off. Written by Bob Igo.
Perl
14
star
20

streamzap

Linux Streamzap USB remote config files for lirc, mplayer and kodi
Python
12
star
21

mandb-ondemand

Rebuilds the manpage index database on-demand to speed-up pacman operations.
Makefile
11
star
22

arris-capture

Shell script to log Arris power levels, signal-to-noise ratio and frequencies. Ready to graph in dygraph.
Shell
11
star
23

backdrop-randomizer

Companion for xfdesktop which randomly cycles through wallpapers without repeating.
Shell
9
star
24

distccd-arch-arm

Provides an Arch ARM client with Systemd services/environment files to make use of distcc-alarm naively.
Makefile
8
star
25

kodi-logger

Keeps track of every video you watch on kodi (xbmc).
Shell
8
star
26

raspberrypi-kodi-service

Systemd service unit to run with minimal frame buffer to save GPU memory
7
star
27

kodi-prevent-xscreensaver

Keep xscreensaver from coming on when kodi is active.
Makefile
6
star
28

crosstool-ng_for_distcc

Build your own toolchain with crosstool-ng for Arch ARM volunteers to help build x86_64 stuff
5
star
29

RT-N66U

Miscell. scripts the Asus RT-N66U running TomatoUSB can use.
4
star
30

linux-optimized

more or less the old linux-ck but without ck patches since they are no longer maintained
Shell
4
star
31

odroid-auto-bridge

Simple method to create a network bridge for the ODROID-C1+/C2/XU4.
Makefile
4
star
32

governor-switcher

Systemd units to toggle between ondemand and performance based on time of day.
Makefile
3
star
33

sb6121-capture

Shell script to log SB6121 power levels, signal-to-noise ratio and frequencies.
Shell
2
star
34

getpkg

Alternative to ABS, uses svn to pull Arch Linux PKGBUILD and associated files
Shell
2
star
35

multilame

Pseudo multi-threaded bash script to parallel encode .wav to .mp3 via lame
Shell
2
star
36

odroid-c2-rtc

Setup RTC shield for C2 on Arch ARM
Makefile
2
star
37

makechapterlist

Trivial bash script to make a chapter list file that MP4Box can use.
Shell
2
star
38

buildhelper

helper for building with devtools-alarm on Arch ARM using distcc
Shell
1
star
39

distccd-alarm

1
star
40

kodi-raspberry-pi3

Optimize kodi for the Cortex-A72 processor found on the Raspberry Pi 4
1
star