Giter VIP home page Giter VIP logo

tatt's Introduction

tatt (is an) arch testing tool

Introduction

Arch testing includes many boring tasks and tatt tries to automate them. It can be configured through the file ~/.tatt, an example is given below.

tatt uses a template system. Basically it fills in small bash scripts using data scraped off bugzilla. You can look at the default templates which live in /usr/share/tatt/templates/

tatt uses 'bugz' from www-client/pybugz. You may want to configure an alias for 'bugz' to contain your login-credentials or you will have to type them everytime you use tatt.

tatt lives on GitHub. Forks and pull requests are welcome: https://github.com/gentoo/tatt

Ways to use tatt

Work on a stable bug no 300000

This will unmask the package and create five shell scripts. One is for automated testing of USE-flag combinations, one is for testing of reverse dependencies, one is for committing the new keywords to CVS, one is for leaving a message on the bug, and finally one is for cleaning up.

tatt -b300000 -j myjob

-j specifies a jobname which will be a prefix for the scripts that tatt produces, if it is left empty the bugnumber will be used

Work on multiple packages

If a whole list of packages should be tested, they can be specified in a file

tatt -f myPackageFile -b bugnumber

This will open the file myPackageFile, look for all atoms in it, and write scripts that test/commit all packages. If -j is omitted the filename is used. The bugnumber is necessary for the commit script.

Resolving a bug

Assume everything was committed and we want to resolve the bug.

tatt -r bugnum -m "x86 stable, Thanks xyz"

removes your arch from the CC field of the bug and adds the message.

tatt -cr bugnum -m "x86 stable, Thanks, closing"

Does the things -r does and additionally closes the bug.

Running individual parts of tatt

  • Open a bug and leave a message (for instance after successfull testing)

    tatt -s300000

  • Create only the test script for reverse dependencies of foo:

    tatt -d app-bar/foo

  • Create only the USE-flag testing script of foo

    tatt -u app-bar/foo

  • Show help

    tatt -h

  • Configuring tatt via ~/.tatt The specification of the configuration file can be found in dot-tatt-spec which usually resides /usr/lib/${python}/site-packages/tatt
####### EXAMPLE ~/.tatt ############
# Here we show the possible options together with their default values

# Message for the success script @@ARCH@@ will be replaced by arch
# successmessage='Archtested on @@ARCH@@: Everything fine'

# ignoreprefix contains a list of use flag prefixes to be ignored 
# ignoreprefix="elibc_","video_cards_","linguas_","python_targets_","python_single_target_","kdeenablefinal","test","debug"

# The arch you are working on (be careful, only tested with x86)
# arch=x86

# Directory where your script templates are (normally you don't need
# to change this)
# template-dir="/usr/share/tatt/templates/"

# Where do you want tatt to put unmasked packages. Writes one file per
# job in this directory.
# unmaskdir="/etc/portage/package.accept_keywords"

# You can customize the maximal number of rdeps to be tested as follows:
# rdeps=3

# You can customize the maximal number USE combis to be tested as follows:
# usecombis=3
# Note that All USE-flags on and all USE-flags off will always be tested.

# Location of a checked out CVS Gentoo tree for repoman checks and commit scripts
# repodir="./gentoo-x86"

# Url where the pre-generated rindex is to be found
# tinderbox-url="https://qa-reports.gentoo.org/output/genrdeps/rindex/"

# If this is set, then tatt will refuse to run in a directory that does not
# match this string.  Use it as a safety measure against creating tatt-scripts
# in random places of you filesystem
# safedir=string(default="")

# All emerge runs in the generated scripts are automatically passed
# the -1 option.  Here you can specify additional options.
# emergeopts="-v"

# directory where logs of failed builds will be stored
# the exact name of the log will be shown in the report file
# buildlogdir="./tatt/logs"

tatt's People

Contributors

ajakk avatar ceamac avatar derdakon avatar johu avatar kensington avatar lucianposton avatar thesamesam avatar tom111 avatar tpruzina avatar turboscholz avatar whissi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tatt's Issues

`tatt -o` gives "AttributeError: 'module' object has no attribute 'Bugz'"

Installed tatt via Portage:

eix tatt:

[I] app-portage/tatt
Available versions:  (**)9999{tbz2} {+templates}
Installed versions:  9999{tbz2}(16:46:36 04-06-2012)(templates)
Homepage:            http://github.com/tom111/tatt
Description:         tatt is an arch testing tool

