Nove to new layout

This commit is contained in:
Mario Fetka
2014-11-02 09:42:47 +01:00
parent 68d6318910
commit 250a08b5dd
124 changed files with 5211 additions and 1623 deletions

28
bin/antimatter-digest Executable file
View File

@@ -0,0 +1,28 @@
#!/bin/sh
. /etc/profile
set -e
TMPL_PATH="$(dirname "${0}")/antimatter"
HEADER_PATH="${TMPL_PATH}/antimatter.html.header"
FOOTER_PATH="${TMPL_PATH}/antimatter.html.footer"
ANTIMATTER="${ANTIMATTER:-antimatter}"
(
cat "${HEADER_PATH}"
# Upgradable packages
"${ANTIMATTER}" -u --quiet --extended --html
# Dead packages (dropped by upstream)
"${ANTIMATTER}" -e --quiet --extended --html
# New packages - temp disabled
# "${ANTIMATTER}" -n --quiet --extended --html
# cat "${FOOTER_PATH}"
) | sed \
-e "s|class='rt'|style='color: green;'|g" \
-e "s|class='frompkg'|style='color: brown;'|g" \
-e "s|class='topkg'|style='font-weight: bold; color: red;'|g"

View File

@@ -0,0 +1,2 @@
</body>
</html>

View File

@@ -0,0 +1,27 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<body>
<style>
.rt {
color: green;
font-family: arial, sans-serif;
font-size: 0.85em;
}
.rd {
font-size: 0.7em;
margin-bottom: 0.3em;
}
.frompkg {
color: brown;
font-family: arial, sans-serif;
}
.topkg {
color: red;
font-weight: bold;
font-family: arial, sans-serif;
}
</style>

View File

