Compare commits

...

41 Commits

Author SHA1 Message Date
mudler 68841b4876 [sabayon-buildpackages] add support for FEATURES 2016-03-26 18:42:48 +01:00
mudler 267870a699 [sabayon-buildpackages] hide env variables echo 2016-03-26 12:38:02 +01:00
mudler 0831363686 [sabayon-buildpackages] adding support for distcc 2016-03-25 22:13:30 +01:00
mudler 0f776e4dd8 [builder] consider a build successfully when running with splitted emerge 2016-03-25 15:34:50 +01:00
mudler 8261606b8b [sabayon-buildpackages] adding support for ENMAN_REPOSITORIES 2016-03-25 14:24:09 +01:00
mudler 71403285a4 adding ENMAN_REPOSITORIES to supply a space-separated list of entropy repositories to add with enman 2016-03-25 14:12:21 +01:00
mudler dd53f6a35e keep our internal say() version 2016-03-23 16:01:41 +01:00
mudler 0e41fbd168 dumb fix 2016-03-23 15:55:11 +01:00
mudler ce0272bd29 enable emerge --info informations to be displayed *always* on build, it will not be parametrized on purpose 2016-03-23 15:54:24 +01:00
mudler 4eee9a7fbc [builder] adjust output 2016-03-23 15:48:49 +01:00
mudler 320f75cd46 [sabayon-buildpackages] supporting EMERGE_SPLIT_INSTALL 2016-03-23 00:19:56 +01:00
mudler e9c671b65e [builder] adding EMERGE_SPLIT_INSTALL 2016-03-23 00:19:04 +01:00
mudler e07cb53932 [sabayon-createrepo-cleanup sabayon-createrepo-remove] respect DOCKER_OPTS 2016-03-22 14:35:57 +01:00
Ettore Di Giacinto 51d7bdc968 Merge pull request #7 from optiz0r/feature_package_deps_cache
Add brackets to uniq to fix compilation error
2016-03-21 21:59:19 +01:00
Ben Roberts 79d3d5d4b5 Add brackets to uniq to fix compilation error 2016-03-21 20:54:57 +00:00
Ettore Di Giacinto 2c05cdce52 Merge pull request #6 from optiz0r/feature_package_deps_cache
Cache results of package_deps and re-enable virtual dep stripping
2016-03-20 21:01:57 +01:00
Ben Roberts a55856cb97 Revert to using locally defined uniq 2016-03-20 19:59:56 +00:00
Ben Roberts 967cd9708a Cache results of package_deps and re-enable virtual dep stripping
It's likely that some virtuals are dependencies of multiple package arguments
to builder and the depgraph would be queried multiple times. This commit
caches the results to avoid expensive duplicate shell execs and optimise for
speed.

Additionally, when calls to equery depgraph match multiple packages (e.g.
the query is for an unversioned atom, and multiple versions exist in the
portage tree), the results for all versions are returned, resulting in
duplicates. This change also strips out the duplicate entries so further
work need only be done once.

