Hello World

File t.obscpio of Package build

07070100000000000081a400000000000000000000000163e504ba0000a000000000000000000000000000000000000000001000000000t/bad.livebuild./PaxHeaders.6730/auto0000644000000000000000000000013212222266372013026 xustar000000000000000030 mtime=1380543738.699537615
30 atime=1404933481.152361217
30 ctime=1404933481.152361217
auto/0000755000175000001440000000000012222266372012701 5ustar00jblunckusers00000000000000auto/PaxHeaders.6730/clean0000644000000000000000000000013212222266372013753 xustar000000000000000030 mtime=1380543738.699537615
30 atime=1404933481.152361217
30 ctime=1404933481.152361217
auto/clean0000755000175000001440000000024012222266372013705 0ustar00jblunckusers00000000000000#!/bin/sh

set -e

lb clean noauto "${@}"

rm -f config/binary config/bootstrap config/chroot config/common config/source
rm -f config/control

rm -f build.log
auto/PaxHeaders.6730/config0000644000000000000000000000013212222266372014136 xustar000000000000000030 mtime=1380543738.699537615
30 atime=1404933481.152361217
30 ctime=1404933481.152361217
auto/config0000755000175000001440000000062612222266372014100 0ustar00jblunckusers00000000000000#!/bin/sh

set -e

case "$(dpkg --print-architecture)" in
	amd64)
		_LINUX_FLAVOURS="amd64"
		_SOURCE="false"
		;;

	i386)
		_LINUX_FLAVOURS="486 686-pae"
		_SOURCE="true"
		;;
esac

lb config noauto \
	--clean \
	--ignore-system-defaults \
	--mode debian \
	--debian-installer live \
	--linux-flavours "${_LINUX_FLAVOURS}" \
	--linux-packages "linux-image linux-headers" \
	--source "${_SOURCE}" \
"${@}"
auto/PaxHeaders.6730/build0000644000000000000000000000013212222266372013770 xustar000000000000000030 mtime=1380543738.699537615
30 atime=1404933481.152361217
30 ctime=1404933481.152361217
auto/build0000755000175000001440000000011212222266372013720 0ustar00jblunckusers00000000000000#!/bin/sh

set -e

lb build noauto "${@}" && echo $? 2>&1 | tee build.log
./PaxHeaders.6730/config0000644000000000000000000000013212222300375013313 xustar000000000000000030 mtime=1380548861.684530853
30 atime=1404933484.298323059
30 ctime=1404933481.152361217
config/0000755000175000001440000000000012222300375013166 5ustar00jblunckusers00000000000000config/PaxHeaders.6730/bootloaders0000644000000000000000000000013212222304630015471 xustar000000000000000030 mtime=1380551064.696527946
30 atime=1404933481.152361217
30 ctime=1404933481.152361217
config/bootloaders/0000755000175000001440000000000012222304630015501 5ustar00jblunckusers00000000000000config/PaxHeaders.6730/package-lists0000644000000000000000000000013212357312571015717 xustar000000000000000030 mtime=1404933497.776159592
30 atime=1404933498.247153879
30 ctime=1404933497.776159592
config/package-lists/0000755000175000001440000000000012357312571015727 5ustar00jblunckusers00000000000000config/package-lists/PaxHeaders.6730/installer.list.chroot0000644000000000000000000000013212222266372022161 xustar000000000000000030 mtime=1380543738.739537615
30 atime=1404933481.152361217
30 ctime=1404933481.152361217
config/package-lists/installer.list.chroot0000644000175000001440000000003712222266372022114 0ustar00jblunckusers00000000000000debian-installer-launcher
sudo
config/package-lists/PaxHeaders.6730/live.list.chroot0000644000000000000000000000013212222266372021123 xustar000000000000000030 mtime=1380543738.739537615
30 atime=1404933481.152361217
30 ctime=1404933481.152361217
config/package-lists/live.list.chroot0000644000175000001440000000002712222266372021055 0ustar00jblunckusers00000000000000live-manual
live-tools
config/package-lists/PaxHeaders.6730/localization.list.chroot0000644000000000000000000000013212222266372022654 xustar000000000000000030 mtime=1380543738.739537615
30 atime=1404933481.152361217
30 ctime=1404933481.152361217
config/package-lists/localization.list.chroot0000644000175000001440000000003412222266372022604 0ustar00jblunckusers00000000000000task-english

console-tools
config/package-lists/PaxHeaders.6730/standard.list.chroot0000644000000000000000000000013212222266372021764 xustar000000000000000030 mtime=1380543738.739537615
30 atime=1404933490.584246818
30 ctime=1404933481.152361217
config/package-lists/standard.list.chroot0000644000175000001440000000007212222266372021716 0ustar00jblunckusers00000000000000! Packages Priority standard

task-laptop
task-ssh-server
config/package-lists/PaxHeaders.6730/memtest0000644000000000000000000000013212222266372017373 xustar000000000000000030 mtime=1380543738.739537615
30 atime=1404933486.633294738
30 ctime=1404933497.776159592
config/package-lists/memtest0000644000175000001440000000001312222266372017320 0ustar00jblunckusers00000000000000memtest86+
config/PaxHeaders.6730/archives0000644000000000000000000000013212222302706014762 xustar000000000000000030 mtime=1380550086.359529237
30 atime=1404933481.152361217
30 ctime=1404933481.152361217
config/archives/0000755000175000001440000000000012222302706014772 5ustar00jblunckusers00000000000000config/archives/PaxHeaders.6730/debian.list.chroot0000644000000000000000000000013212222302676020461 xustar000000000000000030 mtime=1380550078.121529248
30 atime=1404933481.152361217
30 ctime=1404933481.152361217
config/archives/debian.list.chroot0000644000175000001440000000020212222302676020406 0ustar00jblunckusers00000000000000deb obs://openSUSE.org:Debian:7.0/standard wheezy main contrib
deb-src obs://openSUSE.org:Debian:7.0/standard wheezy main contrib
config/archives/PaxHeaders.6730/debian.key.chroot0000644000000000000000000000013212222300432020262 xustar000000000000000030 mtime=1380548890.449530815
30 atime=1404933481.152361217
30 ctime=1404933481.152361217
config/archives/debian.key.chroot0000644000175000001440000000004512222300432020214 0ustar00jblunckusers00000000000000a73043cf-7b16-42dc-b0d9-3031ed4370be
./PaxHeaders.6730/README0000644000000000000000000000013212222266372013013 xustar000000000000000030 mtime=1380543738.739537615
30 atime=1404933481.152361217
30 ctime=1404933481.152361217
README0000644000175000001440000000077112222266372012616 0ustar00jblunckusers00000000000000This is the configuration tree for:

  Debian Standard

A software called live-build can be used to automatically build images from
this configuration tree.

live-build can be obtained from <http://live-systems.org/devel/live-build/>.
On Debian based systems, live-build can be installed with:

  # apt-get install live-build

More information about live-build and the Live Systems project can be found on
its homepage at <http://live-systems.org/> and in the manual at
<http://live-systems.org/manual/>.
07070100000001000081a400000000000000000000000163e504ba000003f1000000000000000000000000000000000000001300000000t/changelog2spec.t#!/usr/bin/perl -w

use strict;
use Test::More tests => 11;

sub onetest(@)
{
  my $expected = shift;
  my $actual = `./changelog2spec --selftest @_`;
  is($actual, $expected, "changelog2spec --selftest @_");
}

