From 6b583c70e7b75cd62e5688d521d2aa333f4d0f8c Mon Sep 17 00:00:00 2001 From: Santiago Torres Date: Tue, 27 Mar 2018 00:48:01 -0400 Subject: [PATCH] WIP: Makefile: allow for rootless build --- Dockerfile | 1 + Makefile | 7 +++- rootfs/etc/pacman.conf | 91 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 97 insertions(+), 2 deletions(-) create mode 100644 rootfs/etc/pacman.conf diff --git a/Dockerfile b/Dockerfile index 6d64765..8e684d0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,6 @@ FROM scratch ADD archlinux.tar / +RUN update-ca-certs RUN locale-gen RUN pacman-key --init && pacman-key --populate archlinux ENV LANG=en_US.UTF-8 diff --git a/Makefile b/Makefile index df67303..aee8e83 100644 --- a/Makefile +++ b/Makefile @@ -5,10 +5,13 @@ BUILDDIR=build rootfs: mkdir -vp $(BUILDDIR)/var/lib/pacman/ - fakeroot -- pacman -Syu -r $(BUILDDIR) \ + fakechroot -- fakeroot -- pacman -Syu -r $(BUILDDIR) \ --noconfirm --dbpath $(PWD)/$(BUILDDIR)/var/lib/pacman \ - --hookdir rootfs/usr/share/libalpm/hooks/ $(shell cat packages) + --config rootfs/etc/pacman.conf \ + --noscriptlet \ + --hookdir $(PWD)/rootfs/usr/share/libalpm/hooks/ $(shell cat packages) cp --recursive --preserve=timestamps --backup --suffix=.pacnew rootfs/* $(BUILDDIR)/ + rm -r build/var/cache/pacman/pkg tar --numeric-owner --xattrs --acls --exclude-from=exclude -C $(BUILDDIR) -c . -f archlinux.tar rm -rf $(BUILDDIR) diff --git a/rootfs/etc/pacman.conf b/rootfs/etc/pacman.conf new file mode 100644 index 0000000..9f62156 --- /dev/null +++ b/rootfs/etc/pacman.conf @@ -0,0 +1,91 @@ +# +# /etc/pacman.conf +# +# See the pacman.conf(5) manpage for option and repository directives + +# +# GENERAL OPTIONS +# +[options] +# The following paths are commented out with their default values listed. +# If you wish to use different paths, uncomment and update the paths. +#RootDir = / +#DBPath = /var/lib/pacman/ +#CacheDir = /var/cache/pacman/pkg/ +#LogFile = /var/log/pacman.log +#GPGDir = /etc/pacman.d/gnupg/ +#HookDir = /etc/pacman.d/hooks/ +#HoldPkg = pacman glibc +#XferCommand = /usr/bin/curl -C - -f %u > %o +#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u +#CleanMethod = KeepInstalled +#UseDelta = 0.7 +Architecture = auto + +# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup +#IgnorePkg = +#IgnoreGroup = + +#NoUpgrade = +#NoExtract = + +# Misc options +#UseSyslog +#Color +#TotalDownload +CheckSpace +#VerbosePkgLists + +# By default, pacman accepts packages signed by keys that its local keyring +# trusts (see pacman-key and its man page), as well as unsigned packages. +SigLevel = Required DatabaseOptional +LocalFileSigLevel = Optional +#RemoteFileSigLevel = Required + +# NOTE: You must run `pacman-key --init` before first using pacman; the local +# keyring can then be populated with the keys of all official Arch Linux +# packagers with `pacman-key --populate archlinux`. + +# +# REPOSITORIES +# - can be defined here or included from another file +# - pacman will search repositories in the order defined here +# - local/custom mirrors can be added here or in separate files +# - repositories listed first will take precedence when packages +# have identical names, regardless of version number +# - URLs will have $repo replaced by the name of the current repo +# - URLs will have $arch replaced by the name of the architecture +# +# Repository entries are of the format: +# [repo-name] +# Server = ServerName +# Include = IncludePath +# +# The header [repo-name] is crucial - it must be present and +# uncommented to enable the repo. +# + +# The testing repositories are disabled by default. To enable, uncomment the +# repo name header and Include lines. You can add preferred servers immediately +# after the header, and they will be used before the default mirrors. + +[core] +Include = rootfs/etc/pacman.d/mirrorlist + +[extra] +Include = rootfs/etc/pacman.d/mirrorlist + +[community] +Include = rootfs//etc/pacman.d/mirrorlist + +# If you want to run 32 bit applications on your x86_64 system, +# enable the multilib repositories as required here. + +#[multilib] +#Include = /etc/pacman.d/mirrorlist +# +# An example of a custom package repository. See the pacman manpage for +# tips on creating your own repositories. +#[custom] +#SigLevel = Optional TrustAll +#Server = file:///home/custompkgs