This uses perl 5.10's `state` variables, so adds the appropriate use. Since
Sabayon ships only perl 5.20, this should not be an issue.
2016-03-20 19:43:20 +00:00
mudler 566e4603c8 [sabayon-createrepo] sign won't return true also if succeeds but repos have to be synced 2016-03-18 17:53:38 +01:00
mudler 55bb3cc44e enabling package signing 2016-03-18 14:33:12 +01:00
Ettore Di Giacinto 502b85b84b [createrepo] adding KEYS env variable 2016-03-18 00:23:47 +01:00
mudler c17228fc05 [builder] reverting virtual exclusion, prevents building and end in an infinite loop 2016-03-15 11:05:19 +01:00
mudler a4ce1e8300 suppressing useless output 2016-03-06 20:43:35 +01:00
mudler 67a689f217 [builder sabayon-buildpackages] renaming SKIP_SYNC in SKIP_PORTAGE_SYNC 2016-03-06 20:37:02 +01:00
mudler 2c38ae1c0c [builder sabayon-buildpackages] adding SKIP_SYNC and WEBRSYNC to control portage sync 2016-03-06 20:04:52 +01:00
mudler f35a2e14cd [builder] dumb fix to virtual's dependencies exclusion 2016-03-06 19:54:24 +01:00
mudler 23d9c86cae [builder] minor changes, fix to virtual's dependencies exclusion 2016-03-06 19:42:59 +01:00
Ettore Di Giacinto c7d05296f9 Merge pull request #5 from optiz0r/feature_handle_virtual_dependencies
Don't install dependencies brought in by virtual packages
2016-03-06 19:41:22 +01:00
Ben Roberts 1c29cba964 Don't install dependencies brought in by virtual packages
When calculating the missing dependencies for an ebuild to be installed
by entropy, it's necessary to walk two levels deep minimum to handle meta
packages and split ebuilds. This has a nasty side effect for virtual packages
since all the potential candidates that could satisfy the virtual are
included. This means for anything that has a dependency on virtual/jdk, every
possible jdk is installed side-by-side. For anything that depends on
virtual/mta, every possible mta is installed one by one (because these conflict
and substitute each other, each subsequent install uninstalls the previous
package which is a massive waste of time, bandwidth and effort).

