Compare commits

..

11 commits

Author SHA1 Message Date
Nils Philippsen
6db6dde190 update references 2017-08-01 13:52:06 +02:00
Nils Philippsen
25014c1ca2 Merge remote-tracking branch 'github/master' into f26 2017-08-01 13:45:48 +02:00
Petr Písař
ffc2614fb4 Dummy commit for MBS 2017-08-01 11:48:11 +02:00
Petr Písař
b198b660e1 Fix profile's RPM list definitions
Each profile is a list of packages.
2017-07-27 11:59:28 +02:00
Petr Písař
0cb226486d Define profiles
perl-core package pulls in all required packages transitively.
2017-06-06 14:11:04 +02:00
Radoslav Pitonak
f79af84dac general tests update 2017-05-29 12:09:43 +02:00
Petr Písař
634417c4c8 Rebuild after koji failure 2017-05-15 09:20:53 +02:00
Petr Písař
b190a68f12 Rebuild after koji failure 2017-05-12 13:00:04 +02:00
Petr Písař
1d0b43ec6b Rebuild after koji failure 2017-05-12 09:53:29 +02:00
Petr Písař
212ef4225d Rebuild after koji failure 2017-05-11 08:18:40 +02:00
Petr Písař
0f4c407d1a Port to f26 streams 2017-05-10 13:08:17 +02:00
16 changed files with 676 additions and 1 deletions

4
.gitignore vendored Normal file
View file