my @tests=(
  # format is 1:specfile 2:expected-changes 3++:list-of-changes-files
  [qw"rpm rpm python-rpm rpm"],
  [qw"python-rpm python-rpm python-rpm rpm"],
  [qw"antlr antlr antlr antlr-bootstrap"],
  [qw"antlr anyunrelated anyunrelated"],
  [qw"antlr-bootstrap antlr-bootstrap antlr antlr-bootstrap"],
  [qw"antlr-bootstrap antlr antlr"],
  [qw"antlr-bootstrap antlr antlr antlr-other"],
  [qw"foo _service:obs_scm:foo foo _service:obs_scm:foo"],
  [qw"_service:obs_scm:foo _service:obs_scm:foo foo _service:obs_scm:foo"],
  [qw"_service:obs_scm:foo foo foo foo-bar"],
  [qw"_service:obs_scm:foo-bar foo foo foo-other"],
);
for my $t (@tests) {
  my @tmp=@$t;
  my $file=shift(@tmp);
  foreach(0..$#tmp) {$tmp[$_].=".changes"}
  my $expected=shift(@tmp);
  onetest($expected, $file, @tmp);
}
07070100000002000081a400000000000000000000000163e504ba00000852000000000000000000000000000000000000000e00000000t/conflicts.t#!/usr/bin/perl -w

use strict;
use Test::More tests => 13;

require 't/testlib.pm';

my $repo = <<'EOR';
P: a = 1-1
R: p
P: b = 1-1 p
P: c = 1-1 p
P: d = 1-1
C: b
P: e = 1-1
C: c
P: f = 1-1
C: p
P: g = 1-1
C: b c
P: h = 1-1
R: f
P: i = 1-1
P: j = 1-1
P: k = 1-1
R: j
P: l = 1-1
R: b d
P: m = 1-1
C: m
EOR

my $config = setuptest($repo, "Conflict: i:j");
my @r;

# test that conflicts can fix choices
@r = expand($config, 'a');
is_deeply(\@r, [undef, 'have choice for p needed by a: b c'], 'install a');

@r = expand($config, 'a', 'd');
is_deeply(\@r, [1, 'a', 'c', 'd'], 'install a d');

@r = expand($config, 'a', 'e');
is_deeply(\@r, [1, 'a', 'b', 'e'], 'install a e');

# test test conflicting all providers works
@r = expand($config, 'a', 'd', 'e');
is_deeply(\@r, [undef, '(provider b is in conflict with d)', '(provider c is in conflict with e)', 'conflict for providers of p needed by a'], 'install a d e');

@r = expand($config, 'a', 'f');
is_deeply(\@r, [undef, '(provider b is in conflict with f)', '(provider c is in conflict with f)', 'conflict for providers of p needed by a'], 'install a f');

# test that conflicting jobs work
@r = expand($config, 'b', 'f');
is_deeply(\@r, [undef, 'f conflicts with b'], 'install b f');

@r = expand($config, 'b', 'h');
is_deeply(\@r, [undef, '(provider f conflicts with b)', 'conflict for providers of f needed by h'], 'install b h');

# test conflicts specified in the job
@r = expand($config, 'i', '!i');
is_deeply(\@r, [undef, 'i is in conflict'], 'install i !i');

@r = expand($config, 'k', '!j');
is_deeply(\@r, [undef, '(provider j is in conflict)', 'conflict for providers of j needed by k'], 'install k !j');

# test conflicts from project config
@r = expand($config, 'i', 'j');
is_deeply(\@r, [undef, 'i conflicts with j', 'j conflicts with i'], 'install i j');

@r = expand($config, 'i', 'k');
is_deeply(\@r, [undef, '(provider j is in conflict with i)', 'conflict for providers of j needed by k'], 'install i k');

@r = expand($config, 'l');
is_deeply(\@r, [undef, 'd conflicts with b'], 'install l');

@r = expand($config, 'm');
is_deeply(\@r, [1, 'm'], 'install m');
07070100000003000081a400000000000000000000000163e504ba00000696000000000000000000000000000000000000001e00000000t/data/flatpak-rewritten.yaml---
app-id: org.gnome.Chess
cleanup:
- /share/gnuchess
- /share/info
- /share/man
- /include
command: gnome-chess
finish-args:
- --share=ipc
- --socket=fallback-x11
- --socket=wayland
- --metadata=X-DConf=migrate-path=/org/gnome/Chess/
modules:
- build-commands:
  - make
  - install -D phalanx /app/bin/phalanx
  - install -D pbook.phalanx /app/share/phalanx/pbook.phalanx
  - install -D sbook.phalanx /app/share/phalanx/sbook.phalanx
  - install -D eco.phalanx /app/share/phalanx/eco.phalanx
  buildsystem: simple
  name: phalanx
  sources:
  - sha256: b3874d5dcd22c64626b2c955b18b27bcba3aa727855361a91eab57a6324b22dd
    type: archive
    url: file:///usr/src/packages/SOURCES/phalanx-XXV-source.tgz
  - path: phalanx-books-path.patch
    type: patch
- build-commands:
  - make build
  - install -D stockfish /app/bin/stockfish
  build-options:
    arch:
      aarch64:
        env:
          ARCH: armv7
      arm:
        env:
          ARCH: armv7
      x86_64:
        env:
          ARCH: x86-64
  buildsystem: simple
  name: stockfish
  sources:
  - sha256: 29bd01e7407098aa9e851b82f6ea4bf2b46d26e9075a48a269cb1e40c582a073
    type: archive
    url: file:///usr/src/packages/SOURCES/stockfish-10-src.zip
- name: gnuchess
  sources:
  - sha256: 9a99e963355706cab32099d140b698eda9de164ebce40a5420b1b9772dd04802
    type: archive
    url: file:///usr/src/packages/SOURCES/gnuchess-6.2.5.tar.gz
- buildsystem: meson
  name: gnome-chess
  sources:
  - sha256: b195c9f17a59d7fcc892ff55e6a6ebdd16e7329157bf37e3c2fe593b349aab98
    type: archive
    url: file:///usr/src/packages/SOURCES/gnome-chess-3.36.1.tar.xz
runtime: org.gnome.Platform
runtime-version: '3.36'
sdk: org.gnome.Sdk
07070100000004000081a400000000000000000000000163e504ba00000c11000000000000000000000000000000000000001400000000t/data/flatpak.json#!BuildVersion: 3.36.2
{
    "app-id": "org.gnome.Chess",
    "runtime": "org.gnome.Platform",
    "runtime-version": "3.36",
    "sdk": "org.gnome.Sdk",
    "command": "gnome-chess",
    "finish-args": [
        "--share=ipc", "--socket=fallback-x11",
        "--socket=wayland",
        "--metadata=X-DConf=migrate-path=/org/gnome/Chess/"
    ],
    "cleanup": ["/share/gnuchess", "/share/info", "/share/man", "/include"],
    "modules": [
        {
            "name": "phalanx",
            "buildsystem": "simple",
            "build-commands": [
                "make",
                "install -D phalanx /app/bin/phalanx",
                "install -D pbook.phalanx /app/share/phalanx/pbook.phalanx",
                "install -D sbook.phalanx /app/share/phalanx/sbook.phalanx",
                "install -D eco.phalanx /app/share/phalanx/eco.phalanx"
            ],
            "sources": [
                {
                    "type": "archive",
                    "url": "https://example.org/phalanx-XXV-source.tgz",
                    "sha256": "b3874d5dcd22c64626b2c955b18b27bcba3aa727855361a91eab57a6324b22dd"
                },
                {
                    "type": "patch",
                    "path": "phalanx-books-path.patch"
                }
            ]
        },
        {
            "name": "stockfish",
            "buildsystem": "simple",
            "build-options" : {
                "arch": {
                    "x86_64": {
                        "env": {
                            "ARCH": "x86-64"
                        }
                    },
                    "arm": {
                        "env": {
                            "ARCH": "armv7"
                        }
                    },
                    "aarch64": {
                        "env": {
                            "ARCH": "armv7"
                        }
                    }
                }
            },
            "build-commands": [
                "make build",
                "install -D stockfish /app/bin/stockfish"
            ],
            "sources": [
                {
                    "type": "archive",
                    "url": "https://example.org/stockfish-10-src.zip",
                    "sha256": "29bd01e7407098aa9e851b82f6ea4bf2b46d26e9075a48a269cb1e40c582a073"
                }
            ]
        },
        {
            "name": "gnuchess",
            "sources": [
                {
                    "type": "archive",
                    "url": "https://example.org/gnuchess-6.2.5.tar.gz",
                    "sha256": "9a99e963355706cab32099d140b698eda9de164ebce40a5420b1b9772dd04802"
                }
            ]
        },
        {
            "name": "gnome-chess",
            "buildsystem": "meson",
            "sources": [
                {
                    "type": "archive",
                    "url": "https://example.org/gnome-chess-3.36.1.tar.xz",
                    "sha256": "b195c9f17a59d7fcc892ff55e6a6ebdd16e7329157bf37e3c2fe593b349aab98"
                }
            ]
        }
    ]
}
07070100000005000081ed00000000000000000000000163e504ba0000055c000000000000000000000000000000000000001200000000t/data/flatpak.sh#!/bin/bash
set -ex

cd /obs-build

zypper -n install git hostname tar gzip fuse wget \
  perl perl-XML-Parser perl-libwww-perl perl-YAML-LibYAML perl-LWP-Protocol-https

export BUILD_DIR=$PWD BUILD_ROOT=/var/tmp/obs-build
cd t/data/mahjongg
wget https://download.gnome.org/sources/gnome-mahjongg/3.38/gnome-mahjongg-3.38.2.tar.xz
# We need at least flatpak-1.6.3-lp152.3.3.1.src from the update repo because
# flatpak-1.6.3-lp152.2.1.x86_64 has a packaging bug
$BUILD_DIR/build --nosignature \
  --repo http://download.opensuse.org/update/leap/15.2/oss/ \
  --repo http://download.opensuse.org/distribution/leap/15.2/repo/oss/ \
  --repo http://download.opensuse.org/repositories/OBS:/Flatpak/openSUSE_Leap_15.2/ \
  flatpak.yaml -release 23

flatpakfile="$BUILD_ROOT/usr/src/packages/OTHER/org.gnome.Mahjongg-3.38.2-23.flatpak"
if [[ -e "$flatpakfile" ]] ; then
  echo OK
else
  echo NOT OK
  exit 1
fi

zypper -n install flatpak

flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo

flatpak install --noninteractive "$flatpakfile"

flatpak list

flatpak list | grep org.gnome.Mahjongg

find / -type l -name org.gnome.Mahjongg | xargs ls -l

/var/lib/flatpak/exports/bin/org.gnome.Mahjongg --version

# It reports its version on stderr
/var/lib/flatpak/exports/bin/org.gnome.Mahjongg --version 2>&1 | grep 'gnome-mahjongg 3.38.2'

07070100000006000081a400000000000000000000000163e504ba00000682000000000000000000000000000000000000001400000000t/data/flatpak.yaml#!BuildVersion: 3.36.2
---
app-id: org.gnome.Chess
runtime: org.gnome.Platform
runtime-version: '3.36'
sdk: org.gnome.Sdk
command: gnome-chess
finish-args:
- --share=ipc
- --socket=fallback-x11
- --socket=wayland
- --metadata=X-DConf=migrate-path=/org/gnome/Chess/
cleanup: [/share/gnuchess, /share/info, /share/man, /include]

modules:
- name: phalanx
  buildsystem: simple
  build-commands:
  - make
  - install -D phalanx /app/bin/phalanx
  - install -D pbook.phalanx /app/share/phalanx/pbook.phalanx
  - install -D sbook.phalanx /app/share/phalanx/sbook.phalanx
  - install -D eco.phalanx /app/share/phalanx/eco.phalanx
  sources:
  - type: archive
    url: "https://example.org/phalanx-XXV-source.tgz"
    sha256: b3874d5dcd22c64626b2c955b18b27bcba3aa727855361a91eab57a6324b22dd
  - type: patch
    path: phalanx-books-path.patch

- name: stockfish
  buildsystem: simple
  build-options:
    arch:
      x86_64:
        env:
          ARCH: x86-64
      arm:
        env:
          ARCH: armv7
      aarch64:
        env:
          ARCH: armv7
  build-commands:
  - make build
  - install -D stockfish /app/bin/stockfish
  sources:
  - type: archive
    url: "https://example.org/stockfish-10-src.zip"
    sha256: 29bd01e7407098aa9e851b82f6ea4bf2b46d26e9075a48a269cb1e40c582a073

- name: gnuchess
  sources:
  - type: archive
    url: "https://example.org/gnuchess-6.2.5.tar.gz"
    sha256: 9a99e963355706cab32099d140b698eda9de164ebce40a5420b1b9772dd04802

- name: gnome-chess
  buildsystem: meson
  sources:
  - type: archive
    url: "https://example.org/gnome-chess-3.36.1.tar.xz"
    sha256: b195c9f17a59d7fcc892ff55e6a6ebdd16e7329157bf37e3c2fe593b349aab98
07070100000007000081a400000000000000000000000163e504ba00000592000000000000000000000000000000000000001d00000000t/data/mahjongg/flatpak.yaml######################################################
# Flatpak manifest example for Open Build Service
# https://docs.flatpak.org/en/latest/manifests.html
# Input should be YAML, even though the file can have
# a .json suffix (JSON is a subset of YAML).
# Don't use '//' comments!
# Copied from https://github.com/flathub/org.gnome.Mahjongg
######################################################

# Special OBS field because flatpak does not have a version field
# Default will be '0' if the field is missing.
#!BuildVersion: 3.38.2
---
app-id: org.gnome.Mahjongg
runtime: org.gnome.Platform
sdk: org.gnome.Sdk
runtime-version: '3.38'
command: gnome-mahjongg

finish-args:
- --share=ipc
- --socket=fallback-x11
- --socket=wayland
- --device=dri
- --metadata=X-DConf=migrate-path=/org/gnome/Mahjongg/

cleanup:
- "/share/man"

modules:
- name: gnome-mahjongg
  buildsystem: meson
  config-opts:
  - -Dcompile-schemas=enabled
  - -Dupdate-icon-cache=enabled
  sources:
  - type: archive

    # Source archives should be put into the OBS package, but you can
    # keep the original URL from where it was downloaded here.
    url: https://download.gnome.org/sources/gnome-mahjongg/3.38/gnome-mahjongg-3.38.2.tar.xz

    # You can also just specify a simple filename
    # url: gnome-mahjongg-3.36.2.tar.xz

    # flatpak-builder will do a checksum
    sha256: '928708b4c625cad4b05199ca2948f6a545bfab368a1fc576feed0a7432e454f3'
07070100000008000041ed00000000000000000000000163e504ba00000000000000000000000000000000000000000000001000000000t/data/mahjongg07070100000009000041ed00000000000000000000000163e504ba00000000000000000000000000000000000000000000000700000000t/data0707010000000a000081a400000000000000000000000163e504ba0000014f000000000000000000000000000000000000001000000000t/determinism.t#!/usr/bin/perl -w

use strict;
use Test::More tests => 1;

require 't/testlib.pm';

my $repo = <<'EOR';
P: a = 1-1
R: b c
P: b1 = 1-1 b
C: c1
P: b2 = 1-1 b
P: c1 = 1-1 c
P: c2 = 1-1 c
EOR

my $config = setuptest($repo, 'Prefer: b1 c1');
my @r;

@r = expand($config, 'a');
is_deeply(\@r, [undef, 'b1 conflicts with c1'], 'install a');
0707010000000b000081a400000000000000000000000163e504ba00007800000000000000000000000000000000000000001600000000t/directory.livebuild./PaxHeaders.21794/directory0000644000000000000000000000013212361532117014146 xustar000000000000000030 mtime=1405531215.102319719
30 atime=1405531213.970331813
30 ctime=1405531215.102319719
directory/0000755000175000001440000000000012361532117013732 5ustar00jblunckusers00000000000000directory/PaxHeaders.21794/README0000644000000000000000000000013212222266372014751 xustar000000000000000030 mtime=1380543738.739537615
30 atime=1405531215.102319719
30 ctime=1405531215.102319719
directory/README0000644000175000001440000000077112222266372014622 0ustar00jblunckusers00000000000000This is the configuration tree for:

  Debian Standard

A software called live-build can be used to automatically build images from
this configuration tree.

live-build can be obtained from <http://live-systems.org/devel/live-build/>.
On Debian based systems, live-build can be installed with:

  # apt-get install live-build

More information about live-build and the Live Systems project can be found on
its homepage at <http://live-systems.org/> and in the manual at
<http://live-systems.org/manual/>.
directory/PaxHeaders.21794/auto0000644000000000000000000000013212222266372014764 xustar000000000000000030 mtime=1380543738.699537615
30 atime=1405531215.102319719
30 ctime=1405531215.102319719
directory/auto/0000755000175000001440000000000012222266372014705 5ustar00jblunckusers00000000000000directory/auto/PaxHeaders.21794/clean0000644000000000000000000000013212222266372016046 xustar000000000000000030 mtime=1380543738.699537615
30 atime=1405531215.102319719
30 ctime=1405531215.102319719
directory/auto/clean0000755000175000001440000000024012222266372015711 0ustar00jblunckusers00000000000000#!/bin/sh

set -e

lb clean noauto "${@}"

rm -f config/binary config/bootstrap config/chroot config/common config/source
rm -f config/control

rm -f build.log
directory/auto/PaxHeaders.21794/config0000644000000000000000000000013212222266372016231 xustar000000000000000030 mtime=1380543738.699537615
30 atime=1405531215.102319719
30 ctime=1405531215.102319719
directory/auto/config0000755000175000001440000000062612222266372016104 0ustar00jblunckusers00000000000000#!/bin/sh

set -e

case "$(dpkg --print-architecture)" in
	amd64)
		_LINUX_FLAVOURS="amd64"
		_SOURCE="false"
		;;

	i386)
		_LINUX_FLAVOURS="486 686-pae"
		_SOURCE="true"
		;;