This commit walks through the dependency list looking for any virtual packages.
For each one, the first-level dependencies of the virtual are collected. Only
dependencies of the target package which are not also dependencies of the virtual
are installed. This means only one package that satisfies the virtual will end up
being installed.
2016-03-06 17:35:53 +00:00
mudler 5895b63ef6 [builder] moving @Installed_Packages chomp to a more logic part 2016-03-06 17:00:55 +01:00
mudler 90121cd3b8 [builder] fix, force shift to be evaluated in expression context inside dereference 2016-03-06 16:59:33 +01:00
mudler caf7e76b9b [sabayon-buildpackages] read DEPENDENCY_SCAN_DEPTH env variable and propagating to builder #4 2016-03-06 13:39:36 +01:00
mudler 42dab39689 [builder] checking if installation of packages is required at all #3 2016-03-06 13:24:54 +01:00
mudler aebe2c8783 [builder] Speed up Available/Installed Packages computation #3 2016-03-06 13:13:55 +01:00
mudler f37168a9e8 [builder] enabling depth override with DEPENDENCY_SCAN_DEPTH env variable #4 2016-03-06 13:03:14 +01:00
Ettore Di Giacinto c40be91df5 Merge pull request #1 from optiz0r/bugfix_dont_reinstall_deps
Fix equo query to prevent dependencies being reinstalled
2016-03-06 12:38:59 +01:00
Ettore Di Giacinto aa31b5865b Merge pull request #2 from optiz0r/feature_disable_mirrorsort
Allow disabling mirrorsort with EQUO_MIRRORSORT=0 env var
2016-03-06 12:33:30 +01:00
Ben Roberts cea7504964 Allow disabling mirrorsort with EQUO_MIRRORSORT=0 env var
When doing repeated testing, the mirrorsort can add unwanted delay.
This commit adds support for setting EQUO_MIRRORSORT=0 to disable this
and use the default sort order while testing.
It preserves the previous behaviour and defaults to 1.
2016-03-05 22:52:20 +00:00
Ben Roberts 3d51d160c5 Remove workaround for equery output not being quiet as requested 2016-03-05 22:47:49 +00:00
Ben Roberts cbd7a010ba Fix equo query to prevent dependencies being reinstalled
Call to equo query puts arg '--quiet' in the wrong place, receiving
prettified output which doesn't match string comparisons against
package names, leading to all dependencies being reinstalled every
time. This commit puts the --quiet arg in to correct place so that
only missing dependencies are installed.
2016-03-05 20:17:19 +00:00
mudler c3e313ef60 add sabayon-tbz2truncate 2016-03-03 00:43:00 +01:00
6 changed files with 149 additions and 34 deletions
+94 -28
View File
@@ -1,6 +1,8 @@
#!/usr/bin/env perl #!/usr/bin/env perl
use Getopt::Long; use Getopt::Long;
use v5.10;
no feature "say";
my $profile = $ENV{BUILDER_PROFILE} // 3; my $profile = $ENV{BUILDER_PROFILE} // 3;
my $jobs = $ENV{BUILDER_JOBS} // 1; my $jobs = $ENV{BUILDER_JOBS} // 1;
@@ -14,8 +16,14 @@ $ENV{FEATURES} = $ENV{FEATURES}
my $equo_install_atoms = $ENV{EQUO_INSTALL_ATOMS} // 1; my $equo_install_atoms = $ENV{EQUO_INSTALL_ATOMS} // 1;
my $equo_install_version = $ENV{EQUO_INSTALL_VERSION} // 0; my $equo_install_version = $ENV{EQUO_INSTALL_VERSION} // 0;
my $equo_split_install = $ENV{EQUO_SPLIT_INSTALL} // 0; my $equo_split_install = $ENV{EQUO_SPLIT_INSTALL} // 0;
my $equo_mirrorsort = $ENV{EQUO_MIRRORSORT} // 1;
my $entropy_repository = $ENV{ENTROPY_REPOSITORY} // "main"; # Can be weekly, main, testing my $entropy_repository = $ENV{ENTROPY_REPOSITORY} // "main"; # Can be weekly, main, testing
my $artifacts_folder = $ENV{ARTIFACTS_DIR}; my $artifacts_folder = $ENV{ARTIFACTS_DIR};
my $dep_scan_depth = $ENV{DEPENDENCY_SCAN_DEPTH} // 2;
my $skip_portage_sync = $ENV{SKIP_PORTAGE_SYNC} // 0;
my $emerge_split_install = $ENV{EMERGE_SPLIT_INSTALL} // 0;
my $webrsync = $ENV{WEBRSYNC} // 0;
my $enman_repositories = $ENV{ENMAN_REPOSITORIES};
my $make_conf = $ENV{MAKE_CONF}; my $make_conf = $ENV{MAKE_CONF};
@@ -38,9 +46,29 @@ sub package_deps {
my $package = shift; my $package = shift;
my $depth = shift // 1; # defaults to 1 level of depthness of the tree my $depth = shift // 1; # defaults to 1 level of depthness of the tree
my $atom = shift // 0; my $atom = shift // 0;
return
map { $_ =~ s/\[.*\]|\s//g; &atom($_) if $atom; $_ } # Since we expect this sub to be called multiple times with the same arguments, cache the results
qx/equery -C -q g --depth=$depth $package/; #depth=0 it's all state %cache;
$cache_key = "${package}:${depth}:${atom}";
if ( ! exists $cache{$cache_key} ) {
@dependencies = qx/equery -C -q g --depth=$depth $package/; #depth=0 it's all
chomp @dependencies;
# If an unversioned atom is given, equery returns results for all versions in the portage tree
# leading to duplicates. The sanest thing to do is dedup the list. This gives the superset of all
# possible dependencies, which isn't perfectly accurate but should be good enough. For completely
# accurate results, pass in a versioned atom.
@dependencies = uniq(
sort
grep { $_ }
map { $_ =~ s/\[.*\]|\s//g; &atom($_) if $atom; $_ }
@dependencies);
$cache{$cache_key} = \@dependencies;
}
return @{ $cache{$cache_key} };
} }
#Input: nothing #Input: nothing
@@ -60,21 +88,32 @@ sub calculate_missing {
my $package = shift; my $package = shift;
my $depth = shift; my $depth = shift;
my @Installed_Packages = @{+shift};
my @Available_Packages = @{+shift};
# Getting the package dependencies and the installed packages # Getting the package dependencies and the installed packages
say "[$package] Getting the package dependencies and the installed packages"; my @dependencies = package_deps( $package, $depth, 1 );
my @Packages = package_deps( $package, $depth, 1 );
my @Installed_Packages = qx/equo q --quiet list installed/; my %install_dependencies = map { $_ => 1 } @dependencies;
chomp(@Installed_Packages); # Look for any virtuals and remove its immediate dependencies to avoid
say "[$package] Getting the package dependencies and the installed packages"; # installing multiple conflicting packages one by one
my @virtual_deps;
for my $dep (@dependencies) {
push(@virtual_deps, package_deps( $dep, 1, 1 )) if ( $dep =~ /^virtual\// );
}
for my $dep (@virtual_deps) {
$install_dependencies{$dep} = 0 if ( $dep !~ /^virtual\// );
}
@dependencies = grep { $install_dependencies{$_} } @dependencies;
#taking only the 4th column of output as key of the hashmap #taking only the 4th column of output as key of the hashmap
my %installed_packs = my %installed_packs =
map { ( split( /\s/, $_ ) )[3] => 1 } @Installed_Packages; map { $_ => 1 } @Installed_Packages;
my %available_packs = map { $_ => 1 } available_packages(); my %available_packs = map { $_ => 1 } @Available_Packages;
# removing from packages the one that are already installed and keeping only the available in the entropy repositories # removing from packages the one that are already installed and keeping only the available in the entropy repositories
my @to_install = grep( defined $available_packs{$_}, my @to_install = grep( defined $available_packs{$_},
uniq( grep( !defined $installed_packs{$_}, @Packages ) ) ); uniq( grep( !defined $installed_packs{$_}, @dependencies ) ) );
@to_install=grep { length } @to_install; @to_install=grep { length } @to_install;
say "[$package] packages that will be installed with equo: @to_install" if @to_install>0; say "[$package] packages that will be installed with equo: @to_install" if @to_install>0;
@@ -97,11 +136,12 @@ sub help {
"\t$0 app-foo/foobar --equo foo-misc/foobar --equo net-foo/foobar --layman foo --layman bar foo", "\t$0 app-foo/foobar --equo foo-misc/foobar --equo net-foo/foobar --layman foo --layman bar foo",
"**************************", "", "**************************", "",
"You can supply multiple overlays as well: $0 plasma-meta --layman kde plab", "You can supply multiple overlays as well: $0 plasma-meta --layman kde plab",
"The documentation is available at https://github.com/Sabayon/devkit",
""; "";
} }
say say
"************* IF YOU WANT TO SUPPLY ADDITIONAL ARGS TO EMERGE, pass to docker EMERGE_DEFAULT_OPTS env with your options *************"; "****************************************************";
if ( @overlays > 0 ) { if ( @overlays > 0 ) {
say "Overlay(s) to add"; say "Overlay(s) to add";
@@ -110,11 +150,11 @@ if ( @overlays > 0 ) {
} }
} }
say "Installing:"; say "[*] Installing:";
say "\t* " . $_ for @ARGV; say "\t* " . $_ for @ARGV;
say "* Syncing stuff for you, if it's the first time, can take a while"; say "[*] Syncing configurations files, Layman and Portage";
# 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.
@@ -157,8 +197,15 @@ auto-sync = no' > /etc/portage/repos.conf/local.conf
system("mkdir -p /usr/portage/distfiles/git3-src"); system("mkdir -p /usr/portage/distfiles/git3-src");
# sync portage and overlays unless($skip_portage_sync == 1){
system("layman -S;emerge --sync"); # sync portage and overlays
system("layman -S");
if($webrsync == 1){
system("emerge-webrsync");
} else {
system("emerge --sync");
}
}
# preparing for MOAR automation # preparing for MOAR automation
qx|eselect profile set $profile|; qx|eselect profile set $profile|;
@@ -174,8 +221,14 @@ if ($use_equo && $entropy_repository eq "weekly" ) {
qx|equo repo enable sabayon-limbo|; qx|equo repo enable sabayon-limbo|;
} }
system("equo repo mirrorsort sabayonlinux.org;equo up && equo u") if ($use_equo) {
if $use_equo; # Better don't be behind if ($enman_repositories and $enman_repositories ne "") {
my @enman_toadd=split(/ /,$enman_repositories);
system("enman add $_") for @enman_toadd;
}
system("equo repo mirrorsort sabayonlinux.org") if $equo_mirrorsort;
system("equo up && equo u")
}
system("cp -rf $make_conf /etc/portage/make.conf") if $make_conf; system("cp -rf $make_conf /etc/portage/make.conf") if $make_conf;
@@ -185,16 +238,18 @@ my @packages = @ARGV;
if ($use_equo) { if ($use_equo) {
my @packages_deps; my @packages_deps;
my @Installed_Packages = qx/equo q list installed --quiet/;
my @Available_Packages = available_packages();
chomp(@Installed_Packages);
foreach my $p (@packages) { foreach my $p (@packages) {
say "[$p] Getting the package dependencies which aren't already installed on the system.. "; say "[$p] Getting the package dependencies which aren't already installed on the system.. ";
push( @packages_deps, calculate_missing( $p , 2) ) push( @packages_deps, calculate_missing( $p , $dep_scan_depth,\@Installed_Packages,\@Available_Packages) )
if $equo_install_atoms; if $equo_install_atoms;
push( @packages_deps, package_deps( $p, 2, 0 ) ) push( @packages_deps, package_deps( $p, $dep_scan_depth, 0 ) )
if $equo_install_version; if $equo_install_version;
say "[$p] Done"
} }
@packages_deps = grep { defined() and length() } @packages_deps; #cleaning @packages_deps = grep { defined() and length() } @packages_deps; #cleaning
say "", "[install] Installing missing dependencies with equo", @packages_deps, ""; say "", "[install] Those dependencies will be installed with equo :", @packages_deps, "";
if ($equo_split_install) { if ($equo_split_install) {
system("equo i --bdeps $_") for (@packages_deps,@equo_install); system("equo i --bdeps $_") for (@packages_deps,@equo_install);
if (@equo_remove > 0){ if (@equo_remove > 0){
@@ -202,16 +257,27 @@ if ($use_equo) {
} }
} }
else { else {
system("equo i --bdeps @packages_deps @equo_install"); system("equo i --bdeps @packages_deps @equo_install") if ( @packages_deps > 0 or @equo_install > 0);
if (@equo_remove > 0){ system("equo rm --nodeps @equo_remove") if (@equo_remove > 0);
system("equo rm --nodeps @equo_remove");
}
} }
} }
say "* Ready to compile, finger crossed"; say "*** Ready to compile, finger crossed ***";
my $rt = system("emerge $emerge_defaults_args -j $jobs @packages"); system("emerge --info"); #always give detailed information about the building environment, helpful to debug
my $rt;
if ($emerge_split_install) {
for my $pack (@packages){
my $tmp_rt=system("emerge $emerge_defaults_args -j $jobs $pack");
# $rt=$tmp_rt if ($? == -1 or $? & 127 or !$rt); # if one fails, the build should be considered failed!
}
$rt=0; #consider the build good anyway, like a "keep-going"
}
else {
$rt = system("emerge $emerge_defaults_args -j $jobs @packages");
}
my $return = $rt >> 8; my $return = $rt >> 8;
+8 -1
View File
@@ -24,17 +24,24 @@ docker_volumes=( -v "$OUTPUT_DIR:/usr/portage/packages" )
[ -z "$PORTAGE_CACHE" ] || docker_volumes+=(-v "$PORTAGE_CACHE:/usr/portage") [ -z "$PORTAGE_CACHE" ] || docker_volumes+=(-v "$PORTAGE_CACHE:/usr/portage")
[ -z "$BUILDER_PROFILE" ] || docker_env+=(-e "BUILDER_PROFILE=$BUILDER_PROFILE") [ -z "$BUILDER_PROFILE" ] || docker_env+=(-e "BUILDER_PROFILE=$BUILDER_PROFILE")
[ -z "$EMERGE_SPLIT_INSTALL" ] || docker_env+=(-e "EMERGE_SPLIT_INSTALL=$EMERGE_SPLIT_INSTALL")
[ -z "$BUILDER_JOBS" ] || docker_env+=(-e "BUILDER_JOBS=$BUILDER_JOBS") [ -z "$BUILDER_JOBS" ] || docker_env+=(-e "BUILDER_JOBS=$BUILDER_JOBS")
[ -z "$USE_EQUO" ] || docker_env+=(-e "USE_EQUO=$USE_EQUO") [ -z "$USE_EQUO" ] || docker_env+=(-e "USE_EQUO=$USE_EQUO")
[ -z "$PRESERVED_REBUILD" ] || docker_env+=(-e "PRESERVED_REBUILD=$PRESERVED_REBUILD") [ -z "$PRESERVED_REBUILD" ] || docker_env+=(-e "PRESERVED_REBUILD=$PRESERVED_REBUILD")
[ -z "$EQUO_INSTALL_ATOMS" ] || docker_env+=(-e "EQUO_INSTALL_ATOMS=$EQUO_INSTALL_ATOMS") [ -z "$EQUO_INSTALL_ATOMS" ] || docker_env+=(-e "EQUO_INSTALL_ATOMS=$EQUO_INSTALL_ATOMS")
[ -z "$DEPENDENCY_SCAN_DEPTH" ] || docker_env+=(-e "DEPENDENCY_SCAN_DEPTH=$DEPENDENCY_SCAN_DEPTH")
[ -z "$FEATURES" ] || docker_env+=(-e "FEATURES=$FEATURES")
[ -z "$EMERGE_DEFAULTS_ARGS" ] || docker_env+=(-e "EMERGE_DEFAULTS_ARGS=$EMERGE_DEFAULTS_ARGS") [ -z "$EMERGE_DEFAULTS_ARGS" ] || docker_env+=(-e "EMERGE_DEFAULTS_ARGS=$EMERGE_DEFAULTS_ARGS")
[ -z "$EQUO_INSTALL_VERSION" ] || docker_env+=(-e "EQUO_INSTALL_VERSION=$EQUO_INSTALL_VERSION") [ -z "$EQUO_INSTALL_VERSION" ] || docker_env+=(-e "EQUO_INSTALL_VERSION=$EQUO_INSTALL_VERSION")
[ -z "$EQUO_SPLIT_INSTALL" ] || docker_env+=(-e "EQUO_SPLIT_INSTALL=$EQUO_SPLIT_INSTALL") [ -z "$EQUO_SPLIT_INSTALL" ] || docker_env+=(-e "EQUO_SPLIT_INSTALL=$EQUO_SPLIT_INSTALL")
[ -z "$ARTIFACTS_DIR" ] || docker_env+=(-e "ARTIFACTS_DIR=$ARTIFACTS_DIR") [ -z "$ARTIFACTS_DIR" ] || docker_env+=(-e "ARTIFACTS_DIR=$ARTIFACTS_DIR")
[ -z "$ENTROPY_REPOSITORY" ] || docker_env+=(-e "ENTROPY_REPOSITORY=$ENTROPY_REPOSITORY") [ -z "$ENTROPY_REPOSITORY" ] || docker_env+=(-e "ENTROPY_REPOSITORY=$ENTROPY_REPOSITORY")
[ -z "$SKIP_PORTAGE_SYNC" ] || docker_env+=(-e "SKIP_PORTAGE_SYNC=$SKIP_PORTAGE_SYNC")
[ -z "$WEBRSYNC" ] || docker_env+=(-e "WEBRSYNC=$WEBRSYNC")
[ -z "$ENMAN_REPOSITORIES" ] || docker_env+=(-e "ENMAN_REPOSITORIES=$ENMAN_REPOSITORIES")
[ -z "$DISTFILES" ] || docker_volumes+=(-v "$DISTFILES:/usr/portage/distfiles") [ -z "$DISTFILES" ] || docker_volumes+=(-v "$DISTFILES:/usr/portage/distfiles")
[ -z "$ENTROPY_DOWNLOADED_PACKAGES" ] || docker_volumes+=(-v "$ENTROPY_DOWNLOADED_PACKAGES:/var/lib/entropy/client/packages") [ -z "$ENTROPY_DOWNLOADED_PACKAGES" ] || docker_volumes+=(-v "$ENTROPY_DOWNLOADED_PACKAGES:/var/lib/entropy/client/packages")
[ -z "$DISTCC_HOSTS" ] || docker_env+=(-e "DISTCC_HOSTS=$DISTCC_HOSTS")
if [ -n "$REMOTE_OVERLAY" ]; then if [ -n "$REMOTE_OVERLAY" ]; then
git clone "$REMOTE_OVERLAY" "$TEMPDIR" git clone "$REMOTE_OVERLAY" "$TEMPDIR"
@@ -71,6 +78,6 @@ fi
echo "Spawning the package builder container for '$@'." echo "Spawning the package builder container for '$@'."
echo "" echo ""
echo "docker run $DOCKER_OPTS ${docker_env[@]} ${docker_volumes[@]} $DOCKER_IMAGE $@" #echo "docker run $DOCKER_OPTS ${docker_env[@]} ${docker_volumes[@]} $DOCKER_IMAGE $@"
docker run $DOCKER_OPTS "${docker_env[@]}" "${docker_volumes[@]}" $DOCKER_IMAGE $@ docker run $DOCKER_OPTS "${docker_env[@]}" "${docker_volumes[@]}" $DOCKER_IMAGE $@
+9 -1
View File
@@ -25,6 +25,10 @@ docker_volumes=(
-v "$entropysrv:/etc/entropy/server.conf" -v "$entropysrv:/etc/entropy/server.conf"
) )
[ -z "$PUBKEY" ] || docker_volumes+=(-v "$PUBKEY:/etc/entropy/mykeys/key.pub")
[ -z "$PRIVATEKEY" ] || docker_volumes+=(-v "$PRIVATEKEY:/etc/entropy/mykeys/private.key")
if [ $# -eq 0 ] if [ $# -eq 0 ]
then then
docker_volumes+=(-v "$PORTAGE_ARTIFACTS:/usr/portage/packages" ) docker_volumes+=(-v "$PORTAGE_ARTIFACTS:/usr/portage/packages" )
@@ -51,7 +55,7 @@ mkdir -p /sabayon/artifacts
if [ -d "/sabayon/artifacts/standard" ]; then if [ -d "/sabayon/artifacts/standard" ]; then
eit unlock \$repo || true eit unlock \$repo || true
eit pull --quick $repo || true eit pull --quick \$repo || true
#eit sync \$repo #eit sync \$repo
else else
echo "Yes" | eit init --quick \$repo echo "Yes" | eit init --quick \$repo
@@ -59,6 +63,10 @@ fi
echo "Yes" | eit inject \${built_pkgs} || { echo "ouch unable to inject" && exit 3; } echo "Yes" | eit inject \${built_pkgs} || { echo "ouch unable to inject" && exit 3; }
echo "Yes Yes Yes" | eit commit --quick echo "Yes Yes Yes" | eit commit --quick
[ -f "/etc/entropy/mykeys/key.pub" ] && [ -f "/etc/entropy/mykeys/private.key" ] &&\
eit key import \$repo /etc/entropy/mykeys/private.key /etc/entropy/mykeys/key.pub && { eit key sign \$repo || true; }
eit push --quick --force eit push --quick --force
EOF EOF
+3 -2
View File
@@ -10,6 +10,7 @@ REPOSITORY_DESCRIPTION="${REPOSITORY_DESCRIPTION:-My Sabayon repository}"
DOCKER_IMAGE="${DOCKER_IMAGE:-sabayon/eit-amd64}" DOCKER_IMAGE="${DOCKER_IMAGE:-sabayon/eit-amd64}"
PORTAGE_ARTIFACTS="${PORTAGE_ARTIFACTS:-$SAB_WORKSPACE/portage_artifacts}" PORTAGE_ARTIFACTS="${PORTAGE_ARTIFACTS:-$SAB_WORKSPACE/portage_artifacts}"
OUTPUT_DIR="${OUTPUT_DIR:-$SAB_WORKSPACE/entropy_artifacts}" OUTPUT_DIR="${OUTPUT_DIR:-$SAB_WORKSPACE/entropy_artifacts}"
DOCKER_OPTS="${DOCKER_OPTS:--ti --rm}"
args=("$@") args=("$@")
EDITOR=cat EDITOR=cat
@@ -88,6 +89,6 @@ function cleanup {
trap cleanup EXIT trap cleanup EXIT
echo "docker run --rm --entrypoint /bin/bash ${docker_env[@]} ${docker_volumes[@]} -ti $DOCKER_IMAGE /sabayon/bin/create_repo.sh" echo "docker run $DOCKER_OPTS --entrypoint /bin/bash ${docker_env[@]} ${docker_volumes[@]} $DOCKER_IMAGE /sabayon/bin/create_repo.sh"
docker run --rm --entrypoint /bin/bash "${docker_env[@]}" "${docker_volumes[@]}" -ti $DOCKER_IMAGE /sabayon/bin/create_repo.sh || true docker run $DOCKER_OPTS --entrypoint /bin/bash "${docker_env[@]}" "${docker_volumes[@]}" $DOCKER_IMAGE /sabayon/bin/create_repo.sh || true
+3 -2
View File
@@ -10,6 +10,7 @@ REPOSITORY_DESCRIPTION="${REPOSITORY_DESCRIPTION:-My Sabayon repository}"
DOCKER_IMAGE="${DOCKER_IMAGE:-sabayon/eit-amd64}" DOCKER_IMAGE="${DOCKER_IMAGE:-sabayon/eit-amd64}"
PORTAGE_ARTIFACTS="${PORTAGE_ARTIFACTS:-$SAB_WORKSPACE/portage_artifacts}" PORTAGE_ARTIFACTS="${PORTAGE_ARTIFACTS:-$SAB_WORKSPACE/portage_artifacts}"
OUTPUT_DIR="${OUTPUT_DIR:-$SAB_WORKSPACE/entropy_artifacts}" OUTPUT_DIR="${OUTPUT_DIR:-$SAB_WORKSPACE/entropy_artifacts}"
DOCKER_OPTS="${DOCKER_OPTS:--ti --rm}"
args=("$@") args=("$@")
EDITOR=cat EDITOR=cat
@@ -86,6 +87,6 @@ function cleanup {
trap cleanup EXIT trap cleanup EXIT
echo "docker run --rm --entrypoint /bin/bash ${docker_env[@]} ${docker_volumes[@]} -ti $DOCKER_IMAGE /sabayon/bin/create_repo.sh" echo "docker run $DOCKER_OPTS --entrypoint /bin/bash ${docker_env[@]} ${docker_volumes[@]} $DOCKER_IMAGE /sabayon/bin/create_repo.sh"
docker run --rm --entrypoint /bin/bash "${docker_env[@]}" "${docker_volumes[@]}" -ti $DOCKER_IMAGE /sabayon/bin/create_repo.sh || true docker run $DOCKER_OPTS --entrypoint /bin/bash "${docker_env[@]}" "${docker_volumes[@]}" $DOCKER_IMAGE /sabayon/bin/create_repo.sh || true
+32
View File
@@ -0,0 +1,32 @@
#!/usr/bin/python
# mudler <mudler@sabayon.org>
# Edit: truncate a tbz2 with just data
import os
import sys
from portage import xpak
def usage():
sys.stderr.write("usage: %s <tbz2_file>\n" % os.path.basename(sys.argv[0]))
def main():
if len(sys.argv) != 2:
usage()
return 1
input_file = sys.argv[1]
if not os.path.isfile(input_file):
usage()
return 1
t = xpak.tbz2(input_file)
t.scan()
f = open(input_file, 'r+')
f.seek(-t.xpaksize, os.SEEK_END)
f.truncate()
f.close()
return 0
if __name__ == '__main__':
sys.exit(main())