forked from mirrored-repos/manjaro-tools
integrate II
This commit is contained in:
parent
0ce003dfd5
commit
5db29bb256
14 changed files with 405 additions and 754 deletions
204
bin/basestrap.in
204
bin/basestrap.in
|
@ -10,177 +10,11 @@
|
|||
|
||||
shopt -s extglob
|
||||
|
||||
# generated from util-linux source: libmount/src/utils.c
|
||||
# declare -A pseudofs_types=([anon_inodefs]=1
|
||||
# [autofs]=1
|
||||
# [bdev]=1
|
||||
# [binfmt_misc]=1
|
||||
# [cgroup]=1
|
||||
# [configfs]=1
|
||||
# [cpuset]=1
|
||||
# [debugfs]=1
|
||||
# [devfs]=1
|
||||
# [devpts]=1
|
||||
# [devtmpfs]=1
|
||||
# [dlmfs]=1
|
||||
# [fuse.gvfs-fuse-daemon]=1
|
||||
# [fusectl]=1
|
||||
# [hugetlbfs]=1
|
||||
# [mqueue]=1
|
||||
# [nfsd]=1
|
||||
# [none]=1
|
||||
# [pipefs]=1
|
||||
# [proc]=1
|
||||
# [pstore]=1
|
||||
# [ramfs]=1
|
||||
# [rootfs]=1
|
||||
# [rpc_pipefs]=1
|
||||
# [securityfs]=1
|
||||
# [sockfs]=1
|
||||
# [spufs]=1
|
||||
# [sysfs]=1
|
||||
# [tmpfs]=1)
|
||||
#
|
||||
# # generated from: pkgfile -vbr '/fsck\..+' | awk -F. '{ print $NF }' | sort
|
||||
# declare -A fsck_types=([cramfs]=1
|
||||
# [exfat]=1
|
||||
# [ext2]=1
|
||||
# [ext3]=1
|
||||
# [ext4]=1
|
||||
# [ext4dev]=1
|
||||
# [jfs]=1
|
||||
# [minix]=1
|
||||
# [msdos]=1
|
||||
# [reiserfs]=1
|
||||
# [vfat]=1
|
||||
# [xfs]=1)
|
||||
#
|
||||
# out() { printf "$1 $2\n" "${@:3}"; }
|
||||
# error() { out "==> ERROR:" "$@"; } >&2
|
||||
# msg() { out "==>" "$@"; }
|
||||
# msg2() { out " ->" "$@";}
|
||||
# die() { error "$@"; exit 1; }
|
||||
#
|
||||
# ignore_error() {
|
||||
# "$@" 2>/dev/null
|
||||
# return 0
|
||||
# }
|
||||
#
|
||||
# in_array() {
|
||||
# local i
|
||||
# for i in "${@:2}"; do
|
||||
# [[ $1 = "$i" ]] && return
|
||||
# done
|
||||
# }
|
||||
|
||||
# track_mount() {
|
||||
# if [[ -z $CHROOT_ACTIVE_MOUNTS ]]; then
|
||||
# CHROOT_ACTIVE_MOUNTS=()
|
||||
# trap 'chroot_umount' EXIT
|
||||
# fi
|
||||
#
|
||||
# mount "$@" && CHROOT_ACTIVE_MOUNTS=("$2" "${CHROOT_ACTIVE_MOUNTS[@]}")
|
||||
# }
|
||||
#
|
||||
# mount_conditionally() {
|
||||
# local cond=$1; shift
|
||||
# if eval "$cond"; then
|
||||
# track_mount "$@"
|
||||
# fi
|
||||
# }
|
||||
#
|
||||
# api_fs_mount() {
|
||||
# mount_conditionally "! mountpoint -q '$1'" "$1" "$1" --bind &&
|
||||
# track_mount proc "$1/proc" -t proc -o nosuid,noexec,nodev &&
|
||||
# track_mount sys "$1/sys" -t sysfs -o nosuid,noexec,nodev,ro &&
|
||||
# ignore_error mount_conditionally "[[ -d '$1/sys/firmware/efi/efivars' ]]" \
|
||||
# efivarfs "$1/sys/firmware/efi/efivars" -t efivarfs -o nosuid,noexec,nodev &&
|
||||
# track_mount udev "$1/dev" -t devtmpfs -o mode=0755,nosuid &&
|
||||
# track_mount devpts "$1/dev/pts" -t devpts -o mode=0620,gid=5,nosuid,noexec &&
|
||||
# track_mount shm "$1/dev/shm" -t tmpfs -o mode=1777,nosuid,nodev &&
|
||||
# track_mount run "$1/run" -t tmpfs -o nosuid,nodev,mode=0755 &&
|
||||
# track_mount tmp "$1/tmp" -t tmpfs -o mode=1777,strictatime,nodev,nosuid
|
||||
# }
|
||||
#
|
||||
# chroot_umount() {
|
||||
# umount "${CHROOT_ACTIVE_MOUNTS[@]}"
|
||||
# }
|
||||
|
||||
# valid_number_of_base() {
|
||||
# local base=$1 len=${#2} i=
|
||||
#
|
||||
# for (( i = 0; i < len; i++ )); do
|
||||
# { _=$(( $base#${2:i:1} )) || return 1; } 2>/dev/null
|
||||
# done
|
||||
#
|
||||
# return 0
|
||||
# }
|
||||
#
|
||||
# mangle() {
|
||||
# local i= chr= out=
|
||||
#
|
||||
# unset {a..f} {A..F}
|
||||
#
|
||||
# for (( i = 0; i < ${#1}; i++ )); do
|
||||
# chr=${1:i:1}
|
||||
# case $chr in
|
||||
# [[:space:]\\])
|
||||
# printf -v chr '%03o' "'$chr"
|
||||
# out+=\\
|
||||
# ;;
|
||||
# esac
|
||||
# out+=$chr
|
||||
# done
|
||||
#
|
||||
# printf '%s' "$out"
|
||||
# }
|
||||
#
|
||||
# unmangle() {
|
||||
# local i= chr= out= len=$(( ${#1} - 4 ))
|
||||
#
|
||||
# unset {a..f} {A..F}
|
||||
#
|
||||
# for (( i = 0; i < len; i++ )); do
|
||||
# chr=${1:i:1}
|
||||
# case $chr in
|
||||
# \\)
|
||||
# if valid_number_of_base 8 "${1:i+1:3}" ||
|
||||
# valid_number_of_base 16 "${1:i+1:3}"; then
|
||||
# printf -v chr '%b' "${1:i:4}"
|
||||
# (( i += 3 ))
|
||||
# fi
|
||||
# ;;
|
||||
# esac
|
||||
# out+=$chr
|
||||
# done
|
||||
#
|
||||
# printf '%s' "$out${1:i}"
|
||||
# }
|
||||
#
|
||||
# dm_name_for_devnode() {
|
||||
# read dm_name <"/sys/class/block/${1#/dev/}/dm/name"
|
||||
# if [[ $dm_name ]]; then
|
||||
# printf '/dev/mapper/%s' "$dm_name"
|
||||
# else
|
||||
# # don't leave the caller hanging, just print the original name
|
||||
# # along with the failure.
|
||||
# print '%s' "$1"
|
||||
# error 'Failed to resolve device mapper name for: %s' "$1"
|
||||
# fi
|
||||
# }
|
||||
|
||||
# fstype_is_pseudofs() {
|
||||
# (( pseudofs_types["$1"] ))
|
||||
# }
|
||||
#
|
||||
# fstype_has_fsck() {
|
||||
# (( fsck_types["$1"] ))
|
||||
# }
|
||||
|
||||
source @libdir@/functions.sh
|
||||
if [[ -r @libdir@/functions.sh ]];then
|
||||
source @libdir@/functions.sh
|
||||
fi
|
||||
|
||||
newroot=/mnt
|
||||
#WORKDIR=${newroot}
|
||||
|
||||
hostcache=0
|
||||
copykeyring=1
|
||||
|
@ -215,30 +49,14 @@ fi
|
|||
|
||||
while getopts ':C:cdGiM' flag; do
|
||||
case $flag in
|
||||
C)
|
||||
pacman_config=$OPTARG
|
||||
;;
|
||||
d)
|
||||
directory=1
|
||||
;;
|
||||
c)
|
||||
hostcache=1
|
||||
;;
|
||||
i)
|
||||
interactive=1
|
||||
;;
|
||||
G)
|
||||
copykeyring=0
|
||||
;;
|
||||
M)
|
||||
copymirrorlist=0
|
||||
;;
|
||||
:)
|
||||
die '%s: option requires an argument -- '\''%s'\' "${0##*/}" "$OPTARG"
|
||||
;;
|
||||
?)
|
||||
die '%s: invalid option -- '\''%s'\' "${0##*/}" "$OPTARG"
|
||||
;;
|
||||
C) pacman_config=$OPTARG ;;
|
||||
d) directory=1 ;;
|
||||
c) hostcache=1 ;;
|
||||
i) interactive=1 ;;
|
||||
G) copykeyring=0 ;;
|
||||
M) copymirrorlist=0 ;;
|
||||
:) die '%s: option requires an argument -- '\''%s'\' "${0##*/}" "$OPTARG" ;;
|
||||
?) die '%s: invalid option -- '\''%s'\' "${0##*/}" "$OPTARG" ;;
|
||||
esac
|
||||
done
|
||||
shift $(( OPTIND - 1 ))
|
||||
|
|
|
@ -1,4 +1,12 @@
|
|||
#!/bin/bash
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
cp_profile_pkgs(){
|
||||
for pkg in $(cat ${profiledir}/$1.set); do
|
||||
|
@ -34,11 +42,11 @@ repo_create(){
|
|||
|
||||
cp_pkgs ${profile}
|
||||
|
||||
# if ${repo}; then
|
||||
# cd ${pkgdir}
|
||||
# repo_create
|
||||
# cd ..
|
||||
# fi
|
||||
if ${repo}; then
|
||||
cd ${pkgdir}
|
||||
repo_create
|
||||
cd ..
|
||||
fi
|
||||
|
||||
if ${sign}; then
|
||||
cd ${pkgdir}
|
||||
|
|
262
bin/build-set.in
262
bin/build-set.in
|
@ -1,132 +1,140 @@
|
|||
#!/bin/bash
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# m4_include(lib/common.sh)
|
||||
if [[ -r @libdir@/functions.sh ]];then
|
||||
source @libdir@/functions.sh
|
||||
fi
|
||||
|
||||
source @libdir@/functions.sh
|
||||
|
||||
get_profiles(){
|
||||
local prof= temp=
|
||||
for p in $(ls ${profiledir}/*.set);do
|
||||
temp=${p##*/}
|
||||
prof=${prof:-}${prof:+|}${temp%.set}
|
||||
done
|
||||
echo $prof
|
||||
}
|
||||
|
||||
get_user(){
|
||||
echo $(ls ${chrootdir} | cut -d' ' -f1 | grep -v root | grep -v lock)
|
||||
}
|
||||
|
||||
chroot_clean(){
|
||||
for copy in "${chrootdir}"/*; do
|
||||
[[ -d "${copy}" ]] || continue
|
||||
msg2 "Deleting chroot copy '$(basename "${copy}")'..."
|
||||
|
||||
exec 9>"${copy}.lock"
|
||||
if ! flock -n 9; then
|
||||
stat_busy "Locking chroot copy '${copy}'"
|
||||
flock 9
|
||||
stat_done
|
||||
fi
|
||||
|
||||
if [[ "$(stat -f -c %T "${copy}")" == btrfs ]]; then
|
||||
{ type -P btrfs && btrfs subvolume delete "${copy}"; } &>/dev/null
|
||||
fi
|
||||
rm -rf --one-file-system "${copy}"
|
||||
done
|
||||
exec 9>&-
|
||||
|
||||
rm -rf --one-file-system "${chrootdir}"
|
||||
}
|
||||
|
||||
chroot_create(){
|
||||
mkdir -p "${chrootdir}"
|
||||
setarch ${arch} \
|
||||
mkchroot ${mkmanjaroroot_args[*]} ${chrootdir}/root ${base_packages[*]} || abort
|
||||
}
|
||||
|
||||
chroot_update(){
|
||||
setarch "${arch}" \
|
||||
mkchroot ${mkmanjaroroot_args[*]} -u ${chrootdir}/$(get_user) || abort
|
||||
}
|
||||
|
||||
chroot_init(){
|
||||
if [[ ! -d "${chrootdir}" ]]; then
|
||||
msg "Creating chroot for [${branch}] (${arch})..."
|
||||
chroot_create
|
||||
elif ${clean_first};then
|
||||
msg "Creating chroot for [${branch}] (${arch})..."
|
||||
chroot_clean
|
||||
chroot_create
|
||||
else
|
||||
msg "Updating chroot for [${branch}] (${arch})..."
|
||||
chroot_update
|
||||
fi
|
||||
}
|
||||
|
||||
chroot_build_set(){
|
||||
chroot_init
|
||||
msg "Start building profile: [${profile}]"
|
||||
for pkg in $(cat ${profiledir}/${profile}.set); do
|
||||
cd $pkg
|
||||
setarch ${arch} \
|
||||
mkchrootpkg ${makechrootpkg_args[*]} -- "${makepkg_args[*]}" || break
|
||||
if [[ $pkg == 'eudev' ]]; then
|
||||
local blacklist=('libsystemd')
|
||||
pacman -Rdd "${blacklist[@]}" -r ${chrootdir}/$(get_user) --noconfirm
|
||||
local temp
|
||||
if [[ -z $PKGDEST ]];then
|
||||
temp=$pkg
|
||||
else
|
||||
temp=$pkgdir/$pkg
|
||||
fi
|
||||
pacman -U $temp*${ARCH}*pkg*z -r ${chrootdir}/$(get_user) --noconfirm
|
||||
fi
|
||||
cd ..
|
||||
done
|
||||
msg "Finished building profile: [${profile}]"
|
||||
}
|
||||
|
||||
chroot_build(){
|
||||
cd ${profile}
|
||||
chroot_init
|
||||
setarch ${arch} \
|
||||
mkchrootpkg ${makechrootpkg_args[*]} -- "${makepkg_args[*]}" || abort
|
||||
cd ..
|
||||
}
|
||||
|
||||
display_build_set(){
|
||||
msg "SETS:"
|
||||
msg2 "profiles: $profiles"
|
||||
msg2 "profile: $profile"
|
||||
msg2 "is_profile: ${is_profile}"
|
||||
if ${is_profile};then
|
||||
msg "These packages will be built:"
|
||||
local temp=$(cat ${profiledir}/${profile}.set)
|
||||
for p in ${temp[@]}; do
|
||||
msg2 "$p"
|
||||
done
|
||||
else
|
||||
msg "This package will be built:"
|
||||
msg2 "${profile}"
|
||||
fi
|
||||
}
|
||||
|
||||
run_pretend(){
|
||||
eval "case ${profile} in
|
||||
$profiles) is_profile=true ;;
|
||||
*) is_profile=false ;;
|
||||
esac"
|
||||
display_build_set
|
||||
exit 0
|
||||
}
|
||||
|
||||
run(){
|
||||
eval "case ${profile} in
|
||||
$profiles) is_profile=true; display_build_set && chroot_build_set ;;
|
||||
*) display_build_set && chroot_build ;;
|
||||
esac"
|
||||
}
|
||||
# get_profiles(){
|
||||
# local prof= temp=
|
||||
# for p in $(ls ${profiledir}/*.set);do
|
||||
# temp=${p##*/}
|
||||
# prof=${prof:-}${prof:+|}${temp%.set}
|
||||
# done
|
||||
# echo $prof
|
||||
# }
|
||||
#
|
||||
# get_user(){
|
||||
# echo $(ls ${chrootdir} | cut -d' ' -f1 | grep -v root | grep -v lock)
|
||||
# }
|
||||
#
|
||||
# chroot_clean(){
|
||||
# for copy in "${chrootdir}"/*; do
|
||||
# [[ -d "${copy}" ]] || continue
|
||||
# msg2 "Deleting chroot copy '$(basename "${copy}")'..."
|
||||
#
|
||||
# exec 9>"${copy}.lock"
|
||||
# if ! flock -n 9; then
|
||||
# stat_busy "Locking chroot copy '${copy}'"
|
||||
# flock 9
|
||||
# stat_done
|
||||
# fi
|
||||
#
|
||||
# if [[ "$(stat -f -c %T "${copy}")" == btrfs ]]; then
|
||||
# { type -P btrfs && btrfs subvolume delete "${copy}"; } &>/dev/null
|
||||
# fi
|
||||
# rm -rf --one-file-system "${copy}"
|
||||
# done
|
||||
# exec 9>&-
|
||||
#
|
||||
# rm -rf --one-file-system "${chrootdir}"
|
||||
# }
|
||||
#
|
||||
# chroot_create(){
|
||||
# mkdir -p "${chrootdir}"
|
||||
# setarch ${arch} \
|
||||
# mkchroot ${mkmanjaroroot_args[*]} ${chrootdir}/root ${base_packages[*]} || abort
|
||||
# }
|
||||
#
|
||||
# chroot_update(){
|
||||
# setarch "${arch}" \
|
||||
# mkchroot ${mkmanjaroroot_args[*]} -u ${chrootdir}/$(get_user) || abort
|
||||
# }
|
||||
#
|
||||
# chroot_init(){
|
||||
# if [[ ! -d "${chrootdir}" ]]; then
|
||||
# msg "Creating chroot for [${branch}] (${arch})..."
|
||||
# chroot_create
|
||||
# elif ${clean_first};then
|
||||
# msg "Creating chroot for [${branch}] (${arch})..."
|
||||
# chroot_clean
|
||||
# chroot_create
|
||||
# else
|
||||
# msg "Updating chroot for [${branch}] (${arch})..."
|
||||
# chroot_update
|
||||
# fi
|
||||
# }
|
||||
#
|
||||
# chroot_build_set(){
|
||||
# chroot_init
|
||||
# msg "Start building profile: [${profile}]"
|
||||
# for pkg in $(cat ${profiledir}/${profile}.set); do
|
||||
# cd $pkg
|
||||
# setarch ${arch} \
|
||||
# mkchrootpkg ${makechrootpkg_args[*]} -- "${makepkg_args[*]}" || break
|
||||
# if [[ $pkg == 'eudev' ]]; then
|
||||
# local blacklist=('libsystemd')
|
||||
# pacman -Rdd "${blacklist[@]}" -r ${chrootdir}/$(get_user) --noconfirm
|
||||
# local temp
|
||||
# if [[ -z $PKGDEST ]];then
|
||||
# temp=$pkg
|
||||
# else
|
||||
# temp=$pkgdir/$pkg
|
||||
# fi
|
||||
# pacman -U $temp*${ARCH}*pkg*z -r ${chrootdir}/$(get_user) --noconfirm
|
||||
# fi
|
||||
# cd ..
|
||||
# done
|
||||
# msg "Finished building profile: [${profile}]"
|
||||
# }
|
||||
#
|
||||
# chroot_build(){
|
||||
# cd ${profile}
|
||||
# chroot_init
|
||||
# setarch ${arch} \
|
||||
# mkchrootpkg ${makechrootpkg_args[*]} -- "${makepkg_args[*]}" || abort
|
||||
# cd ..
|
||||
# }
|
||||
#
|
||||
# display_build_set(){
|
||||
# msg "SETS:"
|
||||
# msg2 "profiles: $profiles"
|
||||
# msg2 "profile: $profile"
|
||||
# msg2 "is_profile: ${is_profile}"
|
||||
# if ${is_profile};then
|
||||
# msg "These packages will be built:"
|
||||
# local temp=$(cat ${profiledir}/${profile}.set)
|
||||
# for p in ${temp[@]}; do
|
||||
# msg2 "$p"
|
||||
# done
|
||||
# else
|
||||
# msg "This package will be built:"
|
||||
# msg2 "${profile}"
|
||||
# fi
|
||||
# }
|
||||
#
|
||||
# run_pretend(){
|
||||
# eval "case ${profile} in
|
||||
# $profiles) is_profile=true ;;
|
||||
# *) is_profile=false ;;
|
||||
# esac"
|
||||
# display_build_set
|
||||
# exit 1
|
||||
# }
|
||||
#
|
||||
# run(){
|
||||
# eval "case ${profile} in
|
||||
# $profiles) is_profile=true; display_build_set && chroot_build_set ;;
|
||||
# *) display_build_set && chroot_build ;;
|
||||
# esac"
|
||||
# }
|
||||
|
||||
#################################MAIN##########################################
|
||||
|
||||
|
@ -254,8 +262,6 @@ pacman_conf="@pkgdatadir@/pacman-${pacman_conf_arch}.conf"
|
|||
makepkg_conf="@pkgdatadir@/makepkg-${arch}.conf"
|
||||
|
||||
chrootdir=${chroots}/${branch}-${arch}
|
||||
#WORKDIR=${chrootdir}
|
||||
|
||||
|
||||
if ${nosystemd};then
|
||||
mkmanjaroroot_args+=(-x)
|
||||
|
|
|
@ -1,8 +1,16 @@
|
|||
#!/bin/bash
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
#m4_include(lib/common.sh)
|
||||
|
||||
source @libdir@/functions.sh
|
||||
if [[ -r @libdir@/functions.sh ]];then
|
||||
source @libdir@/functions.sh
|
||||
fi
|
||||
|
||||
# Source makepkg.conf; fail if it is not found
|
||||
if [[ -r '/etc/makepkg.conf' ]]; then
|
||||
|
@ -26,9 +34,10 @@ if [[ $arch == 'any' ]]; then
|
|||
fi
|
||||
|
||||
STARTDIR=$(pwd)
|
||||
#TEMPDIR=$(mktemp -d --tmpdir checkpkg-script.XXXX)
|
||||
WORKDIR=$(setup_workdir)
|
||||
cd "$WORKDIR"
|
||||
|
||||
TEMPDIR=$(mktemp -d --tmpdir checkpkg-script.XXXX)
|
||||
|
||||
cd "$TEMPDIR"
|
||||
|
||||
for _pkgname in "${pkgname[@]}"; do
|
||||
pkgfile=${_pkgname}-$(get_full_version $_pkgname)-${CARCH}${PKGEXT}
|
||||
|
@ -83,4 +92,4 @@ for _pkgname in "${pkgname[@]}"; do
|
|||
fi
|
||||
done
|
||||
|
||||
msg "Files saved to $WORKDIR"
|
||||
msg "Files saved to $TEMPDIR"
|
||||
|
|
|
@ -1,8 +1,16 @@
|
|||
#!/bin/bash
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
#m4_include(lib/common.sh)
|
||||
|
||||
source @libdir@/functions.sh
|
||||
if [[ -r @libdir@/functions.sh ]];then
|
||||
source @libdir@/functions.sh
|
||||
fi
|
||||
|
||||
set -e
|
||||
shopt -s extglob
|
||||
|
@ -41,21 +49,6 @@ else
|
|||
pushd $WORKDIR >/dev/null
|
||||
fi
|
||||
|
||||
process_sofile() {
|
||||
# extract the library name: libfoo.so
|
||||
soname="${sofile%.so?(+(.+([0-9])))}".so
|
||||
# extract the major version: 1
|
||||
soversion="${sofile##*\.so\.}"
|
||||
if [[ "$soversion" = "$sofile" ]] && (($IGNORE_INTERNAL)); then
|
||||
continue
|
||||
fi
|
||||
if ! in_array "${soname}=${soversion}-${soarch}" ${soobjects[@]}; then
|
||||
# libfoo.so=1-64
|
||||
echo "${soname}=${soversion}-${soarch}"
|
||||
soobjects=(${soobjects[@]} "${soname}=${soversion}-${soarch}")
|
||||
fi
|
||||
}
|
||||
|
||||
case $script_mode in
|
||||
deps) find_args="-perm -u+x";;
|
||||
provides) find_args="-name *.so*";;
|
||||
|
|
|
@ -1,11 +1,16 @@
|
|||
#!/bin/bash
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# finddeps - find packages that depend on a given depname
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# m4_include(lib/common.sh)
|
||||
|
||||
source @libdir@/functions.sh
|
||||
# if [[ -r @libdir@/functions.sh ]];then
|
||||
# source @libdir@/functions.sh
|
||||
# fi
|
||||
|
||||
match=$1
|
||||
|
||||
|
|
180
bin/fstabgen.in
180
bin/fstabgen.in
|
@ -1,176 +1,18 @@
|
|||
#!/bin/bash
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
shopt -s extglob
|
||||
|
||||
# generated from util-linux source: libmount/src/utils.c
|
||||
# declare -A pseudofs_types=([anon_inodefs]=1
|
||||
# [autofs]=1
|
||||
# [bdev]=1
|
||||
# [binfmt_misc]=1
|
||||
# [cgroup]=1
|
||||
# [configfs]=1
|
||||
# [cpuset]=1
|
||||
# [debugfs]=1
|
||||
# [devfs]=1
|
||||
# [devpts]=1
|
||||
# [devtmpfs]=1
|
||||
# [dlmfs]=1
|
||||
# [fuse.gvfs-fuse-daemon]=1
|
||||
# [fusectl]=1
|
||||
# [hugetlbfs]=1
|
||||
# [mqueue]=1
|
||||
# [nfsd]=1
|
||||
# [none]=1
|
||||
# [pipefs]=1
|
||||
# [proc]=1
|
||||
# [pstore]=1
|
||||
# [ramfs]=1
|
||||
# [rootfs]=1
|
||||
# [rpc_pipefs]=1
|
||||
# [securityfs]=1
|
||||
# [sockfs]=1
|
||||
# [spufs]=1
|
||||
# [sysfs]=1
|
||||
# [tmpfs]=1)
|
||||
#
|
||||
# # generated from: pkgfile -vbr '/fsck\..+' | awk -F. '{ print $NF }' | sort
|
||||
# declare -A fsck_types=([cramfs]=1
|
||||
# [exfat]=1
|
||||
# [ext2]=1
|
||||
# [ext3]=1
|
||||
# [ext4]=1
|
||||
# [ext4dev]=1
|
||||
# [jfs]=1
|
||||
# [minix]=1
|
||||
# [msdos]=1
|
||||
# [reiserfs]=1
|
||||
# [vfat]=1
|
||||
# [xfs]=1)
|
||||
#
|
||||
# out() { printf "$1 $2\n" "${@:3}"; }
|
||||
# error() { out "==> ERROR:" "$@"; } >&2
|
||||
# msg() { out "==>" "$@"; }
|
||||
# msg2() { out " ->" "$@";}
|
||||
# die() { error "$@"; exit 1; }
|
||||
#
|
||||
# ignore_error() {
|
||||
# "$@" 2>/dev/null
|
||||
# return 0
|
||||
# }
|
||||
#
|
||||
# in_array() {
|
||||
# local i
|
||||
# for i in "${@:2}"; do
|
||||
# [[ $1 = "$i" ]] && return
|
||||
# done
|
||||
# }
|
||||
#
|
||||
# track_mount() {
|
||||
# if [[ -z $CHROOT_ACTIVE_MOUNTS ]]; then
|
||||
# CHROOT_ACTIVE_MOUNTS=()
|
||||
# trap 'chroot_umount' EXIT
|
||||
# fi
|
||||
#
|
||||
# mount "$@" && CHROOT_ACTIVE_MOUNTS=("$2" "${CHROOT_ACTIVE_MOUNTS[@]}")
|
||||
# }
|
||||
#
|
||||
# mount_conditionally() {
|
||||
# local cond=$1; shift
|
||||
# if eval "$cond"; then
|
||||
# track_mount "$@"
|
||||
# fi
|
||||
# }
|
||||
#
|
||||
# api_fs_mount() {
|
||||
# mount_conditionally "! mountpoint -q '$1'" "$1" "$1" --bind &&
|
||||
# track_mount proc "$1/proc" -t proc -o nosuid,noexec,nodev &&
|
||||
# track_mount sys "$1/sys" -t sysfs -o nosuid,noexec,nodev,ro &&
|
||||
# ignore_error mount_conditionally "[[ -d '$1/sys/firmware/efi/efivars' ]]" \
|
||||
# efivarfs "$1/sys/firmware/efi/efivars" -t efivarfs -o nosuid,noexec,nodev &&
|
||||
# track_mount udev "$1/dev" -t devtmpfs -o mode=0755,nosuid &&
|
||||
# track_mount devpts "$1/dev/pts" -t devpts -o mode=0620,gid=5,nosuid,noexec &&
|
||||
# track_mount shm "$1/dev/shm" -t tmpfs -o mode=1777,nosuid,nodev &&
|
||||
# track_mount run "$1/run" -t tmpfs -o nosuid,nodev,mode=0755 &&
|
||||
# track_mount tmp "$1/tmp" -t tmpfs -o mode=1777,strictatime,nodev,nosuid
|
||||
# }
|
||||
#
|
||||
# chroot_umount() {
|
||||
# umount "${CHROOT_ACTIVE_MOUNTS[@]}"
|
||||
# }
|
||||
#
|
||||
# valid_number_of_base() {
|
||||
# local base=$1 len=${#2} i=
|
||||
#
|
||||
# for (( i = 0; i < len; i++ )); do
|
||||
# { _=$(( $base#${2:i:1} )) || return 1; } 2>/dev/null
|
||||
# done
|
||||
#
|
||||
# return 0
|
||||
# }
|
||||
#
|
||||
# mangle() {
|
||||
# local i= chr= out=
|
||||
#
|
||||
# unset {a..f} {A..F}
|
||||
#
|
||||
# for (( i = 0; i < ${#1}; i++ )); do
|
||||
# chr=${1:i:1}
|
||||
# case $chr in
|
||||
# [[:space:]\\])
|
||||
# printf -v chr '%03o' "'$chr"
|
||||
# out+=\\
|
||||
# ;;
|
||||
# esac
|
||||
# out+=$chr
|
||||
# done
|
||||
#
|
||||
# printf '%s' "$out"
|
||||
# }
|
||||
#
|
||||
# unmangle() {
|
||||
# local i= chr= out= len=$(( ${#1} - 4 ))
|
||||
#
|
||||
# unset {a..f} {A..F}
|
||||
#
|
||||
# for (( i = 0; i < len; i++ )); do
|
||||
# chr=${1:i:1}
|
||||
# case $chr in
|
||||
# \\)
|
||||
# if valid_number_of_base 8 "${1:i+1:3}" ||
|
||||
# valid_number_of_base 16 "${1:i+1:3}"; then
|
||||
# printf -v chr '%b' "${1:i:4}"
|
||||
# (( i += 3 ))
|
||||
# fi
|
||||
# ;;
|
||||
# esac
|
||||
# out+=$chr
|
||||
# done
|
||||
#
|
||||
# printf '%s' "$out${1:i}"
|
||||
# }
|
||||
#
|
||||
# dm_name_for_devnode() {
|
||||
# read dm_name <"/sys/class/block/${1#/dev/}/dm/name"
|
||||
# if [[ $dm_name ]]; then
|
||||
# printf '/dev/mapper/%s' "$dm_name"
|
||||
# else
|
||||
# # don't leave the caller hanging, just print the original name
|
||||
# # along with the failure.
|
||||
# print '%s' "$1"
|
||||
# error 'Failed to resolve device mapper name for: %s' "$1"
|
||||
# fi
|
||||
# }
|
||||
#
|
||||
# fstype_is_pseudofs() {
|
||||
# (( pseudofs_types["$1"] ))
|
||||
# }
|
||||
#
|
||||
# fstype_has_fsck() {
|
||||
# (( fsck_types["$1"] ))
|
||||
# }
|
||||
#
|
||||
|
||||
source @libdir@/functions.sh
|
||||
if [[ -r @libdir@/functions.sh ]];then
|
||||
source @libdir@/functions.sh
|
||||
fi
|
||||
|
||||
write_source() {
|
||||
local src=$1 spec= label= uuid= comment=()
|
||||
|
|
32
bin/lddd.in
32
bin/lddd.in
|
@ -1,11 +1,16 @@
|
|||
#!/bin/bash
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# lddd - find broken library links on your machine
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# m4_include(lib/common.sh)
|
||||
|
||||
source @libdir@/functions.sh
|
||||
if [[ -r @libdir@/functions.sh ]];then
|
||||
source @libdir@/functions.sh
|
||||
fi
|
||||
|
||||
ifs=$IFS
|
||||
IFS="${IFS}:"
|
||||
|
@ -13,8 +18,7 @@ IFS="${IFS}:"
|
|||
libdirs="/lib /usr/lib /usr/local/lib $(cat /etc/ld.so.conf.d/*)"
|
||||
extras=
|
||||
|
||||
#TEMPDIR=$(mktemp -d --tmpdir lddd-script.XXXX)
|
||||
WORKDIR=$(setup_workdir)
|
||||
TEMPDIR=$(mktemp -d --tmpdir lddd-script.XXXX)
|
||||
|
||||
msg 'Go out and drink some tea, this will take a while :) ...'
|
||||
# Check ELF binaries in the PATH and specified dir trees.
|
||||
|
@ -34,18 +38,18 @@ for tree in $PATH $libdirs $extras; do
|
|||
# Is an ELF binary.
|
||||
if (( $(ldd $i 2>/dev/null | grep -c 'not found') != 0 )); then
|
||||
# Missing lib.
|
||||
echo "$i:" >> $WORKDIR/raw.txt
|
||||
ldd $i 2>/dev/null | grep 'not found' >> $WORKDIR/raw.txt
|
||||
echo "$i:" >> $TEMPDIR/raw.txt
|
||||
ldd $i 2>/dev/null | grep 'not found' >> $TEMPDIR/raw.txt
|
||||
fi
|
||||
fi
|
||||
done
|
||||
done
|
||||
grep '^/' $WORKDIR/raw.txt | sed -e 's/://g' >> $WORKDIR/affected-files.txt
|
||||
grep '^/' $TEMPDIR/raw.txt | sed -e 's/://g' >> $TEMPDIR/affected-files.txt
|
||||
# invoke pacman
|
||||
for i in $(cat $WORKDIR/affected-files.txt); do
|
||||
pacman -Qo $i | awk '{print $4,$5}' >> $WORKDIR/pacman.txt
|
||||
for i in $(cat $TEMPDIR/affected-files.txt); do
|
||||
pacman -Qo $i | awk '{print $4,$5}' >> $TEMPDIR/pacman.txt
|
||||
done
|
||||
# clean list
|
||||
sort -u $WORKDIR/pacman.txt >> $WORKDIR/possible-rebuilds.txt
|
||||
sort -u $TEMPDIR/pacman.txt >> $TEMPDIR/possible-rebuilds.txt
|
||||
|
||||
msg "Files saved to $WORKDIR"
|
||||
msg "Files saved to $TEMPDIR"
|
||||
|
|
|
@ -1,178 +1,18 @@
|
|||
#!/bin/bash
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
shopt -s extglob
|
||||
|
||||
# # generated from util-linux source: libmount/src/utils.c
|
||||
# declare -A pseudofs_types=([anon_inodefs]=1
|
||||
# [autofs]=1
|
||||
# [bdev]=1
|
||||
# [binfmt_misc]=1
|
||||
# [cgroup]=1
|
||||
# [configfs]=1
|
||||
# [cpuset]=1
|
||||
# [debugfs]=1
|
||||
# [devfs]=1
|
||||
# [devpts]=1
|
||||
# [devtmpfs]=1
|
||||
# [dlmfs]=1
|
||||
# [fuse.gvfs-fuse-daemon]=1
|
||||
# [fusectl]=1
|
||||
# [hugetlbfs]=1
|
||||
# [mqueue]=1
|
||||
# [nfsd]=1
|
||||
# [none]=1
|
||||
# [pipefs]=1
|
||||
# [proc]=1
|
||||
# [pstore]=1
|
||||
# [ramfs]=1
|
||||
# [rootfs]=1
|
||||
# [rpc_pipefs]=1
|
||||
# [securityfs]=1
|
||||
# [sockfs]=1
|
||||
# [spufs]=1
|
||||
# [sysfs]=1
|
||||
# [tmpfs]=1)
|
||||
#
|
||||
# # generated from: pkgfile -vbr '/fsck\..+' | awk -F. '{ print $NF }' | sort
|
||||
# declare -A fsck_types=([cramfs]=1
|
||||
# [exfat]=1
|
||||
# [ext2]=1
|
||||
# [ext3]=1
|
||||
# [ext4]=1
|
||||
# [ext4dev]=1
|
||||
# [jfs]=1
|
||||
# [minix]=1
|
||||
# [msdos]=1
|
||||
# [reiserfs]=1
|
||||
# [vfat]=1
|
||||
# [xfs]=1)
|
||||
|
||||
# out() { printf "$1 $2\n" "${@:3}"; }
|
||||
# error() { out "==> ERROR:" "$@"; } >&2
|
||||
# msg() { out "==>" "$@"; }
|
||||
# msg2() { out " ->" "$@";}
|
||||
# die() { error "$@"; exit 1; }
|
||||
|
||||
# ignore_error() {
|
||||
# "$@" 2>/dev/null
|
||||
# return 0
|
||||
# }
|
||||
|
||||
# in_array() {
|
||||
# local i
|
||||
# for i in "${@:2}"; do
|
||||
# [[ $1 = "$i" ]] && return
|
||||
# done
|
||||
# }
|
||||
|
||||
# track_mount() {
|
||||
# if [[ -z $CHROOT_ACTIVE_MOUNTS ]]; then
|
||||
# CHROOT_ACTIVE_MOUNTS=()
|
||||
# trap 'chroot_umount' EXIT
|
||||
# fi
|
||||
#
|
||||
# mount "$@" && CHROOT_ACTIVE_MOUNTS=("$2" "${CHROOT_ACTIVE_MOUNTS[@]}")
|
||||
# }
|
||||
#
|
||||
# mount_conditionally() {
|
||||
# local cond=$1; shift
|
||||
# if eval "$cond"; then
|
||||
# track_mount "$@"
|
||||
# fi
|
||||
# }
|
||||
#
|
||||
# api_fs_mount() {
|
||||
# mount_conditionally "! mountpoint -q '$1'" "$1" "$1" --bind &&
|
||||
# track_mount proc "$1/proc" -t proc -o nosuid,noexec,nodev &&
|
||||
# track_mount sys "$1/sys" -t sysfs -o nosuid,noexec,nodev,ro &&
|
||||
# ignore_error mount_conditionally "[[ -d '$1/sys/firmware/efi/efivars' ]]" \
|
||||
# efivarfs "$1/sys/firmware/efi/efivars" -t efivarfs -o nosuid,noexec,nodev &&
|
||||
# track_mount udev "$1/dev" -t devtmpfs -o mode=0755,nosuid &&
|
||||
# track_mount devpts "$1/dev/pts" -t devpts -o mode=0620,gid=5,nosuid,noexec &&
|
||||
# track_mount shm "$1/dev/shm" -t tmpfs -o mode=1777,nosuid,nodev &&
|
||||
# track_mount run "$1/run" -t tmpfs -o nosuid,nodev,mode=0755 &&
|
||||
# track_mount tmp "$1/tmp" -t tmpfs -o mode=1777,strictatime,nodev,nosuid
|
||||
# }
|
||||
#
|
||||
# chroot_umount() {
|
||||
# umount "${CHROOT_ACTIVE_MOUNTS[@]}"
|
||||
# }
|
||||
|
||||
# valid_number_of_base() {
|
||||
# local base=$1 len=${#2} i=
|
||||
#
|
||||
# for (( i = 0; i < len; i++ )); do
|
||||
# { _=$(( $base#${2:i:1} )) || return 1; } 2>/dev/null
|
||||
# done
|
||||
#
|
||||
# return 0
|
||||
# }
|
||||
#
|
||||
# mangle() {
|
||||
# local i= chr= out=
|
||||
#
|
||||
# unset {a..f} {A..F}
|
||||
#
|
||||
# for (( i = 0; i < ${#1}; i++ )); do
|
||||
# chr=${1:i:1}
|
||||
# case $chr in
|
||||
# [[:space:]\\])
|
||||
# printf -v chr '%03o' "'$chr"
|
||||
# out+=\\
|
||||
# ;;
|
||||
# esac
|
||||
# out+=$chr
|
||||
# done
|
||||
#
|
||||
# printf '%s' "$out"
|
||||
# }
|
||||
#
|
||||
# unmangle() {
|
||||
# local i= chr= out= len=$(( ${#1} - 4 ))
|
||||
#
|
||||
# unset {a..f} {A..F}
|
||||
#
|
||||
# for (( i = 0; i < len; i++ )); do
|
||||
# chr=${1:i:1}
|
||||
# case $chr in
|
||||
# \\)
|
||||
# if valid_number_of_base 8 "${1:i+1:3}" ||
|
||||
# valid_number_of_base 16 "${1:i+1:3}"; then
|
||||
# printf -v chr '%b' "${1:i:4}"
|
||||
# (( i += 3 ))
|
||||
# fi
|
||||
# ;;
|
||||
# esac
|
||||
# out+=$chr
|
||||
# done
|
||||
#
|
||||
# printf '%s' "$out${1:i}"
|
||||
# }
|
||||
#
|
||||
# dm_name_for_devnode() {
|
||||
# read dm_name <"/sys/class/block/${1#/dev/}/dm/name"
|
||||
# if [[ $dm_name ]]; then
|
||||
# printf '/dev/mapper/%s' "$dm_name"
|
||||
# else
|
||||
# # don't leave the caller hanging, just print the original name
|
||||
# # along with the failure.
|
||||
# print '%s' "$1"
|
||||
# error 'Failed to resolve device mapper name for: %s' "$1"
|
||||
# fi
|
||||
# }
|
||||
|
||||
# fstype_is_pseudofs() {
|
||||
# (( pseudofs_types["$1"] ))
|
||||
# }
|
||||
#
|
||||
# fstype_has_fsck() {
|
||||
# (( fsck_types["$1"] ))
|
||||
# }
|
||||
#
|
||||
|
||||
source @libdir@/functions.sh
|
||||
|
||||
#WORKDIR=${chrootdir}
|
||||
if [[ -r @libdir@/functions.sh ]];then
|
||||
source @libdir@/functions.sh
|
||||
fi
|
||||
|
||||
usage() {
|
||||
cat <<EOF
|
||||
|
|
|
@ -8,9 +8,9 @@
|
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# m4_include(lib/common.sh)
|
||||
|
||||
source @libdir@/functions.sh
|
||||
if [[ -r @libdir@/functions.sh ]];then
|
||||
source @libdir@/functions.sh
|
||||
fi
|
||||
|
||||
CHROOT_VERSION='v3'
|
||||
|
||||
|
@ -77,8 +77,6 @@ fi
|
|||
working_dir="$(readlink -f ${1})"
|
||||
shift 1
|
||||
|
||||
#WORKDIR=${working_dir}
|
||||
|
||||
[[ -z $working_dir ]] && die 'Please specify a working directory.'
|
||||
|
||||
if [[ -z $cache_dir ]]; then
|
||||
|
@ -147,39 +145,6 @@ chroot_lock () {
|
|||
fi
|
||||
}
|
||||
|
||||
# track_mount() {
|
||||
# if [[ -z $CHROOT_ACTIVE_MOUNTS ]]; then
|
||||
# CHROOT_ACTIVE_MOUNTS=()
|
||||
# trap 'chroot_umount' EXIT
|
||||
# fi
|
||||
#
|
||||
# mount "$@" && CHROOT_ACTIVE_MOUNTS=("$2" "${CHROOT_ACTIVE_MOUNTS[@]}")
|
||||
# }
|
||||
#
|
||||
# mount_conditionally() {
|
||||
# local cond=$1; shift
|
||||
# if eval "$cond"; then
|
||||
# track_mount "$@"
|
||||
# fi
|
||||
# }
|
||||
#
|
||||
# api_fs_mount_build() {
|
||||
# mount_conditionally "! mountpoint -q '$1'" "$1" "$1" --bind &&
|
||||
# track_mount proc "$1/proc" -t proc -o nosuid,noexec,nodev &&
|
||||
# track_mount sys "$1/sys" -t sysfs -o nosuid,noexec,nodev,ro &&
|
||||
# track_mount udev "$1/dev" -t devtmpfs -o mode=0755,nosuid &&
|
||||
# track_mount devpts "$1/dev/pts" -t devpts -o mode=0620,gid=5,nosuid,noexec &&
|
||||
# track_mount shm "$1/dev/shm" -t tmpfs -o mode=1777,nosuid,nodev &&
|
||||
# track_mount run "$1/run" -t tmpfs -o nosuid,nodev,mode=0755 &&
|
||||
# track_mount tmp "$1/tmp" -t tmpfs -o mode=1777,strictatime,nodev,nosuid
|
||||
# track_mount /etc/resolv.conf "$1/etc/resolv.conf" --bind
|
||||
# track_mount ${cache_dirs[0]} "$1/${cache_dirs[0]}" --bind
|
||||
# }
|
||||
#
|
||||
# chroot_umount() {
|
||||
# umount "${CHROOT_ACTIVE_MOUNTS[@]}"
|
||||
# }
|
||||
|
||||
chroot_run() {
|
||||
local dir=$1
|
||||
shift
|
||||
|
|
|
@ -8,9 +8,9 @@
|
|||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# m4_include(lib/common.sh)
|
||||
|
||||
source @libdir@/functions.sh
|
||||
if [[ -r @libdir@/functions.sh ]];then
|
||||
source @libdir@/functions.sh
|
||||
fi
|
||||
|
||||
shopt -s nullglob
|
||||
|
||||
|
@ -85,7 +85,6 @@ done
|
|||
|
||||
# Canonicalize chrootdir, getting rid of trailing /
|
||||
chrootdir=$(readlink -e "$passeddir")
|
||||
#WORKDIR=${chrootdir}
|
||||
|
||||
if [[ ${copy:0:1} = / ]]; then
|
||||
copydir=$copy
|
||||
|
|
|
@ -1,4 +1,12 @@
|
|||
#!/bin/bash
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
|
||||
err() {
|
||||
|
|
|
@ -1,3 +1,11 @@
|
|||
#!/bin/bash
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
find . -maxdepth 1 -name '*.pkg.tar.xz' -exec signpkg {} \;
|
||||
|
|
150
lib/functions.sh
150
lib/functions.sh
|
@ -1,6 +1,12 @@
|
|||
#!/bin/bash
|
||||
|
||||
#shopt -s extglob
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
export LANG=C
|
||||
|
||||
|
@ -300,3 +306,143 @@ get_full_version() {
|
|||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
process_sofile() {
|
||||
# extract the library name: libfoo.so
|
||||
soname="${sofile%.so?(+(.+([0-9])))}".so
|
||||
# extract the major version: 1
|
||||
soversion="${sofile##*\.so\.}"
|
||||
if [[ "$soversion" = "$sofile" ]] && (($IGNORE_INTERNAL)); then
|
||||
continue
|
||||
fi
|
||||
if ! in_array "${soname}=${soversion}-${soarch}" ${soobjects[@]}; then
|
||||
# libfoo.so=1-64
|
||||
echo "${soname}=${soversion}-${soarch}"
|
||||
soobjects=(${soobjects[@]} "${soname}=${soversion}-${soarch}")
|
||||
fi
|
||||
}
|
||||
|
||||
get_profiles(){
|
||||
local prof= temp=
|
||||
for p in $(ls ${profiledir}/*.set);do
|
||||
temp=${p##*/}
|
||||
prof=${prof:-}${prof:+|}${temp%.set}
|
||||
done
|
||||
echo $prof
|
||||
}
|
||||
|
||||
get_user(){
|
||||
echo $(ls ${chrootdir} | cut -d' ' -f1 | grep -v root | grep -v lock)
|
||||
}
|
||||
|
||||
chroot_clean(){
|
||||
for copy in "${chrootdir}"/*; do
|
||||
[[ -d "${copy}" ]] || continue
|
||||
msg2 "Deleting chroot copy '$(basename "${copy}")'..."
|
||||
|
||||
exec 9>"${copy}.lock"
|
||||
if ! flock -n 9; then
|
||||
stat_busy "Locking chroot copy '${copy}'"
|
||||
flock 9
|
||||
stat_done
|
||||
fi
|
||||
|
||||
if [[ "$(stat -f -c %T "${copy}")" == btrfs ]]; then
|
||||
{ type -P btrfs && btrfs subvolume delete "${copy}"; } &>/dev/null
|
||||
fi
|
||||
rm -rf --one-file-system "${copy}"
|
||||
done
|
||||
exec 9>&-
|
||||
|
||||
rm -rf --one-file-system "${chrootdir}"
|
||||
}
|
||||
|
||||
chroot_create(){
|
||||
mkdir -p "${chrootdir}"
|
||||
setarch ${arch} \
|
||||
mkchroot ${mkmanjaroroot_args[*]} ${chrootdir}/root ${base_packages[*]} || abort
|
||||
}
|
||||
|
||||
chroot_update(){
|
||||
setarch "${arch}" \
|
||||
mkchroot ${mkmanjaroroot_args[*]} -u ${chrootdir}/$(get_user) || abort
|
||||
}
|
||||
|
||||
chroot_init(){
|
||||
if [[ ! -d "${chrootdir}" ]]; then
|
||||
msg "Creating chroot for [${branch}] (${arch})..."
|
||||
chroot_create
|
||||
elif ${clean_first};then
|
||||
msg "Creating chroot for [${branch}] (${arch})..."
|
||||
chroot_clean
|
||||
chroot_create
|
||||
else
|
||||
msg "Updating chroot for [${branch}] (${arch})..."
|
||||
chroot_update
|
||||
fi
|
||||
}
|
||||
|
||||
chroot_build_set(){
|
||||
chroot_init
|
||||
msg "Start building profile: [${profile}]"
|
||||
for pkg in $(cat ${profiledir}/${profile}.set); do
|
||||
cd $pkg
|
||||
setarch ${arch} \
|
||||
mkchrootpkg ${makechrootpkg_args[*]} -- "${makepkg_args[*]}" || break
|
||||
if [[ $pkg == 'eudev' ]]; then
|
||||
local blacklist=('libsystemd')
|
||||
pacman -Rdd "${blacklist[@]}" -r ${chrootdir}/$(get_user) --noconfirm
|
||||
local temp
|
||||
if [[ -z $PKGDEST ]];then
|
||||
temp=$pkg
|
||||
else
|
||||
temp=$pkgdir/$pkg
|
||||
fi
|
||||
pacman -U $temp*${ARCH}*pkg*z -r ${chrootdir}/$(get_user) --noconfirm
|
||||
fi
|
||||
cd ..
|
||||
done
|
||||
msg "Finished building profile: [${profile}]"
|
||||
}
|
||||
|
||||
chroot_build(){
|
||||
cd ${profile}
|
||||
chroot_init
|
||||
setarch ${arch} \
|
||||
mkchrootpkg ${makechrootpkg_args[*]} -- "${makepkg_args[*]}" || abort
|
||||
cd ..
|
||||
}
|
||||
|
||||
display_build_set(){
|
||||
msg "SETS:"
|
||||
msg2 "profiles: $profiles"
|
||||
msg2 "profile: $profile"
|
||||
msg2 "is_profile: ${is_profile}"
|
||||
if ${is_profile};then
|
||||
msg "These packages will be built:"
|
||||
local temp=$(cat ${profiledir}/${profile}.set)
|
||||
for p in ${temp[@]}; do
|
||||
msg2 "$p"
|
||||
done
|
||||
else
|
||||
msg "This package will be built:"
|
||||
msg2 "${profile}"
|
||||
fi
|
||||
}
|
||||
|
||||
run_pretend(){
|
||||
eval "case ${profile} in
|
||||
$profiles) is_profile=true ;;
|
||||
*) is_profile=false ;;
|
||||
esac"
|
||||
display_build_set
|
||||
exit 1
|
||||
}
|
||||
|
||||
run(){
|
||||
eval "case ${profile} in
|
||||
$profiles) is_profile=true; display_build_set && chroot_build_set ;;
|
||||
*) display_build_set && chroot_build ;;
|
||||
esac"
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue