Home Quick start All builds News Donations
More
Log In
Light Theme Docs
Workers

SparrowCI Report - gh-melezhik-Raku-Sys-HostAddr | [image: melezhik/sparrow:debian]

  • Summary
  • Pipeline YAML
  • Report
BuildID: 2634
Status: OK
Image: melezhik/sparrow:debian
Worker status: OK
---
Date: 17.01.2023 @ 21:17
Time elapsed: 402 sec
---
SCM: https://github.com/melezhik/Raku-Sys-HostAddr.git
Git sha: 154e5ef
Git comment: Merge branch 'jmaslak:master' into master
image:
  - melezhik/sparrow:debian
tasks:
  -
    name: main
    default: true
    language: Raku
    code: |
      use Text::Table::Simple;
      my @columns = ("Rakudo Version", "Status", "Time", "Linux Dist");
      my @rows;
      my $fail = False;
      for config()<tasks><multi-versions><state><list><> -> $i {
        @rows.push: [ $i<version>, $i<status>,  $i<time>, os() ];
        $fail = True unless $i<status> eq "OK";
      }
      my @table = lol2table(@columns,@rows);
      .say for @table;
      die "some tests failed" if $fail == True;
    depends:
      -
        name: multi-versions
  -
    name: multi-versions
    language: Raku
    config:
      list:
        # - 2022.04
        - 2022.07
        - 2022.12
    code: |
      my @state;
      for config()<list><> -> $v {
        my $s = %( version => $v );
        if "{cache_root_dir()}/{$v}_ok".IO ~~ :e {
          $s<status> = "OK";
        } else {
          $s<status> = "FAIL";
        }
        if "{cache_root_dir()}/{$v}_time".IO ~~ :e {
          $s<time> = "{cache_root_dir()}/{$v}_time".IO.slurp();
        } else {
          $s<time> = "NA";
        }
        @state.push: $s;
      }
      update_state %( list => @state );
    init: |
      for config()<list><> -> $v {
        run_task("test", %( version => $v ));
      }
    subtasks:
      -
        name: test
        language: Bash
        init: |
          ignore_error
        code: |
          set -e
          echo "Linux version: $os"
          curl -sL https://rakudo.org/dl/rakudo/rakudo-moar-$version-01-linux-x86_64-gcc.tar.gz \
          -o rakudo-moar-$version-01-linux-x86_64-gcc.tar.gz
          tar -xzf rakudo-moar-$version-01-linux-x86_64-gcc.tar.gz          
          eval "$(rakudo-moar-$version-01-linux-x86_64-gcc/scripts/set-env.sh)"
          which raku
          which zef
          raku --version
          zef --version
          
          cd source/
          zef install . --deps-only --test-depends --build-depends --/test -to=home         
          /usr/bin/time -f "%E real,%U user,%S sys | CPU Percentage: %P" -o "${cache_root_dir}/${version}_time" \
          zef test --debug . && touch "${cache_root_dir}/${version}_ok"
          
    depends:
      -
        name: install-deps
  -
    name: install-deps
    language: Bash
    code: |
      sudo apt-get install -y time 
      zef install --/test Text::Table::Simple
