Compare commits
19 Commits
Author | SHA1 | Date | |
---|---|---|---|
2595cd2a3a
|
|||
1917c252aa | |||
4c458bf242
|
|||
5b00c80698
|
|||
98c3c8c5b0 | |||
0786c46474
|
|||
d22406b308
|
|||
87ea01db9b | |||
cb347b511a | |||
e15d70f732
|
|||
5ad0d72378
|
|||
f8dccbf59e
|
|||
a3bcbd40d2
|
|||
7a6c7e61de
|
|||
b517c7dcf8
|
|||
b5c3decf9b | |||
de2d4bb4de
|
|||
f2eb80f1ab
|
|||
5f2ac0a406
|
37
Makefile
37
Makefile
@@ -3,7 +3,7 @@ SHELL=/bin/bash
|
||||
V=0.31
|
||||
BUILDTOOLVER ?= $(V)
|
||||
|
||||
CHROOTVER=0.11
|
||||
CHROOTVER=0.12
|
||||
|
||||
TOOLS = artools
|
||||
SYSCONFDIR = /etc
|
||||
@@ -37,22 +37,26 @@ TOOLS_CONFIGS_PKG=$(wildcard config/conf/*pkg*)
|
||||
TOOLS_CONFIGS_ISO=$(wildcard config/conf/*iso*)
|
||||
|
||||
LN_BUILDPKG = \
|
||||
buildpkg-system \
|
||||
buildpkg-system-gremlins \
|
||||
buildpkg-system-goblins \
|
||||
buildpkg-world \
|
||||
buildpkg-world-gremlins \
|
||||
buildpkg-world-goblins \
|
||||
buildpkg-lib32 \
|
||||
buildpkg-lib32-gremlins \
|
||||
buildpkg-lib32-goblins \
|
||||
buildpkg-galaxy \
|
||||
buildpkg-galaxy-gremlins \
|
||||
buildpkg-galaxy-goblins
|
||||
buildpkg-system-x86_64 \
|
||||
buildpkg-system-gremlins-x86_64 \
|
||||
buildpkg-system-goblins-x86_64 \
|
||||
buildpkg-world-x86_64 \
|
||||
buildpkg-world-gremlins-x86_64 \
|
||||
buildpkg-world-goblins-x86_64 \
|
||||
buildpkg-lib32-x86_64 \
|
||||
buildpkg-lib32-gremlins-x86_64 \
|
||||
buildpkg-lib32-goblins-x86_64 \
|
||||
buildpkg-galaxy-x86_64 \
|
||||
buildpkg-galaxy-gremlins-x86_64 \
|
||||
buildpkg-galaxy-goblins-x86_64
|
||||
|
||||
LN_BUILDISO = \
|
||||
buildiso-gremlins \
|
||||
buildiso-goblins
|
||||
buildiso-world \
|
||||
buildiso-world-gremlins \
|
||||
buildiso-world-goblins \
|
||||
buildiso-galaxy \
|
||||
buildiso-galaxy-gremlins \
|
||||
buildiso-galaxy-goblins
|
||||
|
||||
all: binprogs_base binprogs_pkg binprogs_iso library_base library_pkg library_iso conf_base conf_pkg conf_iso
|
||||
binprogs_base: $(BINPROGS_BASE)
|
||||
@@ -133,6 +137,9 @@ install_pkg: binprogs_pkg
|
||||
for l in $(LN_BUILDPKG); do ln -sf buildpkg $(DESTDIR)$(PREFIX)/bin/$$l; done
|
||||
ln -sf find-libdeps $(DESTDIR)$(PREFIX)/bin/find-libprovides
|
||||
|
||||
# compat symlink
|
||||
ln -sf repopkg $(DESTDIR)$(PREFIX)/bin/deploypkg
|
||||
|
||||
install_iso: binprogs_iso
|
||||
install -dm0755 $(DESTDIR)$(SYSCONFDIR)/$(TOOLS)
|
||||
install -dm0755 $(DESTDIR)$(PREFIX)/bin
|
||||
|
@@ -88,15 +88,6 @@ Include = /etc/pacman.d/mirrorlist
|
||||
[world]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
[galaxy-goblins]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
[galaxy-gremlins]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
[galaxy]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
# If you want to run 32 bit applications on your x86_64 system,
|
||||
# enable the lib32 repositories as required here.
|
||||
|
||||
|
@@ -82,12 +82,6 @@ Include = /etc/pacman.d/mirrorlist
|
||||
[world]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
[galaxy-gremlins]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
[galaxy]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
# If you want to run 32 bit applications on your x86_64 system,
|
||||
# enable the lib32 repositories as required here.
|
||||
|
||||
|
@@ -82,12 +82,6 @@ Include = /etc/pacman.d/mirrorlist
|
||||
[world]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
#[galaxy-gremlins]
|
||||
#Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
[galaxy]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
# If you want to run 32 bit applications on your x86_64 system,
|
||||
# enable the lib32 repositories as required here.
|
||||
|
||||
|
95
config/pacman/system-goblins.conf
Normal file
95
config/pacman/system-goblins.conf
Normal file
@@ -0,0 +1,95 @@
|
||||
#
|
||||
# /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 -L -C - -f -o %o %u
|
||||
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
|
||||
#CleanMethod = KeepInstalled
|
||||
Architecture = auto
|
||||
|
||||
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
|
||||
#IgnorePkg =
|
||||
#IgnoreGroup =
|
||||
|
||||
#NoUpgrade =
|
||||
#NoExtract =
|
||||
|
||||
# Misc options
|
||||
#UseSyslog
|
||||
#Color
|
||||
NoProgressBar
|
||||
# We cannot check disk space from within a chroot environment
|
||||
#CheckSpace
|
||||
VerbosePkgLists
|
||||
ParallelDownloads = 5
|
||||
|
||||
# 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 Artix Linux
|
||||
# packagers with `pacman-key --populate artix`.
|
||||
|
||||
#
|
||||
# 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 gremlins 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.
|
||||
|
||||
[system-goblins]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
[system-gremlins]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
[system]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
[world-goblins]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
[world-gremlins]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
[world]
|
||||
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
|
89
config/pacman/system-gremlins.conf
Normal file
89
config/pacman/system-gremlins.conf
Normal file
@@ -0,0 +1,89 @@
|
||||
#
|
||||
# /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 -L -C - -f -o %o %u
|
||||
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
|
||||
#CleanMethod = KeepInstalled
|
||||
Architecture = auto
|
||||
|
||||
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
|
||||
#IgnorePkg =
|
||||
#IgnoreGroup =
|
||||
|
||||
#NoUpgrade =
|
||||
#NoExtract =
|
||||
|
||||
# Misc options
|
||||
#UseSyslog
|
||||
#Color
|
||||
NoProgressBar
|
||||
# We cannot check disk space from within a chroot environment
|
||||
#CheckSpace
|
||||
VerbosePkgLists
|
||||
ParallelDownloads = 5
|
||||
|
||||
# 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 Artix Linux
|
||||
# packagers with `pacman-key --populate artix`.
|
||||
|
||||
#
|
||||
# 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 gremlins 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.
|
||||
|
||||
[system-gremlins]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
[system]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
[world-gremlins]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
[world]
|
||||
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
|
89
config/pacman/system.conf
Normal file
89
config/pacman/system.conf
Normal file
@@ -0,0 +1,89 @@
|
||||
#
|
||||
# /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 -L -C - -f -o %o %u
|
||||
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
|
||||
#CleanMethod = KeepInstalled
|
||||
Architecture = auto
|
||||
|
||||
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
|
||||
#IgnorePkg =
|
||||
#IgnoreGroup =
|
||||
|
||||
#NoUpgrade =
|
||||
#NoExtract =
|
||||
|
||||
# Misc options
|
||||
#UseSyslog
|
||||
#Color
|
||||
NoProgressBar
|
||||
# We cannot check disk space from within a chroot environment
|
||||
#CheckSpace
|
||||
VerbosePkgLists
|
||||
ParallelDownloads = 5
|
||||
|
||||
# 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 Artix Linux
|
||||
# packagers with `pacman-key --populate artix`.
|
||||
|
||||
#
|
||||
# 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 gremlins 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.
|
||||
|
||||
#[system-gremlins]
|
||||
#Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
[system]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
#[world-gremlins]
|
||||
#Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
[world]
|
||||
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
|
95
config/pacman/world-goblins.conf
Normal file
95
config/pacman/world-goblins.conf
Normal file
@@ -0,0 +1,95 @@
|
||||
#
|
||||
# /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 -L -C - -f -o %o %u
|
||||
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
|
||||
#CleanMethod = KeepInstalled
|
||||
Architecture = auto
|
||||
|
||||
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
|
||||
#IgnorePkg =
|
||||
#IgnoreGroup =
|
||||
|
||||
#NoUpgrade =
|
||||
#NoExtract =
|
||||
|
||||
# Misc options
|
||||
#UseSyslog
|
||||
#Color
|
||||
NoProgressBar
|
||||
# We cannot check disk space from within a chroot environment
|
||||
#CheckSpace
|
||||
VerbosePkgLists
|
||||
ParallelDownloads = 5
|
||||
|
||||
# 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 Artix Linux
|
||||
# packagers with `pacman-key --populate artix`.
|
||||
|
||||
#
|
||||
# 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 gremlins 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.
|
||||
|
||||
[system-goblins]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
[system-gremlins]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
[system]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
[world-goblins]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
[world-gremlins]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
[world]
|
||||
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
|
89
config/pacman/world-gremlins.conf
Normal file
89
config/pacman/world-gremlins.conf
Normal file
@@ -0,0 +1,89 @@
|
||||
#
|
||||
# /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 -L -C - -f -o %o %u
|
||||
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
|
||||
#CleanMethod = KeepInstalled
|
||||
Architecture = auto
|
||||
|
||||
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
|
||||
#IgnorePkg =
|
||||
#IgnoreGroup =
|
||||
|
||||
#NoUpgrade =
|
||||
#NoExtract =
|
||||
|
||||
# Misc options
|
||||
#UseSyslog
|
||||
#Color
|
||||
NoProgressBar
|
||||
# We cannot check disk space from within a chroot environment
|
||||
#CheckSpace
|
||||
VerbosePkgLists
|
||||
ParallelDownloads = 5
|
||||
|
||||
# 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 Artix Linux
|
||||
# packagers with `pacman-key --populate artix`.
|
||||
|
||||
#
|
||||
# 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 gremlins 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.
|
||||
|
||||
[system-gremlins]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
[system]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
[world-gremlins]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
[world]
|
||||
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
|
89
config/pacman/world.conf
Normal file
89
config/pacman/world.conf
Normal file
@@ -0,0 +1,89 @@
|
||||
#
|
||||
# /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 -L -C - -f -o %o %u
|
||||
#XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
|
||||
#CleanMethod = KeepInstalled
|
||||
Architecture = auto
|
||||
|
||||
# Pacman won't upgrade packages listed in IgnorePkg and members of IgnoreGroup
|
||||
#IgnorePkg =
|
||||
#IgnoreGroup =
|
||||
|
||||
#NoUpgrade =
|
||||
#NoExtract =
|
||||
|
||||
# Misc options
|
||||
#UseSyslog
|
||||
#Color
|
||||
NoProgressBar
|
||||
# We cannot check disk space from within a chroot environment
|
||||
#CheckSpace
|
||||
VerbosePkgLists
|
||||
ParallelDownloads = 5
|
||||
|
||||
# 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 Artix Linux
|
||||
# packagers with `pacman-key --populate artix`.
|
||||
|
||||
#
|
||||
# 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 gremlins 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.
|
||||
|
||||
#[system-gremlins]
|
||||
#Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
[system]
|
||||
Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
#[world-gremlins]
|
||||
#Include = /etc/pacman.d/mirrorlist
|
||||
|
||||
[world]
|
||||
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
|
@@ -3,6 +3,7 @@
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
LIBDIR=${LIBDIR:-'@libdir@'}
|
||||
DATADIR=${DATADIR:-'@datadir@'}
|
||||
|
||||
# shellcheck source=src/lib/base/message.sh
|
||||
source "${LIBDIR}"/base/message.sh
|
||||
@@ -36,8 +37,8 @@ kill_chroot_process(){
|
||||
umask 0022
|
||||
|
||||
working_dir=''
|
||||
files=()
|
||||
|
||||
files=()
|
||||
mount_args=("-B:/etc/hosts:/etc/hosts")
|
||||
|
||||
usage() {
|
||||
@@ -50,15 +51,18 @@ usage() {
|
||||
printf ' -c <dir> Set pacman cache\n'
|
||||
printf ' -f <file> Copy file from the host to the chroot\n'
|
||||
printf ' -s Do not run setarch\n'
|
||||
printf ' -b <list> Bind mountargs\n'
|
||||
printf ' List format [mntarg1:src1:dest1 ... mntargN:srcN:destN]\n'
|
||||
printf ' -t <opts> tmpfs mount opts\n'
|
||||
printf ' -b <args> Bind mountargs\n'
|
||||
printf ' Format:\n'
|
||||
printf ' "arg1:src1:dest1 arg2:src2:dest2"\n'
|
||||
printf ' -h This message\n'
|
||||
exit 1
|
||||
}
|
||||
|
||||
# save all args for check_root
|
||||
orig_args=("$@")
|
||||
|
||||
opts='hC:M:c:b:f:s'
|
||||
opts='hC:M:c:b:f:t:s'
|
||||
|
||||
while getopts ${opts} arg; do
|
||||
case "${arg}" in
|
||||
@@ -67,14 +71,15 @@ while getopts ${opts} arg; do
|
||||
c) cache_dirs+=("$OPTARG") ;;
|
||||
f) files+=("$OPTARG") ;;
|
||||
s) nosetarch=1 ;;
|
||||
t) tmpfs_opts="$OPTARG" ;;
|
||||
b) bindmounts="$OPTARG"; mount_args+=(${bindmounts}) ;;
|
||||
h|?) usage ;;
|
||||
*) error "invalid argument '%s'" "$arg"; usage ;;
|
||||
esac
|
||||
done
|
||||
shift $(( OPTIND - 1 ))
|
||||
shift $((OPTIND - 1))
|
||||
|
||||
(( $# < 1 )) && die 'You must specify a directory.'
|
||||
|
||||
check_root "" "${BASH_SOURCE[0]}" "${orig_args[@]}"
|
||||
|
||||
working_dir=$(readlink -f "$1")
|
||||
@@ -83,7 +88,7 @@ shift 1
|
||||
[[ -z $working_dir ]] && die 'Please specify a working directory.'
|
||||
|
||||
if (( ${#cache_dirs[@]} == 0 )); then
|
||||
mapfile -t cache_dirs < <(pacman-conf --config "${pac_conf:-$working_dir/etc/pacman.conf}" CacheDir)
|
||||
mapfile -t cache_dirs < <(pacman-conf --config "${pacman_conf:-$working_dir/etc/pacman.conf}" CacheDir)
|
||||
fi
|
||||
|
||||
# shellcheck disable=2016
|
||||
@@ -91,15 +96,15 @@ mapfile -t host_mirrors < <(pacman-conf --repo world Server 2> /dev/null | sed -
|
||||
|
||||
for host_mirror in "${host_mirrors[@]}"; do
|
||||
if [[ $host_mirror == *file://* ]]; then
|
||||
# shellcheck disable=2016
|
||||
host_mirror=$(printf "%s\n" "$host_mirror" | sed -r 's#file://(/.*)/\$repo/os/\$arch#\1#g')
|
||||
in_array "$host_mirror" "${cache_dirs[@]}" || cache_dirs+=("$host_mirror")
|
||||
host_mirror=$(echo "$host_mirror" | sed -r 's#file://(/.*)/\$repo/os/\$arch#\1#g')
|
||||
for m in "$host_mirror"/pool/*/; do
|
||||
in_array "$m" "${cache_dirs[@]}" || cache_dirs+=("$m")
|
||||
done
|
||||
fi
|
||||
done
|
||||
|
||||
while read -r line; do
|
||||
# shellcheck disable=2016
|
||||
mapfile -t lines < <(pacman-conf --config "${pac_conf:-$working_dir/etc/pacman.conf}" \
|
||||
mapfile -t lines < <(pacman-conf --config "${pacman_conf:-$working_dir/etc/pacman.conf}" \
|
||||
--repo "$line" Server | sed -r 's#(.*/)[^/]+/os/.+#\1#')
|
||||
for line in "${lines[@]}"; do
|
||||
if [[ $line = file://* ]]; then
|
||||
@@ -107,7 +112,15 @@ while read -r line; do
|
||||
in_array "$line" "${cache_dirs[@]}" || cache_dirs+=("$line")
|
||||
fi
|
||||
done
|
||||
done < <(pacman-conf --config "${pac_conf:-$working_dir/etc/pacman.conf}" --repo-list)
|
||||
done < <(pacman-conf --config "${pacman_conf:-$working_dir/etc/pacman.conf}" --repo-list)
|
||||
|
||||
mount_args+=("-B:${cache_dirs[0]//:/\\:}:${cache_dirs[0]//:/\\:}")
|
||||
|
||||
for cache_dir in "${cache_dirs[@]:1}"; do
|
||||
mount_args+=("-Br:${cache_dir//:/\\:}:${cache_dir//:/\\:}")
|
||||
done
|
||||
|
||||
# {{{ functions
|
||||
|
||||
copy_hostconf () {
|
||||
unshare --fork --pid gpg --homedir "$working_dir"/etc/pacman.d/gnupg/ --no-permission-warning --quiet --batch --import --import-options import-local-sigs "$(pacman-conf GpgDir)"/pubring.gpg >/dev/null 2>&1
|
||||
@@ -115,9 +128,9 @@ copy_hostconf () {
|
||||
|
||||
printf 'Server = %s\n' "${host_mirrors[@]}" >"$working_dir/etc/pacman.d/mirrorlist"
|
||||
|
||||
[[ -n $pacman_conf ]] && cp "$pacman_conf" "${working_dir}/etc/pacman.conf"
|
||||
[[ -n $pacman_conf ]] && cp "$pacman_conf" "$working_dir/etc/pacman.conf"
|
||||
|
||||
[[ -n $makepkg_conf ]] && cp "$makepkg_conf" "${working_dir}/etc/makepkg.conf"
|
||||
[[ -n $makepkg_conf ]] && cp "$makepkg_conf" "$working_dir/etc/makepkg.conf"
|
||||
|
||||
local file
|
||||
for file in "${files[@]}"; do
|
||||
@@ -125,15 +138,9 @@ copy_hostconf () {
|
||||
cp -T "$file" "$working_dir$file"
|
||||
done
|
||||
|
||||
sed -r "s|^#?\\s*CacheDir.+|CacheDir = ${cache_dirs[*]}|g" -i "${working_dir}/etc/pacman.conf"
|
||||
sed -r "s|^#?\\s*CacheDir.+|CacheDir = ${cache_dirs[*]}|g" -i "$working_dir/etc/pacman.conf"
|
||||
}
|
||||
|
||||
mount_args+=("-B:${cache_dirs[0]//:/\\:}:${cache_dirs[0]//:/\\:}")
|
||||
|
||||
for cache_dir in "${cache_dirs[@]:1}"; do
|
||||
mount_args+=("-Br:${cache_dir//:/\\:}:${cache_dir//:/\\:}")
|
||||
done
|
||||
|
||||
chroot_extra_mount() {
|
||||
chroot_add_resolv_conf "${working_dir}"
|
||||
|
||||
@@ -147,27 +154,28 @@ chroot_extra_mount() {
|
||||
done
|
||||
}
|
||||
|
||||
# }}}
|
||||
|
||||
umask 0022
|
||||
|
||||
# Sanity check
|
||||
if [[ ! -f "$working_dir/.artools" ]]; then
|
||||
die "'%s' does not appear to be an artix chroot." "$working_dir"
|
||||
elif [[ $(cat "$working_dir/.artools") != "${CHROOTVERSION}" ]]; then
|
||||
if [[ ! -f "$working_dir/.artix-chroot" ]]; then
|
||||
die "'%s' does not appear to be an Artix chroot." "$working_dir"
|
||||
elif [[ $(cat "$working_dir/.artix-chroot") != "${CHROOTVERSION}" ]]; then
|
||||
die "chroot '%s' is not at version %s. Please rebuild." "$working_dir" "${CHROOTVERSION}"
|
||||
fi
|
||||
|
||||
chroot_api_mount "${working_dir}" || die "failed to setup API filesystems in chroot %s" "${working_dir}"
|
||||
chroot_api_mount "${working_dir}" "${tmpfs_opts}" || die "failed to setup API filesystems in chroot %s" "${working_dir}"
|
||||
|
||||
chroot_extra_mount
|
||||
|
||||
copy_hostconf
|
||||
|
||||
eval "$(grep '^CARCH=' "$working_dir/etc/makepkg.conf")"
|
||||
eval "$(grep -a '^CARCH=' "$working_dir/etc/makepkg.conf")"
|
||||
|
||||
[[ -z $nosetarch ]] || unset CARCH
|
||||
|
||||
if [[ -f "/usr/share/artools/artools/setarch-aliases.d/${CARCH}" ]]; then
|
||||
read -r set_arch < "/usr/share/artools/artools/setarch-aliases.d/${CARCH}"
|
||||
if [[ -f "${DATADIR}/setarch-aliases.d/${CARCH}" ]]; then
|
||||
read -r set_arch < "${DATADIR}/setarch-aliases.d/${CARCH}"
|
||||
else
|
||||
set_arch="${CARCH}"
|
||||
fi
|
||||
|
@@ -97,7 +97,7 @@ unshare --mount basestrap -${umode}Mc ${pacman_conf:+-C "$pacman_conf"} "$workin
|
||||
printf '%s.UTF-8 UTF-8\n' en_US de_DE > "$working_dir/etc/locale.gen"
|
||||
printf 'LANG=C.UTF-8\n' > "$working_dir/etc/locale.conf"
|
||||
# printf 'KEYMAP=en\n' > "$working_dir/etc/vconsole.conf"
|
||||
printf "%s\n" "${CHROOTVERSION}" > "$working_dir/.artools"
|
||||
printf "%s\n" "${CHROOTVERSION}" > "$working_dir/.artix-chroot"
|
||||
|
||||
dbus-uuidgen --ensure="$working_dir"/etc/machine-id
|
||||
|
||||
|
@@ -184,7 +184,7 @@ gen_iso_fn(){
|
||||
vars+=("${profile}")
|
||||
vars+=("${INITSYS}")
|
||||
case "${repo}" in
|
||||
'gremlins'|'goblins') vars+=("${repo}") ;;
|
||||
*-gremlins|*-goblins) vars+=("${repo#*-}") ;;
|
||||
esac
|
||||
vars+=("${ISO_VERSION}")
|
||||
vars+=("${arch}")
|
||||
@@ -197,10 +197,6 @@ gen_iso_fn(){
|
||||
prepare_build(){
|
||||
load_profile
|
||||
|
||||
case "${repo}" in
|
||||
buildiso) repo=default ;;
|
||||
esac
|
||||
|
||||
pacman_conf="${DATADIR}/pacman.conf.d/${repo}.conf"
|
||||
[[ -f "${USER_CONF_DIR}/pacman.conf.d/${repo}.conf" ]] && pacman_conf="${USER_CONF_DIR}/pacman.conf.d/${repo}.conf"
|
||||
|
||||
@@ -328,7 +324,7 @@ boot_only=false
|
||||
basestrap_args=(-GMc)
|
||||
cmd=${0##*/}
|
||||
|
||||
repo=${cmd##*-}
|
||||
repo=${cmd#buildiso-}
|
||||
owner=${SUDO_USER:-$USER}
|
||||
profile='base'
|
||||
chroots_iso="${CHROOTS_DIR}/buildiso"
|
||||
|
@@ -56,6 +56,7 @@ chroot_mount_conditional() {
|
||||
|
||||
chroot_setup(){
|
||||
local mnt="$1"
|
||||
local tmpfs_opts="${2:-mode=1777,strictatime,nodev,nosuid}"
|
||||
chroot_mount_conditional "! mountpoint -q '$mnt'" "$mnt" "$mnt" --bind &&
|
||||
chroot_mount proc "$mnt/proc" -t proc -o nosuid,noexec,nodev &&
|
||||
chroot_mount sys "$mnt/sys" -t sysfs -o nosuid,noexec,nodev,ro &&
|
||||
@@ -65,13 +66,13 @@ chroot_setup(){
|
||||
chroot_mount devpts "$mnt/dev/pts" -t devpts -o mode=0620,gid=5,nosuid,noexec &&
|
||||
chroot_mount shm "$mnt/dev/shm" -t tmpfs -o mode=1777,nosuid,nodev &&
|
||||
chroot_mount /run "$mnt/run" -t tmpfs -o nosuid,nodev,mode=0755 &&
|
||||
chroot_mount tmp "$mnt/tmp" -t tmpfs -o mode=1777,strictatime,nodev,nosuid
|
||||
chroot_mount tmp "$mnt/tmp" -t tmpfs -o "${tmpfs_opts}"
|
||||
}
|
||||
|
||||
chroot_api_mount() {
|
||||
CHROOT_ACTIVE_MOUNTS=()
|
||||
trap_setup chroot_api_umount
|
||||
chroot_setup "$1"
|
||||
chroot_setup "$1" "$2"
|
||||
}
|
||||
|
||||
chroot_api_umount() {
|
||||
|
@@ -34,7 +34,7 @@ prepare_initramfs_mkinitcpio() {
|
||||
[[ "${profile}" == 'base' ]] && mkinitcpio_conf=mkinitcpio-pxe.conf
|
||||
k=$(<"$mnt"/usr/src/linux/version)
|
||||
|
||||
read_from_list "${common_dir}/Packages-boot"
|
||||
packages+=($(read_from_list "${common_dir}/Packages-boot"))
|
||||
basestrap "${basestrap_args[@]}" "$mnt" "${packages[@]}"
|
||||
|
||||
if [[ -n "${GPG_KEY}" ]]; then
|
||||
|
@@ -13,13 +13,16 @@ artixpkg_admin_usage() {
|
||||
Usage: ${COMMAND} [COMMAND] [OPTIONS]
|
||||
|
||||
COMMANDS
|
||||
transfer Clone a package repository
|
||||
transfer Transfer obsolete repository to landfill
|
||||
query Query maintainers and topics
|
||||
|
||||
OPTIONS
|
||||
-h, --help Show this help text
|
||||
|
||||
EXAMPLES
|
||||
$ ${COMMAND} transfer libfoo libbar
|
||||
$ ${COMMAND} query --maintainer tux
|
||||
$ ${COMMAND} query --topic kf5
|
||||
_EOF_
|
||||
}
|
||||
|
||||
@@ -44,6 +47,14 @@ artixpkg_admin() {
|
||||
artixpkg_admin_transfer "$@"
|
||||
exit 0
|
||||
;;
|
||||
query)
|
||||
_ARTOOLS_COMMAND+=" $1"
|
||||
shift
|
||||
# shellcheck source=src/lib/pkg/admin/query.sh
|
||||
source "${LIBDIR}"/pkg/admin/query.sh
|
||||
artixpkg_admin_query "$@"
|
||||
exit 0
|
||||
;;
|
||||
-*)
|
||||
die "invalid argument: %s" "$1"
|
||||
;;
|
||||
|
89
src/lib/pkg/admin/query.sh
Normal file
89
src/lib/pkg/admin/query.sh
Normal file
@@ -0,0 +1,89 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
[[ -z ${ARTOOLS_INCLUDE_ADMIN_QUERY_SH:-} ]] || return 0
|
||||
ARTOOLS_INCLUDE_ADMIN_QUERY_SH=1
|
||||
|
||||
set -e
|
||||
|
||||
|
||||
artixpkg_admin_query_usage() {
|
||||
local -r COMMAND=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
|
||||
cat <<- _EOF_
|
||||
Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
|
||||
|
||||
OPTIONS
|
||||
-m, --maintainer=NAME Query for packages of the named maintainer
|
||||
-t, --topic=NAME Query for packages of the named topic
|
||||
-h, --help Show this help text
|
||||
|
||||
EXAMPLES
|
||||
$ ${COMMAND} --maintainer maintainer-mynickname
|
||||
$ ${COMMAND} --topic myopic
|
||||
_EOF_
|
||||
}
|
||||
|
||||
|
||||
|
||||
artixpkg_admin_query() {
|
||||
if (( $# < 1 )); then
|
||||
artixpkg_admin_query_usage
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# options
|
||||
local MAINTAINER=
|
||||
local TOPIC=
|
||||
|
||||
while (( $# )); do
|
||||
case $1 in
|
||||
-h|--help)
|
||||
artixpkg_admin_query_usage
|
||||
exit 0
|
||||
;;
|
||||
-m|--maintainer)
|
||||
(( $# <= 1 )) && die "missing argument for %s" "$1"
|
||||
MAINTAINER="$2"
|
||||
shift 2
|
||||
;;
|
||||
--maintainer=*)
|
||||
MAINTAINER="${1#*=}"
|
||||
shift
|
||||
;;
|
||||
-t|--topic)
|
||||
(( $# <= 1 )) && die "missing argument for %s" "$1"
|
||||
TOPIC="$2"
|
||||
shift 2
|
||||
;;
|
||||
--topic=*)
|
||||
TOPIC="${1#*=}"
|
||||
shift
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;;
|
||||
-*)
|
||||
die "invalid argument: %s" "$1"
|
||||
;;
|
||||
*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Query packages of a maintainer
|
||||
if [[ -n ${MAINTAINER} ]]; then
|
||||
local maint
|
||||
maint="maintainer-${MAINTAINER}"
|
||||
mapfile -t pkgbases < <(search_topic "${maint}" | yq -r '.data | .[].name' | sort)
|
||||
printf "%s\n" "${pkgbases[@]}"
|
||||
fi
|
||||
|
||||
if [[ -n ${TOPIC} ]]; then
|
||||
mapfile -t pkgbases < <(search_topic "${TOPIC}" | yq -P -r '.data | .[].name' | sort)
|
||||
printf "%s\n" "${pkgbases[@]}"
|
||||
fi
|
||||
|
||||
}
|
@@ -94,17 +94,10 @@ list_all_repos() {
|
||||
local url
|
||||
url="${GIT_HTTPS}/api/v1/orgs/${GIT_ORG}/repos?limit=10000"
|
||||
|
||||
stat_busy "Query all packages"
|
||||
api_get "$url" \
|
||||
-H "accept: application/json"
|
||||
}
|
||||
|
||||
list_topics() {
|
||||
local url
|
||||
local pkgbase="$1"
|
||||
url="${GIT_HTTPS}/api/v1/repos/${GIT_ORG}/$pkgbase/topics"
|
||||
|
||||
api_get "$url" \
|
||||
-H "accept: application/json"
|
||||
stat_done
|
||||
}
|
||||
|
||||
add_topic() {
|
||||
|
@@ -1,102 +0,0 @@
|
||||
#!/hint/bash
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
declare -rA REPO_MAP=(
|
||||
[core-rebuild]=system-goblins
|
||||
[core-staging]=system-goblins
|
||||
[core-testing]=system-gremlins
|
||||
[core]=system
|
||||
[extra-rebuild]=world-goblins
|
||||
[extra-staging]=world-goblins
|
||||
[extra-testing]=world-gremlins
|
||||
[extra]=world
|
||||
[multilib-staging]=lib32-goblins
|
||||
[multilib-testing]=lib32-gremlins
|
||||
[multilib]=lib32
|
||||
[community-staging]=galaxy-goblins
|
||||
[community-testing]=galaxy-gremlins
|
||||
[community]=galaxy
|
||||
)
|
||||
|
||||
update_gitignore() {
|
||||
{
|
||||
printf '*.service\n'
|
||||
printf '*.timer\n'
|
||||
printf '*.socket\n'
|
||||
} >> .gitignore
|
||||
}
|
||||
|
||||
migrate_to_yaml() {
|
||||
if [[ -f trunk/PKGBUILD ]]; then
|
||||
|
||||
stat_busy "Migrating ${pkgbase} to new layout"
|
||||
create_repo_db
|
||||
stat_done
|
||||
# shellcheck source=contrib/makepkg/PKGBUILD.proto
|
||||
source "trunk/PKGBUILD"
|
||||
update_yaml_base
|
||||
|
||||
if [[ -d x86_64 ]]; then
|
||||
local repos
|
||||
mapfile -t repos < <(ls x86_64)
|
||||
for r in "${repos[@]}"; do
|
||||
# shellcheck source=contrib/makepkg/PKGBUILD.proto
|
||||
source "x86_64/${r}/PKGBUILD"
|
||||
|
||||
local repo
|
||||
local pkgs
|
||||
local version
|
||||
local pkgfiles
|
||||
|
||||
mapfile -t pkgfiles < <(print_package_names)
|
||||
|
||||
pkgs=$(yaml_array "${pkgfiles[@]}")
|
||||
|
||||
version=$(get_full_version)
|
||||
|
||||
repo=".repos.${REPO_MAP[$r]}"
|
||||
|
||||
version="${version}" pkgs="${pkgs}" repo="${repo}" \
|
||||
yq -P 'with(
|
||||
eval(strenv(repo));
|
||||
.version = env(version) |
|
||||
.packages = env(pkgs) )' \
|
||||
-i "${REPO_DB}"
|
||||
|
||||
if [[ -n ${GIT_TOKEN} ]]; then
|
||||
local topic gitname
|
||||
gitname=$(get_compliant_name "${pkgbase}")
|
||||
|
||||
topic="${REPO_MAP[$r]}"
|
||||
if ! add_topic "${gitname}" "${topic}"; then
|
||||
warning "failed to add topic: ${topic}"
|
||||
fi
|
||||
|
||||
topic="${r}"
|
||||
if ! remove_topic "${gitname}" "${topic}"; then
|
||||
warning "failed to remove topic: ${topic}"
|
||||
fi
|
||||
fi
|
||||
|
||||
done
|
||||
git rm -r x86_64
|
||||
fi
|
||||
cp -r trunk/* ./
|
||||
|
||||
git rm -r trunk
|
||||
if [[ -f .artixlinux/agent.yaml ]]; then
|
||||
git rm .artixlinux/agent.yaml
|
||||
fi
|
||||
if [[ -f .gitignore ]]; then
|
||||
update_gitignore
|
||||
fi
|
||||
|
||||
if [[ -f Jenkinsfile ]]; then
|
||||
git mv Jenkinsfile "${REPO_CI}"
|
||||
fi
|
||||
|
||||
git add .
|
||||
git commit -m "migrate to new layout"
|
||||
fi
|
||||
}
|
@@ -31,13 +31,4 @@ find_cached_pkgfile() {
|
||||
|
||||
shopt -u extglob
|
||||
|
||||
get_pkgbasename() {
|
||||
local name="$1"
|
||||
local rm_pkg=${name%.pkg.tar*}
|
||||
rm_pkg=${rm_pkg%-*}
|
||||
rm_pkg=${rm_pkg%-*}
|
||||
rm_pkg=${rm_pkg%-*}
|
||||
printf "%s\n" "$rm_pkg"
|
||||
}
|
||||
|
||||
#}}}
|
||||
|
@@ -16,16 +16,18 @@ artixpkg_git_usage() {
|
||||
clone Clone a package repository
|
||||
config Configure a clone according to artix specs
|
||||
create Create a new Gitea package repository
|
||||
pull Pull a package repository
|
||||
push Push a package repository
|
||||
|
||||
OPTIONS
|
||||
-h, --help Show this help text
|
||||
|
||||
EXAMPLES
|
||||
$ ${COMMAND} clone libfoo linux libbar
|
||||
$ ${COMMAND} clone --maintainer maintainer-mynickname
|
||||
$ ${COMMAND} config -t libfoo
|
||||
$ ${COMMAND} config -u libfoo
|
||||
$ ${COMMAND} create libfoo
|
||||
$ ${COMMAND} clone --maintainer tux
|
||||
$ ${COMMAND} config --topic mytopic
|
||||
$ ${COMMAND} config --maintainer tux
|
||||
$ ${COMMAND} create -c libfoo
|
||||
_EOF_
|
||||
}
|
||||
|
||||
@@ -74,6 +76,14 @@ artixpkg_git() {
|
||||
artixpkg_git_pull "$@"
|
||||
exit 0
|
||||
;;
|
||||
push)
|
||||
_ARTOOLS_COMMAND+=" $1"
|
||||
shift
|
||||
# shellcheck source=src/lib/pkg/git/push.sh
|
||||
source "${LIBDIR}"/pkg/git/push.sh
|
||||
artixpkg_git_push "$@"
|
||||
exit 0
|
||||
;;
|
||||
-*)
|
||||
die "invalid argument: %s" "$1"
|
||||
;;
|
||||
|
@@ -21,12 +21,12 @@ artixpkg_git_clone_usage() {
|
||||
--protocol https Clone the repository over https
|
||||
-t, --topic=NAME Clone all packages of the named topic
|
||||
-j, --jobs N Run up to N jobs in parallel (default: $(nproc))
|
||||
--universe Clone all existing packages, useful for cache warming
|
||||
--all Clone all existing packages, useful for cache warming
|
||||
-h, --help Show this help text
|
||||
|
||||
EXAMPLES
|
||||
$ ${COMMAND} libfoo linux libbar
|
||||
$ ${COMMAND} --maintainer maintainer-mynickname
|
||||
$ ${COMMAND} --maintainer tux
|
||||
$ ${COMMAND} --topic myopic
|
||||
$ ${COMMAND} -j 8 --topic myopic
|
||||
_EOF_
|
||||
@@ -90,7 +90,7 @@ artixpkg_git_clone() {
|
||||
TOPIC="${1#*=}"
|
||||
shift
|
||||
;;
|
||||
--universe)
|
||||
--all)
|
||||
CLONE_ALL=1
|
||||
shift
|
||||
;;
|
||||
@@ -115,24 +115,18 @@ artixpkg_git_clone() {
|
||||
|
||||
# Query packages of a maintainer
|
||||
if [[ -n ${MAINTAINER} ]]; then
|
||||
stat_busy "Query mantainer packages"
|
||||
local maint
|
||||
maint="maintainer-${MAINTAINER}"
|
||||
mapfile -t pkgbases < <(search_topic "${maint}" | yq -P -r '.data | .[].name' | sort)
|
||||
stat_done
|
||||
local maint
|
||||
maint="maintainer-${MAINTAINER}"
|
||||
mapfile -t pkgbases < <(search_topic "${maint}" | yq -P -r '.data | .[].name' | sort)
|
||||
fi
|
||||
|
||||
if [[ -n ${TOPIC} ]]; then
|
||||
stat_busy "Query topic packages"
|
||||
mapfile -t pkgbases < <(search_topic "${TOPIC}" | yq -P -r '.data | .[].name' | sort)
|
||||
stat_done
|
||||
mapfile -t pkgbases < <(search_topic "${TOPIC}" | yq -P -r '.data | .[].name' | sort)
|
||||
fi
|
||||
|
||||
# Query all released packages
|
||||
if (( CLONE_ALL )); then
|
||||
stat_busy "Query all packages"
|
||||
mapfile -t pkgbases < <(list_all_repos | yq -P -r '.[] | .name' | sort)
|
||||
stat_done
|
||||
mapfile -t pkgbases < <(list_all_repos | yq -P -r '.[] | .name' | sort)
|
||||
fi
|
||||
|
||||
# parallelization
|
||||
|
@@ -7,13 +7,12 @@ ARTOOLS_INCLUDE_GIT_CONFIG_SH=1
|
||||
|
||||
# shellcheck source=src/lib/pkg/db/db.sh
|
||||
source "${LIBDIR}"/pkg/db/db.sh
|
||||
# shellcheck source=src/lib/pkg/db/migrate.sh
|
||||
source "${LIBDIR}"/pkg/db/migrate.sh
|
||||
|
||||
set -e
|
||||
|
||||
|
||||
commit_ci(){
|
||||
[[ -d .artixlinux ]] || mkdir .artixlinux
|
||||
printf "@Library('artix-ci') import org.artixlinux.RepoPackage\n" > "${REPO_CI}"
|
||||
{
|
||||
printf '\n'
|
||||
@@ -37,8 +36,8 @@ artixpkg_git_config_usage() {
|
||||
-h, --help Show this help text
|
||||
|
||||
EXAMPLES
|
||||
$ ${COMMAND} -t libfoo
|
||||
$ ${COMMAND} -u libfoo
|
||||
$ ${COMMAND} --maintainer tux
|
||||
$ ${COMMAND} --upstream libfoo
|
||||
$ ${COMMAND} *
|
||||
_EOF_
|
||||
}
|
||||
@@ -262,13 +261,6 @@ artixpkg_git_config() {
|
||||
fi
|
||||
fi
|
||||
|
||||
migrate_to_yaml
|
||||
|
||||
if [[ -f Jenkinsfile ]]; then
|
||||
git mv Jenkinsfile "${REPO_CI}"
|
||||
git commit -m "move jenkinsfile"
|
||||
fi
|
||||
|
||||
if [[ ! -f ${REPO_CI} ]]; then
|
||||
msg "Adding ci support ..."
|
||||
commit_ci
|
||||
|
@@ -5,9 +5,6 @@
|
||||
[[ -z ${ARTOOLS_INCLUDE_GIT_PULL_SH:-} ]] || return 0
|
||||
ARTOOLS_INCLUDE_GIT_PULL_SH=1
|
||||
|
||||
# shellcheck source=src/lib/pkg/git/config.sh
|
||||
source "${LIBDIR}"/pkg/git/config.sh
|
||||
|
||||
set -e
|
||||
|
||||
|
||||
@@ -20,14 +17,14 @@ artixpkg_git_pull_usage() {
|
||||
-m, --maintainer=NAME Pull all packages of the named maintainer
|
||||
-t, --topic=NAME Pull all packages of the named topic
|
||||
-j, --jobs N Run up to N jobs in parallel (default: $(nproc))
|
||||
--universe Pull all existing packages
|
||||
--all Pull all existing packages
|
||||
-h, --help Show this help text
|
||||
|
||||
EXAMPLES
|
||||
$ ${COMMAND} libfoo linux libbar
|
||||
$ ${COMMAND} --maintainer maintainer-mynickname
|
||||
$ ${COMMAND} --topic myopic
|
||||
$ ${COMMAND} -j 8 --topic myopic
|
||||
$ ${COMMAND} --maintainer tux
|
||||
$ ${COMMAND} --topic mytopic
|
||||
$ ${COMMAND} -j 8 --topic mytopic
|
||||
_EOF_
|
||||
}
|
||||
|
||||
@@ -73,7 +70,7 @@ artixpkg_git_pull() {
|
||||
TOPIC="${1#*=}"
|
||||
shift
|
||||
;;
|
||||
--universe)
|
||||
--all)
|
||||
PULL_ALL=1
|
||||
shift
|
||||
;;
|
||||
@@ -98,24 +95,18 @@ artixpkg_git_pull() {
|
||||
|
||||
# Query packages of a maintainer
|
||||
if [[ -n ${MAINTAINER} ]]; then
|
||||
stat_busy "Query mantainer packages"
|
||||
local maint
|
||||
maint="maintainer-${MAINTAINER}"
|
||||
mapfile -t pkgbases < <(search_topic "${maint}" | yq -P -r '.data | .[].name' | sort)
|
||||
stat_done
|
||||
local maint
|
||||
maint="maintainer-${MAINTAINER}"
|
||||
mapfile -t pkgbases < <(search_topic "${maint}" | yq -P -r '.data | .[].name' | sort)
|
||||
fi
|
||||
|
||||
if [[ -n ${TOPIC} ]]; then
|
||||
stat_busy "Query topic packages"
|
||||
mapfile -t pkgbases < <(search_topic "${TOPIC}" | yq -P -r '.data | .[].name' | sort)
|
||||
stat_done
|
||||
mapfile -t pkgbases < <(search_topic "${TOPIC}" | yq -P -r '.data | .[].name' | sort)
|
||||
fi
|
||||
|
||||
# Query all released packages
|
||||
if (( PULL_ALL )); then
|
||||
stat_busy "Query all packages"
|
||||
mapfile -t pkgbases < <(list_all_repos | yq -P -r '.[] | .name' | sort)
|
||||
stat_done
|
||||
mapfile -t pkgbases < <(list_all_repos | yq -P -r '.[] | .name' | sort)
|
||||
fi
|
||||
|
||||
# parallelization
|
||||
|
128
src/lib/pkg/git/push.sh
Normal file
128
src/lib/pkg/git/push.sh
Normal file
@@ -0,0 +1,128 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
[[ -z ${ARTOOLS_INCLUDE_GIT_PUSH_SH:-} ]] || return 0
|
||||
ARTOOLS_INCLUDE_GIT_PUSH_SH=1
|
||||
|
||||
set -e
|
||||
|
||||
|
||||
artixpkg_git_push_usage() {
|
||||
local -r COMMAND=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
|
||||
cat <<- _EOF_
|
||||
Usage: ${COMMAND} [OPTIONS] [PKGBASE]...
|
||||
|
||||
OPTIONS
|
||||
-m, --maintainer=NAME Push all packages of the named maintainer
|
||||
-t, --topic=NAME Push all packages of the named topic
|
||||
-j, --jobs N Run up to N jobs in parallel (default: $(nproc))
|
||||
-h, --help Show this help text
|
||||
|
||||
EXAMPLES
|
||||
$ ${COMMAND} libfoo linux libbar
|
||||
$ ${COMMAND} --maintainer tux
|
||||
$ ${COMMAND} --topic mytopic
|
||||
$ ${COMMAND} -j 8 --topic mytopic
|
||||
_EOF_
|
||||
}
|
||||
|
||||
|
||||
|
||||
artixpkg_git_push() {
|
||||
if (( $# < 1 )); then
|
||||
artixpkg_git_push_usage
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# options
|
||||
local MAINTAINER=
|
||||
local TOPIC=
|
||||
local CONFIGURE_OPTIONS=()
|
||||
local jobs=
|
||||
jobs=$(nproc)
|
||||
|
||||
local command=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
|
||||
|
||||
while (( $# )); do
|
||||
case $1 in
|
||||
-h|--help)
|
||||
artixpkg_git_push_usage
|
||||
exit 0
|
||||
;;
|
||||
-m|--maintainer)
|
||||
(( $# <= 1 )) && die "missing argument for %s" "$1"
|
||||
MAINTAINER="$2"
|
||||
shift 2
|
||||
;;
|
||||
--maintainer=*)
|
||||
MAINTAINER="${1#*=}"
|
||||
shift
|
||||
;;
|
||||
-t|--topic)
|
||||
(( $# <= 1 )) && die "missing argument for %s" "$1"
|
||||
TOPIC="$2"
|
||||
shift 2
|
||||
;;
|
||||
--topic=*)
|
||||
TOPIC="${1#*=}"
|
||||
shift
|
||||
;;
|
||||
-j|--jobs)
|
||||
(( $# <= 1 )) && die "missing argument for %s" "$1"
|
||||
jobs=$2
|
||||
shift 2
|
||||
;;
|
||||
--)
|
||||
shift
|
||||
break
|
||||
;;
|
||||
-*)
|
||||
die "invalid argument: %s" "$1"
|
||||
;;
|
||||
*)
|
||||
pkgbases=("$@")
|
||||
break
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Query packages of a maintainer
|
||||
if [[ -n ${MAINTAINER} ]]; then
|
||||
local maint
|
||||
maint="maintainer-${MAINTAINER}"
|
||||
mapfile -t pkgbases < <(search_topic "${maint}" | yq -P -r '.data | .[].name' | sort)
|
||||
fi
|
||||
|
||||
if [[ -n ${TOPIC} ]]; then
|
||||
mapfile -t pkgbases < <(search_topic "${TOPIC}" | yq -P -r '.data | .[].name' | sort)
|
||||
fi
|
||||
|
||||
# parallelization
|
||||
if [[ ${jobs} != 1 ]] && (( ${#pkgbases[@]} > 1 )); then
|
||||
# force colors in parallel if parent process is colorized
|
||||
if [[ -n ${BOLD} ]]; then
|
||||
export ARTOOLS_COLOR=always
|
||||
fi
|
||||
if ! parallel --bar --jobs "${jobs}" "${command}" ::: "${pkgbases[@]}"; then
|
||||
die 'Failed to push some packages, please check the output'
|
||||
exit 1
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
|
||||
for pkgbase in "${pkgbases[@]}"; do
|
||||
if [[ -d ${pkgbase} ]]; then
|
||||
( cd ${pkgbase} || return
|
||||
|
||||
msg "Pushing ${pkgbase} ..."
|
||||
if ! git push origin master; then
|
||||
die 'failed to push %s' "${pkgbase}"
|
||||
fi
|
||||
|
||||
)
|
||||
else
|
||||
warning "Skip pushing ${pkgbase}: Directory does not exist"
|
||||
fi
|
||||
done
|
||||
}
|
@@ -11,6 +11,33 @@ source "${LIBDIR}"/pkg/db/db.sh
|
||||
set -e
|
||||
|
||||
|
||||
check_pkgbuild_validity() {
|
||||
# shellcheck source=contrib/makepkg/PKGBUILD.proto
|
||||
. ./PKGBUILD
|
||||
|
||||
# skip when there are no sources available
|
||||
if (( ! ${#source[@]} )); then
|
||||
return
|
||||
fi
|
||||
|
||||
# validate sources hash algo is at least > sha1
|
||||
local bad_algos=("cksums" "md5sums" "sha1sums")
|
||||
local good_hash_algo=false
|
||||
|
||||
# from makepkg libmakepkg/util/schema.sh
|
||||
for integ in "${known_hash_algos[@]}"; do
|
||||
local sumname="${integ}sums"
|
||||
if [[ -n ${!sumname} ]] && ! in_array "${sumname}" "${bad_algos[@]}"; then
|
||||
good_hash_algo=true
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if ! $good_hash_algo; then
|
||||
die "PKGBUILD lacks a secure cryptographic checksum, insecure algorithms: ${bad_algos[*]}"
|
||||
fi
|
||||
}
|
||||
|
||||
artixpkg_repo_usage() {
|
||||
local -r COMMAND=${_ARTOOLS_COMMAND:-${BASH_SOURCE[0]##*/}}
|
||||
cat <<- _EOF_
|
||||
|
@@ -17,19 +17,16 @@ patch_pkgbase(){
|
||||
|
||||
case "${name}" in
|
||||
glibc)
|
||||
msg "Patching %s" "${name}"
|
||||
sed -e 's|{locale,systemd/system,tmpfiles.d}|{locale,tmpfiles.d}|' \
|
||||
-e '/nscd.service/d' \
|
||||
-i "${pkgbuild}"
|
||||
;;
|
||||
linux|linux-lts|linux-zen|linux-hardened|linux-rt|linux-rt-lts)
|
||||
msg "Patching %s" "${name}"
|
||||
sed -e 's|KBUILD_BUILD_HOST=.*|KBUILD_BUILD_HOST=artixlinux|' -i "${pkgbuild}"
|
||||
sed -e 's|CONFIG_DEFAULT_HOSTNAME=.*|CONFIG_DEFAULT_HOSTNAME="artixlinux"|' \
|
||||
-i config
|
||||
;;
|
||||
gstreamer|gst-plugins-*|licenses)
|
||||
msg "Patching %s" "${name}"
|
||||
sed -e 's|https://www.archlinux.org/|https://www.artixlinux.org/|' \
|
||||
-e 's|(Arch Linux)|(Artix Linux)|' \
|
||||
-i "${pkgbuild}"
|
||||
@@ -65,7 +62,7 @@ artixpkg_repo_import() {
|
||||
local TAG
|
||||
local rsync_args=()
|
||||
rsync_args+=(-aWxvci --progress --delete-before --no-R --no-implied-dirs)
|
||||
rsync_args+=(--exclude '.git' --exclude '.gitignore' --exclude 'README.md')
|
||||
rsync_args+=(--exclude '.git' --exclude '.gitignore' --exclude 'README.md' --exclude '.artixlinux')
|
||||
|
||||
while (( $# )); do
|
||||
case $1 in
|
||||
|
@@ -22,6 +22,7 @@ usage() {
|
||||
COMMANDS
|
||||
repo Pacman database modification for packge update, move etc
|
||||
git Manage Git packaging repositories and their configuration
|
||||
admin Managegement of topics and obsolete repos
|
||||
version Show artixpkg version information
|
||||
|
||||
OPTIONS
|
||||
|
@@ -18,16 +18,20 @@ rebuild=false
|
||||
|
||||
mkchrootpkg_args=(-c -n)
|
||||
|
||||
cmd=${0##*/}
|
||||
repo=${cmd#*-}
|
||||
base_devel=('base-devel')
|
||||
base_packages=('base-devel')
|
||||
chroots_pkg="${CHROOTS_DIR}/buildpkg"
|
||||
arch=$(uname -m)
|
||||
|
||||
cmd=${0##*/}
|
||||
|
||||
tag=${cmd#buildpkg-}
|
||||
arch=${tag##*-}
|
||||
repo=${tag%-*}
|
||||
|
||||
usage() {
|
||||
printf 'Usage: %s [options] -- [mkchrootpkg_args]\n' "${0##*/}"
|
||||
printf ' -r <dir> Create chroots in this directory\n'
|
||||
printf ' -d <dir> Destination repo chroot\n'
|
||||
printf ' -a <arch> Build arch chroot\n'
|
||||
printf ' -c Recreate the chroot before building\n'
|
||||
printf ' -m Major rebuild\n'
|
||||
printf ' -N Disable check() function\n'
|
||||
@@ -39,35 +43,46 @@ usage() {
|
||||
exit "$1"
|
||||
}
|
||||
|
||||
opts='hcCNmr:d:'
|
||||
opts='hcCNmr:d:a:'
|
||||
|
||||
while getopts "${opts}" arg; do
|
||||
case "${arg}" in
|
||||
r) chroots_pkg="$OPTARG" ;;
|
||||
d) repo="$OPTARG" ;;
|
||||
a) arch="$OPTARG" ;;
|
||||
c) create_first=true ;;
|
||||
m) rebuild=true ;;
|
||||
m) rebuild=true; repo=${repo%-*} ;;
|
||||
C) mkchrootpkg_args+=(-C) ;;
|
||||
N) mkchrootpkg_args+=(-N) ;;
|
||||
h|?) usage 0 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
if ${rebuild};then
|
||||
repo='default'
|
||||
else
|
||||
case ${repo} in
|
||||
system|world|galaxy) repo='default' ;;
|
||||
lib32*) base_devel+=('multilib-devel') ;;
|
||||
*-gremlins|*-goblins) repo=${repo#*-} ;;
|
||||
esac
|
||||
if [[ "${repo}" == lib32* ]]; then
|
||||
base_packages+=('multilib-devel')
|
||||
fi
|
||||
|
||||
pacman_conf="${DATADIR}/pacman.conf.d/${repo}.conf"
|
||||
[[ -f "${USER_CONF_DIR}/pacman.conf.d/${repo}.conf" ]] && pacman_conf="${USER_CONF_DIR}/pacman.conf.d/${repo}.conf"
|
||||
if [[ -f ${USER_CONF_DIR}/pacman.conf.d/${repo}.conf ]]; then
|
||||
pacman_conf="${USER_CONF_DIR}/pacman.conf.d/${repo}.conf"
|
||||
fi
|
||||
if [[ -f ${DATADIR}/pacman.conf.d/${repo}-${arch}.conf ]]; then
|
||||
pacman_conf="${DATADIR}/pacman.conf.d/${repo}-${arch}.conf"
|
||||
if [[ -f ${USER_CONF_DIR}/pacman.conf.d/${repo}-${arch}.conf ]]; then
|
||||
pacman_conf="${USER_CONF_DIR}/pacman.conf.d/${repo}-${arch}.conf"
|
||||
fi
|
||||
fi
|
||||
|
||||
makepkg_conf="${DATADIR}/makepkg.conf.d/${arch}.conf"
|
||||
[[ -f ${USER_CONF_DIR}/makepkg.conf.d/${arch}.conf ]] && makepkg_conf="${USER_CONF_DIR}/makepkg.conf.d/${arch}.conf"
|
||||
if [[ -f ${USER_CONF_DIR}/makepkg.conf.d/${arch}.conf ]]; then
|
||||
makepkg_conf="${USER_CONF_DIR}/makepkg.conf.d/${arch}.conf"
|
||||
fi
|
||||
if [[ -f ${DATADIR}/makepkg.conf.d/${repo}-${arch}.conf ]]; then
|
||||
makepkg_conf="${DATADIR}/makepkg.conf.d/${repo}-${arch}.conf"
|
||||
if [[ -f ${USER_CONF_DIR}/makepkg.conf.d/${repo}-${arch}.conf ]]; then
|
||||
makepkg_conf="${USER_CONF_DIR}/makepkg.conf.d/${repo}-${arch}.conf"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ -f "${DATADIR}/setarch-aliases.d/${arch}" ]]; then
|
||||
read -r set_arch < "${DATADIR}/setarch-aliases.d/${arch}"
|
||||
@@ -76,19 +91,19 @@ else
|
||||
fi
|
||||
|
||||
# Architecture-specific Mount
|
||||
# arch_mounts=()
|
||||
# if [[ -f "${DATADIR}/mount.d/${arch}" ]]; then
|
||||
# mapfile -t arch_mounts < "${DATADIR}/mount.d/${arch}"
|
||||
# fi
|
||||
# for arch_mount in "${arch_mounts[@]}"; do
|
||||
# if [[ $arch_mount = rw* ]]; then
|
||||
# arch_mount=${arch_mount#rw }
|
||||
# in_array "$arch_mount" "${mkchrootpkg_args[@]}" || mkchrootpkg_args+=("-d" "$arch_mount")
|
||||
# elif [[ $arch_mount = ro* ]]; then
|
||||
# arch_mount=${arch_mount#ro }
|
||||
# in_array "$arch_mount" "${mkchrootpkg_args[@]}" || mkchrootpkg_args+=("-D" "$arch_mount")
|
||||
# fi
|
||||
# done
|
||||
arch_mounts=()
|
||||
if [[ -f "${DATADIR}/mount.d/${arch}" ]]; then
|
||||
mapfile -t arch_mounts < "${DATADIR}/mount.d/${arch}"
|
||||
fi
|
||||
for arch_mount in "${arch_mounts[@]}"; do
|
||||
if [[ $arch_mount = rw* ]]; then
|
||||
arch_mount=${arch_mount#rw }
|
||||
in_array "$arch_mount" "${mkchrootpkg_args[@]}" || mkchrootpkg_args+=(-b "-B:$arch_mount")
|
||||
elif [[ $arch_mount = ro* ]]; then
|
||||
arch_mount=${arch_mount#ro }
|
||||
in_array "$arch_mount" "${mkchrootpkg_args[@]}" || mkchrootpkg_args+=(-b "-Br:$arch_mount")
|
||||
fi
|
||||
done
|
||||
|
||||
check_root SOURCE_DATE_EPOCH,SRCDEST,SRCPKGDEST,PKGDEST,LOGDEST,MAKEFLAGS,PACKAGER,GNUPGHOME "${BASH_SOURCE[0]}" "$@"
|
||||
|
||||
@@ -114,7 +129,7 @@ if ${create_first} || [[ ! -d "${chroots_pkg}/${repo}-${arch}" ]];then
|
||||
-C "${pacman_conf}" \
|
||||
-M "${makepkg_conf}" \
|
||||
"${chroots_pkg}/${repo}-${arch}/root" \
|
||||
"${base_devel[@]}" || abort
|
||||
"${base_packages[@]}" || abort
|
||||
else
|
||||
lock 9 "${chroots_pkg}/${repo}-${arch}/root.lock" "Locking clean chroot"
|
||||
chroot-run \
|
||||
|
@@ -23,41 +23,66 @@ usage() {
|
||||
list for both packages and a library list for both packages.
|
||||
|
||||
OPTIONS
|
||||
-r, --rmdir Remove the temporary directory
|
||||
-w, --warn Print a warning in case of differences
|
||||
-h, --help Show this help text
|
||||
-r, --rmdir Remove the temporary directory
|
||||
-w, --warn Print a warning in case of differences
|
||||
-M, --makepkg-config Set an alternate makepkg configuration file
|
||||
-h, --help Show this help text
|
||||
_EOF_
|
||||
}
|
||||
|
||||
RMDIR=0
|
||||
WARN=0
|
||||
MAKEPKG_CONF=/etc/makepkg.conf
|
||||
|
||||
OPT_SHORT='rwh'
|
||||
OPT_LONG=('rmdir' 'warn' 'help')
|
||||
if ! parseopts "$OPT_SHORT" "${OPT_LONG[@]}" -- "$@"; then
|
||||
exit 1
|
||||
fi
|
||||
set -- "${OPTRET[@]}"
|
||||
|
||||
while :; do
|
||||
# option checking
|
||||
while (( $# )); do
|
||||
case $1 in
|
||||
-r|--rmdir)
|
||||
RMDIR=1
|
||||
;;
|
||||
-w|--warn)
|
||||
WARN=1
|
||||
;;
|
||||
-h|--help)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
-r|--rmdir)
|
||||
RMDIR=1
|
||||
shift
|
||||
;;
|
||||
-w|--warn)
|
||||
WARN=1
|
||||
shift
|
||||
;;
|
||||
-M|--makepkg-config)
|
||||
MAKEPKG_CONF="$2"
|
||||
shift 2
|
||||
;;
|
||||
--)
|
||||
shift; break
|
||||
shift
|
||||
break
|
||||
;;
|
||||
-*|--*)
|
||||
die "invalid argument: %s" "$1"
|
||||
;;
|
||||
*)
|
||||
break
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
# Source makepkg.conf; fail if it is not found
|
||||
if [[ -r "${MAKEPKG_CONF}" ]]; then
|
||||
# shellcheck source=config/makepkg/x86_64.conf
|
||||
source "${MAKEPKG_CONF}"
|
||||
else
|
||||
die "${MAKEPKG_CONF} not found!"
|
||||
fi
|
||||
|
||||
# Source user-specific makepkg.conf overrides
|
||||
if [[ -r "${XDG_CONFIG_HOME:-$HOME/.config}/pacman/makepkg.conf" ]]; then
|
||||
# shellcheck source=/dev/null
|
||||
source "${XDG_CONFIG_HOME:-$HOME/.config}/pacman/makepkg.conf"
|
||||
elif [[ -r "$HOME/.makepkg.conf" ]]; then
|
||||
# shellcheck source=/dev/null
|
||||
source "$HOME/.makepkg.conf"
|
||||
fi
|
||||
|
||||
if [[ ! -f PKGBUILD ]]; then
|
||||
die 'This must be run in the directory of a built package.'
|
||||
fi
|
||||
@@ -84,8 +109,10 @@ for _pkgname in "${pkgname[@]}"; do
|
||||
|
||||
if (( $# )); then
|
||||
case $1 in
|
||||
*://*)
|
||||
pkgurl=$1 ;;
|
||||
/*|*/*)
|
||||
pkgurl=file://$(readlink -m "$1") ;;
|
||||
pkgurl=$(readlink -m "$1") ;;
|
||||
*.pkg.tar*)
|
||||
pkgurl=$1 ;;
|
||||
'')
|
||||
|
@@ -29,6 +29,7 @@ clean_first=0
|
||||
run_namcap=0
|
||||
run_checkpkg=0
|
||||
temp_chroot=0
|
||||
tmp_opts="nosuid,nodev,size=50%,nr_inodes=2m"
|
||||
|
||||
bindmounts=''
|
||||
|
||||
@@ -47,7 +48,7 @@ usage() {
|
||||
printf ' <chrootdir>/{root, copy} but only "root" is required\n'
|
||||
printf ' by default. The working copy will be created as needed\n'
|
||||
printf '\n'
|
||||
printf "The chroot 'root' directory must be created via the following\n"
|
||||
printf 'The chroot "root" directory must be created via the following\n'
|
||||
printf 'command:\n'
|
||||
printf ' mkchroot <chrootdir>/root base-devel\n'
|
||||
printf '\n'
|
||||
@@ -60,26 +61,24 @@ usage() {
|
||||
printf 'Flags:\n'
|
||||
printf ' -h This help\n'
|
||||
printf ' -c Clean the chroot before building\n'
|
||||
printf ' -d <dir> Bind directory into build chroot as read-write\n'
|
||||
printf ' -D <dir> Bind directory into build chroot as read-only\n'
|
||||
printf ' -b <arg> Bind mount directory/file into build chroot\n'
|
||||
printf ' -u Update the working copy of the chroot before building\n'
|
||||
printf ' This is useful for rebuilds without dirtying the pristine\n'
|
||||
printf ' chroot\n'
|
||||
printf ' This is useful for rebuilds without dirtying the pristine\n'
|
||||
printf ' chroot\n'
|
||||
printf ' -r <dir> The chroot dir to use\n'
|
||||
printf ' -I <pkg> Install a package into the working copy of the chroot\n'
|
||||
printf ' -l <copy> The directory to use as the working copy of the chroot\n'
|
||||
printf ' Useful for maintaining multiple copies\n'
|
||||
printf ' Default: %s\n' "$copy"
|
||||
printf ' -n Run namcap on the package\n'
|
||||
printf ' -C Run checkpkg on the package\n'
|
||||
printf ' -N Disable check() function\n'
|
||||
printf ' -C Run checkpkg on the package\n'
|
||||
printf ' -T Build in a temporary directory\n'
|
||||
printf ' -U Run makepkg as a specified user\n'
|
||||
exit 1
|
||||
}
|
||||
|
||||
# {{{ functions
|
||||
|
||||
# Usage: sync_chroot $chrootdir $copydir [$copy]
|
||||
sync_chroot() {
|
||||
local chrootdir=$1
|
||||
@@ -142,9 +141,7 @@ install_packages() {
|
||||
pkgnames=("${install_pkgs[@]##*/}")
|
||||
|
||||
cp -- "${install_pkgs[@]}" "$copydir/root/"
|
||||
chroot-run \
|
||||
-b "${bindmounts}" \
|
||||
"$copydir" \
|
||||
chroot-run -b "${bindmounts}" "$copydir" \
|
||||
bash -c 'yes y | pacman -U -- "$@"' -bash "${pkgnames[@]/#//root/}"
|
||||
ret=$?
|
||||
rm -- "${pkgnames[@]/#/$copydir/root/}"
|
||||
@@ -208,8 +205,6 @@ _chrootbuild() {
|
||||
# No coredumps
|
||||
ulimit -c 0
|
||||
|
||||
. /etc/locale.conf
|
||||
|
||||
# shellcheck source=/dev/null
|
||||
. /etc/profile
|
||||
|
||||
@@ -354,13 +349,11 @@ if [[ ! -d $copydir ]] || (( clean_first )); then
|
||||
sync_chroot "$chrootdir" "$copydir" "$copy"
|
||||
fi
|
||||
|
||||
|
||||
(( update_first )) && chroot-run \
|
||||
-b "${bindmounts}" \
|
||||
"$copydir" \
|
||||
pacman -Syuu --noconfirm
|
||||
|
||||
|
||||
if [[ -n ${install_pkgs[*]:-} ]]; then
|
||||
install_packages
|
||||
ret=$?
|
||||
@@ -378,6 +371,7 @@ download_sources
|
||||
prepare_chroot
|
||||
|
||||
if chroot-run \
|
||||
-t "${tmp_opts}" \
|
||||
-b "${bindmounts} -B:${PWD}:/startdir -B:${SRCDEST}:/srcdest" \
|
||||
"$copydir" \
|
||||
/chrootbuild "${makepkg_args[@]}"
|
||||
@@ -409,6 +403,7 @@ else
|
||||
warning "Skipped checkpkg due to missing repo packages"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# download package files if any non-local location exists
|
||||
for remotepkg in "${remotepkgs[@]}"; do
|
||||
if [[ $remotepkg != file://* ]]; then
|
||||
@@ -420,8 +415,9 @@ else
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
msg2 "Checking packages"
|
||||
sudo -u "$makepkg_user" checkpkg --rmdir --warn "${remotepkgs[@]/#file:\/\//}"
|
||||
sudo -u "$makepkg_user" checkpkg --rmdir --warn --makepkg-config "$copydir/etc/makepkg.conf" "${remotepkgs[@]/#file:\/\//}"
|
||||
fi
|
||||
true
|
||||
fi
|
||||
|
Reference in New Issue
Block a user