summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <LukeShu@sbcglobal.net>2012-11-30 01:11:13 -0500
committerLuke Shumaker <LukeShu@sbcglobal.net>2012-11-30 01:11:13 -0500
commitaa8b0eee0187ca3e2ae1b8ecdad651f4846d4049 (patch)
treea1a660fe023c350b7014d8b7af5ecf9d28c865a2
parent00c79846ae48dfbb08e7ecb1dfda9e16822a71ad (diff)
parent09a60ac3ddb6763cbf1c9c783117c10bb1e1291e (diff)
Merge branch 'master' of ssh://parabolagnulinux.org:1863/srv/git/libretools
-rw-r--r--doc/workflows.markdown60
-rwxr-xr-xsrc/toru/toru-path2
2 files changed, 62 insertions, 0 deletions
diff --git a/doc/workflows.markdown b/doc/workflows.markdown
new file mode 100644
index 0000000..f55ae7e
--- /dev/null
+++ b/doc/workflows.markdown
@@ -0,0 +1,60 @@
+# Workflows
+
+Describe your packaging workflow here!
+
+
+## fauno's way
+
+During packaging, I don't usually restart a build from scratch if I have to
+make changes to the PKGBUILD. I use a lot of commenting out commands already
+ran, `makepkg -R`, etc. When I used `libremakepkg` I ended up using a lot more
+`librechroot` and working from inside the unconfigured chroot, because
+`makechrootpkg` (the underlying technology for `libremakepkg`) tries to be too
+smart.
+
+When I started writing `treepkg` I found that mounting what I need directly on
+the chroot and working from inside it was much more comfortable and simple than
+having a makepkg wrapper doing funny stuff (for instance, mangling makepkg.conf
+and breaking everything.)
+
+This is how the chroot is configured:
+
+* Create the same user (with same uid) on the chroot that the one I use regularly.
+
+* Give it password-less sudo on the chroot.
+
+* Bind mount /home to /chroot/home, where I have the abslibre-mips64el clone.
+
+* Bind mount /var/cache/pacman/pkg to /chroot/var/cache/pacman/pkg
+
+* Put these on system's fstab so I don't have to do it everytime
+
+* Configure makepkg.conf to PKGDEST=CacheDir and SRCDEST to something on my home.
+
+Workflow:
+
+* Enter the chroot with `systemd-nspawn -D/chroot` and `su - fauno`.
+
+* From another shell (I use tmux) edit the abslibre or search for updates with
+ `git log --no-merges --numstat`.
+
+* Pick a package and run `treepkg` from its dir on the chroot, or retake
+ a build with `treepkg /tmp/package-treepkg-xxxx`. (Refer to doc/treepkg
+ here).
+
+What this allows:
+
+* Not having to worry about the state of the chroot. `chcleanup` removes and
+ adds packages in a smart way so shared dependencies stay and others move
+ along (think of installing and removing qt for a complete kde rebuild).
+
+* Building many packages in a row without recreating a chroot for every one of
+ them.
+
+* Knowing that any change you made to the chroot stays as you want (no one
+ touches your makepkg.conf)
+
+* Hability to run regular commands, not through a chroot wrapper. I can `cd` to
+ a dir and use `makepkg -whatever` on it and nothing breaks.
+
+* No extra code spent on wrappers.
diff --git a/src/toru/toru-path b/src/toru/toru-path
index 957f49b..baeaeb5 100755
--- a/src/toru/toru-path
+++ b/src/toru/toru-path
@@ -22,6 +22,8 @@ fi
fullrepos=()
for (( i = ${#REPOS[@]}-1 ; i >= 0 ; i-- )); do
${VERBOSE} && msg "Processing [%s]" ${REPOS[$i]}
+
+ [ -d "${ABSROOT}${REPOS[$i]}" ] && \
fullrepos+=("${ABSROOT}${REPOS[$i]}")
done
pkgbuilds=($(get_pkgbuilds ${fullrepos[@]}))