esac

lb config noauto \
	--clean \
	--ignore-system-defaults \
	--mode debian \
	--debian-installer live \
	--linux-flavours "${_LINUX_FLAVOURS}" \
	--linux-packages "linux-image linux-headers" \
	--source "${_SOURCE}" \
"${@}"
directory/auto/PaxHeaders.21794/build0000644000000000000000000000013212222266372016063 xustar000000000000000030 mtime=1380543738.699537615
30 atime=1405531215.102319719
30 ctime=1405531215.102319719
directory/auto/build0000755000175000001440000000011212222266372015724 0ustar00jblunckusers00000000000000#!/bin/sh

set -e

lb build noauto "${@}" && echo $? 2>&1 | tee build.log
directory/PaxHeaders.21794/config0000644000000000000000000000013212222300375015251 xustar000000000000000030 mtime=1380548861.684530853
30 atime=1405531215.102319719
30 ctime=1405531215.102319719
directory/config/0000755000175000001440000000000012222300375015172 5ustar00jblunckusers00000000000000directory/config/PaxHeaders.21794/bootloaders0000644000000000000000000000013212222304630017564 xustar000000000000000030 mtime=1380551064.696527946
30 atime=1405531215.102319719
30 ctime=1405531215.102319719
directory/config/bootloaders/0000755000175000001440000000000012222304630017505 5ustar00jblunckusers00000000000000directory/config/PaxHeaders.21794/package-lists0000644000000000000000000000013212357312571020012 xustar000000000000000030 mtime=1404933497.776159592
30 atime=1405531215.102319719
30 ctime=1405531215.102319719
directory/config/package-lists/0000755000175000001440000000000012357312571017733 5ustar00jblunckusers00000000000000directory/config/package-lists/PaxHeaders.21794/installer.list.chroot0000644000000000000000000000013212222266372024254 xustar000000000000000030 mtime=1380543738.739537615
30 atime=1405531215.102319719
30 ctime=1405531215.102319719
directory/config/package-lists/installer.list.chroot0000644000175000001440000000003712222266372024120 0ustar00jblunckusers00000000000000debian-installer-launcher
sudo
directory/config/package-lists/PaxHeaders.21794/live.list.chroot0000644000000000000000000000013212222266372023216 xustar000000000000000030 mtime=1380543738.739537615
30 atime=1405531215.102319719
30 ctime=1405531215.102319719
directory/config/package-lists/live.list.chroot0000644000175000001440000000002712222266372023061 0ustar00jblunckusers00000000000000live-manual
live-tools
directory/config/package-lists/PaxHeaders.21794/localization.list.chroot0000644000000000000000000000013212222266372024747 xustar000000000000000030 mtime=1380543738.739537615
30 atime=1405531215.102319719
30 ctime=1405531215.102319719
directory/config/package-lists/localization.list.chroot0000644000175000001440000000003412222266372024610 0ustar00jblunckusers00000000000000task-english