@@ -1,9 +1,15 @@
#!/bin/bash
# Emerge wrapper, uses matter lock file support to avoid
# concurrent execution
_exec_locked() {
snapshot_lock_file="/var/tmp/.emerge.snapshot.lock"
matter_lock_file="/var/tmp/.matter_resource.lock"
local tmp_dir="/var/tmp"
local lvm_snapshot_lock_file="/.entropy_locks/vg_chroots-lv_chroots-snapshot.lock"
local snapshot_lock_file="${tmp_dir}/.emerge.snapshot.lock"
local matter_lock_file="${tmp_dir}/.matter_resource.lock"
if [ ! -d "${tmp_dir}" ]; then
echo "${tmp_dir} is missing, creating it..." >&2
mkdir -p "${tmp_dir}"
fi
flock -x -n "${matter_lock_file}" true
rc=${?}
@@ -15,7 +21,7 @@ _exec_locked() {
echo "Snapshot lock file = ${snapshot_lock_file}" >&2
echo "Matter lock file = ${matter_lock_file}" >&2
echo >&2
echo "this emerge instance will terminate NOW" >&2
echo "This ${1} instance will terminate NOW" >&2
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" >&2
echo >&2
return 1
@@ -24,21 +30,37 @@ _exec_locked() {
(
flock -s -n 9 || {
echo "Hello there," >&2;
echo "a chroot snapshot is in progress..." >%2;
echo "a chroot snapshot is in progress..." >&2;
echo "Try again later." >&2;
exit 1;
}
# eval $(portageq envvar -v FETCHCOMMAND RESUMECOMMAND PORTAGE_RSYNC_OPTS)
# add bandwidth limit here
flock -s --timeout=120 10
if [ "${?}" != "0" ]; then
echo >&2
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" >&2
echo "The LVM lock of the Backup Script is being held for 2 minutes" >&2
echo "This should not happen. Please contact lxnay@sabayon.org and" >&2
echo "stop any activity NOW. However, if you're in an emergency" >&2
echo "Just rm ${lvm_snapshot_lock_file} and continue." >&2
echo "Please note that this will cause inconsistent backups." >&2
echo >&2
echo "This instance will terminate NOW" >&2
echo "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" >&2
echo >&2
exit 1
fi
"${@}"
exit ${?}
) 9> "${snapshot_lock_file}"
return "${?}"
) 9> "${snapshot_lock_file}" 10>"${lvm_snapshot_lock_file}"
return ${?}
fi
}
emerge() {
_exec_locked "/usr/bin/emerge" "${@}"
_exec_locked "/usr/bin/emerge" --quiet-build=y --oneshot "${@}"
return ${?}
}
@@ -46,3 +68,6 @@ eit() {
_exec_locked "/usr/bin/eit" "${@}"
return ${?}
}
# Alias configuration
alias cosmos=/particles/cosmos/cosmos

20
bin/bump_crossdev Normal file
View File

@@ -0,0 +1,20 @@
#!/bin/bash
ARCHES=(
armv7a-hardfloat-linux-gnueabi
armv7a-unknown-linux-gnueabi
armv6j-hardfloat-linux-gnueabi
)
GCC_VER="--g ~4.7.3"
LIBC_VER="--l ~2.17"
K_VER="--k ~3.7"
BINUTILS_VER="--b =2.23*"
for a in "${ARCHES[@]}"; do
# USE="-fortran" or glibc will fail to compile
USE="-fortran -gtk" crossdev -t "${a}" \
-oS "/usr/local/portage" \
-oO "/usr/local/portage" \
${GCC_VER} ${LIBC_VER} ${K_VER} ${BINUTILS_VER} || exit 1
done

View File

@@ -2,12 +2,12 @@
. /sabayon/bin/kernels.inc
packages="~x11-drivers/nvidia-drivers-173.14.35" # ~x11-drivers/nvidia-drivers-96.43.20"
non_injected_packages="~x11-drivers/nvidia-userspace-173.14.35" # ~x11-drivers/nvidia-userspace-96.43.20"
packages="=x11-drivers/nvidia-drivers-173* =x11-drivers/nvidia-drivers-304*"
non_kernel_packages="=x11-drivers/nvidia-userspace-173* =x11-drivers/nvidia-userspace-304*"
ETP_REPO="${ETP_REPO:-sabayon-limbo}"
rm -rf /usr/portage/packages/x11-drivers/*
emerge -B ${non_injected_packages} || exit 1
emerge -B ${non_kernel_packages} || exit 1
eit inject --to ${ETP_REPO} /usr/portage/packages/x11-drivers/* || exit 1
for kernel in $kernels; do

View File

@@ -11,7 +11,7 @@ fi
# build for latest kernel
KERNEL_DIR="/usr/src/linux-${running_kernel}" emerge "${@}" || exit 1
echo -5 | etc-update
eit commit || exit 1
eit add "${@}" || exit 1
for kernel in $kernels; do
if [ "${kernel}" = "${running_kernel}" ]; then

View File

@@ -1,108 +1,246 @@
#!/usr/bin/python2
import sys
import subprocess
import argparse
import atexit
import os
import pwd
import subprocess
import shutil
import sys
import tempfile
args = sys.argv[1:]
only_injected = "--only-injected" in args
if only_injected:
args.remove("--only-injected")
do_spm_repo = "--no-spm-repo" not in args
if not do_spm_repo:
args.remove("--no-spm-repo")
keyslot = "--keyslot" in args
if keyslot:
args.remove("--keyslot")
if len(args) < 3:
print("bump_kernel_tag_mods <query tag> <compile tag> <source (query) repo> <destination entropy repo> [--only-injected] [--no-spm-repo] [--keyslot]")
raise SystemExit(1)
kernel_tag = args.pop(0)
compile_tag = args.pop(0)
source_repo = args.pop(0)
dest_repo = args.pop(0)
sys.argv.append("--no-pid-handling")
os.environ['KERNEL_DIR'] = "/usr/src/linux-" + compile_tag
os.environ['ETP_REPO'] = source_repo
import entropy.dep
from entropy.server.interfaces import Server
srv = Server()
pkgs_map = {}
try:
repo = srv.open_repository(srv.repository())
pkg_ids = repo.searchTaggedPackages(kernel_tag)
if not pkg_ids:
print("!!! no packages for kernel_tag")
injected_pkgs = []
normal_pkgs = []
for pkg_id in pkg_ids:
injected = repo.isInjected(pkg_id)
if injected:
injected_pkgs.append(pkg_id)
else:
normal_pkgs.append(pkg_id)
normal_atoms = []
injected_atoms = []
for lst, dst in ((normal_pkgs, normal_atoms), (injected_pkgs, injected_atoms)):
for pkg_id in lst:
if keyslot:
atom_str = entropy.dep.remove_tag_from_slot(repo.retrieveKeySlotAggregated(pkg_id))
else:
atom_str = "~" + entropy.dep.remove_tag(repo.retrieveAtom(pkg_id))
if do_spm_repo:
spm_repo = repo.retrieveSpmRepository(pkg_id)
if spm_repo is not None:
atom_str += "::" + spm_repo
dst.append(atom_str)
finally:
srv.shutdown()
import entropy.dep
if not only_injected:
if normal_atoms:
print("normal packages: %s" % (' '.join(normal_atoms),))
if injected_atoms:
print("injected packages: %s" % (' '.join(injected_atoms),))
if not (normal_atoms or injected_atoms):
print("nothing to do !!")
raise SystemExit(0)
if __name__ == "__main__":
if normal_atoms and not only_injected:
rc = subprocess.call(["emerge", "-av", "--keep-going"] + [x for x in normal_atoms])
if rc != 0:
raise SystemExit(rc)
subprocess.call(["etc-update"], shell = True)
os.environ['ETP_REPO'] = dest_repo
rc = subprocess.call(["eit", "add"] + normal_atoms)
if rc != 0:
raise SystemExit(rc)
srv = Server()
if injected_atoms:
tmp_dir = tempfile.mkdtemp()
os.environ['PKGDIR'] = tmp_dir
rc = subprocess.call(["emerge", "-Bav", "--nodeps"] + [x for x in injected_atoms])
if rc != 0:
raise SystemExit(rc)
tbz2s = []
for category in os.listdir(tmp_dir):
path = os.path.join(tmp_dir, category)
if not os.path.isdir(path):
continue
for sub_file in os.listdir(path):
if not sub_file.endswith(".tbz2"):
def ValidString(arg):
if not arg:
raise ValueError("invalid string")
return arg
def ValidRepository(arg):
if arg not in srv.repositories():
raise ValueError("invalid repository %s" % (arg,))
return arg
parser = argparse.ArgumentParser(
description="Bump Kernel Packages for Entropy Server")
parser.add_argument(
"query_version", metavar="<query version>",
help="the uname version to query",
type=ValidString)
parser.add_argument(
"build_version", metavar="<build version>",
help="the uname version to build packages for",
type=ValidString)
parser.add_argument(
"build_repo", metavar="<build repo>",
help="the repository to place packages into",
type=ValidRepository)
parser.add_argument(
"--only-injected", action="store_true", default=False,
help="only consider injected packages")
parser.add_argument(
"--no-spm-repo", action="store_true", default=False,
help=("do not include the SPM repository suffix "
"in dependency atoms"))
parser.add_argument(
"--keyslot", action="store_true", default=False,
help=("do not use the exact package version but "
"rather key:slot"))
parser.add_argument(
"--canfail", action="store_true", default=False,
help="if emerge can fail and you want to ignore it")
parser.add_argument(
"--non-interactive", action="store_true", default=False,
help="if set, the script will run in non-interactive mode")
parser.add_argument(
"--disable-shell-wrap", action="store_true", default=False,
help="if set, the script will not source .bashrc")
nsargs = parser.parse_args(sys.argv[1:])
known_multiple_injected_versions = set([
"x11-drivers/nvidia-drivers:0",
"x11-drivers/ati-drivers:0",
])
pkgs_map = {}
try:
pkg_matches = {}
repository_ids = srv.repositories()
for repository_id in repository_ids:
repo = srv.open_repository(repository_id)
pkg_ids = repo.searchTaggedPackages(nsargs.query_version)
for pkg_id in pkg_ids:
key_slot = repo.retrieveKeySlotAggregated(pkg_id)
obj = pkg_matches.setdefault(key_slot, set())
obj.add((pkg_id, repository_id))
injected_pkgs = []
normal_pkgs = []
for key_slot, candidates in pkg_matches.items():
candidate = srv.atom_match(key_slot + "#" + nsargs.query_version)
if candidate not in candidates:
print("%s (%s) not in candidates %s, skipping" % (
candidate, key_slot, candidates))
continue
tbz2s.append(os.path.join(path, sub_file))
pkg_id, repository_id = candidate
repo = srv.open_repository(repository_id)
if repo.isInjected(pkg_id):
injected_pkgs.append(candidate)
else:
normal_pkgs.append(candidate)
if tbz2s:
os.environ['ETP_REPO'] = dest_repo
rc = subprocess.call(["eit", "inject"] + tbz2s)
# address other injected pkgs, like older nvidia drivers
for other_candidate in candidates:
if other_candidate != candidate:
pkg_id, repository_id = other_candidate
repo = srv.open_repository(repository_id)
if repo.isInjected(pkg_id):
clean_key_slot = entropy.dep.remove_tag_from_slot(
key_slot)
# filter out packages that we know we don't handle multiple
# versions of them.
if clean_key_slot in known_multiple_injected_versions:
injected_pkgs.append(other_candidate)
normal_atoms = []
injected_atoms = []
data = (
(normal_pkgs, normal_atoms),
(injected_pkgs, injected_atoms)
)
spm = srv.Spm()
for lst, dst in data:
for pkg_id, repository_id in lst:
repo = srv.open_repository(repository_id)
if nsargs.keyslot:
atom_str = entropy.dep.remove_tag_from_slot(
repo.retrieveKeySlotAggregated(pkg_id))
else:
atom_str = "~" + entropy.dep.remove_tag(
repo.retrieveAtom(pkg_id))
if not nsargs.no_spm_repo:
spm_repo = repo.retrieveSpmRepository(pkg_id)
if spm_repo is not None:
atom_str += "::" + spm_repo
if not spm.match_package(atom_str):
print("%s not found in Portage, skipping" % (atom_str,))
continue
dst.append(atom_str)
finally:
srv.shutdown()
if not nsargs.only_injected:
if normal_atoms:
print("normal packages: %s" % (
" ".join(normal_atoms),))
if injected_atoms:
print("injected packages: %s" % (
" ".join(injected_atoms),))
if not (normal_atoms or injected_atoms):
print("nothing to do !!")
raise SystemExit(0)
def clean_dirs(xdirs):
for directory in xdirs:
try:
shutil.rmtree(directory, True)
except shutil.Error:
pass
dirs = []
atexit.register(clean_dirs, dirs)
os.environ['KERNEL_DIR'] = "/usr/src/linux-%s" % (
nsargs.build_version,)
portage_tmpdir = tempfile.mkdtemp(
dir="/var/tmp", prefix="bump_kernel_packages.portage_tmpdir")
os.chmod(portage_tmpdir, 0o775)
try:
pass_s = pwd.getpwnam("portage")
os.chown(portage_tmpdir, pass_s.pw_uid, pass_s.pw_gid)
except KeyError:
pass
dirs.append(portage_tmpdir)
os.environ["PORTAGE_TMPDIR"] = portage_tmpdir
cmd_prefix = ""
if not nsargs.disable_shell_wrap:
cmd_prefix = "test -e ~/.bashrc && source ~/.bashrc;"
if normal_atoms and not nsargs.only_injected:
args = ["emerge", "-v", "--keep-going"]
if not nsargs.non_interactive:
args.append("-a")
args += [x for x in normal_atoms]
# emerge is a shell function in bashrc
rc = subprocess.call(cmd_prefix + " ".join(args), shell=True)
if rc != 0 and not nsargs.canfail:
raise SystemExit(rc)
subprocess.call(["/usr/sbin/etc-update"])
args = ["eit", "add", "--to", nsargs.build_repo]
if nsargs.non_interactive:
args.append("--quick")
args += normal_atoms
# eit is a shell function in bashrc
rc = subprocess.call(cmd_prefix + " ".join(args), shell=True)
if rc != 0:
raise SystemExit(rc)
raise SystemExit(0)
if injected_atoms:
tmp_dir = tempfile.mkdtemp(
dir="/var/tmp", prefix="bump_kernel_packages")
dirs.append(tmp_dir)
os.environ['PKGDIR'] = tmp_dir
args = ["emerge", "-Bv", "--nodeps", "--keep-going"]
if not nsargs.non_interactive:
args.append("-a")
args += [x for x in injected_atoms]
# emerge is a shell function in .bashrc
rc = subprocess.call(cmd_prefix + " ".join(args), shell=True)
if rc != 0 and not nsargs.canfail:
raise SystemExit(rc)
tbz2s = []
for category in os.listdir(tmp_dir):
path = os.path.join(tmp_dir, category)
if not os.path.isdir(path):
continue
for sub_file in os.listdir(path):
if not sub_file.endswith(".tbz2"):
continue
tbz2s.append(os.path.join(path, sub_file))
if tbz2s:
args = ["eit", "inject", "--to", nsargs.build_repo]
args += tbz2s
# eit is a shell function in bashrc
rc = subprocess.call(cmd_prefix + " ".join(args), shell=True)
if rc != 0:
raise SystemExit(rc)
raise SystemExit(0)

View File

@@ -1,80 +0,0 @@
#!/usr/bin/python2
import sys
import subprocess
import os
import tempfile
args = sys.argv[1:]
do_spm_repo = "--no-spm-repo" not in args
if not do_spm_repo:
args.remove("--no-spm-repo")
keyslot = "--keyslot" in args
if keyslot:
args.remove("--keyslot")
if len(args) < 3:
print("bump_kernel_tag_mods <query tag> <compile tag> <source (query) repo> <destination entropy repo> [--no-spm-repo] [--keyslot]")
raise SystemExit(1)
kernel_tag = args.pop(0)
compile_tag = args.pop(0)
source_repo = args.pop(0)
dest_repo = args.pop(0)
sys.argv.append("--no-pid-handling")
os.environ['KERNEL_DIR'] = "/usr/src/linux-" + compile_tag
os.environ['ETP_REPO'] = source_repo
import entropy.dep
from entropy.server.interfaces import Server
srv = Server()
pkgs_map = {}
try:
repo = srv.open_repository(srv.repository())
pkg_ids = repo.searchTaggedPackages(kernel_tag)
if not pkg_ids:
print("!!! no packages for kernel_tag")
injected_atoms = []
for pkg_id in injected_atoms:
atom_str = entropy.dep.remove_tag(repo.retrieveAtom(pkg_id))
if do_spm_repo:
spm_repo = repo.retrieveSpmRepository(pkg_id)
if spm_repo is not None:
atom_str += "::" + spm_repo
injected_atoms.append(atom_str)
if keyslot:
injected_atoms = [entropy.dep.remove_tag_from_slot(repo.retrieveKeySlotAggregated(pkg_id)) for pkg_id in pkg_ids]
else:
injected_atoms = ["~" + entropy.dep.remove_tag(repo.retrieveAtom(pkg_id)) for pkg_id in pkg_ids]
finally:
srv.shutdown()
if injected_atoms:
print("packages: %s" % (' '.join(injected_atoms),))
else:
print("nothing to do !!")
raise SystemExit(0)
tmp_dir = tempfile.mkdtemp()
os.environ['PKGDIR'] = tmp_dir
rc = subprocess.call(["emerge", "-Bav", "--keep-going"] + [x for x in injected_atoms])
if rc != 0:
raise SystemExit(rc)
tbz2s = []
for category in os.listdir(tmp_dir):
path = os.path.join(tmp_dir, category)
if not os.path.isdir(path):
continue
for sub_file in os.listdir(path):
if not sub_file.endswith(".tbz2"):
continue
tbz2s.append(os.path.join(path, sub_file))
if tbz2s:
os.environ['ETP_REPO'] = dest_repo
rc = subprocess.call(["eit", "inject"] + tbz2s)
if rc != 0:
raise SystemExit(rc)
raise SystemExit(0)

View File

@@ -7,7 +7,7 @@
. /sabayon/bin/kernels.inc
packages="~x11-drivers/nvidia-drivers-173.14.31 ~x11-drivers/nvidia-drivers-96.43.20"
packages="=x11-drivers/nvidia-drivers-173* =x11-drivers/nvidia-drivers-304* =x11-drivers/nvidia-drivers-313*"
non_injected_packages="x11-drivers/nvidia-drivers x11-drivers/ati-drivers x11-drivers/xf86-video-virtualbox"
general_purpose_packages="media-video/amdcccle"
ETP_REPO="${ETP_REPO:-sabayon-limbo}"

View File

@@ -3,41 +3,58 @@
# script that makes it easier to bump split packages
# (and perhaps other fun stuff)
list="git subversion transmission"
. /sabayon/bin/buildrc || exit 2
list="git [sub]version [tra]nsmission"
cmd="emerge -av"
default_overlay="sabayon-distro"
overlay=
if [ "$1" = "--repo" ]; then
overlay=$2
if [ -z "$overlay" ]; then
echo "--repo requires an argument" >&2
exit 1
fi
shift; shift
fi
overlay=${overlay:-$default_overlay}
what=$1
if [ -z "$what" ]; then
echo "What to compile? [$list]"
echo "What to compile? [ $list ]"
read what
fi
case $what in
git)
$cmd \
dev-vcs/git::sabayon-distro \
dev-vcs/git::"$overlay" \
dev-vcs/git-cvs \
dev-vcs/git-gui-tools \
dev-vcs/git-subversion \
www-apps/gitweb
;;
subversion)
subversion|sub)
$cmd \
dev-vcs/subversion::sabayon-distro \
dev-vcs/subversion-java
dev-vcs/subversion::"$overlay" \
dev-vcs/subversion-java \
www-apache/mod_dav_svn
;;
transmission)
transmission|tra)
$cmd \
net-p2p/transmission-base \
net-p2p/transmission-cli \
net-p2p/transmission-daemon \
net-p2p/transmission-gtk \
net-p2p/transmission-qt4 \
net-p2p/transmission::sabayon-distro
net-p2p/transmission::"$overlay"
;;
*)
echo "Excuse me, but I non capisco." >&2
echo "Use --repo <repository> to use different overlay (default: $default_overlay)." >&2
[ -n "$1" ] && echo "Run without any parameter for interactive use." >&2
exit 1
esac

91
bin/clean_old_injected_packages Executable file
View File

@@ -0,0 +1,91 @@
#!/usr/bin/python
import sys
sys.path.insert(0, "/usr/lib/matter")
sys.path.insert(0, "/usr/lib/entropy/lib")
import os
from entropy.server.interfaces import Server
from entropy.i18n import _
from matter.spec import SpecParser
import matter.binpms.entropysrv # plugin registration
PARTICLES_DIR = "/particles"
if __name__ == "__main__":
# collect particles
particles = []
for root, dirs, files in os.walk(PARTICLES_DIR):
for name in files:
if name.endswith(".particle"):
particles.append(os.path.join(root, name))
packages = set()
for particle in particles:
with open(particle, "r") as f:
spec = SpecParser(f)
data = spec.parse()
if not data:
continue
if data.get("build-only", "no") != "yes":
continue
drop_injected = data.get("drop-old-injected", "no") == "yes"
if not drop_injected:
continue
for p_packages in data.get("packages", []):
packages.update(p_packages)
packages = sorted(packages)
srv = Server()
for repository in srv.repositories():
repo = srv.open_repository(repository)
for package in packages:
latest_package_id, _mrc = repo.atomMatch(package)
if latest_package_id == -1:
continue
package_ids, _mrc = repo.atomMatch(package, multiMatch=True)
if not package_ids:
continue
key_slots = set()
for package_id in package_ids:
key, slot = repo.retrieveKeySlot(package_id)
key_slots.add((key, slot))
key_slot_package_ids = set()
for key, slot in key_slots:
ks_package_ids = [x for x in repo.searchKeySlot(key, slot) \
if repo.isInjected(x)]
key_slot_package_ids.update(ks_package_ids)
key_slot_package_ids.discard(latest_package_id)
if key_slot_package_ids:
key_slot_package_ids = sorted(key_slot_package_ids)
atoms = [repo.retrieveAtom(x) for x in key_slot_package_ids]
atoms.sort()
latest_atom = repo.retrieveAtom(latest_package_id)
srv.output("%s is the latest package" % (latest_atom))
srv.output("removing old packages:")
for atom in atoms:
srv.output(" %s" % (atom,))
resp = srv.ask_question("Really remove?")
if resp != _("Yes"):
continue
srv.remove_packages(
repository, key_slot_package_ids)
srv.commit_repositories()
srv.destroy()

126
bin/get_preserved_libs Executable file
View File

@@ -0,0 +1,126 @@
#!/usr/bin/python
import sys
from _emerge.actions import load_emerge_config
import portage.dep
settings, trees, mtimedb = load_emerge_config()
vardb = trees[settings["ROOT"]]["vartree"].dbapi
linkmap = vardb._linkmap
reg = vardb._plib_registry
reg.lock()
try:
plibdata = reg.getPreservedLibs()
if plibdata:
sys.stdout.write("# list of bumped libraries:\n")
for cpv, paths in plibdata.items():
sys.stdout.write("%s\n" % (cpv,))
for path in sorted(paths):
sys.stderr.write(" %s\n" % (path,))
if plibdata:
sys.stdout.write("# list of inverse deps:\n")
# taken from display_preserved_libs.py, Portage
linkmap.rebuild() # can raise CommandNotFound
consumer_map = {}
search_for_owners = set()
for cpv in plibdata:
internal_plib_keys = set(linkmap._obj_key(f) for f in plibdata[cpv])
for f in plibdata[cpv]:
if f in consumer_map:
continue
consumers = []
for c in linkmap.findConsumers(f):
# Filter out any consumers that are also preserved libs
# belonging to the same package as the provider.
if linkmap._obj_key(c) not in internal_plib_keys:
consumers.append(c)
consumers.sort()
consumer_map[f] = consumers
search_for_owners.update(consumers)
owners = {}
for f in search_for_owners:
owner_set = set()
for owner in linkmap.getOwners(f):
owner_dblink = vardb._dblink(owner)
if owner_dblink.exists():
owner_set.add(owner_dblink)
if owner_set:
owners[f] = owner_set
all_preserved = set()
all_preserved.update(*plibdata.values())
owners_map = {}
for cpv in plibdata:
sys.stdout.write("%s\n" % (cpv,))
samefile_map = {}
for f in plibdata[cpv]:
obj_key = linkmap._obj_key(f)
alt_paths = samefile_map.get(obj_key)
if alt_paths is None:
alt_paths = set()
samefile_map[obj_key] = alt_paths
alt_paths.add(f)
for alt_paths in samefile_map.values():
alt_paths = sorted(alt_paths)
for p in alt_paths:
sys.stderr.write(" - %s" % (p,))
f = alt_paths[0]
consumers = consumer_map.get(f, [])
consumers_non_preserved = [c for c in consumers
if c not in all_preserved]
if consumers_non_preserved:
# Filter the consumers that are preserved libraries, since
# they don't need to be rebuilt (see bug #461908).
consumers = consumers_non_preserved
for c in consumers:
owner_pkgs = []
if c in all_preserved:
# The owner is displayed elsewhere due to having
# its libs preserved, so distinguish this special
# case (see bug #461908).
owners_desc = "preserved"
else:
owner_cpvs = [x.mycpv for x in owners.get(c, [])]
owner_pkgs.extend(owner_cpvs)
owners_desc = ", ".join(owner_cpvs)
sys.stderr.write(" used by %s (%s)\n" % (c, owners_desc))
for owner_pkg in owner_pkgs:
cp_slot = "%s:%s" % (
portage.dep.dep_getkey("=" + owner_pkg),
vardb.aux_get(owner_pkg, ["SLOT"])[0]
)
obj = owners_map.setdefault(cp_slot, set())
obj.add(c)
sys.stdout.flush()
sys.stderr.flush()
if owners_map:
sys.stdout.write("# grouped list of rebuilds:\n")
for owner_pkg in sorted(owners_map.keys()):
owner_files = sorted(owners_map[owner_pkg])
sys.stdout.write("%s\n" % (owner_pkg,))
for owner_file in owner_files:
sys.stderr.write(" %s\n" % (owner_file,))
sys.stdout.flush()
sys.stderr.flush()
finally:
reg.unlock()

5
bin/glsa-digest Executable file
View File

@@ -0,0 +1,5 @@
#!/bin/bash
. /etc/profile
exec /usr/bin/glsa-check --verbose --nocolor -t all

150
bin/kernel-autobump Executable file
View File

@@ -0,0 +1,150 @@
#!/bin/bash
# Variables
REPO_PATH=${1}
PULL_REMOTE=${2}
PUSH_REMOTE=${3}
BRANCH=${4}
PREFIX=${5}
REGEX=${6}
show_help() {
echo "${0} <repo path> <pull remote> <push remote> <branch> <push tag prefix> v<track regex>" >&2
echo "Example: ${0} ~/repos/kernel stable origin 3.12 sabayon- 3\.12\.[0-9999]" >&2
}
if [ ! -d "${REPO_PATH}" ]; then
show_help
exit 1
fi
if [ -z "${PULL_REMOTE}" ]; then
show_help
exit 1
fi
if [ -z "${PUSH_REMOTE}" ]; then
show_help
exit 1
fi
if [ -z "${BRANCH}" ]; then
show_help
exit 1
fi
if [ -z "${PREFIX}" ]; then
show_help
exit 1
fi
if [ -z "${REGEX}" ]; then
show_help
exit 1
fi
rollback() {
cd "${REPO_PATH}" || return 1
git rebase --abort || true
git reset --hard "${PUSH_REMOTE}/${BRANCH}" || return 1
}
start() {
cd "${REPO_PATH}" || return 1
echo "Fetching ${PULL_REMOTE}"
git fetch --quiet "${PULL_REMOTE}" || {
rollback
return 1;
}
echo "Fetching ${PUSH_REMOTE}"
git fetch --quiet "${PUSH_REMOTE}" || {
rollback
return 1;
}
local tags=$(git tag | grep -e "v${REGEX}")
echo "Tracking tags:"
echo -e "${tags}"
if [ -z "${tags}" ]; then
echo "No tags to track for: ${REGEX} in ${REPO_PATH}"
return 0
fi
local bumps=()
local tag= tracked_tag=
for tag in ${tags}; do
tracked_tag="${PREFIX}${tag/v}"
echo "Checking tag: ${tag}, ${tracked_tag}"
if ! git tag | grep -q -e "^${tracked_tag}$"; then
echo "Not tracked: ${tag}, ${tracked_tag}"
bumps+=( "${tag}" )
fi
done
if [ -z "${bumps[*]}" ]; then
echo "Nothing to do."
return 0
fi
if ! git show-branch "${BRANCH}" > /dev/null; then
echo "Creating branch: ${BRANCH}"
git checkout -q "${PUSH_REMOTE}/${BRANCH}" -b "${BRANCH}" || {
rollback
return 1;
}
else
echo "Checking out branch: ${BRANCH}"
git checkout -q "${BRANCH}" || {
rollback
return 1;
}
fi
echo "Updating branch"
git rebase --quiet "${PUSH_REMOTE}/${BRANCH}" || {
rollback
return 1;
}
for tag in "${bumps[@]}"; do
echo "Working on tag: ${tag}"
git merge --quiet "${tag}" -m "Automatic merge of tag ${PULL_REMOTE}/${tag}" || {
rollback
return 1;
}
bash sabayon/bump-configs.sh || {
rollback
return 1;
}
local changed=$(git ls-files -m -d -o --exclude-standard sabayon/config)
if [ -n "${changed}" ]; then
git commit --quiet sabayon/config -m "sabayon: bump configs" || {
rollback
return 1;
}
fi
git push --quiet || {
rollback
return 1;
}
git push --quiet --tags || {
rollback
return 1;
}
tracked_tag="${PREFIX}${tag/v}"
bash sabayon/tag-version.sh "${tracked_tag}" || {
rollback
return 1;
}
echo "Released ${tracked_tag}"
done
}
start

13
bin/kernel-autobump-tracker Executable file
View File

@@ -0,0 +1,13 @@
#!/bin/bash
. /etc/profile
cd $(dirname "${0}") || exit 1
# Tracked kernels
./kernel-autobump /home/fabio/repos/kernel stable origin 3.10 sabayon- "3\.10\.[0-9999]"
./kernel-autobump /home/fabio/repos/kernel stable origin 3.12 sabayon- "3\.12\.[0-9999]"
./kernel-autobump /home/fabio/repos/kernel stable origin 3.14 sabayon- "3\.14\.[0-9999]"
./kernel-autobump /home/fabio/repos/kernel stable origin 3.15 sabayon- "3\.15\.[0-9999]"
./kernel-autobump /home/fabio/repos/kernel stable origin 3.16 sabayon- "3\.16\.[0-9999]"
./kernel-autobump /home/fabio/repos/kernel stable origin 3.17 sabayon- "3\.17\.[0-9999]"

View File

@@ -1,2 +1,3 @@
kernels="3.2.0-sabayon 3.3.0-sabayon 3.4.0-sabayon 3.5.0-sabayon 3.6.0-sabayon"
running_kernel="3.6.0-sabayon"
kernels="$(for d in $(find /usr/src -maxdepth 1 -name "linux-*-sabayon" -type d -print); do d=$(basename $d); echo ${d/linux-}; done | sort)"
running_kernel="$(d=$(basename $(readlink /usr/src/linux)); echo ${d/linux-})"

33
bin/matter-scheduler-chroot Executable file
View File

@@ -0,0 +1,33 @@
#!/bin/bash
safe_exec() {
echo "safe_exec: ${*}"
local tries=5
for ((i=0; i < ${tries}; i++)); do
"${@}" && return 0
if [ "${i}" = "0" ]; then
sleep 10
continue
else
sleep 60
continue
fi
done
return 1
}
cd "${PARTICLES_DIR}" || exit 1
safe_exec git pull || exit 1
cd "${BUILD_GIT_DIR}" || exit 1
safe_exec git pull || exit 1
particles=$(find "${PARTICLES_DIR}" -name "*.particle" | sort)
if [ -n "${particles}" ]; then
/usr/sbin/env-update
. /etc/profile
matter ${MATTER_ARGS} ${particles}
exit ${?}
fi
exit 1

3
bin/sshd_wrapper Executable file
View File

@@ -0,0 +1,3 @@
#!/bin/bash
exec /usr/sbin/sshd -e "${@}" 2> /.sshd.log