summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorPalica <palica+gitlab@liguros.net>2020-06-23 22:35:08 +0200
committerPalica <palica+gitlab@liguros.net>2020-06-23 22:35:08 +0200
commitecdac123787b96ce6649f0f91da12ea6458cc2b1 (patch)
treeb89c74d9e6fe6e8aebc4c77bcbeb4ab73214127d /scripts
parent1be72aa41cf41dedadeecf59dca9f01de6381f5e (diff)
downloadbaldeagleos-repo-ecdac123787b96ce6649f0f91da12ea6458cc2b1.tar.gz
baldeagleos-repo-ecdac123787b96ce6649f0f91da12ea6458cc2b1.tar.xz
baldeagleos-repo-ecdac123787b96ce6649f0f91da12ea6458cc2b1.zip
Updating liguros repo
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/bin/init-repo-mirror52
-rwxr-xr-xscripts/bin/keyword-helper134
-rwxr-xr-xscripts/bin/keyword-mate63
-rwxr-xr-xscripts/bin/mate-package-helper33
-rwxr-xr-xscripts/bootstrap.sh362
-rwxr-xr-xscripts/files/hooks/post-receive3
-rw-r--r--scripts/files/package-lists/README.md6
-rw-r--r--scripts/files/package-lists/package-list-1.14-alphabetical39
-rw-r--r--scripts/files/package-lists/package-list-1.14-topological39
-rw-r--r--scripts/files/package-lists/package-list-1.16-alphabetical39
-rw-r--r--scripts/files/package-lists/package-list-1.16-topological39
-rw-r--r--scripts/files/package-lists/package-list-9999-alphabetical39
-rw-r--r--scripts/files/package-lists/package-list-9999-topological39
13 files changed, 887 insertions, 0 deletions
diff --git a/scripts/bin/init-repo-mirror b/scripts/bin/init-repo-mirror
new file mode 100755
index 000000000000..eba3d568af07
--- /dev/null
+++ b/scripts/bin/init-repo-mirror
@@ -0,0 +1,52 @@
+#!/bin/sh
+
+die(){
+ echo "$@"
+ exit 1
+}
+
+help_info(){
+ echo "Initialize repository to allow mirroring."
+ echo "--hooks: installs git hooks for syncronization"
+ echo "--remotes: configures github remotes"
+ echo "--help/-h: display this message"
+ exit 0
+}
+
+[[ -d .git/ ]] || die "Must be run from repository root!"
+
+if [[ $# -eq 0 ]]; then
+ eval set -- "--hooks --remotes"
+fi
+
+OPTS=`getopt -o h --long hooks,remotes,help -n 'parse-options' -- "$@"`
+
+if [[ $? -ne 0 ]]; then
+ die "Invalid arguments"
+fi
+
+eval set -- "${OPTS}"
+
+HOOKS=false
+REMOTES=false
+
+while true; do
+ case "$1" in
+ --hooks ) HOOKS=true; shift ;;
+ --remotes ) REMOTES=true; shift ;;
+ --help | -h ) help-info ;;
+ -- ) shift; break;;
+ * ) break ;;
+ esac
+done
+
+if ${HOOKS}; then
+ echo "Installing Repository Hooks"
+ cp scripts/hooks/post-receive .git/hooks/post-receive || die "Failed to install hooks"
+fi
+
+if ${REMOTES}; then
+ echo "Configuring Remotes"
+ git remote remove github &>/dev/null
+ git remote add --mirror=push github git@github.com:gentoo/gentoo-mate.git || die "Failed to configure remotes"
+fi
diff --git a/scripts/bin/keyword-helper b/scripts/bin/keyword-helper
new file mode 100755
index 000000000000..5042739ae1a2
--- /dev/null
+++ b/scripts/bin/keyword-helper
@@ -0,0 +1,134 @@
+#!/usr/bin/perl
+# keyword-helper - utility to ekeyword packages
+# Usage: from the root of the overlay
+# keyword-helper app-foo/bar-1.2 app-foo/baz-1.2
+# <mudler@sabayon.org>
+
+use Cwd;
+
+my $TARGET_KEYWORD = $ENV{TARGET_KEYWORD} // "amd64 x86"
+ ; # KEYWORD changes, arguments are given directly to ekeyword
+my $BUGZ =
+ $ENV{BUGZ}; # Bug reference. Mandatory if no COMMIT_MSG is specified
+my $COMMIT_MSG = $ENV{COMMIT_MSG}; # Git commit message
+my $REMOVE = $ENV{REMOVE} // 0; # Remove ebuilds if 1
+
+my @KEYWORD_PACKAGES = @ARGV; # Packages that we want to manipulate
+my $CWD = getcwd;
+my @FAILED;
+
+sub strip_pvr { s/-[0-9]{1,}.*$//; }
+
+sub package_has_pvr { /-[0-9]{1,}.*$/; }
+
+# print helpers
+
+sub say { print join( "\n", @_ ) . "\n"; }
+
+sub err { say "\e[31m ", @_, " \e[0m"; }
+
+sub fatal { err @_; exit 1; }
+
+sub ok { say "\e[1;34m ", @_, " \e[0m"; }
+
+sub info { say "\e[1;37m ", @_, " \e[0m"; }
+
+# deadly checks
+
+if ( !@ARGV or $ARGV[0] eq "-h" or $ARGV[0] eq "--help" ) {
+ say "You must feed me with at least a package version", "",
+ "e.g. $0 package", "",
+ "ENV variables options:", "",
+ " COMMIT_MSG \t\t default commit message",
+ " BUGZ \t\t Gentoo Bugzilla id, e.g. 596998",
+ " TARGET_KEYWORD \t the keyword(s) to set separated by a space. e.g. TARGET_KEYWORD='amd64 x86'",
+ " REMOVE \t remove ebuilds instead of keywording if setted to 1";
+ exit 1;
+}
+
+if ( -e "${CWD}/Manifest" ) {
+ fatal "You are running me from the wrong folder, don't you?",
+ "I need to be executed from the root of the overlay!";
+}
+
+fatal "You should supply a bug id with the BUGZ environment variable or",
+ "a custom commit message with COMMIT_MSG at least"
+ if ( !$BUGZ and !$COMMIT_MSG );
+
+# Split TARGET_KEYWORD by space and put into an array
+my @ARCHES = split( /\s/, $TARGET_KEYWORD );
+
+# Cycle packages that need to be manipulated
+# Here it's being used $_, that contains strings in the following format: category/package, contains package version and revision too
+for (@KEYWORD_PACKAGES) {
+ fatal
+ "You must feed me with package versions, not atoms or whatever!",
+ "bailing out since you are using me in the WRONG way, fix yourself first"
+ unless package_has_pvr;
+ my $local_package =
+ (/\/(.*)$/)[0]
+ . ".ebuild"
+ ; # Extract the package name and version, included of revision if any
+ info "Keywording $TARGET_KEYWORD on $_ [$local_package]";
+ strip_pvr(); # stripping PVR
+
+ if ( -d $_ ) {
+ chdir($_); # entering in the directory
+ }
+ else {
+ fatal "$_ directory doesn't exists";
+ }
+
+ # Checking if ebuild we want to keyword is there
+ if ( -e $local_package ) {
+
+ # Do magic with the ebuild, since it exists
+ foreach my $arch (@ARCHES) {
+ my $LOCAL_COMMIT_MSG = $COMMIT_MSG;
+
+ # if no COMMIT_MSG is supplied, we generate it
+ if ( !$COMMIT_MSG ) {
+ my ( $keyword_symbol, $clean_arch ) =
+ ( $arch =~ /^(\^|\~|)(.*)$/ )
+ ; # Getting the first character of a arch, it can be ~, ^ or "" to use it with ekeyword
+ my $prefix_msg;
+ if ( $keyword_symbol eq '^' ) {
+ $prefix_msg = "Drop $clean_arch keyword ";
+ }
+ elsif ( $keyword_symbol eq '~' ) {
+ $prefix_msg = "Added $arch keyword ";
+ }
+ elsif ( $keyword_symbol eq "" ) {
+ $prefix_msg = "Stable on $clean_arch keyword ";
+ }
+ $LOCAL_COMMIT_MSG = $prefix_msg . "wrt \#${BUGZ}";
+ }
+ if ($REMOVE == 1) {
+ system("rm -rfv $local_package");
+ } else {
+ system("ekeyword $arch $local_package");
+ }
+ system("git add $local_package");
+ system("repoman commit -m '$_: $LOCAL_COMMIT_MSG'");
+ if ( $? >> 8 != 0 ) {
+ fatal
+ "Meh. we got errors. before going on, i want you to fix those by hand.";
+ push(@FAILED,$local_package);
+ }
+ else {
+ ok "Done for $_ [$local_package]";
+ }
+ }
+
+ }
+ else {
+ # errors, the ebuild cannot be found
+ fatal "/!\\ $local_package not found in $_ keywording failed!";
+ }
+ chdir($CWD);
+}
+
+if(@FAILED > 0){
+ fatal "Operation failed for the following ebuilds:";
+ fatal "** ".$_ for @FAILED;
+}
diff --git a/scripts/bin/keyword-mate b/scripts/bin/keyword-mate
new file mode 100755
index 000000000000..43a2f293514b
--- /dev/null
+++ b/scripts/bin/keyword-mate
@@ -0,0 +1,63 @@
+#!/usr/bin/perl
+# keyword-mate - utility to generate package lists,
+# used also to call keyword-helper automatically to handle stabilizations.
+# Given a list of packages in input and a MAJOR_VERSION,
+# it returns the minimum version of the package if there are more ebuilds with the same MAJOR_VERSION
+# Usage: from the root of the overlay
+# MAJOR_VERSION=1.12 keyword-mate mate-base/mate
+# <mudler@sabayon.org>
+
+my @PKGLIST = @ARGV;
+my $MAJOR_V = $ENV{MAJOR_VERSION};
+my $EXCLUSION_LIST = $ENV{EXCLUSION_LIST};
+my $AUTO = $ENV{AUTO} // 0;
+my $LOCAL_MATCH = $ENV{LOCAL_MATCH} // "min";
+
+sub natural_order {
+ my @a = @_;
+ return @a[
+ map { unpack "N", substr( $_, -4 ) }
+ sort
+ map {
+ my $key = $a[$_];
+ $key =~ s[(\d+)][ pack "N", $1 ]ge;
+ $key . pack "CNN", 0, 0, $_
+ } 0 .. $#a
+ ];
+}
+
+print
+ "You are running me from the wrong folder, don't you?\nI need to be executed from the root of the overlay!\n"
+ and exit 1
+ if ( -e "Manifest" );
+
+print
+ "I need a MAJOR_VERSION as environment variable, otherwise i can't find the local minimum among the ebuilds\n"
+ and exit 1
+ if ( !$MAJOR_V );
+
+if ( !@ARGV or $ARGV[0] eq "-h" or $ARGV[0] eq "--help" ) {
+ print "You must feed me with at least a package, without version!\n\n";
+ print "e.g. $0 package package1 package2\n\n";
+ print "ENV variables options:\n";
+ print " MAJOR_V \t Major version to check\n";
+ print " AUTO \t Automatically calls keyword-helper\n";
+ print " EXCLUSION_LIST \t Supply an list of packages to be excluded\n";
+ print " LOCAL_MATCH \t Can be 'min' or 'max', indicates local minimum or maximum\n";
+
+ exit 1;
+}
+
+for (@PKGLIST) {
+ next if $EXCLUSION_LIST =~ /$_/;
+ exit 1 unless -d $_;
+ my @EBUILDS = <$_/*.ebuild>;
+ my $wanted_version = ( natural_order( grep {/$MAJOR_V/} @EBUILDS ) )
+ [ $LOCAL_MATCH eq "max" ? -1 : 0 ];
+ my $package = ( $wanted_version =~ /(.*)\.ebuild/ )[0];
+ my @path = split( /\//, $package );
+ next unless @path > 0;
+ $package = $path[0] . "/" . $path[2];
+ print "$package\n";
+ system("./scripts/bin/keyword-helper $package") if ( $AUTO == 1 );
+}
diff --git a/scripts/bin/mate-package-helper b/scripts/bin/mate-package-helper
new file mode 100755
index 000000000000..a9f9075e3e8d
--- /dev/null
+++ b/scripts/bin/mate-package-helper
@@ -0,0 +1,33 @@
+#!/usr/bin/env python3
+
+"""
+A tiny helper script to help figure which package needs to be built next
+
+run this from the top of the overlay
+"""
+import os
+import re
+
+VERSION = "1.20"
+
+
+def list_ebuilds(package):
+ for root, dirs, files in os.walk(package):
+ for f in files:
+ if f.endswith('ebuild'):
+ yield os.path.join(root, f)
+
+with open("scripts/files/package-lists/package-list-9999-topological") as plist: # noqa
+ packages = list(map(lambda x: x.strip(), plist.readlines()))
+
+
+for package in packages:
+ rgx = "%s/%s-%s.*.ebuild" % (package, package.split("/")[-1], VERSION)
+ ebuild_updated = False
+ for ebuild in list_ebuilds(package):
+ if re.search(rgx, ebuild):
+ ebuild_updated = True
+ break
+ if not ebuild_updated:
+ print("Next package to work on ... {}".format(package))
+ break
diff --git a/scripts/bootstrap.sh b/scripts/bootstrap.sh
new file mode 100755
index 000000000000..46026a79e1c9
--- /dev/null
+++ b/scripts/bootstrap.sh
@@ -0,0 +1,362 @@
+#!/bin/bash
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+# people who were here:
+# (drobbins, 06 Jun 2003)
+# (solar, Jul 2004)
+# (vapier, Aug 2004)
+# (compnerd, Nov 2004)
+# (wolf31o2, Jan 2005)
+# (azarah, Mar 2005)
+# (uberlord, May 2007)
+# (kumba, May 2007)
+# (williamh, Mar 2014)
+# (kumba, Feb 2015)
+
+# sanity check
+[[ -e /etc/profile ]] && . /etc/profile
+
+if [[ -e /lib/gentoo/functions.sh ]] ; then
+ source /lib/gentoo/functions.sh
+ elif [[ -e /etc/init.d/functions.sh ]] ; then
+ source /etc/init.d/functions.sh
+else
+ eerror() { echo "!!! $*"; }
+ einfo() { echo "* $*"; }
+fi
+
+# Use our own custom script, else logger cause things to
+# 'freeze' if we do not have a system logger running
+esyslog() {
+ :
+}
+
+show_status() {
+ local num=$1
+ shift
+ echo " [[ ($num/3) $* ]]"
+}
+
+# Track progress of the bootstrap process to allow for
+# semi-transparent resuming
+progressfile=/var/run/bootstrap-progress
+[[ -e ${progressfile} ]] && source ${progressfile}
+export BOOTSTRAP_STAGE=${BOOTSTRAP_STAGE:-1}
+
+set_bootstrap_stage() {
+ [[ -z ${STRAP_RUN} ]] && return 0
+ export BOOTSTRAP_STAGE=$1
+ echo "BOOTSTRAP_STAGE=$1" > ${progressfile}
+}
+
+v_echo() {
+ einfo "Executing: $*"
+ env "$@"
+}
+
+cvsver="$Id$" # TODO: FIXME for Git era
+cvsver=${cvsver##*,v }
+cvsver=${cvsver%%Exp*}
+file_copyright=$(sed -n '/Copyright/!b;s/^# *//;p;q' $0)
+
+usage() {
+ echo -e "Usage: ${HILITE}${0##*/}${NORMAL} ${GOOD}[options]${NORMAL}"
+ echo -e " ${GOOD}--debug (-d)${NORMAL} Run with debug information turned on"
+ echo -e " ${GOOD}--fetchonly (-f)${NORMAL} Just download all the source files"
+ echo -e " ${GOOD}--info (-i)${NORMAL} Show system related information"
+ echo -e " ${GOOD}--pretend (-p)${NORMAL} Display the packages that will be merged"
+ echo -e " ${GOOD}--quiet (-q)${NORMAL} Reduced or condensed output from portage"
+ echo -e " ${GOOD}--tree (-t)${NORMAL} Display the dependency tree, forces -p"
+ echo -e " ${GOOD}--resume (-r)${NORMAL} Build/use binary packages"
+ echo -e " ${GOOD}--verbose (-v)${NORMAL} Verbose output from portage"
+}
+
+STRAP_EMERGE_OPTS="--oneshot"
+STRAP_RUN=1
+V_ECHO=env
+DEBUG=0
+
+for opt in "$@" ; do
+ case ${opt} in
+ --fetchonly|-f)
+ echo "Running in fetch-only mode ..."
+ STRAP_EMERGE_OPTS="${STRAP_EMERGE_OPTS} -f"
+ unset STRAP_RUN;;
+ --help|-h)
+ usage
+ exit 0;;
+ --debug|-d) STRAP_EMERGE_OPTS="${STRAP_EMERGE_OPTS} --debug"; DEBUG=1;;
+ --info|-i) STRAP_EMERGE_OPTS="${STRAP_EMERGE_OPTS} --info" ; unset STRAP_RUN ;;
+ --pretend|-p) STRAP_EMERGE_OPTS="${STRAP_EMERGE_OPTS} -p" ; unset STRAP_RUN ;;
+ --quiet|-q) STRAP_EMERGE_OPTS="${STRAP_EMERGE_OPTS} -q" ; unset STRAP_RUN ;;
+ --tree|-t) STRAP_EMERGE_OPTS="${STRAP_EMERGE_OPTS} -p -t" ; unset STRAP_RUN ;;
+ --resume|-r) STRAP_EMERGE_OPTS="${STRAP_EMERGE_OPTS} --usepkg --buildpkg";;
+ --verbose|-v) STRAP_EMERGE_OPTS="${STRAP_EMERGE_OPTS} -v" ; V_ECHO=v_echo;;
+ --version|-V)
+ einfo "Gentoo Linux bootstrap ${cvsver}"
+ exit 0
+ ;;
+ *)
+ eerror "Unknown option '${opt}'"
+ usage
+ exit 1;;
+ esac
+done
+
+RESUME=0
+if [[ -n ${STRAP_RUN} ]] ; then
+ if [ ${BOOTSTRAP_STAGE} -ge 3 ] ; then
+ echo
+ einfo "System has been bootstrapped already!"
+ einfo "If you re-bootstrap the system, you must complete the entire bootstrap process"
+ einfo "otherwise you will have a broken system."
+ einfo "Press enter to continue or CTRL+C to abort ..."
+ read
+ set_bootstrap_stage 1
+ elif [ ${BOOTSTRAP_STAGE} -gt 1 ] ; then
+ einfo "Resuming bootstrap at internal stage #${BOOTSTRAP_STAGE} ..."
+ RESUME=1
+ fi
+else
+ export BOOTSTRAP_STAGE=0
+fi
+
+for p in /etc/portage /etc ; do
+ p+="/make.profile"
+ [[ -e ${p} ]] || continue
+ if type -P realpath >/dev/null ; then
+ MYPROFILEDIR=$(realpath ${p})
+ else
+ MYPROFILEDIR=$(readlink -f ${p})
+ fi
+done
+if [[ ! -d ${MYPROFILEDIR} ]] ; then
+ eerror "Error: '${MYPROFILEDIR}' does not exist. Exiting."
+ exit 1
+fi
+
+echo -e "\n${GOOD}Gentoo Linux; ${BRACKET}http://www.gentoo.org/${NORMAL}"
+echo -e "${file_copyright}; Distributed under the GPLv2"
+if [[ " ${STRAP_EMERGE_OPTS} " == *" -f "* ]] ; then
+ echo "Fetching all bootstrap-related archives ..."
+elif [[ -n ${STRAP_RUN} ]] ; then
+ if [ ${BOOTSTRAP_STAGE} -gt 2 ] ; then
+ echo "Resuming Bootstrap of base system ..."
+ else
+ echo "Starting Bootstrap of base system ..."
+ fi
+fi
+echo -------------------------------------------------------------------------------
+show_status 0 Locating packages
+
+# This should not be set to get glibc to build properly. See bug #7652.
+unset LD_LIBRARY_PATH
+
+# We do not want stray $TMP, $TMPDIR or $TEMP settings
+unset TMP TMPDIR TEMP
+
+cleanup() {
+ if [[ -n ${STRAP_RUN} ]] ; then
+ if [ ${BOOTSTRAP_STAGE} -le 2 ] ; then
+ cp -f /var/cache/edb/mtimedb /var/run/bootstrap-mtimedb
+ else
+ rm -f /var/run/bootstrap-mtimedb
+ fi
+ fi
+ exit $1
+}
+
+pycmd() {
+ [[ ${DEBUG} = "1" ]] && echo /usr/bin/python -c "$@" > /dev/stderr
+ /usr/bin/python -c "$@"
+}
+
+# TSTP messes ^Z of bootstrap up, so we don't trap it anymore.
+trap "cleanup" TERM KILL INT QUIT ABRT
+
+# Bug #50158 (don't use `which` in a bootstrap).
+if ! type -path portageq &>/dev/null ; then
+ echo -------------------------------------------------------------------------------
+ eerror "Your portage version is too old. Please use a newer stage1 image."
+ echo
+ cleanup 1
+fi
+
+# USE may be set from the environment so we back it up for later.
+export ORIGUSE=$(portageq envvar USE)
+
+# Check for 'build' or 'bootstrap' in USE ...
+INVALID_USE=$(gawk -v ORIGUSE="${ORIGUSE}" '
+ BEGIN {
+ if (ORIGUSE ~ /[[:space:]](build|bootstrap)[[:space:]]/)
+ print "yes"
+ }')
+
+# Do not do the check for stage build scripts ...
+if [[ ${INVALID_USE} = "yes" ]] ; then
+ echo
+ eerror "You have 'build' or 'bootstrap' in your USE flags. Please"
+ eerror "remove it before trying to continue, since these USE flags"
+ eerror "are used for internal purposes and shouldn't be specified"
+ eerror "by you."
+ echo
+ cleanup 1
+fi
+
+# since our logic here ignores stuff found in package.use, let's warn the
+# user so they can avert disaster early
+if [[ -n $(sed -n '/^[ ]*#/d;/^[ ]*$/d;p' /etc/portage/package.use 2>/dev/null) ]] ; then
+ echo
+ ewarn "You appear to have custom USE flags set in /etc/portage/package.use."
+ ewarn "Be aware that these settings may be ignored while running this script"
+ ewarn "(due to limitations in the bootstrap process). If you have some USE"
+ ewarn "flags you wish to apply to say gcc or glibc, you should hit CTRL+C"
+ ewarn "now, export them in your environment (see below), and then restart."
+ ewarn " # export USE='some flags i want'"
+fi
+
+# gettext should only be needed when used with nls
+for opt in ${ORIGUSE} ; do
+ case "${opt}" in
+ bindist)
+ ALLOWED_USE="${ALLOWED_USE} bindist"
+ ;;
+ nls)
+ USE_NLS=1
+ ALLOWED_USE="${ALLOWED_USE} nls"
+ ;;
+ nptl)
+ export MYARCH=$(portageq envvar ARCH)
+ if [[ -z $(portageq best_visible / '>=sys-kernel/linux-headers-2.6.0') ]] ; then
+ eerror "You need to have >=sys-kernel/linux-headers-2.6.0 unmasked!"
+ eerror "Please edit the latest >=sys-kernel/linux-headers-2.6.0 package,"
+ eerror "and add your ARCH to KEYWORDS or change your make.profile link"
+ eerror "to a profile which does not have 2.6 headers masked."
+ echo
+ cleanup 1
+ fi
+ USE_NPTL=1
+ ;;
+ multilib)
+ ALLOWED_USE="${ALLOWED_USE} multilib"
+ ;;
+ userlocales)
+ ALLOWED_USE="${ALLOWED_USE} userlocales"
+ ;;
+ esac
+done
+
+# With cascading profiles, the packages profile at the leaf is not a
+# complete system, just the restrictions to it for the specific profile.
+# The complete profile consists of an aggregate of the leaf and all its
+# parents. So we now call portage to read the aggregate profile and store
+# that into a variable.
+
+eval $(pycmd '
+import portage
+from portage.dbapi._expand_new_virt import expand_new_virt
+import sys
+root = portage.settings["EROOT"]
+for atom in portage.settings.packages:
+ if not isinstance(atom, portage.dep.Atom):
+ atom = portage.dep.Atom(atom.lstrip("*"))
+ varname = "my" + portage.catsplit(atom.cp)[1].upper().replace("-", "_")
+ atom = list(expand_new_virt(portage.db[root]["vartree"].dbapi, atom))[0]
+ sys.stdout.write("%s=\"%s\"; " % (varname, atom))
+')
+
+# This stuff should never fail but will if not enough is installed.
+[[ -z ${myBASELAYOUT} ]] && myBASELAYOUT=">=$(portageq best_version / sys-apps/baselayout)"
+[[ -z ${myPORTAGE} ]] && myPORTAGE="sys-apps/portage"
+[[ -z ${myBINUTILS} ]] && myBINUTILS="sys-devel/binutils"
+[[ -z ${myGCC} ]] && myGCC="sys-devel/gcc"
+[[ -z ${myGETTEXT} ]] && myGETTEXT="sys-devel/gettext"
+[[ -z ${myLIBC} ]] && myLIBC="$(portageq expand_virtual / virtual/libc)"
+[[ -z ${myTEXINFO} ]] && myTEXINFO="sys-apps/texinfo"
+[[ -z ${myZLIB} ]] && myZLIB="sys-libs/zlib"
+[[ -z ${myNCURSES} ]] && myNCURSES="sys-libs/ncurses"
+
+# Do we really want gettext/nls?
+[[ ${USE_NLS} != 1 ]] && myGETTEXT=
+
+if [[ ${USE_NPTL} = "1" ]] ; then
+ myOS_HEADERS="$(portageq best_visible / '>=sys-kernel/linux-headers-2.6.0')"
+ [[ -n ${myOS_HEADERS} ]] && myOS_HEADERS=">=${myOS_HEADERS}"
+ ALLOWED_USE="${ALLOWED_USE} nptl"
+fi
+[[ -z ${myOS_HEADERS} ]] && myOS_HEADERS="$(portageq expand_virtual / virtual/os-headers)"
+
+einfo "Using baselayout : ${myBASELAYOUT}"
+einfo "Using portage : ${myPORTAGE}"
+einfo "Using os-headers : ${myOS_HEADERS}"
+einfo "Using binutils : ${myBINUTILS}"
+einfo "Using gcc : ${myGCC}"
+[[ ${USE_NLS} = "1" ]] && einfo "Using gettext : ${myGETTEXT}"
+einfo "Using libc : ${myLIBC}"
+einfo "Using texinfo : ${myTEXINFO}"
+einfo "Using zlib : ${myZLIB}"
+einfo "Using ncurses : ${myNCURSES}"
+echo -------------------------------------------------------------------------------
+show_status 1 Configuring environment
+echo -------------------------------------------------------------------------------
+
+[[ -x /usr/sbin/gcc-config ]] && GCC_CONFIG="/usr/sbin/gcc-config"
+[[ -x /usr/bin/gcc-config ]] && GCC_CONFIG="/usr/bin/gcc-config"
+
+# Allow portage to overwrite stuff
+[[ $CONFIG_PROTECT != "-*"* ]] && export CONFIG_PROTECT="-*"
+
+# disable collision-protection
+export FEATURES="${FEATURES} -collision-protect"
+
+# query BOOTSTRAP_USE from the profile
+BOOTSTRAP_USE=$(portageq envvar BOOTSTRAP_USE)
+
+if [ ${BOOTSTRAP_STAGE} -le 1 ] ; then
+ show_status 2 Updating portage
+ ${V_ECHO} USE="-* build bootstrap ${ALLOWED_USE} ${BOOTSTRAP_USE}" emerge ${STRAP_EMERGE_OPTS} ${myPORTAGE} || cleanup 1
+ echo -------------------------------------------------------------------------------
+ set_bootstrap_stage 2
+fi
+export USE="-* bootstrap ${ALLOWED_USE} ${BOOTSTRAP_USE}"
+
+# We can't unmerge headers which may or may not exist yet. If your
+# trying to use nptl, it may be needed to flush out any old headers
+# before fully bootstrapping.
+if [ ${BOOTSTRAP_STAGE} -le 2 ] ; then
+ show_status 3 Emerging packages
+ if [[ ${RESUME} -eq 1 ]] ; then
+ STRAP_EMERGE_POSARGS=""
+ STRAP_EMERGE_OPTS="${STRAP_EMERGE_OPTS} --resume"
+ cp /var/run/bootstrap-mtimedb /var/cache/edb
+ else
+ STRAP_EMERGE_POSARGS="\
+ ${myOS_HEADERS} ${myTEXINFO} ${myGETTEXT} ${myBINUTILS} \
+ ${myGCC} ${myLIBC} ${myBASELAYOUT} ${myZLIB}"
+ fi
+ ${V_ECHO} emerge ${STRAP_EMERGE_OPTS} ${STRAP_EMERGE_POSARGS} || cleanup 1
+ echo -------------------------------------------------------------------------------
+ set_bootstrap_stage 3
+fi
+
+# Basic support for gcc multi version/arch scheme ...
+if [[ -n ${STRAP_RUN} ]] ; then
+ if [[ -x ${GCC_CONFIG} ]] && ${GCC_CONFIG} --get-current-profile &>/dev/null
+ then
+ # Make sure we get the old gcc unmerged ...
+ ${V_ECHO} emerge ${STRAP_EMERGE_OPTS} --prune sys-devel/gcc || cleanup 1
+ # Make sure the profile and /lib/cpp and /usr/bin/cc are valid ...
+ ${GCC_CONFIG} "$(${GCC_CONFIG} --get-current-profile)" &>/dev/null
+ fi
+fi
+
+if [[ -n ${STRAP_RUN} ]] ; then
+ echo -------------------------------------------------------------------------------
+ einfo "Please note that you should now add the '-e' option for emerge system:"
+ echo
+ einfo " # emerge <other_opts> -e @system"
+ echo
+fi
+
+cleanup 0
diff --git a/scripts/files/hooks/post-receive b/scripts/files/hooks/post-receive
new file mode 100755
index 000000000000..4f8214c5c8b7
--- /dev/null
+++ b/scripts/files/hooks/post-receive
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+git push --mirror github
diff --git a/scripts/files/package-lists/README.md b/scripts/files/package-lists/README.md
new file mode 100644
index 000000000000..2563628d823d
--- /dev/null
+++ b/scripts/files/package-lists/README.md
@@ -0,0 +1,6 @@
+These files are use in the maintainer's help scripts
+
+ - package-list-1.XX-alphabetical - all pacakge sorted alphabetically
+ * package-list-1.XX-topological - all pacakges sorted by dependecy order
+
+
diff --git a/scripts/files/package-lists/package-list-1.14-alphabetical b/scripts/files/package-lists/package-list-1.14-alphabetical
new file mode 100644
index 000000000000..9fec80ad8cb0
--- /dev/null
+++ b/scripts/files/package-lists/package-list-1.14-alphabetical
@@ -0,0 +1,39 @@
+app-arch/engrampa
+app-editors/pluma
+app-text/atril
+dev-libs/libmateweather
+dev-python/python-caja
+mate-base/caja
+mate-base/libmatekbd
+mate-base/mate
+mate-base/mate-applets
+mate-base/mate-applets-meta
+mate-base/mate-common
+mate-base/mate-control-center
+mate-base/mate-desktop
+mate-base/mate-menus
+mate-base/mate-panel
+mate-base/mate-session-manager
+mate-base/mate-settings-daemon
+mate-extra/caja-dropbox
+mate-extra/caja-extensions
+mate-extra/mate-indicator-applet
+mate-extra/mate-media
+mate-extra/mate-netbook
+mate-extra/mate-polkit
+mate-extra/mate-power-manager
+mate-extra/mate-screensaver
+mate-extra/mate-sensors-applet
+mate-extra/mate-system-monitor
+mate-extra/mate-user-guide
+mate-extra/mate-user-share
+mate-extra/mate-utils
+media-gfx/eom
+media-libs/libmatemixer
+x11-misc/mate-notification-daemon
+x11-misc/mozo
+x11-terms/mate-terminal
+x11-themes/mate-backgrounds
+x11-themes/mate-icon-theme
+x11-themes/mate-icon-theme-faenza
+x11-wm/marco
diff --git a/scripts/files/package-lists/package-list-1.14-topological b/scripts/files/package-lists/package-list-1.14-topological
new file mode 100644
index 000000000000..d74c747b3f5c
--- /dev/null
+++ b/scripts/files/package-lists/package-list-1.14-topological
@@ -0,0 +1,39 @@
+mate-base/mate-common
+mate-base/mate-desktop
+mate-extra/mate-user-guide
+mate-base/libmatekbd
+media-libs/libmatemixer
+dev-libs/libmateweather
+x11-themes/mate-icon-theme
+mate-base/caja
+mate-extra/mate-polkit
+x11-wm/marco
+mate-base/mate-settings-daemon
+mate-base/mate-session-manager
+mate-base/mate-menus
+mate-base/mate-panel
+x11-themes/mate-backgrounds
+x11-misc/mate-notification-daemon
+mate-base/mate-control-center
+mate-extra/mate-screensaver
+mate-extra/mate-media
+mate-extra/mate-power-manager
+mate-extra/mate-system-monitor
+app-text/atril
+mate-extra/caja-dropbox
+mate-extra/caja-extensions
+app-arch/engrampa
+media-gfx/eom
+mate-base/mate-applets
+x11-themes/mate-icon-theme-faenza
+mate-extra/mate-indicator-applet
+mate-extra/mate-netbook
+mate-extra/mate-sensors-applet
+mate-base/mate-applets-meta
+x11-terms/mate-terminal
+mate-extra/mate-user-share
+mate-extra/mate-utils
+x11-misc/mozo
+app-editors/pluma
+dev-python/python-caja
+mate-base/mate
diff --git a/scripts/files/package-lists/package-list-1.16-alphabetical b/scripts/files/package-lists/package-list-1.16-alphabetical
new file mode 100644
index 000000000000..9fec80ad8cb0
--- /dev/null
+++ b/scripts/files/package-lists/package-list-1.16-alphabetical
@@ -0,0 +1,39 @@
+app-arch/engrampa
+app-editors/pluma
+app-text/atril
+dev-libs/libmateweather
+dev-python/python-caja
+mate-base/caja
+mate-base/libmatekbd
+mate-base/mate
+mate-base/mate-applets
+mate-base/mate-applets-meta
+mate-base/mate-common
+mate-base/mate-control-center
+mate-base/mate-desktop
+mate-base/mate-menus
+mate-base/mate-panel
+mate-base/mate-session-manager
+mate-base/mate-settings-daemon
+mate-extra/caja-dropbox
+mate-extra/caja-extensions
+mate-extra/mate-indicator-applet
+mate-extra/mate-media
+mate-extra/mate-netbook
+mate-extra/mate-polkit
+mate-extra/mate-power-manager
+mate-extra/mate-screensaver
+mate-extra/mate-sensors-applet
+mate-extra/mate-system-monitor
+mate-extra/mate-user-guide
+mate-extra/mate-user-share
+mate-extra/mate-utils
+media-gfx/eom
+media-libs/libmatemixer
+x11-misc/mate-notification-daemon
+x11-misc/mozo
+x11-terms/mate-terminal
+x11-themes/mate-backgrounds
+x11-themes/mate-icon-theme
+x11-themes/mate-icon-theme-faenza
+x11-wm/marco
diff --git a/scripts/files/package-lists/package-list-1.16-topological b/scripts/files/package-lists/package-list-1.16-topological
new file mode 100644
index 000000000000..d74c747b3f5c
--- /dev/null
+++ b/scripts/files/package-lists/package-list-1.16-topological
@@ -0,0 +1,39 @@
+mate-base/mate-common
+mate-base/mate-desktop
+mate-extra/mate-user-guide
+mate-base/libmatekbd
+media-libs/libmatemixer
+dev-libs/libmateweather
+x11-themes/mate-icon-theme
+mate-base/caja
+mate-extra/mate-polkit
+x11-wm/marco
+mate-base/mate-settings-daemon
+mate-base/mate-session-manager
+mate-base/mate-menus
+mate-base/mate-panel
+x11-themes/mate-backgrounds
+x11-misc/mate-notification-daemon
+mate-base/mate-control-center
+mate-extra/mate-screensaver
+mate-extra/mate-media
+mate-extra/mate-power-manager
+mate-extra/mate-system-monitor
+app-text/atril
+mate-extra/caja-dropbox
+mate-extra/caja-extensions
+app-arch/engrampa
+media-gfx/eom
+mate-base/mate-applets
+x11-themes/mate-icon-theme-faenza
+mate-extra/mate-indicator-applet
+mate-extra/mate-netbook
+mate-extra/mate-sensors-applet
+mate-base/mate-applets-meta
+x11-terms/mate-terminal
+mate-extra/mate-user-share
+mate-extra/mate-utils
+x11-misc/mozo
+app-editors/pluma
+dev-python/python-caja
+mate-base/mate
diff --git a/scripts/files/package-lists/package-list-9999-alphabetical b/scripts/files/package-lists/package-list-9999-alphabetical
new file mode 100644
index 000000000000..9fec80ad8cb0
--- /dev/null
+++ b/scripts/files/package-lists/package-list-9999-alphabetical
@@ -0,0 +1,39 @@
+app-arch/engrampa
+app-editors/pluma
+app-text/atril
+dev-libs/libmateweather
+dev-python/python-caja
+mate-base/caja
+mate-base/libmatekbd
+mate-base/mate
+mate-base/mate-applets
+mate-base/mate-applets-meta
+mate-base/mate-common
+mate-base/mate-control-center
+mate-base/mate-desktop
+mate-base/mate-menus
+mate-base/mate-panel
+mate-base/mate-session-manager
+mate-base/mate-settings-daemon
+mate-extra/caja-dropbox
+mate-extra/caja-extensions
+mate-extra/mate-indicator-applet
+mate-extra/mate-media
+mate-extra/mate-netbook
+mate-extra/mate-polkit
+mate-extra/mate-power-manager
+mate-extra/mate-screensaver
+mate-extra/mate-sensors-applet
+mate-extra/mate-system-monitor
+mate-extra/mate-user-guide
+mate-extra/mate-user-share
+mate-extra/mate-utils
+media-gfx/eom
+media-libs/libmatemixer
+x11-misc/mate-notification-daemon
+x11-misc/mozo
+x11-terms/mate-terminal
+x11-themes/mate-backgrounds
+x11-themes/mate-icon-theme
+x11-themes/mate-icon-theme-faenza
+x11-wm/marco
diff --git a/scripts/files/package-lists/package-list-9999-topological b/scripts/files/package-lists/package-list-9999-topological
new file mode 100644
index 000000000000..d34d9812b3f8
--- /dev/null
+++ b/scripts/files/package-lists/package-list-9999-topological
@@ -0,0 +1,39 @@
+mate-base/mate-common
+mate-base/mate-desktop
+mate-extra/mate-user-guide
+mate-base/libmatekbd
+media-libs/libmatemixer
+dev-libs/libmateweather
+x11-themes/mate-icon-theme
+mate-base/caja
+mate-extra/mate-polkit
+x11-wm/marco
+mate-base/mate-settings-daemon
+mate-base/mate-session-manager
+mate-base/mate-menus
+mate-base/mate-panel
+x11-themes/mate-backgrounds
+x11-misc/mate-notification-daemon
+mate-base/mate-control-center
+mate-extra/mate-screensaver
+mate-extra/mate-media
+mate-extra/mate-power-manager
+mate-extra/mate-system-monitor
+app-text/atril
+mate-extra/caja-dropbox
+mate-extra/caja-extensions
+app-arch/engrampa
+media-gfx/eom
+mate-base/mate-applets
+mate-extra/mate-indicator-applet
+mate-extra/mate-netbook
+mate-extra/mate-sensors-applet
+mate-base/mate-applets-meta
+x11-terms/mate-terminal
+mate-extra/mate-user-share
+mate-extra/mate-utils
+x11-misc/mozo
+app-editors/pluma
+dev-python/python-caja
+mate-extra/mate-calc
+mate-base/mate