Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b91870c72d | |||
| b1726fdb4d | |||
| 6d0f26ceb7 | |||
| 49ba945b63 | |||
| f55338b552 | |||
| 0c964e4b64 | |||
| 5f75f6e64b | |||
| 9fd7ce2582 | |||
| a62baaf0ea | |||
| bf78080418 | |||
| 218dfa9dcd | |||
| 575ec04147 | |||
| 903aa0fa0d | |||
| ada5793612 |
@@ -40,6 +40,9 @@ my $remote_overlay = $ENV{REMOTE_OVERLAY};
|
|||||||
my $qualityassurance_checks = $ENV{QA_CHECKS} // 0;
|
my $qualityassurance_checks = $ENV{QA_CHECKS} // 0;
|
||||||
my $remote_conf_portdir = $ENV{REMOTE_CONF_PORTDIR};
|
my $remote_conf_portdir = $ENV{REMOTE_CONF_PORTDIR};
|
||||||
my $remote_portdir = $ENV{REMOTE_PORTDIR};
|
my $remote_portdir = $ENV{REMOTE_PORTDIR};
|
||||||
|
my $pretend = $ENV{PRETEND} // 0;
|
||||||
|
my $obsoleted = $ENV{DETECT_OBSOLETE} // 0;
|
||||||
|
my $target_overlay = $ENV{TARGET_OVERLAY};
|
||||||
|
|
||||||
my $make_conf = $ENV{MAKE_CONF};
|
my $make_conf = $ENV{MAKE_CONF};
|
||||||
|
|
||||||
@@ -235,8 +238,9 @@ sub uniq {
|
|||||||
keys %{ { map { $_ => 1 } @_ } };
|
keys %{ { map { $_ => 1 } @_ } };
|
||||||
}
|
}
|
||||||
|
|
||||||
sub detect_useflags
|
# Detect useflags defined as [-alsa,avahi] in atom,
|
||||||
{ # Detect useflags defined as [-alsa,avahi] in atom, and fill $hash within the $target sub-hash
|
# and fill $hash within the $target sub-hash
|
||||||
|
sub detect_useflags {
|
||||||
my ( $target, $packages ) = @_;
|
my ( $target, $packages ) = @_;
|
||||||
my @packs = @{$packages};
|
my @packs = @{$packages};
|
||||||
for my $i ( 0 .. $#packs ) {
|
for my $i ( 0 .. $#packs ) {
|
||||||
@@ -315,6 +319,14 @@ say "\t* " . $_ for @ARGV;
|
|||||||
|
|
||||||
say "[*] Syncing configurations files, Layman and Portage";
|
say "[*] Syncing configurations files, Layman and Portage";
|
||||||
|
|
||||||
|
if ($pretend) {
|
||||||
|
say "[*] PRETEND enabled, no real action will be performed.";
|
||||||
|
say " Bear in mind that in such way the list of packages";
|
||||||
|
say " that emerge will try to compile will be bigger";
|
||||||
|
$equo_install_args .= " -p";
|
||||||
|
$emerge_defaults_args .= " -p";
|
||||||
|
}
|
||||||
|
|
||||||
# Syncronizing portage configuration and adding overlays
|
# Syncronizing portage configuration and adding overlays
|
||||||
system("echo 'en_US.UTF-8 UTF-8' > /etc/locale.gen"); #be sure about that.
|
system("echo 'en_US.UTF-8 UTF-8' > /etc/locale.gen"); #be sure about that.
|
||||||
|
|
||||||
@@ -523,7 +535,8 @@ if ($use_equo) {
|
|||||||
safe_call("equo i $equo_install_args --bdeps $_")
|
safe_call("equo i $equo_install_args --bdeps $_")
|
||||||
for ( @packages_deps, @equo_install )
|
for ( @packages_deps, @equo_install )
|
||||||
; ## bail out here, if installs fails. emerge will compile a LOT of stuff
|
; ## bail out here, if installs fails. emerge will compile a LOT of stuff
|
||||||
if ( @equo_remove > 0 ) {
|
if ( @equo_remove > 0 and !$pretend ) {
|
||||||
|
say "Removing with equo: @equo_remove";
|
||||||
system("equo rm --nodeps $_") for (@equo_remove);
|
system("equo rm --nodeps $_") for (@equo_remove);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -554,6 +567,7 @@ system("emerge --info")
|
|||||||
my $rt;
|
my $rt;
|
||||||
|
|
||||||
if ( $emerge_remove and $emerge_remove ne "" ) {
|
if ( $emerge_remove and $emerge_remove ne "" ) {
|
||||||
|
say "Removing with emerge: $emerge_remove";
|
||||||
system("emerge -C $_") for split( / /, $emerge_remove );
|
system("emerge -C $_") for split( / /, $emerge_remove );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -570,7 +584,7 @@ my $return = $rt >> 8;
|
|||||||
# best effort -B
|
# best effort -B
|
||||||
compile_packs( "injected_targets", @injected_packages );
|
compile_packs( "injected_targets", @injected_packages );
|
||||||
|
|
||||||
if ($preserved_rebuild) {
|
if ( $preserved_rebuild and !$pretend ) {
|
||||||
|
|
||||||
system("emerge -j $jobs --buildpkg \@preserved-rebuild");
|
system("emerge -j $jobs --buildpkg \@preserved-rebuild");
|
||||||
system("revdep-rebuild");
|
system("revdep-rebuild");
|
||||||
@@ -586,9 +600,14 @@ if ( $qualityassurance_checks == 1 ) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( $obsoleted and $target_overlay ) {
|
||||||
|
say "*** Detecting obsoletes ***";
|
||||||
|
system("sabayon-detectobsolete --overlay ${target_overlay}");
|
||||||
|
}
|
||||||
|
|
||||||
# Copy files to artifacts folder
|
# Copy files to artifacts folder
|
||||||
system(
|
system(
|
||||||
"mkdir -p $artifacts_folder;cp -rfv /usr/portage/packages $artifacts_folder"
|
"mkdir -p $artifacts_folder;cp -rfv /usr/portage/packages $artifacts_folder"
|
||||||
) if ( $artifacts_folder and !$return );
|
) if ( $artifacts_folder and !$return and !$pretend );
|
||||||
|
|
||||||
exit($return);
|
exit($return);
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ MAKE_CONF="${MAKE_CONF:-$SAB_WORKSPACE/specs/make.conf}"
|
|||||||
OUTPUT_DIR="${OUTPUT_DIR:-$SAB_WORKSPACE/portage_artifacts/}"
|
OUTPUT_DIR="${OUTPUT_DIR:-$SAB_WORKSPACE/portage_artifacts/}"
|
||||||
LOCAL_OVERLAY="${LOCAL_OVERLAY:-$SAB_WORKSPACE/local_overlay}"
|
LOCAL_OVERLAY="${LOCAL_OVERLAY:-$SAB_WORKSPACE/local_overlay}"
|
||||||
ENTROPY_REPOSITORY="${ENTROPY_REPOSITORY:-main}" # Can be weekly, main, testing
|
ENTROPY_REPOSITORY="${ENTROPY_REPOSITORY:-main}" # Can be weekly, main, testing
|
||||||
DOCKER_OPTS="${DOCKER_OPTS:--ti --rm}"
|
DOCKER_OPTS="${DOCKER_OPTS:--ti --rm --cap-add=SYS_PTRACE}"
|
||||||
|
|
||||||
. /sbin/sabayondevkit-functions.sh
|
. /sbin/sabayondevkit-functions.sh
|
||||||
|
|
||||||
@@ -56,6 +56,9 @@ docker_volumes=( -v "$OUTPUT_DIR:/usr/portage/packages" )
|
|||||||
[ -z "$REMOTE_CONF_PORTDIR" ] || docker_env+=(-e "REMOTE_CONF_PORTDIR=$REMOTE_CONF_PORTDIR")
|
[ -z "$REMOTE_CONF_PORTDIR" ] || docker_env+=(-e "REMOTE_CONF_PORTDIR=$REMOTE_CONF_PORTDIR")
|
||||||
[ -z "$REMOTE_PORTDIR" ] || docker_env+=(-e "REMOTE_PORTDIR=$REMOTE_PORTDIR")
|
[ -z "$REMOTE_PORTDIR" ] || docker_env+=(-e "REMOTE_PORTDIR=$REMOTE_PORTDIR")
|
||||||
[ -z "$ETP_NOCACHE" ] || docker_env+=(-e "ETP_NOCACHE=$ETP_NOCACHE")
|
[ -z "$ETP_NOCACHE" ] || docker_env+=(-e "ETP_NOCACHE=$ETP_NOCACHE")
|
||||||
|
[ -z "$PRETEND" ] || docker_env+=(-e "PRETEND=$PRETEND")
|
||||||
|
[ -z "$DETECT_OBSOLETE" ] || docker_env+=(-e "DETECT_OBSOLETE=$DETECT_OBSOLETE")
|
||||||
|
[ -z "$TARGET_OVERLAY" ] || docker_env+=(-e "TARGET_OVERLAY=$TARGET_OVERLAY")
|
||||||
[ -d "$LOCAL_OVERLAY" ] && docker_volumes+=(-v "$LOCAL_OVERLAY:/usr/local/local_portage")
|
[ -d "$LOCAL_OVERLAY" ] && docker_volumes+=(-v "$LOCAL_OVERLAY:/usr/local/local_portage")
|
||||||
|
|
||||||
if [ -e $MAKE_CONF ]; then
|
if [ -e $MAKE_CONF ]; then
|
||||||
|
|||||||
Executable
+65
@@ -0,0 +1,65 @@
|
|||||||
|
#!/usr/bin/perl
|
||||||
|
# mudler <mudler@sabayon.org>
|
||||||
|
# this tool requires querypkg
|
||||||
|
use Getopt::Long;
|
||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
my $arch;
|
||||||
|
my $verbose;
|
||||||
|
my $overlay;
|
||||||
|
GetOptions(
|
||||||
|
"arch=s" => \$arch,
|
||||||
|
"overlay=s" => \$overlay,
|
||||||
|
"verbose" => \$verbose
|
||||||
|
) or die("Error in command line arguments\n");
|
||||||
|
|
||||||
|
die("You should at least supply an overlay with --overlay") if !$overlay;
|
||||||
|
|
||||||
|
# Input: Overlay absolute path
|
||||||
|
# Output: array with package names (category/name)
|
||||||
|
sub get_packages {
|
||||||
|
keys %{
|
||||||
|
{ map {
|
||||||
|
s/$overlay\/|\.ebuild//g;
|
||||||
|
$_ = join( '/', ( split( /\//, $_ ) )[ 0, 1 ] );
|
||||||
|
$_ => 1
|
||||||
|
} glob( $_[0] . "/*/*/*.ebuild" )
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
# Input: package (category/name)
|
||||||
|
# Output: returns 1 if obsolete and can be removed
|
||||||
|
sub obsolete_package($$) {
|
||||||
|
my $package = $_[0];
|
||||||
|
my $arch = $_[1];
|
||||||
|
my $l_arch = ( defined $arch and $arch ne "" ? "--arch $arch" : "" );
|
||||||
|
print "querypkg -q $l_arch $package --show spm_repo\n" if $verbose;
|
||||||
|
my @out = `querypkg -q $l_arch $package --show spm_repo`;
|
||||||
|
chomp(@out);
|
||||||
|
return 1 if "@out" eq "";
|
||||||
|
foreach my $l (@out) {
|
||||||
|
print " >> $l\n" if $verbose;
|
||||||
|
return 1 if ( $l =~ /$package.*\{spm_repo\:gent.*/ );
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
my @packages = get_packages($overlay);
|
||||||
|
my @obsoletes;
|
||||||
|
|
||||||
|
foreach my $p (@packages) {
|
||||||
|
print "[$p] Checking if there is a version in the repositories.... ";
|
||||||
|
print "\n" if $verbose;
|
||||||
|
if ( obsolete_package( $p, $arch ) ) {
|
||||||
|
print " OBSOLETE! \n";
|
||||||
|
push( @obsoletes, $p );
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
print " ok \n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
print "\n";
|
||||||
|
print "Obsoletes found:\n\n";
|
||||||
|
print "$_\n" for @obsoletes;
|
||||||
@@ -1,5 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
check_docker_requirements(){
|
check_docker_requirements(){
|
||||||
if [ "$(id -u)" != "0" ]; then
|
if [ "$(id -u)" != "0" ]; then
|
||||||
groups | grep -q docker || echo "--> If you are not running the script as root, your user should be in the docker group to use it. (sudo gpasswd -a $USER docker)"
|
groups | grep -q docker || echo "--> If you are not running the script as root, your user should be in the docker group to use it. (sudo gpasswd -a $USER docker)"
|
||||||
@@ -12,12 +14,12 @@ die() { echo "$@" 1>&2 ; exit 1; }
|
|||||||
build_sync() {
|
build_sync() {
|
||||||
layman -S
|
layman -S
|
||||||
emerge --sync
|
emerge --sync
|
||||||
eix-update || exit 1
|
eix-update
|
||||||
pushd /opt/sabayon-build/
|
pushd /opt/sabayon-build/
|
||||||
git stash
|
git stash
|
||||||
git fetch --all
|
git fetch --all || true
|
||||||
git checkout master
|
git checkout master || true
|
||||||
git reset --hard origin/master
|
git reset --hard origin/master || true
|
||||||
popd
|
popd
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -27,7 +29,7 @@ build_category() {
|
|||||||
for i in $(EIX_LIMIT=0 eix --only-names --pure-packages "$SEARCH/" | xargs echo | uniq);
|
for i in $(EIX_LIMIT=0 eix --only-names --pure-packages "$SEARCH/" | xargs echo | uniq);
|
||||||
do
|
do
|
||||||
echo "Building $i"
|
echo "Building $i"
|
||||||
emerge ${EMERGE_DEFAULT_ARGS:---accept-properties=-interactive --verbose --oneshot --nospinner --noreplace --quiet-build=y --quiet-fail --fail-clean=y --complete-graph --buildpkg} $i
|
emerge ${EMERGE_DEFAULT_ARGS:---accept-properties=-interactive --verbose --oneshot --nospinner --noreplace --quiet-build=y --quiet-fail --fail-clean=y --complete-graph --buildpkg} $i || true
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -36,7 +38,7 @@ build_obsolete() {
|
|||||||
for i in $(EIX_LIMIT=0 eix-test-obsolete | grep '\[U\]' | awk '{ print $2 }' | xargs echo | uniq);
|
for i in $(EIX_LIMIT=0 eix-test-obsolete | grep '\[U\]' | awk '{ print $2 }' | xargs echo | uniq);
|
||||||
do
|
do
|
||||||
echo "Build $i"
|
echo "Build $i"
|
||||||
emerge ${EMERGE_DEFAULT_ARGS:---accept-properties=-interactive -u --verbose --oneshot --nospinner --quiet-build=y --quiet-fail --fail-clean=y --complete-graph --buildpkg --noreplace} $i
|
emerge ${EMERGE_DEFAULT_ARGS:---accept-properties=-interactive -u --verbose --oneshot --nospinner --quiet-build=y --quiet-fail --fail-clean=y --complete-graph --buildpkg --noreplace} $i || true
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -46,7 +48,7 @@ build_category_installed() {
|
|||||||
for i in $(EIX_LIMIT=0 eix -I --only-names --pure-packages "$SEARCH/" | xargs echo | uniq);
|
for i in $(EIX_LIMIT=0 eix -I --only-names --pure-packages "$SEARCH/" | xargs echo | uniq);
|
||||||
do
|
do
|
||||||
echo "Building $i"
|
echo "Building $i"
|
||||||
emerge ${EMERGE_DEFAULT_ARGS:---accept-properties=-interactive -u --newuse --noreplace --changed-use --update --verbose --oneshot --nospinner --quiet-build=y --quiet-fail --fail-clean=y --complete-graph --buildpkg} $i
|
emerge ${EMERGE_DEFAULT_ARGS:---accept-properties=-interactive -u --newuse --noreplace --changed-use --update --verbose --oneshot --nospinner --quiet-build=y --quiet-fail --fail-clean=y --complete-graph --buildpkg} $i || true
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user