21:12:38 :: [repository] - index updated from https://sparrowhub.io/repo/api/v1/index
run stage: run
[task run: task.bash - tasks/install-deps]
[dump code: task.bash]
[1] sudo apt-get install -y time 
[2] zef install --/test Text::Table::Simple
[3] 
[task stdout]
21:12:41 :: Reading package lists...
21:12:41 :: Building dependency tree...
21:12:41 :: Reading state information...
21:12:41 :: The following NEW packages will be installed:
21:12:41 ::   time
21:12:41 :: 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
21:12:41 :: Need to get 50.8 kB of archives.
21:12:41 :: After this operation, 132 kB of additional disk space will be used.
21:12:41 :: Get:1 http://deb.debian.org/debian bullseye/main amd64 time amd64 1.9-0.1 [50.8 kB]
21:12:42 :: Fetched 50.8 kB in 0s (1241 kB/s)
21:12:42 :: Selecting previously unselected package time.
21:12:42 :: (Reading database ... 
21:12:42 :: (Reading database ... 5%
21:12:42 :: (Reading database ... 10%
21:12:42 :: (Reading database ... 15%
21:12:42 :: (Reading database ... 20%
21:12:42 :: (Reading database ... 25%
21:12:42 :: (Reading database ... 30%
21:12:42 :: (Reading database ... 35%
21:12:42 :: (Reading database ... 40%
21:12:42 :: (Reading database ... 45%
21:12:42 :: (Reading database ... 50%
21:12:42 :: (Reading database ... 55%
21:12:42 :: (Reading database ... 60%
21:12:42 :: (Reading database ... 65%
21:12:42 :: (Reading database ... 70%
21:12:42 :: (Reading database ... 75%
21:12:42 :: (Reading database ... 80%
21:12:42 :: (Reading database ... 85%
21:12:42 :: (Reading database ... 90%
21:12:42 :: (Reading database ... 95%
21:12:42 :: (Reading database ... 100%
21:12:42 :: (Reading database ... 19016 files and directories currently installed.)
21:12:42 :: Preparing to unpack .../time_1.9-0.1_amd64.deb ...
21:12:42 :: Unpacking time (1.9-0.1) ...
21:12:42 :: Setting up time (1.9-0.1) ...
21:12:43 :: ===> Searching for: Text::Table::Simple
21:12:53 :: ===> Installing: Text::Table::Simple:ver<0.1.0>:auth<github:ugexe>
[task stderr]
21:12:53 :: debconf: delaying package configuration, since apt-utils is not installed
21:12:53 :: ===> Updating fez mirror: https://360.zef.pm/
21:12:53 :: ===> Updated fez mirror: https://360.zef.pm/
21:12:53 :: ===> Updating rea mirror: https://raw.githubusercontent.com/Raku/REA/main/META.json
21:12:53 :: ===> Updated rea mirror: https://raw.githubusercontent.com/Raku/REA/main/META.json
21:12:24 :: [repository] - index updated from https://sparrowhub.io/repo/api/v1/index
run stage: run
[task run: task.bash - tasks/multi-versions]
[dump code: task.bash]
[1] set -e
[2] echo "Linux version: $os"
[3] curl -sL https://rakudo.org/dl/rakudo/rakudo-moar-$version-01-linux-x86_64-gcc.tar.gz \
[4] -o rakudo-moar-$version-01-linux-x86_64-gcc.tar.gz
[5] tar -xzf rakudo-moar-$version-01-linux-x86_64-gcc.tar.gz          
[6] eval "$(rakudo-moar-$version-01-linux-x86_64-gcc/scripts/set-env.sh)"
[7] which raku
[8] which zef
[9] raku --version
[10] zef --version
[11] 
[12] cd source/
[13] zef install . --deps-only --test-depends --build-depends --/test -to=home         
[14] /usr/bin/time -f "%E real,%U user,%S sys | CPU Percentage: %P" -o "${cache_root_dir}/${version}_time" \
[15] zef test --debug . && touch "${cache_root_dir}/${version}_ok"
[16] 
[task stdout]
21:12:58 :: Linux version: debian
21:12:59 ::                            Adding Rakudo to PATH
21:12:59 ::                           =======================
21:12:59 :: 
21:12:59 :: Paths successfully added.
21:12:59 :: 
21:12:59 :: ================================================================================
21:12:59 ::  =========                                                             __   __
21:12:59 ::   ||_|_||                =============================                (  \,/  )
21:12:59 ::   || # ||                 Welcome to the Raku Console                  \_ O _/
21:12:59 ::   || # ||                =============================                 (_/ \_)
21:12:59 :: 
21:12:59 :: This console has all the tools available you need to get started using Raku.
21:12:59 :: 
21:12:59 :: Rakudo provides an interactive command line interpreter (a so called Read Eval
21:12:59 :: Print Loop, REPL for short) you can use to quickly try out pieces of Raku code.
21:12:59 :: Start it by typing:
21:12:59 :: 
21:12:59 ::     raku
21:12:59 :: 
21:12:59 :: If you already have a Raku program in a file, you can run it by typing:
21:12:59 :: 
21:12:59 ::     raku path/to/my/program.raku
21:12:59 :: 
21:12:59 :: To install additional modules you can use the Zef module manager:
21:13:00 :: 
21:13:00 ::     zef install Some::Module
21:13:00 :: 
21:13:00 :: https://rakudo.org/           - The home of this implementation of Raku.
21:13:00 :: https://raku.land/            - Go here to browse for Raku modules.
21:13:00 :: https://docs.raku.org/        - The Raku documentation.
21:13:00 :: https://web.libera.chat/#raku - The Raku user chat. Talk to us!
21:13:00 :: 
21:13:00 ::                               Happy hacking!
21:13:00 :: 
21:13:00 :: ================================================================================
21:13:00 :: 
21:13:00 :: /var/.sparrowdo/env/main/.sparrowdo/rakudo-moar-2022.07-01-linux-x86_64-gcc/bin/raku
21:13:00 :: /var/.sparrowdo/env/main/.sparrowdo/rakudo-moar-2022.07-01-linux-x86_64-gcc/share/perl6/site/bin/zef
21:13:00 :: Welcome to Rakudo™ v2022.07.
21:13:00 :: Implementing the Raku® Programming Language v6.d.
21:13:00 :: Built on MoarVM version 2022.07.
21:13:19 :: v0.14.5
21:13:33 :: ===> Searching for missing dependencies: Cro::HTTP::Client, Net::Netmask
21:15:49 :: ===> Searching for missing dependencies: IO::Socket::Async::SSL, OO::Monitors, IO::Path::ChildSecure, Base64, HTTP::HPACK:ver<1.0.0>, Cro::Core:ver<0.8.9>, Cro::TLS:ver<0.8.9>, Crypt::Random, JSON::JWT, DateTime::Parse, Log::Timeline
21:15:49 :: ===> Searching for missing dependencies: if, Digest::HMAC, CBOR::Simple
21:15:49 :: ===> Searching for missing dependencies: Digest:ver<0.18.0+>, TinyFloats:ver<0.0.3+>
21:15:49 :: ===> Installing: IO::Socket::Async::SSL:ver<0.7.14>:auth<zef:jnthn>
21:15:49 :: ===> Installing: OO::Monitors:ver<1.1.1>
21:15:49 :: ===> Installing: IO::Path::ChildSecure:ver<1.2>:auth<zef:raku-community-modules>
21:15:49 :: ===> Installing: Base64:ver<0.1.0>:auth<github:ugexe>
21:15:49 :: ===> Installing: HTTP::HPACK:ver<1.0.0>:auth<zef:jnthn>
21:15:49 :: ===> Installing: Cro::Core:ver<0.8.9>:auth<zef:cro>
21:15:49 :: ===> Installing: Cro::TLS:ver<0.8.9>:auth<zef:cro>
21:15:49 :: ===> Installing: if:ver<0.1.1>
21:15:49 :: ===> Installing: Crypt::Random:ver<0.4.1>
21:15:49 :: ===> Installing: Digest:ver<0.28.1>:auth<zef:grondilu>
21:15:49 :: ===> Installing: Digest::HMAC:ver<1.0.5>:auth<zef:jjmerelo>
21:15:49 :: ===> Installing: JSON::JWT:ver<1.1.1>:auth<zef:raku-community-modules>
21:15:49 :: ===> Installing: DateTime::Parse:ver<0.9.3>:auth<github:sergot>
21:15:49 :: ===> Installing: TinyFloats:ver<0.0.4>:auth<zef:japhb>
21:15:49 :: ===> Installing: CBOR::Simple:ver<0.1.3>:auth<zef:japhb>
21:15:49 :: ===> Installing: Log::Timeline:ver<0.5.1>:auth<zef:jnthn>
21:15:49 :: ===> Installing: Cro::HTTP:ver<0.8.9>:auth<zef:cro>
21:15:49 :: ===> Installing: Net::Netmask:ver<0.2.0>
21:15:51 :: ===> Testing: Sys::HostAddr:ver<0.2.0>:auth<zef:jmaslak>
21:15:56 :: [Sys::HostAddr] Testing with plugin: Zef::Service::Shell::prove+{<anon|1>}
21:15:56 :: [Sys::HostAddr] # Distro: Debian GNU/Linux 11 (bullseye)
21:15:56 :: [Sys::HostAddr] # ip command found: False
21:15:56 :: [Sys::HostAddr] t/01-basic.t .. 
21:15:56 :: [Sys::HostAddr] ok 1 - Constructor runs
21:15:56 :: [Sys::HostAddr] # Subtest: public
21:15:56 :: [Sys::HostAddr]     ok 1 - public method exists
21:15:56 :: [Sys::HostAddr]     ok 2 - # SKIP Not performing remote tests, set %*ENV<REMOTE_TESTING>
21:15:56 :: [Sys::HostAddr]     ok 3 - # SKIP Not performing remote tests, set %*ENV<REMOTE_TESTING>
21:15:56 :: [Sys::HostAddr]     1..3
21:15:56 :: [Sys::HostAddr] ok 2 - public
21:15:56 :: [Sys::HostAddr] # Subtest: interfaces
21:15:56 :: [Sys::HostAddr]     ok 1 - Interface list
21:15:56 :: [Sys::HostAddr]     ok 2 - Interface list includes at zero interfaces
21:15:56 :: [Sys::HostAddr]     1..2
21:15:56 :: [Sys::HostAddr] ok 3 - interfaces
21:15:56 :: [Sys::HostAddr] # Subtest: addresses
21:15:56 :: [Sys::HostAddr]     ok 1 - Address list
21:15:56 :: [Sys::HostAddr]     ok 2 - No address returned
21:15:56 :: [Sys::HostAddr]     1..2
21:15:56 :: [Sys::HostAddr] ok 4 - addresses
21:15:56 :: [Sys::HostAddr] # Subtest: addresses-on-interface
21:15:56 :: [Sys::HostAddr]     ok 1 - All IPs represented
21:15:56 :: [Sys::HostAddr]     1..1
21:15:56 :: [Sys::HostAddr] ok 5 - addresses-on-interface
21:15:56 :: [Sys::HostAddr] # Subtest: guess-ip-for-host
21:15:56 :: [Sys::HostAddr]     ok 1 - guess-ip-for-host method exists
21:15:56 :: [Sys::HostAddr]     ok 2 - # SKIP Not performing remote tests, set %*ENV<REMOTE_TESTING>
21:15:56 :: [Sys::HostAddr]     1..2
21:15:56 :: [Sys::HostAddr] ok 6 - guess-ip-for-host
21:15:56 :: [Sys::HostAddr] # Subtest: guess-main
21:15:56 :: [Sys::HostAddr]     ok 1 - guess-main method exists
21:15:56 :: [Sys::HostAddr]     ok 2 - Check we got no IP
21:15:56 :: [Sys::HostAddr]     1..2
21:15:56 :: [Sys::HostAddr] ok 7 - guess-main
21:15:56 :: [Sys::HostAddr] ok 8 - Path wasn't reset
21:15:56 :: [Sys::HostAddr] 1..8
21:15:56 :: [Sys::HostAddr] ok
21:15:56 :: [Sys::HostAddr] All tests successful.
21:15:56 :: [Sys::HostAddr] Files=1, Tests=8,  5 wallclock secs ( 0.02 usr  0.00 sys +  7.59 cusr  0.52 csys =  8.13 CPU)
21:15:56 :: [Sys::HostAddr] Result: PASS
21:15:56 :: ===> Testing [OK] for Sys::HostAddr:ver<0.2.0>:auth<zef:jmaslak>
[task run: task.bash - tasks/multi-versions]
[dump code: task.bash]
[1] set -e
[2] echo "Linux version: $os"
[3] curl -sL https://rakudo.org/dl/rakudo/rakudo-moar-$version-01-linux-x86_64-gcc.tar.gz \
[4] -o rakudo-moar-$version-01-linux-x86_64-gcc.tar.gz
[5] tar -xzf rakudo-moar-$version-01-linux-x86_64-gcc.tar.gz          
[6] eval "$(rakudo-moar-$version-01-linux-x86_64-gcc/scripts/set-env.sh)"
[7] which raku
[8] which zef
[9] raku --version
[10] zef --version
[11] 
[12] cd source/
[13] zef install . --deps-only --test-depends --build-depends --/test -to=home         
[14] /usr/bin/time -f "%E real,%U user,%S sys | CPU Percentage: %P" -o "${cache_root_dir}/${version}_time" \
[15] zef test --debug . && touch "${cache_root_dir}/${version}_ok"
[16] 
[task stdout]
21:15:56 :: Linux version: debian
21:15:57 ::                            Adding Rakudo to PATH
21:15:57 ::                           =======================
21:15:57 :: 
21:15:57 :: Paths successfully added.
21:15:57 :: 
21:15:57 :: ================================================================================
21:15:57 ::  =========                                                             __   __
21:15:57 ::   ||_|_||                =============================                (  \,/  )
21:15:57 ::   || # ||                 Welcome to the Raku Console                  \_ O _/
21:15:57 ::   || # ||                =============================                 (_/ \_)
21:15:57 :: 
21:15:57 :: This console has all the tools available you need to get started using Raku.
21:15:57 :: 
21:15:57 :: Rakudo provides an interactive command line interpreter (a so called Read Eval
21:15:57 :: Print Loop, REPL for short) you can use to quickly try out pieces of Raku code.
21:15:57 :: Start it by typing:
21:15:57 :: 
21:15:57 ::     raku
21:15:57 :: 
21:15:57 :: If you already have a Raku program in a file, you can run it by typing:
21:15:57 :: 
21:15:57 ::     raku path/to/my/program.raku
21:15:57 :: 
21:15:57 :: To install additional modules you can use the Zef module manager:
21:15:57 :: 
21:15:57 ::     zef install Some::Module
21:15:57 :: 
21:15:57 :: https://rakudo.org/           - The home of this implementation of Raku.
21:15:57 :: https://raku.land/            - Go here to browse for Raku modules.
21:15:57 :: https://docs.raku.org/        - The Raku documentation.
21:15:57 :: https://web.libera.chat/#raku - The Raku user chat. Talk to us!
21:15:57 :: 
21:15:57 ::                               Happy hacking!
21:15:57 :: 
21:15:57 :: ================================================================================
21:15:57 :: 
21:15:57 :: /var/.sparrowdo/env/main/.sparrowdo/rakudo-moar-2022.12-01-linux-x86_64-gcc/bin/raku
21:15:57 :: /var/.sparrowdo/env/main/.sparrowdo/rakudo-moar-2022.12-01-linux-x86_64-gcc/share/perl6/site/bin/zef
21:15:57 :: Welcome to Rakudo™ v2022.12.
21:15:57 :: Implementing the Raku® Programming Language v6.d.
21:15:57 :: Built on MoarVM version 2022.12.
21:15:58 :: v0.14.5
21:16:02 :: ===> Testing: Sys::HostAddr:ver<0.2.0>:auth<zef:jmaslak>
21:17:31 :: [Sys::HostAddr] Testing with plugin: Zef::Service::Shell::prove+{<anon|1>}
21:17:31 :: [Sys::HostAddr] # Distro: Debian GNU/Linux 11 (bullseye)
21:17:31 :: [Sys::HostAddr] # ip command found: False
21:17:31 :: [Sys::HostAddr] t/01-basic.t .. 
21:17:31 :: [Sys::HostAddr] ok 1 - Constructor runs
21:17:31 :: [Sys::HostAddr] # Subtest: public
21:17:31 :: [Sys::HostAddr]     ok 1 - public method exists
21:17:31 :: [Sys::HostAddr]     ok 2 - # SKIP Not performing remote tests, set %*ENV<REMOTE_TESTING>
21:17:31 :: [Sys::HostAddr]     ok 3 - # SKIP Not performing remote tests, set %*ENV<REMOTE_TESTING>
21:17:31 :: [Sys::HostAddr]     1..3
21:17:31 :: [Sys::HostAddr] ok 2 - public
21:17:31 :: [Sys::HostAddr] # Subtest: interfaces
21:17:31 :: [Sys::HostAddr]     ok 1 - Interface list
21:17:31 :: [Sys::HostAddr]     ok 2 - Interface list includes at zero interfaces
21:17:31 :: [Sys::HostAddr]     1..2
21:17:31 :: [Sys::HostAddr] ok 3 - interfaces
21:17:31 :: [Sys::HostAddr] # Subtest: addresses
21:17:31 :: [Sys::HostAddr]     ok 1 - Address list
21:17:31 :: [Sys::HostAddr]     ok 2 - No address returned
21:17:31 :: [Sys::HostAddr]     1..2
21:17:31 :: [Sys::HostAddr] ok 4 - addresses
21:17:31 :: [Sys::HostAddr] # Subtest: addresses-on-interface
21:17:31 :: [Sys::HostAddr]     ok 1 - All IPs represented
21:17:31 :: [Sys::HostAddr]     1..1
21:17:31 :: [Sys::HostAddr] ok 5 - addresses-on-interface
21:17:31 :: [Sys::HostAddr] # Subtest: guess-ip-for-host
21:17:31 :: [Sys::HostAddr]     ok 1 - guess-ip-for-host method exists
21:17:31 :: [Sys::HostAddr]     ok 2 - # SKIP Not performing remote tests, set %*ENV<REMOTE_TESTING>
21:17:31 :: [Sys::HostAddr]     1..2
21:17:31 :: [Sys::HostAddr] ok 6 - guess-ip-for-host
21:17:31 :: [Sys::HostAddr] # Subtest: guess-main
21:17:31 :: [Sys::HostAddr]     ok 1 - guess-main method exists
21:17:31 :: [Sys::HostAddr]     ok 2 - Check we got no IP
21:17:31 :: [Sys::HostAddr]     1..2
21:17:31 :: [Sys::HostAddr] ok 7 - guess-main
21:17:31 :: [Sys::HostAddr] ok 8 - Path wasn't reset
21:17:31 :: [Sys::HostAddr] 1..8
21:17:31 :: [Sys::HostAddr] ok
21:17:31 :: [Sys::HostAddr] All tests successful.
21:17:31 :: [Sys::HostAddr] Files=1, Tests=8, 89 wallclock secs ( 0.02 usr  0.01 sys + 138.55 cusr  9.21 csys = 147.79 CPU)
21:17:31 :: [Sys::HostAddr] Result: PASS
21:17:31 :: ===> Testing [OK] for Sys::HostAddr:ver<0.2.0>:auth<zef:jmaslak>
[task stderr]
21:17:31 :: All candidates are currently installed
[task run: task.raku - tasks/multi-versions]
[dump code: task.raku]
[1] my @state;
[2] for config()<list><> -> $v {
[3]   my $s = %( version => $v );
[4]   if "{cache_root_dir()}/{$v}_ok".IO ~~ :e {
[5]     $s<status> = "OK";
[6]   } else {
[7]     $s<status> = "FAIL";
[8]   }
[9]   if "{cache_root_dir()}/{$v}_time".IO ~~ :e {
[10]     $s<time> = "{cache_root_dir()}/{$v}_time".IO.slurp();
[11]   } else {
[12]     $s<time> = "NA";
[13]   }
[14]   @state.push: $s;
[15] }
[16] update_state %( list => @state );
[17] 
[task stdout]
21:11:50 :: [repository] - index updated from https://sparrowhub.io/repo/api/v1/index
run stage: run
source directory does not yet exist, download source archive from storage
21:11:52 :: [repository] - installing pack-unpack, version 0.000001
[task run: task.bash - unpack source archive]
[dump code: task.bash]
[1] set -e
[2] 
[3] file=$(config file)
[4] dir=$(config dir)
[5] 
[6] echo "tar -xzf $file "
[7] 
[8] tar -xzf $file
[9] 
[10] if test $dir; then
[11]   ls -l $dir
[12] fi
[13] 
[14] 
[task stdout]
21:11:54 :: tar -xzf source.tar.gz 
[task run: task.raku - tasks/main]
[dump code: task.raku]
[1] use Text::Table::Simple;
[2] my @columns = ("Rakudo Version", "Status", "Time", "Linux Dist");
[3] my @rows;
[4] my $fail = False;
[5] for config()<tasks><multi-versions><state><list><> -> $i {
[6]   @rows.push: [ $i<version>, $i<status>,  $i<time>, os() ];
[7]   $fail = True unless $i<status> eq "OK";
[8] }
[9] my @table = lol2table(@columns,@rows);
[10] .say for @table;
[11] die "some tests failed" if $fail == True;
[12] 
[task stdout]
21:17:35 :: O----------------O--------O----------------------------------------------------------O------------O
21:17:35 :: | Rakudo Version | Status | Time                                                     | Linux Dist |
21:17:35 :: O================O========O==========================================================O============O
21:17:35 :: | 2022.07        | OK     | 0:07.01 real,10.02 user,0.85 sys | CPU Percentage: 154%  | debian     |
21:17:35 :: | 2022.12        | OK     | 1:30.50 real,140.83 user,9.58 sys | CPU Percentage: 166% | debian     |
21:17:35 :: ---------------------------------------------------------------------------------------------------