console-tools
directory/config/package-lists/PaxHeaders.21794/standard.list.chroot0000644000000000000000000000013212222266372024057 xustar000000000000000030 mtime=1380543738.739537615
30 atime=1405531215.102319719
30 ctime=1405531215.102319719
directory/config/package-lists/standard.list.chroot0000644000175000001440000000007212222266372023722 0ustar00jblunckusers00000000000000! Packages Priority standard

task-laptop
task-ssh-server
directory/config/package-lists/PaxHeaders.21794/memtest0000644000000000000000000000013212222266372021466 xustar000000000000000030 mtime=1380543738.739537615
30 atime=1405531215.102319719
30 ctime=1405531215.102319719
directory/config/package-lists/memtest0000644000175000001440000000001312222266372021324 0ustar00jblunckusers00000000000000memtest86+
directory/config/PaxHeaders.21794/archives0000644000000000000000000000013212357513140017062 xustar000000000000000030 mtime=1404999264.309919538
30 atime=1405531215.102319719
30 ctime=1405531215.102319719
directory/config/archives/0000755000175000001440000000000012357513140017003 5ustar00jblunckusers00000000000000directory/config/archives/PaxHeaders.21794/debian.key.chroot0000644000000000000000000000013212222300432022355 xustar000000000000000030 mtime=1380548890.449530815
30 atime=1405531215.102319719
30 ctime=1405531215.102319719
directory/config/archives/debian.key.chroot0000644000175000001440000000004512222300432022220 0ustar00jblunckusers00000000000000a73043cf-7b16-42dc-b0d9-3031ed4370be
0707010000000c000081ed00000000000000000000000163e504ba000005c9000000000000000000000000000000000000000700000000t/dist#!/usr/bin/perl -w

################################################################
#
# Copyright (c) 1995-2014 SUSE Linux Products GmbH
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 or 3 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program (see the file COPYING); if not, write to the
# Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
#
################################################################

use strict;
use Test::More tests => 9;
use Build;

sub d {
  Build::dist_canon($_[0], $_[1]||'i586');
}

is(d("UnitedLinux 1.0 (x86-64)"),       "ul1-x86_64");
is(d("SuSE SLES-8 (ia64)"),             "sles8-ia64");
is(d("SuSE Linux 8.2 (x86-64)"),        "8.2-x86_64");
is(d("SuSE SLES-9 (x86-64)"),           "sles9-x86_64");
is(d("SUSE Linux 10.1 (PPC64)"),        "10.1-ppc64");
is(d("SUSE Linux Enterprise 10 (PPC)"), "sles10-ppc");
is(d("openSUSE 10.3 (X86-64)"),         "10.3-x86_64");
is(d("SUSE Linux Enterprise 11"),       "sles11-i386");
is(d("openSUSE 11.3"),                  "11.3-i386");
0707010000000d000081a400000000000000000000000163e504ba0000062c000000000000000000000000000000000000000f00000000t/expression.t#!/usr/bin/perl -w

use strict;
use Test::More tests => 45;

use Build::Rpm;

my @tests = (
  '4*1024'			=> '4096',
  '5 < 1'			=> '0',
  '(4 + 5) * 2 == 18'		=> '1',
  '5 || 0'			=> '5',
  '5 && 0'			=> '0',
  '! ""'			=> '1',
  '! "foo"'			=> '0',
  '0 || 3'			=> '3',
  '2 || 3'			=> '2',
  '0 || 0'			=> '0',
  '2 || 0'			=> '2',
  '"" || "foo"'			=> '"foo',
  '"bar" || "foo"'		=> '"bar',
  '0 && 3'			=> '0',
  '2 && 3'			=> '3',
  '0 && 0'			=> '0',
  '2 && 0'			=> '0',
  '"" && "foo"'			=> '"',
  '"bar" && "foo"'		=> '"foo',
  '0 ? 2 : 3'			=> '3',
  '1 ? 2 : 3'			=> '2',
  '0 ? 0 ? 3 : 4 : 0 ? 6 : 7'	=> '7',
  '0 ? 0 ? 3 : 4 : 5 ? 6 : 7'	=> '6',
  '0 ? 2 ? 3 : 4 : 0 ? 6 : 7'	=> '7',
  '0 ? 2 ? 3 : 4 : 5 ? 6 : 7'	=> '6',
  '1 ? 0 ? 3 : 4 : 0 ? 6 : 7'	=> '4',
  '1 ? 0 ? 3 : 4 : 5 ? 6 : 7'	=> '4',
  '1 ? 2 ? 3 : 4 : 0 ? 6 : 7'	=> '3',
  '1 ? 2 ? 3 : 4 : 5 ? 6 : 7'	=> '3',
  '1 || 2 && 0'			=> '0',
  '1 - 1 - 1'			=> '-1',
  '1 + 2 * 3'			=> '7',
  '2 * -2'			=> '-4',
  '7 == 1 + 2 * 3'		=> '1',
  '5 || 2 ? 3 : 4'		=> '3',
  '"foo" + "bar"'		=> '"foobar',
  'v"1.2" > v"1"'               => '1',
  'v"1.2" < v"1"'               => '0',
  'v"1.2" > v"1.2"'             => '0',
  'v"1.2" < v"1.2"'             => '0',
  'v"1.2" >= v"1.2"'            => '1',
  'v"1.2" <= v"1.2"'            => '1',
  'v"1.2" == v"1.2"'            => '1',
  'v"1.2" != v"1.2"'            => '0',
  'v"1.2" != v"1"'              => '1',
);

while (@tests) {
  my ($ex, $expected) = splice(@tests, 0, 2);
  my ($actual, $rem) = Build::Rpm::expr($ex);
  is($actual, $expected, $ex);
}

0707010000000e000081a400000000000000000000000163e504ba000015a9000000000000000000000000000000000000000c00000000t/flatpak.t#!/usr/bin/perl
use strict;
use warnings;

use FindBin '$Bin';
use Test::More 0.98;

my $path = "$Bin/data";
use Build;
use Build::Flatpak;

my $rewritten_manifest = do {
    local $/;
    open my $fh, '<', "$Bin/data/flatpak-rewritten.yaml" or die $!;
    <$fh>;
};
my $conf = Build::read_config('x86_64');

sub capture_stdout {
  my ($fn) = @_;
  local *STDOUT;
  open(STDOUT, '>', \my $cap) || die;
  $fn->();
  return $cap;
}

my @sources = map { "https://example.org/$_" } (
    "phalanx-XXV-source.tgz",
    "stockfish-10-src.zip",
    "gnuchess-6.2.5.tar.gz",
    "gnome-chess-3.36.1.tar.xz",
);

subtest parse => sub {
    plan skip_all => 'no YAML parser' unless Build::Flatpak::_have_yaml_parser();
    my $expected = {
        name => 'org.gnome.Chess',
        version => '3.36.2',
        sources => [
            @sources,
        ],
        deps => [
            'org.gnome.Sdk-v3.36',
            'org.gnome.Platform-v3.36',
        ],
    };
    my $yaml = do { local $/; <DATA> };
    my $data = Build::Flatpak::parse($conf, \$yaml);
    is_deeply $data, $expected, 'parse() YAML flatpak content';

    $data = Build::Flatpak::parse($conf, "$path/flatpak.yaml");
    is_deeply $data, $expected, 'parse() YAML flatpak file';

    $data = Build::Flatpak::parse($conf, "$path/flatpak.json");
    is_deeply $data, $expected, 'parse() JSON flatpak file';
};

subtest show => sub {
    plan skip_all => 'no YAML parser' unless Build::Flatpak::_have_yaml_parser();
    local @ARGV = ("$path/flatpak.yaml", 'name');
    my $data = capture_stdout(sub { Build::Flatpak::show() });
    is $data, "org.gnome.Chess\n", 'Build::Flatpak::show name';

    @ARGV = ("$path/flatpak.yaml", 'sources');
    $data = capture_stdout(sub { Build::Flatpak::show() });
    my $exp_sources = join '', map { "$_\n" } @sources;
    is $data, $exp_sources, 'Build::Flatpak::show sources';
};

subtest rewrite => sub {
    plan skip_all => 'no YAML parser' unless Build::Flatpak::_have_yaml_parser();
    local @ARGV = ("$path/flatpak.yaml");
    my $yaml = capture_stdout(sub { Build::Flatpak::rewrite() });
    my $ok = is $yaml, $rewritten_manifest, 'Build::Flatpak::show rewrite';
    unless ($ok) {
        open my $fh, '>', "/tmp/flatpak.t.compare.yaml" or die $!;
        print $fh $yaml;
        close $fh;
        my $diff = qx{diff $Bin/data/flatpak-rewritten.yaml /tmp/flatpak.t.compare.yaml};
        diag "Diff:\n$diff";
    }

};

done_testing;