As root:

$  tatt -o
Traceback (most recent call last):
  File "/usr/bin/tatt-2.7", line 130, in <module>
    launch_browser (config)
  File "/usr/lib64/python2.7/site-packages/tatt/bugbrowser.py", line 271, in launch_browser
    bugzilla = bugz.bugzilla.Bugz('http://bugs.gentoo.org', skip_auth=True)
AttributeError: 'module' object has no attribute 'Bugz'

Installed version of pybugz is 0.10.1.

problem with keywording bugs (ppc)

tatt seems to have problems with keywording bugs (e.g. bug 719694). Stabilization bugs (e.g. bug 711784) work fine.

# tatt -b 719694
Bugnumber:  719694
Keywording bug detected.
Jobname: argcomplete-719694
Found the following package atom : dev-python/argcomplete
Traceback (most recent call last):
  File "/usr/lib/python-exec/python3.6/tatt", line 213, in <module>
    kw = port.aux_get(dep_getcpv(p.packageString()), ["KEYWORDS"])
  File "/usr/lib/python3.6/site-packages/portage/dbapi/porttree.py", line 614, in aux_get
    myrepo=myrepo, loop=loop))
  File "/usr/lib/python3.6/site-packages/portage/dbapi/porttree.py", line 673, in async_aux_get
    myebuild, mylocation = self.findname2(mycpv, mytree)
  File "/usr/lib/python3.6/site-packages/portage/dbapi/porttree.py", line 484, in findname2
    raise InvalidPackageName(mycpv)
portage.exception.InvalidPackageName: dev-python/argcomplete

Package detection from bug title does not work

Currently https://bugs.gentoo.org/651118 has no packages set, and the title is set to "<net-analyzer/nmap-7.70 - directory traversal vulnerability in the way the non-default http-fetch script sanitized URLs".

castor ~ # tatt -b651118
Bugnumber:  651118
Stabilization bug detected.
Please call with complete package atom (including version) as argument.

portage.exception.PortageKeyError: 'dev-python/fonttools-3.44.0'

Happens when I tatt bug 694372 (https://bugs.gentoo.org/694372).

# tatt -b 694372
Bugnumber:  694372
Keywording bug detected.
Jobname: zopfli-694372
Found the following package atom : =app-arch/zopfli-1.0.2
Found the following package atom : =dev-python/fonttools-3.44.0
Traceback (most recent call last):
  File "/usr/lib/python-exec/python3.6/tatt", line 213, in <module>
    kw = port.aux_get(dep_getcpv(p.packageString()), ["KEYWORDS"])
  File "/usr/lib/python3.6/site-packages/portage/dbapi/porttree.py", line 614, in aux_get
    myrepo=myrepo, loop=loop))
  File "/usr/lib/python3.6/site-packages/portage/util/_eventloop/EventLoop.py", line 833, in run_until_complete
    return future.result()
portage.exception.PortageKeyError: 'dev-python/fonttools-3.44.0'

random use flag list may contain too few entries

