integrate II

This commit is contained in:
udeved 2014-10-04 15:41:22 +02:00
parent 0ce003dfd5
commit 5db29bb256
14 changed files with 405 additions and 754 deletions

View file

@ -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 ))

View file

@ -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}

View file

@ -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)

View file

@ -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"

View file

@ -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*";;

View file

@ -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

View file

@ -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=()

View file

@ -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"

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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() {

View file

@ -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 {} \;

View file

@ -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"
}