__DATA__
#!BuildVersion: 3.36.2
{
    "app-id": "org.gnome.Chess",
    "runtime": "org.gnome.Platform",
    "runtime-version": "3.36",
    "sdk": "org.gnome.Sdk",
    "command": "gnome-chess",
    "finish-args": [
        "--share=ipc", "--socket=fallback-x11",
        "--socket=wayland",
        "--metadata=X-DConf=migrate-path=/org/gnome/Chess/"
    ],
    "cleanup": ["/share/gnuchess", "/share/info", "/share/man", "/include"],
    "modules": [
        {
            "name": "phalanx",
            "buildsystem": "simple",
            "build-commands": [
                "make",
                "install -D phalanx /app/bin/phalanx",
                "install -D pbook.phalanx /app/share/phalanx/pbook.phalanx",
                "install -D sbook.phalanx /app/share/phalanx/sbook.phalanx",
                "install -D eco.phalanx /app/share/phalanx/eco.phalanx"
            ],
            "sources": [
                {
                    "type": "archive",
                    "url": "https://example.org/phalanx-XXV-source.tgz",
                    "sha256": "b3874d5dcd22c64626b2c955b18b27bcba3aa727855361a91eab57a6324b22dd"
                },
                {
                    "type": "patch",
                    "path": "phalanx-books-path.patch"
                }
            ]
        },
        {
            "name": "stockfish",
            "buildsystem": "simple",
            "build-options" : {
                "arch": {
                    "x86_64": {
                        "env": {
                            "ARCH": "x86-64"
                        }
                    },
                    "arm": {
                        "env": {
                            "ARCH": "armv7"
                        }
                    },
                    "aarch64": {
                        "env": {
                            "ARCH": "armv7"
                        }
                    }
                }
            },
            "build-commands": [
                "make build",
                "install -D stockfish /app/bin/stockfish"
            ],
            "sources": [
                {
                    "type": "archive",
                    "url": "https://example.org/stockfish-10-src.zip",
                    "sha256": "29bd01e7407098aa9e851b82f6ea4bf2b46d26e9075a48a269cb1e40c582a073"
                }
            ]
        },
        {
            "name": "gnuchess",
            "sources": [
                {
                    "type": "archive",
                    "url": "https://example.org/gnuchess-6.2.5.tar.gz",
                    "sha256": "9a99e963355706cab32099d140b698eda9de164ebce40a5420b1b9772dd04802"
                }
            ]
        },
        {
            "name": "gnome-chess",
            "buildsystem": "meson",
            "sources": [
                {
                    "type": "archive",
                    "url": "https://example.org/gnome-chess-3.36.1.tar.xz",
                    "sha256": "b195c9f17a59d7fcc892ff55e6a6ebdd16e7329157bf37e3c2fe593b349aab98"
                }
            ]
        }
    ]
}
0707010000000f000081ed00000000000000000000000163e504ba000007de000000000000000000000000000000000000000d00000000t/live-build#!/usr/bin/perl -w -I ..

################################################################
#
# Copyright (c) 1995-2014 SUSE Linux Products GmbH
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 or 3 as
# published by the Free Software Foundation.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program (see the file COPYING); if not, write to the
# Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
#
################################################################

use strict;
use Test::More tests => 5;
use Build::LiveBuild;

use Data::Dumper;
use Digest::MD5 qw(md5_hex);

my $VAR = '


a

b
#comment

! whatever
';