When random entries are generated the list of generated numbers is made unique afterwards. If invalid combinations are filtered out (see #34) then this list may shrink even more. The missing entries are not filled up, so especially for packages with many use flags and REQUIRED_USE constraints it is likely that only very few use tests remain.

no keywords on stabilization bug should be discovered

Every once in a while you run into a stabilization bug where at least one package isn't even keyworded for your arch. There are several options how to deal with that:

  • issue a BIG warning
  • add the package with **
  • treat this package as keywording only
  • all of the above

Optionally unemerge before next emerge

To test whether the ebuilds links and builds correctly against the new version it would be nice to optionally unemerge the package before the next round.

Way to disable adding "echo >> sequencer64.report" from generated script?

On this line

outfile.write("echo >> " + reportname + "\n")

echo >> sequencer64.report always gets added to the end of the generated script.

I'd like to use tatt to generate a script to emerge all possible USE flag combinations for testing/CI purposes. For this case it's enough to just execute the emerge commands, I don't need a report.
Would it be possible to enable this to be configurable?

I think the most flexible way of doing this is adding a "footer" template, similar to the "header" template that already exists for the USE flag script generator.

autodetect architecture

Currently there is "x86" hardcoded into the default config, it should instead somehow detect what is actually in use.

rdeps script does not respect ignoreprefix

I have all not-yet-stable ruby versions in my ignoreprefix, e.g. "ruby_targets_ruby24". This flag still shows up in the use-flags of rdeps, where a lower ruby version would probably also be ok.

tatt crashes when 'unmaskdir' config value is unset

Introduced in a5f83728d12e841c67e9e264baa4d71d26aba0d4. In previous versions tatt would give an error like:

tatt $ ./scripts/tatt -b723346
Bugnumber:  723346
Stabilization bug detected.
Jobname: cdrtools-723346
Found the following package atom : =app-cdr/cdrtools-3.02_alpha09-r2
Your unmaskfile was not found, I will create it as
/etc/portage/package.accept_keywords/archtest
Can not write to  /etc/portage/package.accept_keywords/archtest
Maybe you don't have permission or the location is invalid.
Is /etc/portage/package.accept_keywords a writeable directory?
Probably you want to configure a different unmaskfile
in your ~/.tatt.  Exiting

When the repository is at said commit:

tatt $ ./scripts/tatt -b723346
Bugnumber:  723346
Stabilization bug detected.
Jobname: cdrtools-723346
Found the following package atom : =app-cdr/cdrtools-3.02_alpha09-r2
Traceback (most recent call last):
  File "./scripts/tatt", line 242, in <module>
    unmaskname=config['unmaskdir']
  File "/usr/lib/python3.7/site-packages/configobj.py", line 554, in __getitem__
    val = dict.__getitem__(self, key)
KeyError: 'unmaskdir'

Note this isn't reproducable with the live ebuild, only when running from the source repository. Adding unmaskdir to ~/.tatt fixes it.

Better handling of virtual/* rdeps

Rdeps that are virtual/* are pointless to test in the rdeps script, as they don't have any tests, so nothing is tested here. It would probably be better to go one level deeper in that case and use the consumers of that virtual package instead.

tatt should use the portage API

Things that are already solved in portage are reimplemented (probably in a suboptimal way) in tatt. An example to start would be the handling of CPV strings in the "gentooPackage" class.

tatt fails to parse bug < Invalid package: '/' >

tatt fails on bug #429236

# tatt -b429236
Bugnumber:  429236
Stabilization bug detected.
Jobname: i3lock
Found the following package atom : =x11-misc/i3lock-2.4.1
Found the following package atom : /
=x11-misc/i3lock-2.4.1 already in /etc/portage/package.keywords/archtest
/ already in /etc/portage/package.keywords/archtest
!!! Invalid package: '/'
Traceback (most recent call last):
  File "/usr/bin/tatt-2.7", line 208, in 
    writeRdeps(myJob, config)
  File "/usr/lib64/python2.7/site-packages/tatt/scriptwriter.py", line 74, in writerdepscript
    rdeps = rdeps + stablerdeps (p, config)
  File "/usr/lib64/python2.7/site-packages/tatt/tinderbox.py", line 61, in stablerdeps
    d[gP(s[0]).packageCatName()] = s[1]
  File "/usr/lib64/python2.7/site-packages/tatt/gentooPackage.py", line 17, in __init__
    minusparts = slashparts[1].split("-")
IndexError: list index out of range
zsh: exit 1     tatt -b429236

option to exclude USE from testing

tatt -u should allow to have some USE excluded. E.g. switching PYTHON_TARGETS on and off or osx Prefix specific ones, does not make sense.

Avoid invalid USE flag combinations

I notice that tatt sometimes generate USE flag combinations that are invalid when considering REQUIRED_USE. For some packages, such as dev-python/pillow, it's especially problematic because there are many invalid combinations, I almost didn't get a single valid run. What about querying portage a bit better while generating those combinations so that we never generate invalid combinations?

use better ordering for commit script

Ideally the commit script would be sorted in a way that the first run actually succeeds, now it's often the case that one needs to run it multiple times to get all the dependencies in the right order.

use correct use flags for testing

Currently testing is just done using "FEATURES=test emerge โ€ฆ", which often enough fails because of missing use flags. This should be detectable using the portage API when writing the scripts so the test has a chance of actually succeeding.

Implement a sane solution for bugzilla authentication in pybugz

tatt uses pybugz to communicate with bugzilla. For this it needs a users login credentials. While this is not strictly necessary for fetching bugs, it is necessary for modifying them which is why tatt assumes that login credentials are known.
Until now the preferred way to provide login credentials was to create a shell alias bugz="bugz -u ... -p ...". This has worked fine for a few years, but it has stopped working in a current Gentoo. The reason is not totally clear, it could be due to some changes in how the subprocess module in python handles aliases from the environment.

There should be a sane solution for this. Two options are

  • Require to store bugzilla credentials in tatts config
  • Require from the user that typing 'bugz' just works (this is the status quo)

Catch PortageKeyError when atom wasn't found

 # tatt -b 652296
Bugnumber:  652296
Stabilization bug detected.
Jobname: Apache-AuthCookie-652296
Found the following package atom : =dev-perl/Apache-AuthCookie-3.270.0-r1
Traceback (most recent call last):
  File "/usr/lib/python-exec/python3.5/tatt", line 202, in <module>
    kw = port.aux_get(dep_getcpv(p.packageString()), ["KEYWORDS"])
  File "/usr/lib/python3.5/site-packages/portage/dbapi/porttree.py", line 613, in aux_get
    raise PortageKeyError(mycpv)
portage.exception.PortageKeyError: 'dev-perl/Apache-AuthCookie-3.270.0-r1'

My repository was out of date and didn't contain dev-perl/Apache-AuthCookie-3.270.0-r1. I think this can be improved and catched to display an actionable error message.

"already keyworded" detection unreliable

I had "=media-libs/zimg-2.5.1" in my keyword file, and tried to run tatt for a bug including version 2.5. No keywording was done as the already present line matched the search expression, but sadly not the package.

Tag new release?

Any chance a new release could be made/tagged? Mainly looking to use the required_use functionality from #34 and 0.5 doesn't contain that yet.

tatt-9999: emerge: error: Invalid Atom(s) in --usepkg-exclude parameter ...

With current tatt-9999 I get errors like these on ppc64 with e.g.

 # ./tpm2-tss-773337-useflags.sh 
Calculating dependencies... done!
>>> Auto-cleaning packages...

>>> No outdated packages were found on your system.
usage: emerge [--prune] [--check-news] [--list-sets] [--config] [--moo] [--sync] [--version]
              [--search] [--regen] [--info] [--clean] [--metadata] [--unmerge] [--help] [--depclean]
              [--rage-clean] [--alphabetical] [--ask-enter-invalid] [--buildpkgonly] [--changed-use]
              [--columns] [--debug] [--digest] [--emptytree] [--verbose-conflicts] [--fetchonly]
              [--fetch-all-uri] [--ignore-default-opts] [--noconfmem] [--newrepo] [--newuse]
              [--nodeps] [--noreplace] [--nospinner] [--oneshot] [--onlydeps] [--pretend]
              [--quiet-repo-display] [--quiet-unmerge-warn] [--resume] [--searchdesc] [--skipfirst]
              [--tree] [--unordered-display] [--update] [-1] [-B] [-c] [-C] [-d] [-e] [-f] [-F] [-h]
              [-n] [-N] [-o] [-O] [-p] [-P] [-r] [-s] [-S] [-t] [-u] [-U] [-V] [--cols] [--skip-first]
              [--alert {True,y,n}] [--ask {True,y,n}] [--autounmask {True,y,n}]
              [--autounmask-backtrack {y,n}] [--autounmask-continue {True,y,n}]
              [--autounmask-only {True,y,n}] [--autounmask-license {y,n}]
              [--autounmask-unrestricted-atoms {True,y,n}] [--autounmask-use {y,n}]
              [--autounmask-keep-keywords {True,y,n}] [--autounmask-keep-masks {True,y,n}]
              [--autounmask-write {True,y,n}] [--accept-properties ACCEPT_PROPERTIES]
              [--accept-restrict ACCEPT_RESTRICT] [--backtrack BACKTRACK]
              [--binpkg-changed-deps {True,y,n}] [--buildpkg {True,y,n}]
              [--buildpkg-exclude BUILDPKG_EXCLUDE] [--changed-deps {True,y,n}]
              [--changed-deps-report {True,y,n}] [--changed-slot {True,y,n}]
              [--config-root CONFIG_ROOT] [--color {y,n}] [--complete-graph {True,y,n}]
              [--complete-graph-if-new-use {y,n}] [--complete-graph-if-new-ver {y,n}] [--deep DEEP]
              [--depclean-lib-check {True,y,n}] [--deselect {True,y,n}] [--dynamic-deps {y,n}]
              [--exclude EXCLUDE] [--fail-clean {True,y,n}] [--fuzzy-search {True,y,n}]
              [--ignore-built-slot-operator-deps {y,n}] [--ignore-soname-deps {y,n}]
              [--ignore-world {True,y,n}] [--implicit-system-deps {y,n}] [--jobs JOBS]
              [--keep-going {True,y,n}] [--load-average LOAD_AVERAGE] [--misspell-suggestions {y,n}]
              [--with-bdeps {y,n}] [--with-bdeps-auto {y,n}] [--reinstall {changed-use}]
              [--reinstall-atoms REINSTALL_ATOMS] [--binpkg-respect-use {True,y,n}]
              [--getbinpkg {True,y,n}] [--getbinpkgonly {True,y,n}] [--usepkg-exclude USEPKG_EXCLUDE]
              [--onlydeps-with-rdeps {True,y,n}] [--rebuild-exclude REBUILD_EXCLUDE]
              [--rebuild-ignore REBUILD_IGNORE] [--package-moves {True,y,n}] [--prefix PREFIX]
              [--pkg-format PKG_FORMAT] [--quickpkg-direct {y,n}]
              [--quickpkg-direct-root QUICKPKG_DIRECT_ROOT] [--quiet {True,y,n}]
              [--quiet-build {True,y,n}] [--quiet-fail {True,y,n}] [--read-news {True,y,n}]
              [--rebuild-if-new-slot {True,y,n}] [--rebuild-if-new-rev {True,y,n}]
              [--rebuild-if-new-ver {True,y,n}] [--rebuild-if-unbuilt {True,y,n}]
              [--rebuilt-binaries {True,y,n}]
              [--rebuilt-binaries-timestamp REBUILT_BINARIES_TIMESTAMP] [--regex-search-auto {y,n}]
              [--root ROOT] [--root-deps {True,rdeps}] [--search-index {y,n}]
              [--search-similarity SEARCH_SIMILARITY] [--select {True,y,n}] [--selective {True,y,n}]
              [--sync-submodule {glsa,news,profiles}] [--sysroot SYSROOT]
              [--use-ebuild-visibility {True,y,n}] [--useoldpkg-atoms USEOLDPKG_ATOMS]
              [--usepkg {True,y,n}] [--usepkgonly {True,y,n}] [--verbose {True,y,n}]
              [--verbose-slot-rebuilds {True,y,n}] [--with-test-deps {True,y,n}]
              [positional_args [positional_args ...]]
emerge: error: Invalid Atom(s) in --usepkg-exclude parameter: '=app-crypt/tpm2-tss-2.4.5' (only package names and slot atoms (with wildcards) allowed)

This is the generated script from tatt -b 773337:

#!/bin/bash
#USE-Flag build tests for job tpm2-tss-773337

trap "echo 'signal captured, exiting the entire script...'; exit" SIGHUP SIGINT SIGTERM

export TATT_TEST_TYPE="use"
export TATT_REPORTFILE="tpm2-tss-773337.report"
export TATT_BUILDLOGDIR=""
export TATT_EMERGEOPTS=""

source "/usr/share/tatt/templates/tatt_functions.sh"

echo -e "USE tests started on $(date)\n" >> tpm2-tss-773337.report

test_ret=0

# Code for =app-crypt/tpm2-tss-2.4.5
 tatt_test_pkg --test "=app-crypt/tpm2-tss-2.4.5" || test_ret=1
USE='-doc -fapi gcrypt -openssl -static-libs' tatt_test_pkg "=app-crypt/tpm2-tss-2.4.5" || test_ret=1
USE='doc -fapi gcrypt -openssl -static-libs' tatt_test_pkg "=app-crypt/tpm2-tss-2.4.5" || test_ret=1
USE='-doc -fapi -gcrypt openssl -static-libs' tatt_test_pkg "=app-crypt/tpm2-tss-2.4.5" || test_ret=1
USE='doc -fapi -gcrypt openssl -static-libs' tatt_test_pkg "=app-crypt/tpm2-tss-2.4.5" || test_ret=1
USE='-doc fapi -gcrypt openssl -static-libs' tatt_test_pkg "=app-crypt/tpm2-tss-2.4.5" || test_ret=1
USE='doc fapi -gcrypt openssl -static-libs' tatt_test_pkg "=app-crypt/tpm2-tss-2.4.5" || test_ret=1
USE='-doc -fapi gcrypt -openssl static-libs' tatt_test_pkg "=app-crypt/tpm2-tss-2.4.5" || test_ret=1
USE='doc -fapi gcrypt -openssl static-libs' tatt_test_pkg "=app-crypt/tpm2-tss-2.4.5" || test_ret=1
USE='-doc -fapi -gcrypt openssl static-libs' tatt_test_pkg "=app-crypt/tpm2-tss-2.4.5" || test_ret=1
USE='doc -fapi -gcrypt openssl static-libs' tatt_test_pkg "=app-crypt/tpm2-tss-2.4.5" || test_ret=1
USE='-doc fapi -gcrypt openssl static-libs' tatt_test_pkg "=app-crypt/tpm2-tss-2.4.5" || test_ret=1
USE='doc fapi -gcrypt openssl static-libs' tatt_test_pkg "=app-crypt/tpm2-tss-2.4.5" || test_ret=1

echo >> tpm2-tss-773337.report

exit ${test_ret}

handle ALLARCHES packages specially

Something marked ALLARCHES for me usually means "I'll ignore it and let the maintainer stabilize it for everyone". If you are the maintainer for you this would probably mean "I need a different commit script". Currently ALLARCHES packages aren't handles specially in any way, which smells like it is always wrong.

tatt needs a new maintainer

I don't have time to work on this anymore, and I also stopped doing arch testing myself. I'd be happy to help people who want to take over maintainership.

python3 support is incomplete

tatt -u sci-biology/emboss
File "/usr/lib/python-exec/python3.4/tatt", line 172
print "Your unmaskfile was not found, I will create it as"
^
SyntaxError: Missing parentheses in call to 'print'

For now I will drop the support in the ebuilds, but it should be easily fixable.

Honor masks

The use flags are checked only against REQUIRED_USE, but they do not check use.masks.

Outdate repository triggers exception

# tatt -b 643996 -j gdal
Bugnumber:  643996
Stabilization bug detected.
Jobname: gdal
Found the following package atom : =sci-libs/gdal-2.2.3-r1
Traceback (most recent call last):
  File "/usr/lib/python-exec/python3.5/tatt", line 202, in <module>
    kw = port.aux_get(dep_getcpv(p.packageString()), ["KEYWORDS"])
  File "/usr/lib/python3.5/site-packages/portage/dbapi/porttree.py", line 613, in aux_get
    raise PortageKeyError(mycpv)
portage.exception.PortageKeyError: 'sci-libs/gdal-2.2.3-r1'

Was fixed after I run emerge --sync. Maybe we can catch this and show an error msg instead?

add proper exit status for scripts

ideally I would like to do something like

./foo-useflags.sh  && ./foo-rdeps.sh && ./foo-commit.sh

To make this work the return value needs to be accumulated across the script steps and only returned at the end.

Support nattka's new * syntax

nattka now adds 'atom *' to the package list when the CC-ARCHES keyword is used.

Tatt doesn't handle this well:

$ tatt -b 717704
Bugnumber:  717704
Stabilization bug detected.
Please call with complete package atom (including version) as argument.

Endless loop

Try tatt -b 631326 -j xpra with current git master.

Seeing

  =x11-wm/xpra-1.0.9: ignoring invalid USE flag combination ['client', 'clipboard', 'lz4', 'lzo', 'opengl', 'pulseaudio', 'server', 'vpx', 'webcam']
  =x11-wm/xpra-1.0.9: ignoring invalid USE flag combination ['clipboard', 'csc', 'cups', 'dec_avcodec2', 'libav', 'pillow', 'pulseaudio', 'vpx', 'webp']
  =x11-wm/xpra-1.0.9: ignoring invalid USE flag combination ['clipboard', 'cups', 'dbus', 'dec_avcodec2', 'enc_x264', 'lz4', 'lzo', 'server', 'sound', 'webp']
  =x11-wm/xpra-1.0.9: ignoring invalid USE flag combination ['cups', 'enc_ffmpeg', 'enc_x264', 'lz4', 'pillow', 'pulseaudio', 'server', 'sound', 'vpx', 'webcam', 'webp']
  =x11-wm/xpra-1.0.9: ignoring invalid USE flag combination ['client', 'clipboard', 'csc', 'dec_avcodec2', 'enc_x265', 'libav', 'lz4', 'pillow', 'server', 'sound', 'webcam']
  =x11-wm/xpra-1.0.9: ignoring invalid USE flag combination ['csc', 'dec_avcodec2', 'enc_x264', 'libav', 'lzo', 'opengl', 'pillow', 'pulseaudio', 'server', 'sound', 'webcam']
  =x11-wm/xpra-1.0.9: ignoring invalid USE flag combination ['client', 'clipboard', 'csc', 'cups', 'enc_x265', 'pulseaudio', 'server', 'webp']

I stopped after 10 minutes.

Add support for USE_EXPAND

When doing stabilization for packages using USE_EXPAND, app-admin/collectd or www-servers/nginx for example, tatt will currently ignore USE_EXPANDs as INVALID USE flags:

Bugnumber:  628540                                                                                                      Stabilization bug detected.
Jobname: collectd
Found the following package atom : =app-admin/collectd-5.7.2-r1
Unmasked =app-admin/collectd-5.7.2-r1 in /etc/portage/package.keywords/archtest
  =app-admin/collectd-5.7.2-r1: ignoring invalid USE flag combination ['collectd_plugins_aggregation', 'collectd_plugins
_apache', 'collectd_plugins_apcups', 'collectd_plugins_battery', 'collectd_plugins_bind', 'collectd_plugins_ceph', 'coll
ectd_plugins_conntrack', 'collectd_plugins_contextswitch', 'collectd_plugins_cpu', 'collectd_plugins_cpufreq', 'collectd
_plugins_csv', 'collectd_plugins_curl', 'collectd_plugins_curl_xml', 'collectd_plugins_dbi', 'collectd_plugins_df', 'col
lectd_plugins_disk', 'collectd_plugins_entropy', 'collectd_plugins_exec', 'collectd_plugins_fhcount', 'collectd_plugins_
gmond', 'collectd_plugins_hddtemp', 'collectd_plugins_interface', 'collectd_plugins_ipc', 'collectd_plugins_iptables', '
collectd_plugins_irq', 'collectd_plugins_logfile', 'collectd_plugins_madwifi', 'collectd_plugins_match_hashed', 'collect
d_plugins_match_timediff', 'collectd_plugins_match_value', 'collectd_plugins_memcachec', 'collectd_plugins_memory', 'col
lectd_plugins_modbus', 'collectd_plugins_multimeter', 'collectd_plugins_mysql', 'collectd_plugins_netlink', 'collectd_pl
ugins_notify_email', 'collectd_plugins_ntpd', 'collectd_plugins_numa', 'collectd_plugins_onewire', 'collectd_plugins_ope
nldap', 'collectd_plugins_openvpn', 'collectd_plugins_perl', 'collectd_plugins_processes', 'collectd_plugins_protocols', 'collectd_plugins_python', 'collectd_plugins_redis', 'collectd_plugins_rrdcached', 'collectd_plugins_rrdtool', 'collect
d_plugins_sensors', 'collectd_plugins_statsd', 'collectd_plugins_swap', 'collectd_plugins_table', 'collectd_plugins_target_replace', 'collectd_plugins_target_scale', 'collectd_plugins_target_set', 'collectd_plugins_ted', 'collectd_plugins_t
okyotyrant', 'collectd_plugins_unixsock', 'collectd_plugins_users', 'collectd_plugins_uuid', 'collectd_plugins_wireless', 'collectd_plugins_write_kafka', 'collectd_plugins_write_prometheus', 'collectd_plugins_write_redis', 'collectd_plugins_write_sensu', 'collectd_plugins_write_tsdb', 'collectd_plugins_xencpu', 'collectd_plugins_zfs_arc', 'collectd_plugins_zookeeper', 'contrib', 'static-libs', 'xfs']                 

Make templates use /bin/bash instead of /bin/sh

Title says it all, templates contain stuff that some some shells spit right back (dash).

tatt -b 465700 && ./
< ... >
./lftp-useflags.sh: 7: ./lftp-useflags.sh: [[: not found
./lftp-useflags.sh: 9: ./lftp-useflags.sh: [[: not found
./lftp-useflags.sh: 12: ./lftp-useflags.sh: [[: not found

This renders all tests to fail:

USE='-gnutls -nls -socks5 -ssl' failed for =net-ftp/lftp-4.4.5
USE='gnutls -nls -socks5 -ssl' failed for =net-ftp/lftp-4.4.5
.....

Bash is still required dependency on gentoo for most (if not all) arches, thus this should be pretty safe (and simple) thing to do.

Thanks

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.