Nove to new layout
This commit is contained in:
28
bin/antimatter-digest
Executable file
28
bin/antimatter-digest
Executable 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"
|
||||
2
bin/antimatter/antimatter.html.footer
Normal file
2
bin/antimatter/antimatter.html.footer
Normal file
@@ -0,0 +1,2 @@
|
||||
</body>
|
||||
</html>
|
||||
27
bin/antimatter/antimatter.html.header
Normal file
27
bin/antimatter/antimatter.html.header
Normal 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>
|
||||
47
bin/buildrc
47
bin/buildrc
@@ -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
20
bin/bump_crossdev
Normal 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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
@@ -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}"
|
||||
|
||||
@@ -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
91
bin/clean_old_injected_packages
Executable 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
126
bin/get_preserved_libs
Executable 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
5
bin/glsa-digest
Executable file
@@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
|
||||
. /etc/profile
|
||||
|
||||
exec /usr/bin/glsa-check --verbose --nocolor -t all
|
||||
150
bin/kernel-autobump
Executable file
150
bin/kernel-autobump
Executable 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
13
bin/kernel-autobump-tracker
Executable 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]"
|
||||
@@ -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
33
bin/matter-scheduler-chroot
Executable 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
3
bin/sshd_wrapper
Executable file
@@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
|
||||
exec /usr/sbin/sshd -e "${@}" 2> /.sshd.log
|
||||
Reference in New Issue
Block a user