is(Build::LiveBuild::filter($VAR), 'a
b
');


my $DEB_ARCHIVE = '
# comment
deb obs://openSUSE.org:Debian:7.0/standard wheezy main contrib
deb-src obs://openSUSE.org:Debian:7.0/standard wheezy main contrib

';
my $DEB_ARCHIVE_RESULT = "\$VAR1 = 'openSUSE.org:Debian:7.0/standard';
";

is(Dumper(Build::LiveBuild::parse_archive($DEB_ARCHIVE)), $DEB_ARCHIVE_RESULT);

my $config = {};
$Data::Dumper::Sortkeys = 1;
is(md5_hex(Dumper(Build::LiveBuild::parse( $config, 'standard.livebuild'))),
   '9cfb69e8f0581293f207342edacd19e7');

#print Dumper(Build::LiveBuild::parse( $config, 'standard.livebuild'));

is(md5_hex(Dumper(Build::LiveBuild::parse( $config, 'directory.livebuild'))),
   'bc803d2b4a375d9a02b3242117f6c93a');

#print Dumper(Build::LiveBuild::parse( $config, 'directory.livebuild'));

is(md5_hex(Dumper(Build::LiveBuild::parse( $config, 'bad.livebuild'))),
   '1e596160978007d1014e9c5e38574700');

#print Dumper(Build::LiveBuild::parse( $config, 'bad.livebuild'));
07070100000010000081a400000000000000000000000163e504ba00000549000000000000000000000000000000000000000b00000000t/macros.t#!/usr/bin/perl -w

use strict;
use Test::More tests => 21;

use Build::Rpm;

my @tests = (
q{
%%}				=> '%',
q{
%{%}}				=> '%{%}',
q{
%not_defined}			=> '%not_defined',
q{
%{not_defined}}			=> '%{not_defined}',
q{
%{}}				=> '%{}',
q{
%{ test }}			=> '%{ test }',
q{
%define this that
%{this}} 			=> 'that',
q{
%define this that
%{?this}}			=> 'that',
q{
%define this that
%{?that}}			=> '',
q{
%define this that
%{?!this}}			=> '',
q{
%define this that
%{?!that}}			=> '',
q{
%define this that
%{?this:foo}}			=> 'foo',
q{
%define this that
%{?that:foo}}			=> '',
q{
%define this that
%{?!this:foo}}			=> '',
q{
%define this that
%{?!that:foo}}			=> 'foo',
q{
%define this that
%define that_that foo
%{expand:%%{%{this}_that}}}	=> 'foo',
q{
%define bar() "Bar %#: %{?1} %{?2}"
%define foo() "Foo %#: %{?1} %{?2}" %bar a
%foo 1 2}			=> '"Foo 2: 1 2" "Bar 1: a "',
q{
%define foo hello" + "world
%["%foo"]}			=> 'hello" + "world',
q{
%define foo hello
%define bar world
%{foo:%{bar}}}			=> 'world',
q{%[1 + %[2 * 3]]}		=> '7',
q{%[0 && %does_not_exist]}	=> '0',
);

while (@tests) {
  my ($in, $expected) = splice(@tests, 0, 2);
  $in =~ s/^\n//s;
  my %macros = ( 'nil' => '' );
  my %macros_args;
  my $actual = '';
  $actual .= Build::Rpm::expandmacros({}, $_, undef, \%macros, \%macros_args) for split("\n", $in);
  is($actual, $expected, $in);
}

07070100000011000081a400000000000000000000000163e504ba00000523000000000000000000000000000000000000000e00000000t/obsoletes.t#!/usr/bin/perl -w

use strict;
use Test::More tests => 9;

require 't/testlib.pm';

my $repo = <<'EOR';
P: a = 1-1
R: p
P: b = 1-1 p
P: c = 1-1 p
P: d = 1-1
O: b
P: e = 1-1
O: c
P: f = 1-1
O: p
P: g = 1-1
O: b c
P: h = 1-1
R: b d
EOR

my $config = setuptest($repo);
my @r;

@r = expand($config, 'a');
is_deeply(\@r, [undef, 'have choice for p needed by a: b c'], 'install a');

@r = expand($config, 'a', 'd');
is_deeply(\@r, [1, 'a', 'c', 'd'], 'install a d');

@r = expand($config, 'a', 'e');
is_deeply(\@r, [1, 'a', 'b', 'e'], 'install a e');

@r = expand($config, 'a', 'd', 'e');
is_deeply(\@r, [undef, '(provider b is obsoleted by d)', '(provider c is obsoleted by e)', 'conflict for providers of p needed by a'], 'install a d e');

@r = expand($config, 'a', 'f');
is_deeply(\@r, [undef, 'have choice for p needed by a: b c'], 'install a f');

@r = expand($config, 'b', 'd');
is_deeply(\@r, [undef, 'd obsoletes b'], 'install b d');

@r = expand($config, 'h');
is_deeply(\@r, [undef, 'd obsoletes b'], 'install h');

@r = expand($config, 'h', 'd');
is_deeply(\@r, [undef, '(provider b is obsoleted by d)', 'conflict for providers of b needed by h'], 'install h d');

@r = expand($config, 'h', 'b');
is_deeply(\@r, [undef, '(provider d obsoletes b)', 'conflict for providers of d needed by h'], 'install h b');
07070100000012000081a400000000000000000000000163e504ba00000269000000000000000000000000000000000000000a00000000t/ordep.t#!/usr/bin/perl -w

use strict;
use Test::More tests => 4;

require 't/testlib.pm';

my $repo = <<'EOR';
P: a = 1-1
R: x | y
P: b = 1-1
R: d | e
P: c = 1-1
R: d | f
P: d = 1-1
P: e = 1-1
P: f = 1-1
P: g = 1-1
R: x | e | d
EOR

my $config = setuptest($repo, "Binarytype: deb\nPrefer: f\n");
my @r;

@r = expand($config, 'a');
is_deeply(\@r, [undef, 'nothing provides x | y needed by a'], 'install a');

@r = expand($config, 'b');
is_deeply(\@r, [1, 'b', 'd'], 'install b');

@r = expand($config, 'c');
is_deeply(\@r, [1, 'c', 'f'], 'install c');

@r = expand($config, 'g');
is_deeply(\@r, [1, 'e', 'g'], 'install g');
07070100000013000081a400000000000000000000000163e504ba00000217000000000000000000000000000000000000001100000000t/parse_docker.t#!/usr/bin/perl -w

use strict;
use Test::More tests => 1;

use Build;
use Build::Docker;

my ($dockerfile);
my $result;
my $expected;

my $conf = Build::read_config('x86_64');

$dockerfile = q{
FROM opensuse/tumbleweed AS tw

# debug
RUN cat /etc/os-release

FROM opensuse/leap:15.2
};

$expected = {
  'path' => [],
  'deps' => ['container:opensuse/tumbleweed:latest', 'container:opensuse/leap:15.2'],
  'imagerepos' => [],
  'name' => 'docker'
};

$result = Build::Docker::parse($conf, \$dockerfile);
is_deeply($result, $expected);
07070100000014000081a400000000000000000000000163e504ba0000178f000000000000000000000000000000000000000f00000000t/parse_spec.t#!/usr/bin/perl -w

use strict;
use Test::More tests => 14;

use Build;
use Build::Rpm;
use Data::Dumper;

my ($spec, $spec2);
my $result;
my $expected;

my $conf = Build::read_config('x86_64');


$spec = q{
Name: foo
Version: 1.0
Release: 1
Epoch: 42
ExclusiveArch: x86_64
ExcludeArch: i586
};
$expected = {
  'name' => 'foo',
  'epoch' => '42',
  'version' => '1.0',
  'release' => '1',
  'exclarch' => [ 'x86_64' ],
  'badarch' => [ 'i586' ],
  'deps' => [],
  'subpacks' => [ 'foo' ],
};
$result = Build::Rpm::parse($conf, [ split("\n", $spec) ]);
is_deeply($result, $expected, "preamble");


$spec = q{
BuildRequires: foo
BuildRequires: bar > 1,baz
};
$expected = {
  'deps' => [ 'foo', 'bar > 1', 'baz' ],
  'subpacks' => [],
};
$result = Build::Rpm::parse($conf, [ split("\n", $spec) ]);
is_deeply($result, $expected, "simple build requires");


$spec = q{
BuildRequires: foo (bar > 1 || (baz)) xxx
};
$expected = {
  'deps' => [ 'foo', '(bar > 1 || (baz))', 'xxx' ],
  'subpacks' => [],
};
$result = Build::Rpm::parse($conf, [ split("\n", $spec) ]);
is_deeply($result, $expected, "rich build requires");


$spec = q{
Requires(pre): foo
PreReq: bar
Requires(post): baz
Requires(xxx): xxx
};
$expected = {
  'deps' => [],
  'prereqs' => [ 'foo', 'bar', 'baz' ],
  'subpacks' => [],
};
$result = Build::Rpm::parse($conf, [ split("\n", $spec) ]);
is_deeply($result, $expected, "pre requires");


$spec = q{
%if 1
BuildRequires: foo1
%endif

%if 0
BuildRequires: foo2
%endif

%if 1
BuildRequires: foo3
%else
BuildRequires: foo4
%endif

%if 0
BuildRequires: foo5
%else
BuildRequires: foo6
%endif

BuildRequires: foo7

%if ""
BuildRequires: foo8
%endif

%if "0"
BuildRequires: foo9
%endif
};
$expected = {
  'deps' => [ 'foo1', 'foo3', 'foo6', 'foo7', 'foo9' ],
  'subpacks' => [],
  'configdependent' => 1,
};
$result = Build::Rpm::parse($conf, [ split("\n", $spec) ]);
is_deeply($result, $expected, "if statements");


$spec = q{
%if 1
%if 1
BuildRequires: foo1
%endif

%if 0
BuildRequires: foo2
%endif
%endif

%if 0
%if 1
BuildRequires: foo3
%endif

%if 0
BuildRequires: foo4
%endif
%endif

%if 1
%if 1
BuildRequires: foo5
%endif

%if 0
BuildRequires: foo6
%endif

%else

%if 1
BuildRequires: foo7
%endif

%if 0
BuildRequires: foo8
%endif
%endif

%if 0
%if 1
BuildRequires: foo9
%endif

%if 0
BuildRequires: foo10
%endif

%else

%if 1
BuildRequires: foo11
%endif

%if 0
BuildRequires: foo12
%endif
%endif
};
$expected = {
  'deps' => [ 'foo1', 'foo5', 'foo11' ],
  'subpacks' => [],
  'configdependent' => 1,
};
$result = Build::Rpm::parse($conf, [ split("\n", $spec) ]);
is_deeply($result, $expected, "nested if statements");


$spec = q{
%ifarch i586
BuildRequires: foo1
%endif

%ifarch x86_64
BuildRequires: foo2
%endif

%ifarch i586 x86_64
BuildRequires: foo3
%endif

%ifnarch i586
BuildRequires: foo1
%endif

%ifnarch x86_64
BuildRequires: foo2
%endif

%ifnarch i586 x86_64
BuildRequires: foo3
%endif
};
$expected = {
  'deps' => [ 'foo2', 'foo3', 'foo1' ],
  'subpacks' => [],
  'configdependent' => 1,
};
$result = Build::Rpm::parse($conf, [ split("\n", $spec) ]);
is_deeply($result, $expected, "ifarch statements");

$spec = q{
BuildRequires: foo
%include spec2
};
$spec2 = q{
BuildRequires: bar
BuildRequires: baz%%%%
};
$expected = {
  'deps' => [ 'foo', 'bar', 'baz%%' ],
  'subpacks' => [],
};
$Build::Rpm::includecallback = sub { $_[0] eq 'spec2' ? $spec2 : undef };
$result = Build::Rpm::parse($conf, [ split("\n", $spec) ]);
is_deeply($result, $expected, "include statement");

$spec = q{
%if 0
BuildRequires: foo1_1
%elif 0
BuildRequires: foo2_1
%if 1
%elif 1
%else
%endif
%elif 0
BuildRequires: foo3_1
%else
BuildRequires: foo4_1
%endif

%if 1
BuildRequires: foo1_2
%if 1
%elif 1
%else
%endif
%elif 0
BuildRequires: foo2_2
%elif 0
BuildRequires: foo3_2
%else
BuildRequires: foo4_2
%endif

%if 0
BuildRequires: foo1_3
%elif 1
BuildRequires: foo2_3
%elif 0
BuildRequires: foo3_3
%if 1
%elif 1
%else
%endif
%else
BuildRequires: foo4_3
%endif

%if 1
BuildRequires: foo1_4
%if 1
%elif 1
%else
%endif
%elif 1
BuildRequires: foo2_4
%elif 0
BuildRequires: foo3_4
%else
BuildRequires: foo4_4
%endif

%if 0
BuildRequires: foo1_5
%elif 0
%if 1
%elif 1
%else
%endif
BuildRequires: foo2_5
%elif 1
BuildRequires: foo3_5
%else
BuildRequires: foo4_5
%endif

%if 1
BuildRequires: foo1_6
%elif 0
BuildRequires: foo2_6
%elif 1
BuildRequires: foo3_6
%else
BuildRequires: foo4_6
%endif

%if 0
BuildRequires: foo1_7
%if 1
%elif 1
%else
%endif
%elif 1
BuildRequires: foo2_7
%elif 1
BuildRequires: foo3_7
%if 1
%elif 1
%else
%endif
%else
BuildRequires: foo4_7
%endif

%if 1
BuildRequires: foo1_8
%elif 1
BuildRequires: foo2_8
%elif 1
BuildRequires: foo3_8
%else
BuildRequires: foo4_8
%endif
};
$expected = {
  'deps' => [ 'foo4_1', 'foo1_2', 'foo2_3', 'foo1_4', 'foo3_5', 'foo1_6', 'foo2_7', 'foo1_8' ],
  'subpacks' => [],
  'configdependent' => 1,
};
$result = Build::Rpm::parse($conf, [ split("\n", $spec) ]);
is_deeply($result, $expected, "elif statements");

$spec = q{
%global foo \
BuildRequires: bar \
%nil
BuildRequires: baz
};
$expected = {
  'deps' => [ 'baz' ],
  'subpacks' => [],
};
$result = Build::Rpm::parse($conf, [ split("\n", $spec) ]);
is_deeply($result, $expected, "multiline define");

$spec = q[
%{?foo:
BuildRequires: foo
%{?!bar:
BuildRequires: bar
}
BuildRequires: baz
}xxx
];
$expected = {
  'deps' => [],
  'subpacks' => [],
};
$result = Build::Rpm::parse($conf, [ split("\n", "$spec") ]);
is_deeply($result, $expected, "multiline condition 1");

$result = Build::Rpm::parse($conf, [ split("\n", "%global bar 1\n$spec") ]);
is_deeply($result, $expected, "multiline condition 2");

$expected = {
  'deps' => [ 'foo', 'bar', 'baz' ],
  'subpacks' => [],
};
$result = Build::Rpm::parse($conf, [ split("\n", "%global foo 1\n$spec") ]);
is_deeply($result, $expected, "multiline condition 3");

$expected = {
  'deps' => [ 'foo', 'baz' ],
  'subpacks' => [],
};
$result = Build::Rpm::parse($conf, [ split("\n", "%global foo 1\n%global bar 1\n$spec") ]);
is_deeply($result, $expected, "multiline condition 4");

07070100000015000081a400000000000000000000000163e504ba00000264000000000000000000000000000000000000000f00000000t/recommends.t#!/usr/bin/perl -w

use strict;
use Test::More tests => 4;

require 't/testlib.pm';

my $repo = <<'EOR';
P: a = 1-1
R: p
P: b = 1-1 p
P: c = 1-1 p
P: d = 1-1
r: b
P: e = 1-1
r: c
EOR

my $config = setuptest($repo);
my @r;

@r = expand($config, 'a');
is_deeply(\@r, [undef, 'have choice for p needed by a: b c'], 'install a');

@r = expand($config, 'a', 'd');
is_deeply(\@r, [1, 'a', 'b', 'd'], 'install a d');

@r = expand($config, 'a', 'e');
is_deeply(\@r, [1, 'a', 'c', 'e'], 'install a e');

@r = expand($config, 'a', 'd', 'e');
is_deeply(\@r, [undef, 'have choice for p needed by a: b c'], 'install a d e');
07070100000016000081a400000000000000000000000163e504ba000008c2000000000000000000000000000000000000000d00000000t/requires.t#!/usr/bin/perl -w

use strict;
use Test::More tests => 20;

require 't/testlib.pm';

my $repo = <<'EOR';
P: a = 1-1
R: b
P: b = 1-1
P: c = 1-1
R: p
P: d = 1-1 p
P: e = 1-1 p
P: f = 1-1
R: n
P: ign2 = 1-1
R: ign1
P: ign3 = 1-1
R: ign4
P: ign5 = 1-1 ign4
P: ign6 = 1-1
R: ign7
P: ign8 = 1-1
R: ign7
P: g = 1-1 h
P: h = 1-1
EOR

my $config = setuptest($repo, 'Ignore: ign1 ign5 ign6:ign7');
my $config2 = setuptest($repo, 'Prefer: d');
my $config3 = setuptest($repo, 'Prefer: -d');
my @r;

@r = expand($config);
is_deeply(\@r, [1], 'install nothing');

@r = expand($config, 'n');
is_deeply(\@r, [undef, 'nothing provides n'], 'install n');

@r = expand($config, 'f');
is_deeply(\@r, [undef, 'nothing provides n needed by f'], 'install f');

@r = expand($config, "a");
is_deeply(\@r, [1, 'a', 'b'], 'install a');

@r = expand($config, "c");
is_deeply(\@r, [undef, 'have choice for p needed by c: d e'], 'install c');

@r = expand($config2, "c");
is_deeply(\@r, [1, 'c', 'd'], 'install c with prefer');

@r = expand($config3, "c");
is_deeply(\@r, [1, 'c', 'e'], 'install c with neg prefer');

@r = expand($config, "ign1");
is_deeply(\@r, [undef, 'nothing provides ign1'], 'install ign1');

@r = expand($config, "ign2");
is_deeply(\@r, [1, 'ign2'], 'install ign2');

@r = expand($config, "ign3");
is_deeply(\@r, [1, 'ign3'], 'install ign3');

@r = expand($config, "ign6");
is_deeply(\@r, [1, 'ign6'], 'install ign6');

@r = expand($config, "ign8");
is_deeply(\@r, [undef, 'nothing provides ign7 needed by ign8'], 'install ign8');

@r = expand($config, "ign2", "-ign2");
is_deeply(\@r, [1, 'ign2'], 'install ign2 -ign2');

@r = expand($config, "ign8", "-ign7");
is_deeply(\@r, [1, 'ign8'], 'install ign8 -ign7');

@r = expand($config2, "ign5", "-ign5");
is_deeply(\@r, [1, 'ign5'], 'install ign5 -ign5');

@r = expand($config2, "ign4", "-ign5");
is_deeply(\@r, [1, 'ign5'], 'install ign4 -ign5');

@r = expand($config, "ign5");
is_deeply(\@r, [1, 'ign5'], 'install ign5');

@r = expand($config, "ign4");
is_deeply(\@r, [1, 'ign5'], 'install ign4');

@r = expand($config, "h");
is_deeply(\@r, [1, 'h'], 'install h');

@r = expand($config, "--directdepsend--", "h");
is_deeply(\@r, [undef, 'have choice for h: g h'], 'install --directdepsend-- h');

07070100000017000081a400000000000000000000000163e504ba0000177c000000000000000000000000000000000000000d00000000t/richdeps.t#!/usr/bin/perl -w

use strict;
use Test::More tests => 46;

require 't/testlib.pm';

my $repo = <<'EOR';
P: a = 1-1
R: (b if c) d
P: b = 1-1
P: c = 1-1
P: d = 1-1
R: c
P: n1 = 1-1
R: n
P: n2 = 1-1
C: d
P: i = 1-1
P: j = 1-1
R: k
P: k = 1-1
C: (i and j)
P: lr = 1-1
R: (b if b)
P: lc1 = 1-1
C: (b if b)
P: lc2 = 1-1
C: (n if n)
P: m = 1-1
C: (b and (n if b))
P: cx = 1-1
C: (b and cx and d)
P: ign1 = 1-1
R: (ign and b)
P: ign2 = 1-1
R: (ign or b)
P: ign3 = 1-1
R: (b if ign)
P: ign4 = 1-1
R: (ign if b)
P: bad1 = 1-1
R: (n foo m)
P: bad2 = 1-1
C: (n foo m)
P: sc = 1-1
C: (a or sc) (n or sc)
P: ifelse = 1-1
R: (b if i else c)
P: unless = 1-1
C: (b unless i)
P: unlesselse = 1-1
C: (b unless i else c)
P: wa = 1-1 wx
P: wb = 1-1 wx wy
P: wc = 1-1 wy
P: foo = 1-1
P: bar = 1-1
R: (baz if foo)
EOR

my $config = setuptest($repo, 'Ignore: ign');
my @r;

@r = expand($config, "()");
is_deeply(\@r, [undef, 'cannot parse dependency ()'], 'install ()');

@r = expand($config, "(n and )");
is_deeply(\@r, [undef, 'cannot parse dependency (n and )'], 'install (n and )');

@r = expand($config, "(n foo m)");
is_deeply(\@r, [undef, 'cannot parse dependency (n foo m)'], 'install (n foo m)');

@r = expand($config, "n");
is_deeply(\@r, [undef, 'nothing provides n'], 'install n');

@r = expand($config, "(n or o)");
is_deeply(\@r, [undef, 'nothing provides (n or o)'], 'install (n or o)');

@r = expand($config, "(n and o)");
is_deeply(\@r, [undef, 'nothing provides (n and o)'], 'install (n and o)');

@r = expand($config, "n1");
is_deeply(\@r, [undef, "nothing provides n needed by n1"], "install n1");

@r = expand($config, "(n2 and d)");
is_deeply(\@r, [undef, 'n2 conflicts with d'], "install (n2 and d)");

@r = expand($config, "(n2 or d)");
is_deeply(\@r, [undef, "have choice for (n2 or d): d n2"], "install (n2 or d)");

@r = expand($config, "a");
is_deeply(\@r, [1, qw{a b c d}], "install a");

@r = expand($config, 'i', 'j');
is_deeply(\@r, [undef, '(provider k conflicts with i)', '(provider k conflicts with j)', "conflict for providers of k needed by j"], "install i j");

# test corner cases
@r = expand($config, "(b if b)");
is_deeply(\@r, [1], 'install (b if b)');

@r = expand($config, "(n if n)");
is_deeply(\@r, [1], 'install (n if n)');

@r = expand($config, "lr");
is_deeply(\@r, [1, 'lr'], 'install lr');

@r = expand($config, "lc1");
is_deeply(\@r, [undef, '(provider b is in conflict with lc1)', 'conflict for providers of (b if b) needed by lc1'], 'install lc1');

@r = expand($config, "lc2");
is_deeply(\@r, [undef, 'lc2 conflicts with always true (n if n)'], 'install lc2');

@r = expand($config, "m");
is_deeply(\@r, [1, 'm'], 'install m');

# complex config from the job
@r = expand($config, 'b', 'c', 'd', '!(b and c and d)');
is_deeply(\@r, [undef, 'conflicts with b', 'conflicts with c', 'conflicts with d'], 'install b c d !(b and c and d)');

@r = expand($config, '!(n if n)');
is_deeply(\@r, [undef, 'conflict with always true (n if n)'], 'install !(n if n)');

@r = expand($config, 'b', 'cx', 'd');
is_deeply(\@r, [undef, 'cx conflicts with b', 'cx conflicts with d'], 'install b cx d');

@r = expand($config, 'ign');
is_deeply(\@r, [undef, 'nothing provides ign'], 'install ign');

@r = expand($config, 'ign1');
is_deeply(\@r, [1, 'b', 'ign1'], 'install ign1');

@r = expand($config, 'ign2');
is_deeply(\@r, [1, 'ign2'], 'install ign2');

@r = expand($config, 'ign3');
is_deeply(\@r, [1, 'ign3'], 'install ign3');

@r = expand($config, 'b', 'ign4');
is_deeply(\@r, [1, 'b', 'ign4'], 'install b ign4');

@r = expand($config, '(ign and b)');
is_deeply(\@r, [undef, 'nothing provides (ign and b)'], 'install b');

@r = expand($config, 'bad1');
is_deeply(\@r, [undef, 'cannot parse dependency (n foo m) from bad1'], 'install bad1');

@r = expand($config, 'bad2');
is_deeply(\@r, [undef, 'cannot parse dependency (n foo m) from bad2'], 'install bad2');

@r = expand($config, 'sc', 'b');
is_deeply(\@r, [1, 'b', 'sc'], 'install sc b');

@r = expand($config, 'ifelse');
is_deeply(\@r, [undef, 'have choice for (b if i else c) needed by ifelse: c i'], 'install ifelse');

@r = expand($config, 'ifelse', 'i');
is_deeply(\@r, [1, 'b', 'i', 'ifelse'], 'install ifelse i');

@r = expand($config, 'ifelse', 'c');
is_deeply(\@r, [1, 'c', 'ifelse'], 'install ifelse c');

@r = expand($config, 'unless', 'b');
is_deeply(\@r, [1, 'b', 'i', 'unless'], 'install unless b');

@r = expand($config, 'unless', 'b', '!i');
is_deeply(\@r, [undef, '(provider i is in conflict)', 'conflict for providers of (b unless i) needed by unless'], 'install unless b !i');

@r = expand($config, 'unlesselse', 'b', 'c');
is_deeply(\@r, [undef, '(provider i is in conflict with unlesselse)', 'conflict for providers of (b unless i else c) needed by unlesselse'], 'install unlesselse b c');

@r = expand($config, 'unlesselse', 'b');
is_deeply(\@r, [1, 'b', 'i', 'unlesselse'], 'install unlesselse b');

@r = expand($config, 'unlesselse', 'c');
is_deeply(\@r, [1, 'c', 'unlesselse'], 'install unlesselse c');

@r = expand($config, '(wx and wy)');
is_deeply(\@r, [undef, 'have choice for (wx and wy): wa wb', 'have choice for (wx and wy): wb wc'], 'install (wx and wy)');

@r = expand($config, '(wx with wy)');
is_deeply(\@r, [1, 'wb'], 'install (wx with wy)');

@r = expand($config, '(wx without wy)');
is_deeply(\@r, [1, 'wa'], 'install (wx without wy)');

@r = expand($config, '(wy without wx)');
is_deeply(\@r, [1, 'wc'], 'install (wy without wx)');

@r = expand($config, '(wa with wa)');
is_deeply(\@r, [1, 'wa'], 'install (wa with wa)');

@r = expand($config, '(wa with nnn)');
is_deeply(\@r, [undef, 'nothing provides (wa with nnn)'], 'install (wa with nnn)');

@r = expand($config, '(wa without wa)');
is_deeply(\@r, [undef, 'nothing provides (wa without wa)'], 'install (wa without wa)');

@r = expand($config, '(wa without nnn)');
is_deeply(\@r, [1, 'wa'], 'install (wa without nnn)');

@r = expand($config, 'foo', 'bar');
is_deeply(\@r, [undef, 'nothing provides (baz if foo) needed by bar'], 'install foo bar');
07070100000018000081a400000000000000000000000163e504ba00007800000000000000000000000000000000000000001500000000t/standard.livebuild./PaxHeaders.10269/auto0000644000000000000000000000013212222266372013110 xustar000000000000000030 mtime=1380543738.699537615
30 atime=1404999252.606063979
30 ctime=1404999250.918084803
auto/0000755000175000001440000000000012222266372012701 5ustar00jblunckusers00000000000000auto/PaxHeaders.10269/clean0000644000000000000000000000013212222266372014035 xustar000000000000000030 mtime=1380543738.699537615
30 atime=1404999250.918084803
30 ctime=1404999250.918084803
auto/clean0000755000175000001440000000024012222266372013705 0ustar00jblunckusers00000000000000#!/bin/sh

set -e

lb clean noauto "${@}"

rm -f config/binary config/bootstrap config/chroot config/common config/source
rm -f config/control

rm -f build.log
auto/PaxHeaders.10269/config0000644000000000000000000000013212222266372014220 xustar000000000000000030 mtime=1380543738.699537615
30 atime=1404999250.918084803
30 ctime=1404999250.918084803
auto/config0000755000175000001440000000062612222266372014100 0ustar00jblunckusers00000000000000#!/bin/sh

set -e

case "$(dpkg --print-architecture)" in
	amd64)
		_LINUX_FLAVOURS="amd64"
		_SOURCE="false"
		;;

	i386)
		_LINUX_FLAVOURS="486 686-pae"
		_SOURCE="true"
		;;