@ -0,0 +1,4 @@
.idea
tests/*.pyc
.idea
tests/localrepo*

14
Dockerfile Normal file
View file

@ -0,0 +1,14 @@
FROM baseruntime/baseruntime:latest
COPY repos/* /etc/yum.repos.d/
COPY tests/scripts/* /tmp/
RUN sed -i 's|/jkaluza/|/ralph/|g' /etc/yum.repos.d/build.repo && \
rpm -e --justdb --nodeps systemd-libs && \
microdnf --nodocs --enablerepo perl install perl perl-devel && \
microdnf clean all
EXPOSE 8080
CMD /bin/bash

14
Makefile Normal file
View file

@ -0,0 +1,14 @@
IMAGE_NAME = perl
MODULEMDURL=file://perl.yaml
default: run
build:
docker build --tag=$(IMAGE_NAME) .
run: build
docker run -d $(IMAGE_NAME)
test: build
cd tests; MODULE=docker MODULEMD=$(MODULEMDURL) URL="docker=$(IMAGE_NAME)" make all

19
README.md Normal file
View file

@ -0,0 +1,19 @@
# perl module
[**Package DB** (owner)](https://admin.fedoraproject.org/pkgdb/package/modules/perl/) |
[**F26 modulemd** (source)](http://pkgs.fedoraproject.org/cgit/modules/perl.git/tree/perl.yaml?h=f26) |
[**PDC** (result)](https://pdc.fedoraproject.org/rest_api/v1/unreleasedvariants/?active=True&variant_name=perl)
Module containing important perl packages.
## Current state
| State | Description |
|-------|-------------|
| ✓ YES | **Build passes** in the infra (all build deps are ok) |
| ✓ YES | **Installs** on the Base Runtime (all runtime deps are ok) |
| ✓ YES | **No bootstrap** - uses only proper modules |
| ✓ YES | General **tests are in dist-git** |
| ✓ YES | General **tests pass** |
| ✗ NO | Meets the **Fedora Module Packaging Guidelines** |

View file

@ -1 +0,0 @@
Unsupported

376
perl.yaml Normal file
View file

@ -0,0 +1,376 @@
document: modulemd
version: 1
data:
summary: Practical Extraction and Report Language
description: >
Perl is a high-level programming language with roots in C, sed, awk
and shell scripting. Perl is good at handling processes and files, and
is especially good at handling text. Perl's hallmarks are practicality
and efficiency. While it is used to do a lot of different things,
Perl's most common applications are system administration utilities
and web programming.
This module has disabled SysteTap and groff support.
license:
module: [ MIT ]
dependencies:
buildrequires:
base-runtime: f26
perl-bootstrap: f26
requires:
base-runtime: f26
references:
community: https://docs.pagure.org/modularity/
documentation: https://github.com/modularity-modules/perl
tracker: https://github.com/modularity-modules/perl/issues
profiles:
# Interpreter and all Perl modules bundled within upstream Perl
default:
rpms:
- perl-core
# Only the interpreter as standalone executable
minimal:
rpms:
- perl
filter:
rpms:
# This is provided by MBR, we do not need any different content
# there, not providing it will preserve MBR's NEVRA and that's
# good for dependend modules.
- perl-srpm-macros
components:
rpms:
# We need to build all (as in perl-bootstrap) RPM packages again
# because only those built from this module definition will get
# into the module compose.
# This perl-srpm-macros build must have higher NEVRA than a build
# from perl-bootstrap and must be built first.
perl-srpm-macros:
rationale: Control generating source packages.
ref: 2d2cd8711bd8ec5059308d85ca2fcc1fbbcf0aa2
buildorder: -1
# Then we can rebuild in a random order because we have all binary
# packages available from perl-bootstrap.
perl:
rationale: The Perl interpreter.
ref: f26
perl-Algorithm-Diff:
rationale: A run-time dependency.
ref: f26
perl-Archive-Tar:
rationale: Core Perl API.
ref: f26
perl-Archive-Zip:
rationale: A run-time dependency.
ref: f26
perl-autodie:
rationale: Core Perl API.
ref: f26
perl-B-Debug:
rationale: Core Perl API.
ref: f26
perl-bignum:
rationale: Core Perl API.
ref: f26
perl-Carp:
rationale: Core Perl API.
ref: f26
perl-Compress-Bzip2:
rationale: A run-time dependency.
ref: f26
perl-Compress-Raw-Bzip2:
rationale: Core Perl API.
ref: f26
perl-Compress-Raw-Zlib:
rationale: Core Perl API.
ref: f26
perl-Config-Perl-V:
rationale: Core Perl API.
ref: f26
perl-constant:
rationale: Core Perl API.
ref: f26
perl-CPAN:
rationale: Core Perl API.
ref: f26
perl-CPAN-Meta:
rationale: Core Perl API.
ref: f26
perl-CPAN-Meta-Requirements:
rationale: Core Perl API.
ref: f26
perl-CPAN-Meta-YAML:
rationale: Core Perl API.
ref: f26
perl-Data-Dumper:
rationale: Core Perl API.
ref: f26
perl-Data-OptList:
rationale: A run-time dependency.
ref: f26
perl-Data-Section:
rationale: A run-time dependency.
ref: f26
perl-DB_File:
rationale: Core Perl API.
ref: f26
perl-Devel-PPPort:
rationale: Core Perl API.
ref: f26
perl-Devel-Size:
rationale: A run-time dependency.
ref: f26
perl-Digest:
rationale: Core Perl API.
ref: f26
perl-Digest-MD5:
rationale: Core Perl API.
ref: f26
perl-Digest-SHA:
rationale: Core Perl API.
ref: f26
perl-Encode:
rationale: Core Perl API.
ref: f26
perl-Env:
rationale: Core Perl API.
ref: f26
perl-experimental:
rationale: Core Perl API.
ref: f26
perl-Exporter:
rationale: Core Perl API.
ref: f26
perl-ExtUtils-CBuilder:
rationale: Core Perl API.
ref: f26
perl-ExtUtils-Install:
rationale: Core Perl API.
ref: f26
perl-ExtUtils-MakeMaker:
rationale: Core Perl API.
ref: f26
perl-ExtUtils-Manifest:
rationale: Core Perl API.
ref: f26
perl-ExtUtils-ParseXS:
rationale: Core Perl API.
ref: f26
perl-Fedora-VSP:
rationale: RPM dependency generator.
ref: f26
perl-File-Fetch:
rationale: Core Perl API.
ref: f26
perl-File-HomeDir:
rationale: A run-time dependency.
ref: f26
perl-File-Path:
rationale: Core Perl API.
ref: f26
perl-File-Temp:
rationale: Core Perl API.
ref: f26
perl-File-Which:
rationale: A run-time dependency.
ref: f26
perl-Filter:
rationale: Core Perl API.
ref: f26
perl-Filter-Simple:
rationale: Core Perl API.
ref: f26
perl-generators:
rationale: RPM dependency generator.
ref: f26
perl-Getopt-Long:
rationale: Core Perl API.
ref: f26
perl-HTTP-Tiny:
rationale: Core Perl API.
ref: f26
perl-inc-latest:
rationale: A run-time dependency.
ref: f26
perl-IO-Compress:
rationale: Core Perl API.
ref: f26
perl-IO-Socket-IP:
rationale: Core Perl API.
ref: f26
perl-IPC-Cmd:
rationale: Core Perl API.
ref: f26
perl-IPC-System-Simple:
rationale: A run-time dependency.
ref: f26
perl-IPC-SysV:
rationale: Core Perl API.
ref: f26
perl-JSON-PP:
rationale: Core Perl API.
ref: f26
perl-libnet:
rationale: Core Perl API.
ref: f26
perl-local-lib:
rationale: A run-time dependency.
ref: f26
perl-Locale-Codes:
rationale: Core Perl API.
ref: f26
perl-Locale-Maketext:
rationale: Core Perl API.
ref: f26
perl-Math-BigInt:
rationale: Core Perl API.
ref: f26
perl-Math-BigInt-FastCalc:
rationale: Core Perl API.
ref: f26
perl-Math-BigRat:
rationale: Core Perl API.
ref: f26
perl-MIME-Base64:
rationale: Core Perl API.
ref: f26
perl-Module-Build:
rationale: A run-time dependency.
ref: f26
perl-Module-CoreList:
rationale: Core Perl API.
ref: f26
perl-Module-Load:
rationale: Core Perl API.
ref: f26
perl-Module-Load-Conditional:
rationale: Core Perl API.
ref: f26
perl-Module-Metadata:
rationale: Core Perl API.
ref: f26
perl-MRO-Compat:
rationale: A run-time dependency.
ref: f26
perl-Package-Generator:
rationale: A run-time dependency.
ref: f26
perl-Params-Check:
rationale: Core Perl API.
ref: f26
perl-Params-Util:
rationale: A run-time dependency.
ref: f26
perl-parent:
rationale: Core Perl API.
ref: f26
perl-PathTools:
rationale: Core Perl API.
ref: f26
perl-Perl-OSType:
rationale: Core Perl API.
ref: f26
perl-perlfaq:
rationale: Core Perl API.
ref: f26
perl-PerlIO-via-QuotedPrint:
rationale: Core Perl API.
ref: f26
perl-Pod-Checker:
rationale: Core Perl API.
ref: f26
perl-Pod-Escapes:
rationale: Core Perl API.
ref: f26
perl-Pod-Parser:
rationale: Core Perl API.
ref: f26
perl-Pod-Perldoc:
rationale: Core Perl API.
ref: f26
perl-Pod-Simple:
rationale: Core Perl API.
ref: f26
perl-Pod-Usage:
rationale: Core Perl API.
ref: f26
perl-podlators:
rationale: Core Perl API.
ref: f26
perl-Scalar-List-Utils:
rationale: Core Perl API.
ref: f26
perl-Socket:
rationale: Core Perl API.
ref: f26
perl-Software-License:
rationale: A run-time dependency.
ref: f26
perl-Storable:
rationale: Core Perl API.
ref: f26
perl-Sub-Exporter:
rationale: A run-time dependency.
ref: f26
perl-Sub-Install:
rationale: A run-time dependency.
ref: f26
perl-Sys-Syslog:
rationale: Core Perl API.
ref: f26
perl-Term-ANSIColor:
rationale: Core Perl API.
ref: f26
perl-Term-Cap:
rationale: Core Perl API.
ref: f26
perl-Test-Harness:
rationale: Core Perl API.
ref: f26
perl-Test-Simple:
rationale: Core Perl API.
ref: f26
perl-Text-Balanced:
rationale: Core Perl API.
ref: f26
perl-Text-Diff:
rationale: A run-time dependency.
ref: f26
perl-Text-Glob:
rationale: A run-time dependency.
ref: f26
perl-Text-ParseWords:
rationale: Core Perl API.
ref: f26
perl-Text-Tabs+Wrap:
rationale: Core Perl API.
ref: f26
perl-Text-Template:
rationale: A run-time dependency.
ref: f26
perl-Thread-Queue:
rationale: Core Perl API.
ref: f26
perl-threads:
rationale: Core Perl API.
ref: f26
perl-threads-shared:
rationale: Core Perl API.
ref: f26
perl-Time-HiRes:
rationale: Core Perl API.
ref: f26
perl-Time-Local:
rationale: Core Perl API.
ref: f26
perl-Unicode-Collate:
rationale: Core Perl API.
ref: f26
perl-Unicode-Normalize:
rationale: Core Perl API.
ref: f26
perl-URI:
rationale: A run-time dependency.
ref: f26
perl-version:
rationale: Core Perl API.
ref: f26

4
repos/fedora.repo Normal file
View file

@ -0,0 +1,4 @@
[fedora]
name=fedora
baseurl=https://mirrors.nic.cz/fedora/linux/development/26/Everything/x86_64/os/
enabled=0

4
repos/perl.repo Normal file
View file

@ -0,0 +1,4 @@
[perl]
name=perl
baseurl=https://kojipkgs.fedoraproject.org/repos/module-9ac9f492d4852dfd-build/latest/x86_64/
enabled=0

0
sources Normal file
View file

6
tests/Makefile Normal file
View file

@ -0,0 +1,6 @@
MODULE_LINT=/usr/share/moduleframework/tools/modulelint.py
CMD=python -m avocado run --filter-by-tags=-WIP $(MODULE_LINT) *.py
#
all:
$(CMD)

13
tests/config.yaml Normal file
View file

@ -0,0 +1,13 @@
document: modularity-testing
version: 1
name: perl
modulemd-url: https://src.fedoraproject.org/cgit/modules/perl.git/plain/perl.yaml
service:
port: 8080
module:
docker:
start: "docker run -it"
container: perl
rpm:
repos:
- http://mirror.vutbr.cz/fedora/releases/26/Everything/x86_64/os/

57
tests/cpan.py Normal file
View file

@ -0,0 +1,57 @@
#
# This Modularity Testing Framework helps you to write tests for modules
# Copyright (C) 2017 Red Hat, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# he Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# 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; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Authors: Rado Pitonak <rpitonak@redhat.com>
#
from avocado import main
from avocado.core import exceptions
from moduleframework import module_framework
class CpanCheck(module_framework.AvocadoTest):
"""
:avocado: enable
"""
def testInstallPerlModule(self):
"""
Installing Perl module using cpan [http://www.cpan.org/]
"""
self.start()
self.run("microdnf --nodocs --enablerepo fedora install -y cpan cpanminus")
self.run("cpanm install --force Error")
self.run("perl -e \"use Error\"")
def testInstallCModule(self):
"""
Installing Perl module written in C language, using cpan [http://www.cpan.org/]
Another packages need to be install here - gcc, rpm-devel to build module.
"""
self.start()
self.run("microdnf --nodocs --enablerepo fedora install -y cpan cpanminus")
self.run("microdnf --nodocs --enablerepo fedora install -y gcc rpm-devel")
self.run("cpanm install --force RPM2")
self.run("perl -e \"use RPM2\"")
if __name__ == '__main__':
main()

44
tests/networking.py Normal file
View file

@ -0,0 +1,44 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# This Modularity Testing Framework helps you to write tests for modules
# Copyright (C) 2017 Red Hat, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# he Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# 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; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Authors: Rado Pitonak <rpitonak@redhat.com>
#
from avocado import main
from avocado.core import exceptions
from moduleframework import module_framework
class NetworkingCheck(module_framework.AvocadoTest):
"""
:avocado: enable
"""
def testHTTPRequest(self):
"""
Test networking with `HTTP::Tiny` perl module
Testing script is included in `scripts` folder
"""
self.start()
self.run("perl /tmp/http.pl")
if __name__ == '__main__':
main()

56
tests/rpmvalidator.py Normal file
View file

@ -0,0 +1,56 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# This Modularity Testing Framework helps you to write tests for modules
# Copyright (C) 2017 Red Hat, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# he Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# 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; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Authors: Jan Scotka <jscotka@redhat.com>
#
from avocado import main
from moduleframework import module_framework
class ExampleRpmValidation(module_framework.AvocadoTest):
"""
:avocado: enable
"""
fhs_base_paths = [
'/bin',
'/boot',
'/dev',
'/etc',
'/home',
'/lib',
'/lib64',
'/media',
'/mnt',
'/opt',
'/proc',
'/root',
'/run',
'/sbin',
'/sys',
'/srv',
'/tmp',
'/usr/bin'
]
def testPaths(self):
self.start()
for directory in self.fhs_base_paths:
self.run("test -d %s" % directory)

60
tests/sanity.py Normal file
View file

@ -0,0 +1,60 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# This Modularity Testing Framework helps you to write tests for modules
# Copyright (C) 2017 Red Hat, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# he Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# 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; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Authors: Rado Pitonak <rpitonak@redhat.com>
#
from avocado import main
from avocado.core import exceptions
from moduleframework import module_framework
class SanityCheck(module_framework.AvocadoTest):
"""
:avocado: enable
"""
def test1(self):
"""
Simple sanity test
"""
self.start()
self.run("ls / | grep bin")
def test2PerlVersion(self):
"""
Check if perl is installed in correct version
"""
perl_version = "5.24"
self.start()
self.run("perl -v | grep " + perl_version)
def testPerlScript(self):
"""
Executing simple perl script
"""
test_string = "Running test script\n"
self.start()
self.assertIn("{}".format(test_string), self.run('perl -e " print \'{}\'"'.format(test_string)).stdout)
if __name__ == '__main__':
main()

5
tests/scripts/http.pl Normal file
View file

@ -0,0 +1,5 @@
use HTTP::Tiny;
my $response = HTTP::Tiny->new->get('http://example.com/');
die "Failed!\n" unless $response->{success};