esac

lb config noauto \
	--clean \
	--ignore-system-defaults \
	--mode debian \
	--debian-installer live \
	--linux-flavours "${_LINUX_FLAVOURS}" \
	--linux-packages "linux-image linux-headers" \
	--source "${_SOURCE}" \
"${@}"
auto/PaxHeaders.10269/build0000644000000000000000000000013212222266372014052 xustar000000000000000030 mtime=1380543738.699537615
30 atime=1404999250.918084803
30 ctime=1404999250.918084803
auto/build0000755000175000001440000000011212222266372013720 0ustar00jblunckusers00000000000000#!/bin/sh

set -e

lb build noauto "${@}" && echo $? 2>&1 | tee build.log
./PaxHeaders.10269/config0000644000000000000000000000013212222300375013375 xustar000000000000000030 mtime=1380548861.684530853
30 atime=1404999252.606063979
30 ctime=1404999250.918084803
config/0000755000175000001440000000000012222300375013166 5ustar00jblunckusers00000000000000config/PaxHeaders.10269/bootloaders0000644000000000000000000000013212222304630015553 xustar000000000000000030 mtime=1380551064.696527946
30 atime=1404999252.606063979
30 ctime=1404999250.918084803
config/bootloaders/0000755000175000001440000000000012222304630015501 5ustar00jblunckusers00000000000000config/PaxHeaders.10269/package-lists0000644000000000000000000000013212357312571016001 xustar000000000000000030 mtime=1404933497.776159592
30 atime=1404999252.606063979
30 ctime=1404999250.918084803
config/package-lists/0000755000175000001440000000000012357312571015727 5ustar00jblunckusers00000000000000config/package-lists/PaxHeaders.10269/installer.list.chroot0000644000000000000000000000013212222266372022243 xustar000000000000000030 mtime=1380543738.739537615
30 atime=1404999250.918084803
30 ctime=1404999250.918084803
config/package-lists/installer.list.chroot0000644000175000001440000000003712222266372022114 0ustar00jblunckusers00000000000000debian-installer-launcher
sudo
config/package-lists/PaxHeaders.10269/live.list.chroot0000644000000000000000000000013212222266372021205 xustar000000000000000030 mtime=1380543738.739537615
30 atime=1404999250.918084803
30 ctime=1404999250.918084803
config/package-lists/live.list.chroot0000644000175000001440000000002712222266372021055 0ustar00jblunckusers00000000000000live-manual
live-tools
config/package-lists/PaxHeaders.10269/localization.list.chroot0000644000000000000000000000013212222266372022736 xustar000000000000000030 mtime=1380543738.739537615
30 atime=1404999250.918084803
30 ctime=1404999250.918084803
config/package-lists/localization.list.chroot0000644000175000001440000000003412222266372022604 0ustar00jblunckusers00000000000000task-english

console-tools
config/package-lists/PaxHeaders.10269/standard.list.chroot0000644000000000000000000000013212222266372022046 xustar000000000000000030 mtime=1380543738.739537615
30 atime=1404999250.918084803
30 ctime=1404999250.918084803
config/package-lists/standard.list.chroot0000644000175000001440000000007212222266372021716 0ustar00jblunckusers00000000000000! Packages Priority standard

task-laptop
task-ssh-server
config/package-lists/PaxHeaders.10269/memtest0000644000000000000000000000013212222266372017455 xustar000000000000000030 mtime=1380543738.739537615
30 atime=1404999250.918084803
30 ctime=1404999250.918084803
config/package-lists/memtest0000644000175000001440000000001312222266372017320 0ustar00jblunckusers00000000000000memtest86+
config/PaxHeaders.10269/archives0000644000000000000000000000013212357513140015051 xustar000000000000000030 mtime=1404999264.309919538
30 atime=1404999252.606063979
30 ctime=1404999264.309919538
config/archives/0000755000175000001440000000000012357513140014777 5ustar00jblunckusers00000000000000config/archives/PaxHeaders.10269/debian.key.chroot0000644000000000000000000000013212222300432020344 xustar000000000000000030 mtime=1380548890.449530815
30 atime=1404999250.918084803
30 ctime=1404999250.918084803
config/archives/debian.key.chroot0000644000175000001440000000004512222300432020214 0ustar00jblunckusers00000000000000a73043cf-7b16-42dc-b0d9-3031ed4370be
./PaxHeaders.10269/README0000644000000000000000000000013212222266372013075 xustar000000000000000030 mtime=1380543738.739537615
30 atime=1404999250.918084803
30 ctime=1404999250.918084803
README0000644000175000001440000000077112222266372012616 0ustar00jblunckusers00000000000000This is the configuration tree for:

  Debian Standard

A software called live-build can be used to automatically build images from
this configuration tree.

live-build can be obtained from <http://live-systems.org/devel/live-build/>.
On Debian based systems, live-build can be installed with:

  # apt-get install live-build

More information about live-build and the Live Systems project can be found on
its homepage at <http://live-systems.org/> and in the manual at
<http://live-systems.org/manual/>.
07070100000019000081a400000000000000000000000163e504ba000001c6000000000000000000000000000000000000000d00000000t/testlib.pm
use Build;

sub expand {
  my ($c, @r) = Build::expand(@_);
  return ($c, sort(@r));
}

sub setuptest {
  my ($repo, $conf) = @_;
  my $l = '';
  my $id = '';
  for (split("\n", $repo)) {
    $id = "$1.noarch-0/0/0:" if /^P: (\S+)/;
    s/:/:$id/;
    $l .= "$_\n";
  }
  local *F;
  open(F, '<', \$l);
  my $config = Build::read_config('noarch', [ split("\n", $conf || '') ]);
  Build::readdeps($config, undef, \*F);
  close F;
  return $config;
}

1;
0707010000001a000041ed00000000000000000000000163e504ba00000000000000000000000000000000000000000000000200000000t07070100000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000b00000000TRAILER!!!