mirror of
https://github.com/clearlinux/autospec.git
synced 2026-06-16 02:45:56 +00:00
Remove ruby, golang and cargo build patterns
These patterns are being removed as they are not used or are going to be reworked. This change also removes support for multi-versioned packages which were considered for go and cargo purposes. Signed-off-by: William Douglas <william.douglas@intel.com>
This commit is contained in:
committed by
William Douglas
parent
7168764db4
commit
74c0833cf4
+2
-14
@@ -325,7 +325,6 @@ build_pattern
|
||||
|
||||
* R: R language package
|
||||
* cpan: perl language package
|
||||
* ruby: ruby language package
|
||||
* configure: Traditional ``%configure`` autotools route
|
||||
* configure_ac: Like ``configure``, but performs ``%reconfigure`` to
|
||||
regenerate ``./configure``
|
||||
@@ -339,9 +338,6 @@ build_pattern
|
||||
* distutils3: Only build the Pythonic package with Python 3
|
||||
* pyproject: Build the Pythonic package using the PEP 516 method
|
||||
* meson: Build package with Meson/Ninja
|
||||
* golang: Build Go package
|
||||
* godep: A go dependency-only package
|
||||
* \[WIP\] cargo: Build Rust package with Cargo
|
||||
* \[WIP\] scons: Build package with Scons
|
||||
|
||||
series
|
||||
@@ -367,14 +363,6 @@ pypi_overrides
|
||||
+ 'colorama',
|
||||
```
|
||||
|
||||
golang_libpath
|
||||
When building go packages, the go import path will be guessed automatically
|
||||
(e.g. building ``https://github.com/go-yaml/yaml/`` would get
|
||||
``github.com/go-yaml/yaml``). While this is handy, it's not always correct (in
|
||||
the previous example, the correct import path should be ``gopkg.in/yaml.v2``).
|
||||
This could be easily fixed by placing ``gopkg.in/yaml.v`` in this file,
|
||||
changing where the go bits will be placed.
|
||||
|
||||
service_restart
|
||||
Each line in the file specifies the full path to a systemd unit file
|
||||
installed by this package that should be restarted by clr-service-restart_.
|
||||
@@ -616,8 +604,8 @@ For websites such as ``bitbucket`` or ``GitHub``, using ``get$`` and
|
||||
``v$.tar.*`` style links, the project name itself is used from the URL and the
|
||||
version is determined by stripping down the tag.
|
||||
|
||||
CPAN Perl packages, R packages, and rubygems.org rubygems are automatically
|
||||
prefixed with their language name: ``perl-``, ``R-`` and ``rubygem-``
|
||||
CPAN Perl packages, pypi ecosystem packages and R packages are automatically
|
||||
prefixed with their respective names: ``perl-``, ``pypi-`` and ``R-``
|
||||
respectively.
|
||||
|
||||
When these automated detections are not desirable, it is possible to override
|
||||
|
||||
@@ -210,7 +210,6 @@ def package(args, url, name, archives, workingdir):
|
||||
filemanager = files.FileManager(conf, package)
|
||||
content = tarball.Content(url, name, args.version, archives, conf, workingdir)
|
||||
content.process(filemanager)
|
||||
conf.create_versions(content.multi_version)
|
||||
conf.content = content # hack to avoid recursive dependency on init
|
||||
# Search up one level from here to capture multiple versions
|
||||
_dir = content.path
|
||||
|
||||
@@ -139,16 +139,6 @@ class Build(object):
|
||||
if not s:
|
||||
return
|
||||
self.must_restart += requirements.add_buildreq(f"pypi({s.lower().replace('-', '_')})", cache=True)
|
||||
elif buildtool == 'ruby':
|
||||
if s in config.gems:
|
||||
self.must_restart += requirements.add_buildreq(config.gems[s], cache=True)
|
||||
else:
|
||||
self.must_restart += requirements.add_buildreq('rubygem-%s' % s, cache=True)
|
||||
elif buildtool == 'ruby table':
|
||||
if s in config.gems:
|
||||
self.must_restart += requirements.add_buildreq(config.gems[s], cache=True)
|
||||
else:
|
||||
print("Unknown ruby gem match", s)
|
||||
elif buildtool == 'catkin':
|
||||
self.must_restart += requirements.add_pkgconfig_buildreq(s, config.config_opts.get('32bit'), cache=True)
|
||||
self.must_restart += requirements.add_buildreq(s, cache=True)
|
||||
|
||||
@@ -174,50 +174,6 @@ def parse_modules_list(modules_string, is_cmake=False):
|
||||
return res
|
||||
|
||||
|
||||
def parse_go_mod(path):
|
||||
"""Parse go.mod file for build requirements.
|
||||
|
||||
File content looks as follows:
|
||||
|
||||
module example.com/foo/bar
|
||||
|
||||
require (
|
||||
github.com/BurntSushi/toml v0.3.1
|
||||
git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999
|
||||
github.com/inconshreveable/mousetrap v1.0.0 // indirect
|
||||
"github.com/spf13/cobra" v0.0.3
|
||||
github.com/spf13/pflag v1.0.3 // indirect
|
||||
)
|
||||
|
||||
Need to handle all require lines including //indirect.
|
||||
Skip requires that use .git for now. May need to be handled
|
||||
differently.
|
||||
"""
|
||||
reqs = []
|
||||
with open(path, "r") as gfile:
|
||||
dep_start = False
|
||||
for line in gfile.readlines():
|
||||
# Ideally the mod file is generated and the format is
|
||||
# always correct but add a few defenses just in case
|
||||
line = line.strip()
|
||||
if line.startswith("//"):
|
||||
# Skip comments
|
||||
continue
|
||||
if dep_start:
|
||||
# End of the require section
|
||||
if line.startswith(")"):
|
||||
break
|
||||
req = line.split()[:2]
|
||||
req[0] = req[0].replace('"', '')
|
||||
if req[0].endswith(".git"):
|
||||
continue
|
||||
reqs.append(req)
|
||||
continue
|
||||
if line.startswith("require ("):
|
||||
dep_start = True
|
||||
return reqs
|
||||
|
||||
|
||||
def _get_desc_field(field, desc):
|
||||
"""Get a field value from an R package DESCRIPTION file.
|
||||
|
||||
@@ -324,7 +280,6 @@ class Requirements(object):
|
||||
self.extra_cmake = set()
|
||||
self.extra_cmake_openmpi = set()
|
||||
self.verbose = False
|
||||
self.cargo_bin = False
|
||||
self.pypi_provides = None
|
||||
self.banned_buildreqs = set(["llvm-devel",
|
||||
"gcj",
|
||||
@@ -499,25 +454,6 @@ class Requirements(object):
|
||||
self.configure_ac_line(buf, config.config_opts.get('32bit'))
|
||||
f.close()
|
||||
|
||||
def parse_cargo_toml(self, filename, config):
|
||||
"""Update build requirements using Cargo.toml.
|
||||
|
||||
Set the build requirements for building rust programs using cargo.
|
||||
"""
|
||||
config.set_build_pattern("cargo", 1)
|
||||
if config.default_pattern != "cargo":
|
||||
return
|
||||
self.add_buildreq("rustc")
|
||||
with util.open_auto(filename, "r") as ctoml:
|
||||
cargo = toml.loads(ctoml.read())
|
||||
if cargo.get("bin") or os.path.exists(os.path.join(os.path.dirname(filename), "src/main.rs")):
|
||||
self.cargo_bin = True
|
||||
if not cargo.get("dependencies"):
|
||||
return
|
||||
for cdep in cargo["dependencies"]:
|
||||
if self.add_buildreq(cdep):
|
||||
self.add_requires(cdep, config.os_packages)
|
||||
|
||||
def parse_r_description(self, filename, packages):
|
||||
"""Update build/runtime requirements according to the R package description."""
|
||||
deps = []
|
||||
@@ -538,27 +474,6 @@ class Requirements(object):
|
||||
|
||||
def set_build_req(self, config):
|
||||
"""Add build requirements based on the build pattern."""
|
||||
if config.default_pattern == "ruby":
|
||||
self.add_buildreq("ruby")
|
||||
self.add_buildreq("rubygem-rdoc")
|
||||
if config.default_pattern == "cargo":
|
||||
self.add_buildreq("rustc")
|
||||
|
||||
def rakefile(self, filename, gems):
|
||||
"""Scan Rakefile for build requirements."""
|
||||
with util.open_auto(filename, "r") as f:
|
||||
lines = f.readlines()
|
||||
|
||||
pat = re.compile(r"^require '(.*)'$")
|
||||
for line in lines:
|
||||
match = pat.search(line)
|
||||
if match:
|
||||
s = match.group(1)
|
||||
if s != "rubygems" and s in gems:
|
||||
print("Rakefile-dep: " + gems[s])
|
||||
self.add_buildreq(gems[s])
|
||||
else:
|
||||
print("Rakefile-new: rubygem-" + s)
|
||||
|
||||
def parse_cmake(self, filename, cmake_modules, conf32):
|
||||
"""Scan a .cmake or CMakeLists.txt file for what's it's actually looking for."""
|
||||
@@ -794,8 +709,6 @@ class Requirements(object):
|
||||
self.add_buildreq("buildreq-distutils36")
|
||||
elif config.default_pattern == "distutils3":
|
||||
self.add_buildreq("buildreq-distutils3")
|
||||
elif config.default_pattern == "golang":
|
||||
self.add_buildreq("buildreq-golang")
|
||||
elif config.default_pattern == "cmake":
|
||||
self.add_buildreq("buildreq-cmake")
|
||||
elif config.default_pattern == "configure":
|
||||
@@ -818,27 +731,8 @@ class Requirements(object):
|
||||
for dirpath, _, files in os.walk(dirn):
|
||||
default_score = 2 if dirpath == dirn else 1
|
||||
|
||||
if any(f.endswith(".go") for f in files):
|
||||
self.add_buildreq("buildreq-golang")
|
||||
config.set_build_pattern("golang", default_score)
|
||||
|
||||
if "go.mod" in files:
|
||||
if "Makefile" not in files and "makefile" not in files:
|
||||
# Go packages usually have make build systems so far
|
||||
# so only use go directly if we can't find a Makefile
|
||||
config.set_build_pattern("golang", default_score)
|
||||
self.add_buildreq("buildreq-golang")
|
||||
if config.default_pattern == "golang-mod" or config.default_pattern == "godep":
|
||||
config.set_gopath = False
|
||||
mod_path = os.path.join(dirpath, "go.mod")
|
||||
reqs = parse_go_mod(mod_path)
|
||||
for req in reqs:
|
||||
# req[0] is a SCM url segment in the form, repo/XXX/dependency-name
|
||||
# req[1] is the version of the dependency
|
||||
pkg = "go-" + req[0].replace("/", "-")
|
||||
self.add_buildreq(pkg)
|
||||
if config.default_pattern == "godep":
|
||||
self.add_requires(pkg, config.os_packages)
|
||||
|
||||
if "CMakeLists.txt" in files and "configure.ac" not in files:
|
||||
self.add_buildreq("buildreq-cmake")
|
||||
@@ -892,12 +786,8 @@ class Requirements(object):
|
||||
config.set_build_pattern("meson", default_score)
|
||||
|
||||
for name in files:
|
||||
if name.lower() == "cargo.toml" and dirpath == dirn:
|
||||
self.parse_cargo_toml(os.path.join(dirpath, name), config)
|
||||
if name.lower().startswith("configure."):
|
||||
self.parse_configure_ac(os.path.join(dirpath, name), config)
|
||||
if name.lower().startswith("rakefile") and config.default_pattern == "ruby":
|
||||
self.rakefile(os.path.join(dirpath, name), config.gems)
|
||||
if name.endswith(".pro") and config.default_pattern == "qmake":
|
||||
self.qmake_profile(os.path.join(dirpath, name), config.qt_modules)
|
||||
if name.lower() == "makefile":
|
||||
|
||||
@@ -93,8 +93,6 @@ def scan_for_tests(src_dir, config, requirements, content):
|
||||
"perlcheck": perl_check,
|
||||
"setup.py": setup_check,
|
||||
"cmake": "cd clr-build; " + cmake_check,
|
||||
"rakefile": "pushd %{buildroot}%{gem_dir}/gems/" + content.tarball_prefix + "\nrake --trace test TESTOPTS=\"-v\"\npopd",
|
||||
"rspec": "pushd %{buildroot}%{gem_dir}/gems/" + content.tarball_prefix + "\nrspec -I.:lib spec/\npopd",
|
||||
"meson": meson_check,
|
||||
}
|
||||
if config.config_opts.get('32bit'):
|
||||
|
||||
+1
-82
@@ -105,7 +105,6 @@ class Config(object):
|
||||
self.autoreconf = False
|
||||
self.custom_desc = ""
|
||||
self.custom_summ = ""
|
||||
self.set_gopath = True
|
||||
self.license_fetch = None
|
||||
self.license_show = None
|
||||
self.git_uri = None
|
||||
@@ -131,16 +130,12 @@ class Config(object):
|
||||
self.download_path = download_path
|
||||
self.default_pattern = "make"
|
||||
self.pattern_strength = 0
|
||||
self.sources = {"unit": [], "gcov": [], "tmpfile": [], "sysuser": [], "archive": [], "destination": [], "godep": [], "version": []}
|
||||
self.sources = {"unit": [], "gcov": [], "tmpfile": [], "sysuser": [], "archive": [], "destination": []}
|
||||
self.archive_details = {}
|
||||
self.conf_args_openmpi = '--program-prefix= --exec-prefix=$MPI_ROOT \\\n' \
|
||||
'--libdir=$MPI_LIB --bindir=$MPI_BIN --sbindir=$MPI_BIN --includedir=$MPI_INCLUDE \\\n' \
|
||||
'--datarootdir=$MPI_ROOT/share --mandir=$MPI_MAN -exec-prefix=$MPI_ROOT --sysconfdir=$MPI_SYSCONFIG \\\n' \
|
||||
'--build=x86_64-generic-linux-gnu --host=x86_64-generic-linux-gnu --target=x86_64-clr-linux-gnu '
|
||||
# Keep track of the package versions
|
||||
self.versions = OrderedDict()
|
||||
# Only parse the versions file once, and save the result for later
|
||||
self.parsed_versions = OrderedDict()
|
||||
# defines which files to rename and copy to autospec directory,
|
||||
# used in commitmessage.py
|
||||
self.transforms = {
|
||||
@@ -257,8 +252,6 @@ class Config(object):
|
||||
(r".*\.go:.*cannot find package \"(.*)\" in any of:", 0, 'go'),
|
||||
(r"/usr/bin/env\: (.*)\: No such file or directory", 0, None),
|
||||
(r"/usr/bin/python.*\: No module named (.*)", 0, None),
|
||||
(r":in `require': cannot load such file -- ([a-zA-Z0-9\-\_:\/]+)", 0, 'ruby table'),
|
||||
(r":in `require': cannot load such file -- ([a-zA-Z0-9\-\_:]+) ", 0, 'ruby'),
|
||||
(r"Add the installation prefix of \"(.*)\" to CMAKE_PREFIX_PATH", 0, None),
|
||||
(r"By not providing \"([a-zA-Z0-9]+).cmake\" in CMAKE_MODULE_PATH this project", 0, None),
|
||||
(r"C library '(.*)' not found", 0, None),
|
||||
@@ -268,24 +261,18 @@ class Config(object):
|
||||
(r"Checking for (.*?)\.\.\.no", 0, None),
|
||||
(r"Checking for (.*?)\s*: not found", 0, None),
|
||||
(r"Checking for (.*?)\s>=.*\s*: not found", 0, None),
|
||||
(r"Could not find '([a-zA-Z0-9\-\_]*)' \([~<>=]+ ([0-9.]+).*\) among [0-9]+ total gem", 0, 'ruby'),
|
||||
(r"Could not find gem '([a-zA-Z0-9\-\_]+) \([~<>=0-9\.\, ]+\) ruby'", 0, 'ruby'),
|
||||
(r"Could not find suitable distribution for Requirement.parse\('([a-zA-Z\-\.]*)", 0, None),
|
||||
(r"Download error on https://pypi.python.org/simple/([a-zA-Z0-9\-\._:]+)/", 0, 'pypi'),
|
||||
(r"Downloading https?://.*\.python\.org/packages/.*/.?/([A-Za-z]*)/.*", 0, None),
|
||||
(r"ERROR: Could not find a valid gem '([a-zA-Z0-9\-\_\:]*)' \([>=]+ ([0-9.]+).*\)", 0, 'ruby'),
|
||||
(r"ERROR: dependencies ['‘]([a-zA-Z0-9\-\.]*)['’].* are not available for package ['‘].*['’]", 0, 'R'),
|
||||
(r"ERROR: dependencies ['‘].*['’], ['‘]([a-zA-Z0-9\-\.]*)['’],.* are not available for package ['‘].*['’]", 0, 'R'),
|
||||
(r"ERROR: dependencies.*['‘]([a-zA-Z0-9\-\.]*)['’] are not available for package ['‘].*['’]", 0, 'R'),
|
||||
(r"ERROR: dependency ['‘]([a-zA-Z0-9\-\.]*)['’] is not available for package ['‘].*['’]", 0, 'R'),
|
||||
(r"Error: Unable to find (.*)", 0, None),
|
||||
(r"Error: package ['‘]([a-zA-Z0-9\-\.]*)['’] required by", 0, 'R'),
|
||||
(r"Gem::LoadError: Could not find '([a-zA-Z0-9\-\_]*)'", 0, 'ruby'),
|
||||
(r"ImportError:.* No module named '?([a-zA-Z0-9\-\._]+)'?", 0, 'pypi'),
|
||||
(r"ImportError\: ([a-zA-Z]+) module missing", 0, None),
|
||||
(r"ImportError\: (?:No module|cannot import) named? (.*)", 0, None),
|
||||
(r"LoadError: cannot load such file -- ([a-zA-Z0-9\-:\/\_]+)", 0, 'ruby table'),
|
||||
(r"LoadError: cannot load such file -- ([a-zA-Z0-9\-:]+)/.*", 0, 'ruby'),
|
||||
(r"ModuleNotFoundError.*No module named (.*)", 0, None),
|
||||
(r"Native dependency '(.*)' not found", 0, "pkgconfig"),
|
||||
(r"No library found for -l([a-zA-Z\-])", 0, None),
|
||||
@@ -300,13 +287,11 @@ class Config(object):
|
||||
(r"Target '[a-zA-Z0-9\-]' can't be generated as '(.*)' could not be found", 0, None),
|
||||
(r"Unable to `import (.*)`", 0, None),
|
||||
(r"Unable to find '(.*)'", 0, None),
|
||||
(r"WARNING: [a-zA-Z\-\_]+ dependency on ([a-zA-Z0-9\-\_:]*) \([<>=~]+ ([0-9.]+).*\) .*", 0, 'ruby'),
|
||||
(r"Warning: prerequisite ([a-zA-Z:]+) [0-9\.]+ not found.", 0, 'perl'),
|
||||
(r"Warning\: no usable ([a-zA-Z0-9]+) found", 0, None),
|
||||
(r"You need ([a-zA-Z0-9\-\_]*) to build this program.", 1, None),
|
||||
(r"[Dd]ependency (.*) found: NO \(tried pkgconfig(?: and cmake)?\)", 0, 'pkgconfig'),
|
||||
(r"[Dd]ependency (.*) found: NO", 0, None),
|
||||
(r"[a-zA-Z0-9\-:]* is not installed: cannot load such file -- rdoc/([a-zA-Z0-9\-:]*)", 0, 'ruby'),
|
||||
(r"\/bin\/ld: cannot find (-l[a-zA-Z0-9\_]+)", 0, None),
|
||||
(r"^.*By not providing \"Find(.*).cmake\" in CMAKE_MODULE_PATH this.*$", 0, None),
|
||||
(r"^.*Could not find a package configuration file provided by \"(.*)\".*$", 0, None),
|
||||
@@ -354,18 +339,6 @@ class Config(object):
|
||||
if ".cpan.org/" in url or ".metacpan.org/" in url:
|
||||
self.set_build_pattern("cpan", 10)
|
||||
|
||||
# ruby
|
||||
if "rubygems.org/" in url:
|
||||
self.set_build_pattern("ruby", 10)
|
||||
|
||||
# rust crate
|
||||
if "crates.io" in url:
|
||||
self.set_build_pattern("cargo", 10)
|
||||
|
||||
# go dependency
|
||||
if "proxy.golang.org" in url:
|
||||
self.set_build_pattern("godep", 10)
|
||||
|
||||
# php modules from PECL
|
||||
if "pecl.php.net" in url:
|
||||
self.set_build_pattern("phpize", 10)
|
||||
@@ -487,16 +460,6 @@ class Config(object):
|
||||
cachefile.write("\n".join([version] + pkgs))
|
||||
self.config_files.add('buildreq_cache')
|
||||
|
||||
def create_versions(self, versions):
|
||||
"""Make versions file."""
|
||||
with open(os.path.join(self.download_path, "versions"), 'w') as vfile:
|
||||
for version in versions:
|
||||
vfile.write(version)
|
||||
if versions[version]:
|
||||
vfile.write('\t' + versions[version])
|
||||
vfile.write('\n')
|
||||
self.config_files.add("versions")
|
||||
|
||||
def read_config_opts(self):
|
||||
"""Read config options from path/options.conf."""
|
||||
opts_path = os.path.join(self.download_path, 'options.conf')
|
||||
@@ -690,40 +653,6 @@ class Config(object):
|
||||
if patch not in self.old_patches and patch.endswith(".patch") and patch.startswith("cve-"):
|
||||
self.cves.append(patch.upper().split(".PATCH")[0])
|
||||
|
||||
def parse_config_versions(self):
|
||||
"""Parse the versions configuration file."""
|
||||
# Only actually parse it the first time around
|
||||
if not self.parsed_versions:
|
||||
for line in self.read_conf_file(os.path.join(self.download_path, "versions")):
|
||||
# Simply whitespace-separated fields
|
||||
fields = line.split()
|
||||
version = fields.pop(0)
|
||||
if len(fields):
|
||||
url = fields.pop(0)
|
||||
else:
|
||||
url = ""
|
||||
# Catch and report duplicate URLs in the versions file. Don't stop,
|
||||
# but assume only the first one is valid and drop the rest.
|
||||
if version in self.parsed_versions and url != self.parsed_versions[version]:
|
||||
print_warning("Already have a URL defined for {}: {}"
|
||||
.format(version, self.parsed_versions[version]))
|
||||
print_warning("Dropping {}, but you should check my work"
|
||||
.format(url))
|
||||
else:
|
||||
self.parsed_versions[version] = url
|
||||
if len(fields):
|
||||
print_warning("Extra fields detected in `versions` file entry:\n{}"
|
||||
.format(line))
|
||||
print_warning("I'll delete them, but you should check my work")
|
||||
|
||||
# We'll combine what we just parsed from the versions file with any other
|
||||
# versions that have already been defined, most likely the version actually
|
||||
# provided in the Makefile's URL variable, so we don't drop any.
|
||||
for version in self.parsed_versions:
|
||||
self.versions[version] = self.parsed_versions[version]
|
||||
|
||||
return self.versions
|
||||
|
||||
def write_default_conf_file(self, name, wrapper, description):
|
||||
"""Write default configuration file with description to file name."""
|
||||
self.config_files.add(name)
|
||||
@@ -950,12 +879,7 @@ class Config(object):
|
||||
stderr=subprocess.DEVNULL) == 0:
|
||||
self.autoreconf = True
|
||||
|
||||
# Parse the version-specific patch lists
|
||||
update_security_sensitive = False
|
||||
for versionp in self.versions:
|
||||
self.verpatches[versionp] = self.read_conf_file(os.path.join(self.download_path, '.'.join(['series', versionp])))
|
||||
if any(p.lower().startswith('cve-') for p in self.verpatches[versionp]):
|
||||
update_security_sensitive = True
|
||||
|
||||
if any(p.lower().startswith('cve-') for p in self.patches):
|
||||
update_security_sensitive = True
|
||||
@@ -1046,11 +970,6 @@ class Config(object):
|
||||
if not license.add_license(word, self.license_translations, self.license_blacklist):
|
||||
print_warning("{}: blacklisted license {} ignored.".format(self.content.name + ".license", word))
|
||||
|
||||
content = self.read_conf_file(os.path.join(self.download_path, "golang_libpath"))
|
||||
if content and content[0]:
|
||||
self.content.golibpath = content[0]
|
||||
print("golibpath : {}".format(self.content.golibpath))
|
||||
|
||||
if self.config_opts['use_clang']:
|
||||
self.config_opts['funroll-loops'] = False
|
||||
requirements.add_buildreq("llvm")
|
||||
|
||||
@@ -844,7 +844,6 @@ gdesktop-enums.h, gsettings-desktop-schemas-dev
|
||||
gdk-pixbuf-xlib-2.0, gdk-pixbuf-dev
|
||||
gdm, gdm-dev
|
||||
gee-0.8, libgee-dev
|
||||
gem, ruby
|
||||
geoclue-2.0, geoclue-dev
|
||||
geocode-glib-1.0, geocode-glib-dev
|
||||
geos-config, geos-dev
|
||||
@@ -1252,7 +1251,6 @@ qtattributionsscanner, qttools-dev
|
||||
qtplugininfo, qttools-dev
|
||||
qtwaylandscanner, qtwayland-dev
|
||||
qvkgen, qtbase-dev
|
||||
rake, rubygem-rake
|
||||
raptor, raptor2-dev
|
||||
rasqal, rasqal-dev
|
||||
rcc, qtbase-dev
|
||||
|
||||
+1
-1
@@ -382,7 +382,7 @@ class FileManager(object):
|
||||
(r"^/usr/share/", "data"),
|
||||
(r"^/usr/lib/perl5/", "perl", "/usr/lib/perl5/*"),
|
||||
# finally move any dynamically loadable plugins (not
|
||||
# perl/python/ruby/etc.. extensions) into lib package
|
||||
# perl/python/etc.. extensions) into lib package
|
||||
(r"^/usr/lib/.*/[a-zA-Z0-9._+-]*\.so", "lib"),
|
||||
(r"^/usr/lib64/.*/[a-zA-Z0-9._+-]*\.so", "lib"),
|
||||
(r"^/usr/lib32/.*/[a-zA-Z0-9._+-]*\.so", "lib32"),
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
# This file contains failure patterns and the ruby gems they are associated with
|
||||
# in the form: <pattern>, <gem>
|
||||
# This file is sorted with LC_COLLATE=C
|
||||
# Lines beginning with '#' are ignored.
|
||||
action_view/helpers/sanitize_helper, rubygem-actionview
|
||||
appraisal/file, rubygem-appraisal
|
||||
benchmark/ips, rubygem-benchmark-ips
|
||||
builder, rubygem-builder
|
||||
bundler, rubygem-bundler
|
||||
bundler/gem_tasks, rubygem-rubygems-tasks
|
||||
bundler/setup, rubygem-bundler
|
||||
echoe, rubygem-echoe
|
||||
gem_hadar, rubygem-gem_hadar
|
||||
gherkin/rubify, rubygem-gherkin
|
||||
guard/compat/test/helper, rubygem-guard-compat
|
||||
hoe, rubygem-hoe
|
||||
html/pipeline, rubygem-html-pipeline
|
||||
minitest/autorun, rubygem-minitest
|
||||
minitest/unit, rubygem-minitest
|
||||
mocha/setup, rubygem-mocha
|
||||
nokogiri/diff, rubygem-nokogiri-diff
|
||||
pdf/reader, rubygem-pdf-reader
|
||||
pry, rubygem-pry
|
||||
rack/test, rubygem-rack-test
|
||||
rack/utils, rubygem-rack
|
||||
rake/extensiontask, rubygem-rake-compiler
|
||||
redcarpet, rubygem-redcarpet
|
||||
rspec/core, rubygem-rspec-core
|
||||
rspec/core/rake_task, rubygem-rspec-core
|
||||
rspec/its, rubygem-rspec-its
|
||||
rspec/mocks, rubygem-rspec-mocks
|
||||
sass, rubygem-sass
|
||||
test/unit, rubygem-test-unit
|
||||
@@ -39,7 +39,6 @@ pubkey --gnupghome /opt/pki/gpghome
|
||||
""".format(fn=__file__)
|
||||
|
||||
SEPT = "-------------------------------------------------------------------------------"
|
||||
RUBYORG_API = "https://rubygems.org/api/v1/versions/{}.json"
|
||||
PYPIORG_API = "https://pypi.python.org/pypi/{}/json"
|
||||
KEYID_TRY = ""
|
||||
KEYID = ""
|
||||
@@ -596,57 +595,6 @@ def quit_verify():
|
||||
Verifier.quit()
|
||||
|
||||
|
||||
# GEM Verifier
|
||||
class GEMShaVerifier(Verifier):
|
||||
"""Verify signatures for ruby gems."""
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
"""Initialize gem verification."""
|
||||
self.package_path = kwargs.get('package_path', None)
|
||||
Verifier.__init__(self, **kwargs)
|
||||
|
||||
@staticmethod
|
||||
def get_rubygems_info(package_name):
|
||||
"""Get json dump of ruby gem."""
|
||||
url = RUBYORG_API.format(package_name)
|
||||
data = download.do_curl(url)
|
||||
if data:
|
||||
return json.loads(data.getvalue().decode('utf-8'))
|
||||
else:
|
||||
return None
|
||||
|
||||
@staticmethod
|
||||
def get_gemnumber_sha(gems, number):
|
||||
"""Get sha for a gem based on the gem's number."""
|
||||
mygem = [gem for gem in gems if gem.get('number', -100) == number]
|
||||
if len(mygem) == 1:
|
||||
return mygem[0].get('sha', None)
|
||||
else:
|
||||
return None
|
||||
|
||||
def verify(self):
|
||||
"""Verify ruby gem based on sha sum."""
|
||||
gemname = os.path.basename(self.package_path).replace('.gem', '')
|
||||
util.print_info("Verifying SHA256 checksum")
|
||||
if os.path.exists(self.package_path) is False:
|
||||
self.print_result(False, 'GEM was not found {}'.format(self.package_path))
|
||||
return
|
||||
name, _ = re.split(r'-\d+\.', gemname)
|
||||
number = gemname.replace(name + '-', '')
|
||||
geminfo = GEMShaVerifier.get_rubygems_info(name)
|
||||
gemsha = GEMShaVerifier.get_gemnumber_sha(geminfo, number)
|
||||
|
||||
if geminfo is None:
|
||||
self.print_result(False, "unable to parse info for gem {}".format(gemname))
|
||||
else:
|
||||
calcsha = self.calc_sum(self.package_path, hashlib.sha256)
|
||||
self.print_result(gemsha == calcsha)
|
||||
result = gemsha == calcsha
|
||||
if result is False:
|
||||
self.quit()
|
||||
return result
|
||||
|
||||
|
||||
VERIFIER_TYPES = {
|
||||
'.gz': GPGVerifier,
|
||||
'.tgz': GPGVerifier,
|
||||
@@ -654,7 +602,6 @@ VERIFIER_TYPES = {
|
||||
'.bz2': GPGVerifier,
|
||||
'.xz': GPGVerifier,
|
||||
'.zip': GPGVerifier,
|
||||
'.gem': GEMShaVerifier,
|
||||
}
|
||||
|
||||
|
||||
@@ -894,10 +841,7 @@ def check(url, config, interactive=True):
|
||||
verified = None
|
||||
if package_check is not None:
|
||||
verified = from_disk(url, package_path, package_check, config, interactive=interactive)
|
||||
if not verified and package_path[-4:] == '.gem':
|
||||
signature_file = get_signature_file(url, config.download_path)
|
||||
verified = from_disk(url, package_path, signature_file, config, interactive=interactive)
|
||||
if not verified and package_path[-4:] != '.gem':
|
||||
if not verified:
|
||||
util.print_info('None of {}.(asc|sig|sign|sha256) is found in {}'.format(package_name, config.download_path))
|
||||
signature_file = get_signature_file(url, config.download_path)
|
||||
if signature_file is not None:
|
||||
|
||||
+9
-168
@@ -51,7 +51,6 @@ class Specfile(object):
|
||||
self.default_desc = ""
|
||||
self.locales = []
|
||||
self.build_dirs = dict() # Build directories, indexed by source URL
|
||||
self.golibpath = ""
|
||||
self.need_avx2_flags = False
|
||||
self.need_avx512_flags = False
|
||||
self.tests_config = ""
|
||||
@@ -130,8 +129,7 @@ class Specfile(object):
|
||||
self._write("Version : {}\n".format(self.version))
|
||||
self._write("Release : {}\n".format(str(self.release)))
|
||||
self._write("URL : {}\n".format(self.url))
|
||||
if not self.config.default_pattern == "godep":
|
||||
self._write("Source0 : {}\n".format(self.url))
|
||||
self._write("Source0 : {}\n".format(self.url))
|
||||
|
||||
def write_sources(self):
|
||||
"""Append additional source files.
|
||||
@@ -139,9 +137,8 @@ class Specfile(object):
|
||||
Append systemd unit files, gcov, and additional source tarballs are the currently supported file types.
|
||||
"""
|
||||
count = 0
|
||||
for source in sorted(self.config.sources["version"] + self.config.sources["unit"] + self.config.sources["archive"]
|
||||
+ self.config.sources["tmpfile"] + self.config.sources["sysuser"] + self.config.sources["gcov"] # NOQA
|
||||
+ self.config.sources["godep"]): # NOQA
|
||||
for source in sorted(self.config.sources["unit"] + self.config.sources["archive"]
|
||||
+ self.config.sources["tmpfile"] + self.config.sources["sysuser"] + self.config.sources["gcov"]): # NOQA
|
||||
count += 1
|
||||
self.source_index[source] = count
|
||||
if self.config.urlban:
|
||||
@@ -413,79 +410,16 @@ class Specfile(object):
|
||||
'-DCMAKE_AR=/usr/bin/gcc-ar -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_RANLIB=/usr/bin/gcc-ranlib \\\n'
|
||||
self._write_strip("{} {} {}".format(cmake_string, self.config.cmake_srcdir, self.extra_cmake_openmpi))
|
||||
|
||||
def write_prep(self, ruby_pattern=False):
|
||||
def write_prep(self):
|
||||
"""Write prep section to spec file."""
|
||||
self._write_strip("%prep")
|
||||
self.write_prep_prepend()
|
||||
if ruby_pattern:
|
||||
self._write_strip("gem unpack %{SOURCE0}")
|
||||
self._write_strip("%setup -q -D -T -n " + self.content.tarball_prefix)
|
||||
self._write_strip("gem spec %{{SOURCE0}} -l --ruby > {}.gemspec".format(self.name))
|
||||
prefix = self.content.prefixes[self.url]
|
||||
if self.config.default_pattern == 'R':
|
||||
prefix = self.content.tarball_prefix
|
||||
self._write_strip("%setup -q -n " + prefix)
|
||||
else:
|
||||
if self.config.default_pattern == "godep":
|
||||
# No setup needed each source is installed as is
|
||||
pass
|
||||
else:
|
||||
prefix = self.content.prefixes[self.url]
|
||||
if self.config.default_pattern == 'R':
|
||||
prefix = self.content.tarball_prefix
|
||||
self._write_strip("%setup -q -n " + prefix)
|
||||
elif prefix:
|
||||
self._write_strip("%setup -q -n " + prefix)
|
||||
else:
|
||||
# Have to make up a path and create it
|
||||
prefix = os.path.splitext(os.path.basename(self.url))[0]
|
||||
self._write_strip("%setup -q -c -n " + prefix)
|
||||
|
||||
# Keep track of this build dir
|
||||
self.build_dirs[self.url] = prefix
|
||||
|
||||
for archive in self.config.sources["archive"]:
|
||||
# Skip POM files - they don't need to be extracted
|
||||
if archive.endswith('.pom'):
|
||||
continue
|
||||
# Also JAR files
|
||||
if archive.endswith('.jar'):
|
||||
continue
|
||||
# Patch files
|
||||
if archive.endswith('.patch'):
|
||||
continue
|
||||
# Handle various archive types
|
||||
extract_cmd = 'tar xf {}'
|
||||
if archive.endswith('.zip'):
|
||||
extract_cmd = 'unzip -q {}'
|
||||
self._write_strip('cd %{_builddir}')
|
||||
archive_file = os.path.basename(archive)
|
||||
if self.config.archive_details.get(archive + "prefix"):
|
||||
self._write_strip(extract_cmd.format('%{_sourcedir}/' + archive_file))
|
||||
else:
|
||||
# The archive doesn't have a prefix inside, so we have
|
||||
# to create it, then extract the archive under the
|
||||
# created directory, itself beneath BUILD
|
||||
fake_prefix = os.path.splitext(os.path.basename(archive))[0]
|
||||
self._write_strip("mkdir -p {}".format(fake_prefix))
|
||||
self._write_strip("cd {}".format(fake_prefix))
|
||||
self._write_strip(extract_cmd.format('%{_sourcedir}/' + archive_file))
|
||||
|
||||
self._write_strip('cd %{_builddir}/' + prefix)
|
||||
|
||||
# Now handle extra versions, indexed by SOURCE
|
||||
for url in self.config.sources["version"]:
|
||||
prefix = self.content.prefixes[url]
|
||||
if prefix:
|
||||
self._write_strip("cd ..")
|
||||
self._write_strip("%setup -q -T -n {0} -b {1}"
|
||||
.format(prefix,
|
||||
self.source_index[url]))
|
||||
else:
|
||||
# Have to make up a path and create it
|
||||
prefix = os.path.splitext(os.path.basename(url))[0]
|
||||
self._write_strip("cd ..")
|
||||
self._write_strip("%setup -q -T -c -n {0} -b {1}"
|
||||
.format(prefix,
|
||||
self.source_index[url]))
|
||||
# Keep track of this build dir
|
||||
self.build_dirs[url] = prefix
|
||||
self._write_strip("%setup -q -n " + prefix)
|
||||
|
||||
for archive, destination in zip(self.config.sources["archive"], self.config.sources["destination"]):
|
||||
if destination.startswith(':'):
|
||||
@@ -561,9 +495,6 @@ class Specfile(object):
|
||||
else:
|
||||
lto = "-flto=auto"
|
||||
|
||||
if not self.config.set_gopath:
|
||||
self._write_strip("export GOPROXY=file:///usr/share/goproxy")
|
||||
|
||||
if self.config.config_opts['optimize_size']:
|
||||
if self.config.config_opts['use_clang']:
|
||||
flags.extend(["-Os", "-ffunction-sections", "-fdata-sections"])
|
||||
@@ -1481,42 +1412,6 @@ class Specfile(object):
|
||||
self.write_find_lang()
|
||||
self.write_check()
|
||||
|
||||
def write_ruby_pattern(self):
|
||||
"""Write build pattern for ruby packages."""
|
||||
self.write_prep(ruby_pattern=True)
|
||||
self._write_strip("%build")
|
||||
self.write_build_prepend()
|
||||
self.write_proxy_exports()
|
||||
self._write_strip("export LANG=C.UTF-8")
|
||||
self._write_strip("gem build {}.gemspec".format(self.name))
|
||||
self.write_build_append()
|
||||
self._write_strip("\n")
|
||||
|
||||
self._write_strip("%install")
|
||||
self.write_install_prepend()
|
||||
self._write_strip("%global gem_dir $(ruby -e'puts Gem.default_dir')")
|
||||
self._write_strip("gem install -V \\")
|
||||
self._write_strip(" --local \\")
|
||||
self._write_strip(" --force \\")
|
||||
self._write_strip(" --install-dir .%{gem_dir} \\")
|
||||
self._write_strip(" --bindir .%{_bindir} \\")
|
||||
self._write_strip(" {}.gem".format(self.content.tarball_prefix))
|
||||
self._write_strip("\n")
|
||||
|
||||
self._write_strip("mkdir -p %{buildroot}%{gem_dir}")
|
||||
self._write_strip("cp -pa .%{gem_dir}/* \\")
|
||||
self._write_strip(" %{buildroot}%{gem_dir}")
|
||||
self._write_strip("\n")
|
||||
|
||||
self._write_strip("if [ -d .%{_bindir} ]; then")
|
||||
self._write_strip(" mkdir -p %{buildroot}%{_bindir}")
|
||||
self._write_strip(" cp -pa .%{_bindir}/* \\")
|
||||
self._write_strip(" %{buildroot}%{_bindir}/")
|
||||
self._write_strip("fi")
|
||||
self._write_strip("\n")
|
||||
self.write_find_lang()
|
||||
self.write_check()
|
||||
|
||||
def write_cmake_pattern(self):
|
||||
"""Write cmake pattern to spec file."""
|
||||
self.write_prep()
|
||||
@@ -1647,19 +1542,6 @@ class Specfile(object):
|
||||
self._write_strip("\n")
|
||||
self.write_make_install()
|
||||
|
||||
def write_cargo_pattern(self):
|
||||
"""Write cargo build pattern to spec file."""
|
||||
self.write_prep()
|
||||
self._write_strip("%build")
|
||||
self.write_build_prepend()
|
||||
self.write_proxy_exports()
|
||||
self._write_strip("cargo build --release")
|
||||
self.write_build_append()
|
||||
self._write_strip("\n")
|
||||
self._write_strip("%install")
|
||||
self.write_install_prepend()
|
||||
self.write_license_files()
|
||||
|
||||
def write_cpan_pattern(self):
|
||||
"""Write cpan build pattern to spec file."""
|
||||
self.write_prep()
|
||||
@@ -1708,47 +1590,6 @@ class Specfile(object):
|
||||
self._write_strip("scons install " + self.config.extra_make_install)
|
||||
self.write_license_files()
|
||||
|
||||
def write_golang_pattern(self):
|
||||
"""Write build pattern for go packages."""
|
||||
self.write_prep()
|
||||
self._write_strip("%build")
|
||||
self.write_build_prepend()
|
||||
self.write_proxy_exports()
|
||||
self._write_strip("export LANG=C.UTF-8")
|
||||
if self.config.set_gopath:
|
||||
self._write_strip("export GOPATH=\"$PWD\"")
|
||||
self._write_strip("go build {}".format(self.config.extra_make))
|
||||
else:
|
||||
self._write_strip("export GOPROXY=file:///usr/share/goproxy")
|
||||
self._write_strip("go mod vendor")
|
||||
self._write_strip("go build -mod=vendor {}".format(self.config.extra_make))
|
||||
self.write_build_append()
|
||||
self._write_strip("\n")
|
||||
self._write_strip("%install")
|
||||
self._write_strip("rm -rf %{buildroot}")
|
||||
self.write_install_prepend()
|
||||
self.write_license_files()
|
||||
self._write_strip("\n")
|
||||
|
||||
def write_godep_pattern(self):
|
||||
"""Write godep build pattern to spec file."""
|
||||
self.write_prep()
|
||||
self._write_strip("%install")
|
||||
self.write_install_prepend()
|
||||
self._write_strip("rm -fr %{buildroot}")
|
||||
# Remove golang default proxy prefix and filename to get proxy path for the install
|
||||
proxy_path = os.path.join("%{buildroot}/usr/share/goproxy",
|
||||
os.path.dirname(self.url[len("https://proxy.golang.org/"):]))
|
||||
self._write_strip(f"mkdir -p {proxy_path}")
|
||||
list_file = os.path.join(proxy_path, "list")
|
||||
self._write_strip("# Create list file using packaged versions")
|
||||
for ver in list(self.content.multi_version.keys()):
|
||||
self._write_strip(f"echo {ver} >> {list_file}")
|
||||
for idx, source in enumerate(sorted(self.config.sources["godep"])):
|
||||
file_path = os.path.join(proxy_path, os.path.basename(source))
|
||||
self._write_strip(f"install -m 0644 %{{SOURCE{idx+1}}} {file_path}")
|
||||
self._write_strip("\n")
|
||||
|
||||
def write_meson_pattern(self):
|
||||
"""Write meson build pattern to spec file."""
|
||||
self.write_prep()
|
||||
|
||||
+14
-107
@@ -20,15 +20,16 @@
|
||||
import configparser
|
||||
import os
|
||||
import re
|
||||
import sys
|
||||
import tarfile
|
||||
import zipfile
|
||||
from collections import OrderedDict
|
||||
|
||||
import download
|
||||
|
||||
from util import do_regex, get_sha1sum, print_fatal, write_out
|
||||
|
||||
|
||||
class Source(object):
|
||||
class Source():
|
||||
"""Holds data and methods for source code or archives management."""
|
||||
|
||||
def __init__(self, url, destination, path, pattern=None):
|
||||
@@ -50,8 +51,6 @@ class Source(object):
|
||||
"""Determine compression type."""
|
||||
if self.url.lower().endswith(('.zip', 'jar')):
|
||||
self.type = 'zip'
|
||||
elif self.url.lower().endswith('list'):
|
||||
self.type = 'go'
|
||||
else:
|
||||
self.type = 'tar'
|
||||
|
||||
@@ -71,14 +70,14 @@ class Source(object):
|
||||
# When tarball is not empty
|
||||
if len(lines) == 0:
|
||||
print_fatal("Tar file doesn't appear to have any content")
|
||||
exit(1)
|
||||
sys.exit(1)
|
||||
elif len(lines) > 1:
|
||||
if 'package.xml' in lines and self.pattern in ['phpize']:
|
||||
lines.remove('package.xml')
|
||||
self.prefix = os.path.commonpath(lines)
|
||||
else:
|
||||
print_fatal("Not a valid tar file.")
|
||||
exit(1)
|
||||
sys.exit(1)
|
||||
|
||||
def set_zip_prefix(self):
|
||||
"""Determine prefix folder name of zip file."""
|
||||
@@ -90,14 +89,10 @@ class Source(object):
|
||||
self.prefix = os.path.commonpath(lines)
|
||||
else:
|
||||
print_fatal("Zip file doesn't appear to have any content")
|
||||
exit(1)
|
||||
sys.exit(1)
|
||||
else:
|
||||
print_fatal("Not a valid zip file.")
|
||||
exit(1)
|
||||
|
||||
def set_go_prefix(self):
|
||||
"""Set empty prefix for go packages (*.list)."""
|
||||
self.prefix = ''
|
||||
sys.exit(1)
|
||||
|
||||
def extract(self, base_path):
|
||||
"""Prepare extraction path and call specific extraction method."""
|
||||
@@ -119,10 +114,6 @@ class Source(object):
|
||||
with zipfile.ZipFile(self.path, 'r') as content:
|
||||
content.extractall(path=extraction_path)
|
||||
|
||||
def extract_go(self, extraction_path):
|
||||
"""Pretend to do something."""
|
||||
return
|
||||
|
||||
|
||||
def convert_version(ver_str, name):
|
||||
"""Remove disallowed characters from the version."""
|
||||
@@ -159,7 +150,7 @@ def convert_version(ver_str, name):
|
||||
return ver_str.strip(".")
|
||||
|
||||
|
||||
class Content(object):
|
||||
class Content():
|
||||
"""Detect static information about the project."""
|
||||
|
||||
def __init__(self, url, name, version, archives, config, base_path):
|
||||
@@ -167,7 +158,6 @@ class Content(object):
|
||||
self.name = name
|
||||
self.rawname = ""
|
||||
self.version = version
|
||||
self.multi_version = OrderedDict()
|
||||
self.release = "1"
|
||||
self.url = url
|
||||
self.path = ""
|
||||
@@ -230,24 +220,6 @@ class Content(object):
|
||||
if "domain" in config_f["package"]:
|
||||
self.domain = config_f["package"].get("domain")
|
||||
|
||||
def set_multi_version(self, ver):
|
||||
"""Add ver to multi_version set and return latest version."""
|
||||
self.multi_version = self.config.parse_config_versions()
|
||||
if ver:
|
||||
# Some build patterns put multiple versions in the same package.
|
||||
# For those patterns add to the multi_version list
|
||||
if self.config.default_pattern in ["godep"]:
|
||||
self.multi_version[ver] = ""
|
||||
else:
|
||||
self.multi_version = {ver: ""}
|
||||
elif not self.multi_version:
|
||||
# Fall back to ensure a version is always set
|
||||
# (otherwise the last known version will be used)
|
||||
self.multi_version = {"1": ""}
|
||||
latest = sorted(self.multi_version.keys())[-1]
|
||||
|
||||
return latest
|
||||
|
||||
def name_and_version(self, filemanager):
|
||||
"""Parse the url for the package name and version."""
|
||||
tarfile = os.path.basename(self.url)
|
||||
@@ -262,7 +234,7 @@ class Content(object):
|
||||
if self.name and self.version:
|
||||
# rawname == name in this case
|
||||
self.rawname = self.name
|
||||
self.version = convert_version(self.set_multi_version(self.version), self.name)
|
||||
self.version = convert_version(self.version, self.name)
|
||||
return
|
||||
|
||||
name = self.name
|
||||
@@ -354,26 +326,6 @@ class Content(object):
|
||||
name = match.group(1).strip()
|
||||
version = convert_version(match.group(2), name)
|
||||
|
||||
# ruby
|
||||
if "rubygems.org/" in self.url:
|
||||
m = re.search(r"(.*?)[\-_](v*[0-9]+[a-zA-Z0-9\+_\.\-\~]*)\.gem", tarfile)
|
||||
if m:
|
||||
name = "rubygem-" + m.group(1).strip()
|
||||
# remove release candidate tag from the package name
|
||||
# https://rubygems.org/downloads/ruby-rc4-0.1.5.gem
|
||||
b = name.find("-rc")
|
||||
if b > 0:
|
||||
name = name[:b]
|
||||
self.rawname = m.group(1).strip()
|
||||
version = convert_version(m.group(2), name)
|
||||
|
||||
# rust crate
|
||||
if "crates.io" in self.url:
|
||||
m = re.search(r"/crates.io/api/v[0-9]+/crates/(.*)/(.*)/download.*\.crate", self.url)
|
||||
if m:
|
||||
name = m.group(1).strip()
|
||||
version = convert_version(m.group(2), name)
|
||||
|
||||
if "gitlab.com" in self.url:
|
||||
# https://gitlab.com/leanlabsio/kanban/-/archive/1.7.1/kanban-1.7.1.tar.gz
|
||||
m = re.search(r"gitlab\.com/.*/(.*)/-/archive/(?:VERSION_|[vVrR])?(.*)/", self.url)
|
||||
@@ -397,7 +349,6 @@ class Content(object):
|
||||
# override name and version from commandline
|
||||
self.name = self.name if self.name else name
|
||||
self.version = self.version if self.version else version
|
||||
self.version = self.set_multi_version(self.version)
|
||||
|
||||
def set_gcov(self):
|
||||
"""Set the gcov file name."""
|
||||
@@ -405,52 +356,11 @@ class Content(object):
|
||||
if os.path.isfile(gcov_path):
|
||||
self.gcov_file = self.name + ".gcov"
|
||||
|
||||
def process_go_archives(self, go_archives):
|
||||
"""Set up extra archives required by go packages."""
|
||||
base_url = os.path.dirname(self.url)
|
||||
for ver in self.multi_version:
|
||||
url_info = os.path.join(base_url, f"{ver}.info")
|
||||
url_mod = os.path.join(base_url, f"{ver}.mod")
|
||||
url_zip = os.path.join(base_url, f"{ver}.zip")
|
||||
# Append elements in pairs url and destination if doesn't exist
|
||||
if url_info not in self.archives:
|
||||
go_archives.extend([url_info, ':'])
|
||||
if url_mod not in self.archives:
|
||||
go_archives.extend([url_mod, ':'])
|
||||
if url_zip not in self.archives:
|
||||
go_archives.extend([url_zip, ''])
|
||||
self.config.sources["godep"] += [url_info, url_mod, url_zip]
|
||||
|
||||
def process_multiver_archives(self, main_src, multiver_archives):
|
||||
"""Set up multiversion archives."""
|
||||
config_versions = self.config.parse_config_versions()
|
||||
# Check if exist more than one version.
|
||||
if len(config_versions) > 1:
|
||||
for extraver in config_versions:
|
||||
extraurl = config_versions[extraver]
|
||||
if extraurl and extraurl != main_src.url:
|
||||
self.config.sources["version"].append(extraurl)
|
||||
multiver_archives.append(extraurl)
|
||||
multiver_archives.append('')
|
||||
self.set_multi_version(None)
|
||||
|
||||
def process_archives(self, main_src):
|
||||
"""Process extra sources needed by package.
|
||||
|
||||
This sources include: archives, go archives and multiversion.
|
||||
"""
|
||||
go_archives = []
|
||||
multiver_archives = []
|
||||
def process_archives(self):
|
||||
"""Process extra sources needed by package."""
|
||||
src_objects = []
|
||||
|
||||
if os.path.basename(main_src.url) == "list":
|
||||
# Add extra archives and multiversion for Go packages
|
||||
self.process_go_archives(go_archives)
|
||||
else:
|
||||
# Add multiversion for the rest of the patterns
|
||||
self.process_multiver_archives(main_src, multiver_archives)
|
||||
|
||||
full_archives = self.archives + go_archives + multiver_archives
|
||||
full_archives = self.archives
|
||||
# Download and extract full list
|
||||
for arch_url, destination in zip(full_archives[::2], full_archives[1::2]):
|
||||
src_path = self.check_or_get_file(arch_url, os.path.basename(arch_url), mode="a")
|
||||
@@ -470,8 +380,6 @@ class Content(object):
|
||||
self.set_giturl_and_domain()
|
||||
# determine name and version of package
|
||||
self.name_and_version(filemanager)
|
||||
# Store the top-level version
|
||||
self.config.versions[self.version] = self.url
|
||||
# set gcov file information, must be done after name is set since the gcov
|
||||
# name is created by adding ".gcov" to the package name (if a gcov file
|
||||
# exists)
|
||||
@@ -485,8 +393,7 @@ class Content(object):
|
||||
self.path = os.path.join(self.base_path, self.tarball_prefix)
|
||||
# Now that the metadata has been collected print the header
|
||||
self.print_header()
|
||||
# Download and process extra sources: archives, go archives and
|
||||
# multiversion
|
||||
archives_src = self.process_archives(main_src)
|
||||
# Download and process extra sources: archives
|
||||
archives_src = self.process_archives()
|
||||
# Extract all sources
|
||||
self.extract_sources(main_src, archives_src)
|
||||
|
||||
@@ -28,17 +28,13 @@ Checking for swig: not found|swig
|
||||
Could NOT find swig|swig
|
||||
Could not find wpa_supplicant|wpa_supplicant
|
||||
Could not find xdg-open|xdg-utils
|
||||
Could not find 'swig' (< 4) among 5 total gem|rubygem-swig
|
||||
Could not find a package configuration file provided by "swig" etc etc|swig
|
||||
Could not find gem 'swig (<= 3) ruby'|rubygem-swig
|
||||
Could not find suitable distribution for Requirement.parse('swig')|swig
|
||||
Dependency swig found: NO|swig
|
||||
Dependency testpkg found: NO (tried pkgconfig and cmake)|pkgconfig(testpkg)
|
||||
Dependency testpkg found: NO (tried pkgconfig)|pkgconfig(testpkg)
|
||||
Download error on https://pypi.python.org/simple/swig/|pypi(swig)
|
||||
Downloading https://test.python.org/packages/pkg/t/swig/1.23|swig
|
||||
ERROR: Could not find a valid gem 'swig' (= 8) in any repository|rubygem-swig
|
||||
ERROR: Could not find a valid gem 'swig' (= 8), here is why:|rubygem-swig
|
||||
ERROR: dependencies 'swig' are not available for package 'something'|R-swig
|
||||
ERROR: dependencies 'swig', 'swig2' are not available for package 'something'|R-swig
|
||||
ERROR: dependencies ‘swig’ are not available for package ‘something’|R-swig
|
||||
@@ -48,14 +44,12 @@ ERROR: dependency ‘swig’ is not available for package ‘something’|R-swig
|
||||
Error: Unable to find swig|swig
|
||||
Error: package 'swig' required by|R-swig
|
||||
Error: package ‘swig’ required by|R-swig
|
||||
Gem::LoadError: Could not find 'swig'|rubygem-swig
|
||||
ImportError: No module named 'swig'|pypi(swig)
|
||||
ImportError: No module named swig|swig
|
||||
ImportError: No module named swig|pypi(swig)
|
||||
ImportError: cannot import name swig|swig
|
||||
ImportError: swig module missing|swig
|
||||
ImportError:..*: No module named swig|pypi(swig)
|
||||
LoadError: cannot load such file -- swig/pkg|rubygem-swig
|
||||
ModuleNotFoundError: No module named swig|swig
|
||||
Native dependency 'swig' not found|pkgconfig(swig)
|
||||
No local packages or working download links found for swig|pypi(swig)
|
||||
@@ -70,7 +64,6 @@ Program swig found: NO|swig
|
||||
Target 't' can't be generated as 'swig' could not be found|swig
|
||||
Unable to `import swig`|swig
|
||||
Unable to find 'swig'|swig
|
||||
WARNING: package dependency on swig (= 5.4) ardilla|rubygem-swig
|
||||
Warning: no usable swig found|swig
|
||||
Warning: prerequisite swig 8 not found.|perl(swig)
|
||||
You need swig to build this program.|swig
|
||||
@@ -98,7 +91,6 @@ fatal error: swig: No such file or directory|swig
|
||||
make: swig: Command not found|swig
|
||||
make: help2man: No such file or directory|help2man
|
||||
swig 8 is required to configure this module; please install it or upgrade your CPAN/CPANPLUS shell.|swig
|
||||
swig is not installed: cannot load such file -- rdoc/swig|rubygem-swig
|
||||
swig tool not found or not executable|swig
|
||||
swig validation tool not found or not executable|swig
|
||||
swig: command not found|swig
|
||||
|
||||
@@ -1270,312 +1270,6 @@ https://cran.r-project.org/src/contrib/tseries_0.10-42.tar.gz,R-tseries,0.10.42
|
||||
http://pypi.debian.net/rtslib-fb/rtslib-fb-2.1.64.tar.gz,rtslib-fb,2.1.64
|
||||
https://cran.r-project.org/src/contrib/TTR_0.23-2.tar.gz,R-TTR,0.23.2
|
||||
ftp://ftp.ruby-lang.org/pub/ruby/2.4/ruby-2.4.2.tar.xz,ruby,2.4.2
|
||||
https://rubygems.org/downloads/actionmailer-5.0.0.1.gem,rubygem-actionmailer,5.0.0.1
|
||||
https://rubygems.org/downloads/actionpack-5.0.0.1.gem,rubygem-actionpack,5.0.0.1
|
||||
https://rubygems.org/downloads/actionview-5.0.0.1.gem,rubygem-actionview,5.0.0.1
|
||||
https://rubygems.org/downloads/activejob-5.0.0.1.gem,rubygem-activejob,5.0.0.1
|
||||
https://rubygems.org/downloads/activemodel-5.0.0.1.gem,rubygem-activemodel,5.0.0.1
|
||||
https://rubygems.org/downloads/activerecord-5.0.0.1.gem,rubygem-activerecord,5.0.0.1
|
||||
https://rubygems.org/downloads/activesupport-5.0.0.1.gem,rubygem-activesupport,5.0.0.1
|
||||
https://rubygems.org/downloads/addressable-2.4.0.gem,rubygem-addressable,2.4.0
|
||||
https://rubygems.org/downloads/ae-1.8.2.gem,rubygem-ae,1.8.2
|
||||
https://rubygems.org/downloads/afm-0.2.2.gem,rubygem-afm,0.2.2
|
||||
https://rubygems.org/downloads/allison-2.0.3.gem,rubygem-allison,2.0.3
|
||||
https://rubygems.org/downloads/ammeter-1.1.4.gem,rubygem-ammeter,1.1.4
|
||||
https://rubygems.org/downloads/ansi-1.5.0.gem,rubygem-ansi,1.5.0
|
||||
https://rubygems.org/downloads/appraisal-2.1.0.gem,rubygem-appraisal,2.1.0
|
||||
https://rubygems.org/downloads/arel-7.1.4.gem,rubygem-arel,7.1.4
|
||||
https://rubygems.org/downloads/aruba-0.14.2.gem,rubygem-aruba,0.14.2
|
||||
https://rubygems.org/downloads/Ascii85-1.0.2.gem,rubygem-Ascii85,1.0.2
|
||||
https://rubygems.org/downloads/ast-2.3.0.gem,rubygem-ast,2.3.0
|
||||
https://rubygems.org/downloads/astrolabe-1.3.1.gem,rubygem-astrolabe,1.3.1
|
||||
https://rubygems.org/downloads/atomic-1.1.99.gem,rubygem-atomic,1.1.99
|
||||
https://rubygems.org/downloads/axiom-types-0.1.1.gem,rubygem-axiom-types,0.1.1
|
||||
https://rubygems.org/downloads/bacon-1.2.0.gem,rubygem-bacon,1.2.0
|
||||
https://rubygems.org/downloads/bacon-colored_output-1.0.1.gem,rubygem-bacon-colored_output,1.0.1
|
||||
https://rubygems.org/downloads/bcat-0.6.2.gem,rubygem-bcat,0.6.2
|
||||
https://rubygems.org/downloads/bcrypt-3.1.11.gem,rubygem-bcrypt,3.1.11
|
||||
https://rubygems.org/downloads/bcrypt-ruby-3.1.5.gem,rubygem-bcrypt-ruby,3.1.5
|
||||
https://rubygems.org/downloads/benchmark-ips-2.7.2.gem,rubygem-benchmark-ips,2.7.2
|
||||
https://rubygems.org/downloads/benchmark_suite-1.0.0.gem,rubygem-benchmark_suite,1.0.0
|
||||
https://rubygems.org/downloads/blankslate-3.1.3.gem,rubygem-blankslate,3.1.3
|
||||
https://rubygems.org/downloads/blockenspiel-0.5.0.gem,rubygem-blockenspiel,0.5.0
|
||||
https://rubygems.org/downloads/bluecloth-2.2.0.gem,rubygem-bluecloth,2.2.0
|
||||
https://rubygems.org/downloads/bones-3.8.3.gem,rubygem-bones,3.8.3
|
||||
https://rubygems.org/downloads/brass-1.2.1.gem,rubygem-brass,1.2.1
|
||||
https://rubygems.org/downloads/bson-4.1.1.gem,rubygem-bson,4.1.1
|
||||
https://rubygems.org/downloads/bson_ext-1.12.5.gem,rubygem-bson_ext,1.12.5
|
||||
https://rubygems.org/downloads/builder-3.2.2.gem,rubygem-builder,3.2.2
|
||||
https://rubygems.org/downloads/bundler-1.13.6.gem,rubygem-bundler,1.13.6
|
||||
https://rubygems.org/downloads/cane-3.0.0.gem,rubygem-cane,3.0.0
|
||||
https://rubygems.org/downloads/capybara-2.10.1.gem,rubygem-capybara,2.10.1
|
||||
https://rubygems.org/downloads/cells-4.1.3.gem,rubygem-cells,4.1.3
|
||||
https://rubygems.org/downloads/cells-erb-0.0.9.gem,rubygem-cells-erb,0.0.9
|
||||
https://rubygems.org/downloads/celluloid-0.17.3.gem,rubygem-celluloid,0.17.3
|
||||
https://rubygems.org/downloads/cgi_multipart_eof_fix-2.5.0.gem,rubygem-cgi_multipart_eof_fix,2.5.0
|
||||
https://rubygems.org/downloads/childprocess-0.5.9.gem,rubygem-childprocess,0.5.9
|
||||
https://rubygems.org/downloads/chronic-0.10.2.gem,rubygem-chronic,0.10.2
|
||||
https://rubygems.org/downloads/chronic_duration-0.10.6.gem,rubygem-chronic_duration,0.10.6
|
||||
https://rubygems.org/downloads/closure-compiler-1.1.12.gem,rubygem-closure-compiler,1.1.12
|
||||
https://rubygems.org/downloads/coderay-1.1.1.gem,rubygem-coderay,1.1.1
|
||||
https://rubygems.org/downloads/code_statistics-0.2.13.gem,rubygem-code_statistics,0.2.13
|
||||
https://rubygems.org/downloads/coercible-1.0.0.gem,rubygem-coercible,1.0.0
|
||||
https://rubygems.org/downloads/coffee-rails-4.2.1.gem,rubygem-coffee-rails,4.2.1
|
||||
https://rubygems.org/downloads/coffee-script-2.4.1.gem,rubygem-coffee-script,2.4.1
|
||||
https://rubygems.org/downloads/coffee-script-source-1.10.0.gem,rubygem-coffee-script-source,1.10.0
|
||||
https://rubygems.org/downloads/contest-0.1.3.gem,rubygem-contest,0.1.3
|
||||
https://rubygems.org/downloads/cookiejar-0.3.3.gem,rubygem-cookiejar,0.3.3
|
||||
https://rubygems.org/downloads/crack-0.4.3.gem,rubygem-crack,0.4.3
|
||||
https://rubygems.org/downloads/crass-1.0.2.gem,rubygem-crass,1.0.2
|
||||
https://rubygems.org/downloads/creole-0.5.0.gem,rubygem-creole,0.5.0
|
||||
https://rubygems.org/downloads/cucumber-2.4.0.gem,rubygem-cucumber,2.4.0
|
||||
https://rubygems.org/downloads/cucumber-core-2.0.0.gem,rubygem-cucumber-core,2.0.0
|
||||
https://rubygems.org/downloads/curb-0.9.3.gem,rubygem-curb,0.9.3
|
||||
https://rubygems.org/downloads/daemons-1.2.4.gem,rubygem-daemons,1.2.4
|
||||
https://rubygems.org/downloads/database_cleaner-1.5.3.gem,rubygem-database_cleaner,1.5.3
|
||||
https://rubygems.org/downloads/data_objects-0.10.17.gem,rubygem-data_objects,0.10.17
|
||||
https://rubygems.org/downloads/delorean-2.1.0.gem,rubygem-delorean,2.1.0
|
||||
https://rubygems.org/downloads/descendants_tracker-0.0.4.gem,rubygem-descendants_tracker,0.0.4
|
||||
https://rubygems.org/downloads/detroit-0.4.0.gem,rubygem-detroit,0.4.0
|
||||
https://rubygems.org/downloads/detroit-gem-0.4.0.gem,rubygem-detroit-gem,0.4.0
|
||||
https://rubygems.org/downloads/detroit-standard-0.4.0.gem,rubygem-detroit-standard,0.4.0
|
||||
https://rubygems.org/downloads/detroit-yard-0.2.0.gem,rubygem-detroit-yard,0.2.0
|
||||
https://rubygems.org/downloads/devise-4.2.0.gem,rubygem-devise,4.2.0
|
||||
https://rubygems.org/downloads/diff-lcs-1.2.5.gem,rubygem-diff-lcs,1.2.5
|
||||
https://rubygems.org/downloads/diffy-3.1.0.gem,rubygem-diffy,3.1.0
|
||||
https://rubygems.org/downloads/disposable-0.0.9.gem,rubygem-disposable,0.0.9
|
||||
https://rubygems.org/downloads/dm-active_model-1.2.1.gem,rubygem-dm-active_model,1.2.1
|
||||
https://rubygems.org/downloads/dm-aggregates-1.2.0.gem,rubygem-dm-aggregates,1.2.0
|
||||
https://rubygems.org/downloads/dm-constraints-1.2.0.gem,rubygem-dm-constraints,1.2.0
|
||||
https://rubygems.org/downloads/dm-core-1.2.1.gem,rubygem-dm-core,1.2.1
|
||||
https://rubygems.org/downloads/dm-do-adapter-1.2.0.gem,rubygem-dm-do-adapter,1.2.0
|
||||
https://rubygems.org/downloads/dm-migrations-1.2.0.gem,rubygem-dm-migrations,1.2.0
|
||||
https://rubygems.org/downloads/dm-sqlite-adapter-1.2.0.gem,rubygem-dm-sqlite-adapter,1.2.0
|
||||
https://rubygems.org/downloads/dm-timestamps-1.2.0.gem,rubygem-dm-timestamps,1.2.0
|
||||
https://rubygems.org/downloads/dm-types-1.2.2.gem,rubygem-dm-types,1.2.2
|
||||
https://rubygems.org/downloads/dm-validations-1.2.0.gem,rubygem-dm-validations,1.2.0
|
||||
https://rubygems.org/downloads/docile-1.1.5.gem,rubygem-docile,1.1.5
|
||||
https://rubygems.org/downloads/do_sqlite3-0.10.17.gem,rubygem-do_sqlite3,0.10.17
|
||||
https://rubygems.org/downloads/echoe-4.6.6.gem,rubygem-echoe,4.6.6
|
||||
https://rubygems.org/downloads/eco-1.0.0.gem,rubygem-eco,1.0.0
|
||||
https://rubygems.org/downloads/eco-source-1.1.0.rc.1.gem,rubygem-eco-source,1.1.0.rc.1
|
||||
https://rubygems.org/downloads/ejs-1.1.1.gem,rubygem-ejs,1.1.1
|
||||
https://rubygems.org/downloads/em-http-request-1.1.5.gem,rubygem-em-http-request,1.1.5
|
||||
https://rubygems.org/downloads/em-socksify-0.3.1.gem,rubygem-em-socksify,0.3.1
|
||||
https://rubygems.org/downloads/equalizer-0.0.11.gem,rubygem-equalizer,0.0.11
|
||||
https://rubygems.org/downloads/erbse-0.1.1.gem,rubygem-erbse,0.1.1
|
||||
https://rubygems.org/downloads/ergo-0.3.0.gem,rubygem-ergo,0.3.0
|
||||
https://rubygems.org/downloads/erubis-2.7.0.gem,rubygem-erubis,2.7.0
|
||||
https://rubygems.org/downloads/eventmachine-1.2.0.1.gem,rubygem-eventmachine,1.2.0.1
|
||||
https://rubygems.org/downloads/execjs-2.7.0.gem,rubygem-execjs,2.7.0
|
||||
https://rubygems.org/downloads/facets-3.1.0.gem,rubygem-facets,3.1.0
|
||||
https://rubygems.org/downloads/fakeweb-1.3.0.gem,rubygem-fakeweb,1.3.0
|
||||
https://rubygems.org/downloads/faraday-0.9.2.gem,rubygem-faraday,0.9.2
|
||||
https://rubygems.org/downloads/fastercsv-1.5.5.gem,rubygem-fastercsv,1.5.5
|
||||
https://rubygems.org/downloads/flexmock-2.3.0.gem,rubygem-flexmock,2.3.0
|
||||
https://rubygems.org/downloads/formatador-0.2.5.gem,rubygem-formatador,0.2.5
|
||||
https://rubygems.org/downloads/fuubar-2.2.0.gem,rubygem-fuubar,2.2.0
|
||||
https://rubygems.org/downloads/gauntlet-2.1.0.gem,rubygem-gauntlet,2.1.0
|
||||
https://rubygems.org/downloads/gem_hadar-1.9.1.gem,rubygem-gem_hadar,1.9.1
|
||||
https://rubygems.org/downloads/gem_plugin-0.2.3.gem,rubygem-gem_plugin,0.2.3
|
||||
https://rubygems.org/downloads/gherkin-4.0.0.gem,rubygem-gherkin,4.0.0
|
||||
https://rubygems.org/downloads/git-1.3.0.gem,rubygem-git,1.3.0
|
||||
https://rubygems.org/downloads/github_api-0.14.5.gem,rubygem-github_api,0.14.5
|
||||
https://rubygems.org/downloads/github-markup-1.4.0.gem,rubygem-github-markup,1.4.0
|
||||
https://rubygems.org/downloads/globalid-0.3.7.gem,rubygem-globalid,0.3.7
|
||||
https://rubygems.org/downloads/gritter-1.2.0.gem,rubygem-gritter,1.2.0
|
||||
https://rubygems.org/downloads/guard-2.14.0.gem,rubygem-guard,2.14.0
|
||||
https://rubygems.org/downloads/guard-compat-1.2.1.gem,rubygem-guard-compat,1.2.1
|
||||
https://rubygems.org/downloads/guard-minitest-2.4.6.gem,rubygem-guard-minitest,2.4.6
|
||||
https://rubygems.org/downloads/guard-rspec-4.7.3.gem,rubygem-guard-rspec,4.7.3
|
||||
https://rubygems.org/downloads/haml-4.0.7.gem,rubygem-haml,4.0.7
|
||||
https://rubygems.org/downloads/haml-rails-0.9.0.gem,rubygem-haml-rails,0.9.0
|
||||
https://rubygems.org/downloads/hashie-3.4.6.gem,rubygem-hashie,3.4.6
|
||||
https://rubygems.org/downloads/heredoc_unindent-1.2.0.gem,rubygem-heredoc_unindent,1.2.0
|
||||
https://rubygems.org/downloads/heroku-api-0.4.2.gem,rubygem-heroku-api,0.4.2
|
||||
https://rubygems.org/downloads/highline-1.7.8.gem,rubygem-highline,1.7.8
|
||||
https://rubygems.org/downloads/hitimes-1.2.4.gem,rubygem-hitimes,1.2.4
|
||||
https://rubygems.org/downloads/hoe-3.15.2.gem,rubygem-hoe,3.15.2
|
||||
https://rubygems.org/downloads/hoe-bundler-1.3.0.gem,rubygem-hoe-bundler,1.3.0
|
||||
https://rubygems.org/downloads/hoe-debugging-1.2.1.gem,rubygem-hoe-debugging,1.2.1
|
||||
https://rubygems.org/downloads/hoe-doofus-1.0.0.gem,rubygem-hoe-doofus,1.0.0
|
||||
https://rubygems.org/downloads/hoe-gemspec-1.0.0.gem,rubygem-hoe-gemspec,1.0.0
|
||||
https://rubygems.org/downloads/hoe-gemspec2-1.2.0.gem,rubygem-hoe-gemspec2,1.2.0
|
||||
https://rubygems.org/downloads/hoe-git-1.6.0.gem,rubygem-hoe-git,1.6.0
|
||||
https://rubygems.org/downloads/hoe-highline-0.2.1.gem,rubygem-hoe-highline,0.2.1
|
||||
https://rubygems.org/downloads/hoe-mercurial-1.4.1.gem,rubygem-hoe-mercurial,1.4.1
|
||||
https://rubygems.org/downloads/hoe-rubygems-1.0.0.gem,rubygem-hoe-rubygems,1.0.0
|
||||
https://rubygems.org/downloads/hoe-seattlerb-1.3.5.gem,rubygem-hoe-seattlerb,1.3.5
|
||||
https://rubygems.org/downloads/hoe-travis-1.3.1.gem,rubygem-hoe-travis,1.3.1
|
||||
https://rubygems.org/downloads/hpricot-0.8.6.gem,rubygem-hpricot,0.8.6
|
||||
https://rubygems.org/downloads/html2haml-2.0.0.gem,rubygem-html2haml,2.0.0
|
||||
https://rubygems.org/downloads/html-pipeline-2.4.2.gem,rubygem-html-pipeline,2.4.2
|
||||
https://rubygems.org/downloads/http-2.0.3.gem,rubygem-http,2.0.3
|
||||
https://rubygems.org/downloads/http-cookie-1.0.3.gem,rubygem-http-cookie,1.0.3
|
||||
https://rubygems.org/downloads/http-form_data-1.0.1.gem,rubygem-http-form_data,1.0.1
|
||||
https://rubygems.org/downloads/i18n-0.7.0.gem,rubygem-i18n,0.7.0
|
||||
https://rubygems.org/downloads/ice_nine-0.11.2.gem,rubygem-ice_nine,0.11.2
|
||||
https://rubygems.org/downloads/indexer-0.3.1.gem,rubygem-indexer,0.3.1
|
||||
https://rubygems.org/downloads/ir_b-1.5.0.gem,rubygem-ir_b,1.5.0
|
||||
https://rubygems.org/downloads/jeremymcanally-pending-0.1.gem,rubygem-jeremymcanally-pending,0.1
|
||||
https://rubygems.org/downloads/jeweler-2.1.2.gem,rubygem-jeweler,2.1.2
|
||||
https://rubygems.org/downloads/jquery-rails-4.2.1.gem,rubygem-jquery-rails,4.2.1
|
||||
https://rubygems.org/downloads/jwt-1.5.6.gem,rubygem-jwt,1.5.6
|
||||
https://rubygems.org/gems/kaminari-0.16.1.gem,rubygem-kaminari,0.16.1
|
||||
https://rubygems.org/downloads/kpeg-1.1.0.gem,rubygem-kpeg,1.1.0
|
||||
https://rubygems.org/downloads/kramdown-1.12.0.gem,rubygem-kramdown,1.12.0
|
||||
https://rubygems.org/downloads/latest_ruby-0.0.5.gem,rubygem-latest_ruby,0.0.5
|
||||
https://rubygems.org/downloads/launchy-2.4.3.gem,rubygem-launchy,2.4.3
|
||||
https://rubygems.org/downloads/listen-3.1.5.gem,rubygem-listen,3.1.5
|
||||
https://rubygems.org/downloads/lumberjack-1.0.10.gem,rubygem-lumberjack,1.0.10
|
||||
https://rubygems.org/downloads/maruku-0.7.2.gem,rubygem-maruku,0.7.2
|
||||
https://rubygems.org/downloads/mast-1.4.0.gem,rubygem-mast,1.4.0
|
||||
https://rubygems.org/downloads/metaclass-0.0.4.gem,rubygem-metaclass,0.0.4
|
||||
https://rubygems.org/downloads/method_source-0.8.2.gem,rubygem-method_source,0.8.2
|
||||
https://rubygems.org/downloads/mime-types-2.6.1.gem,rubygem-mime-types,2.6.1
|
||||
https://rubygems.org/downloads/mini_portile-0.6.2.gem,rubygem-mini_portile,0.6.2
|
||||
https://rubygems.org/downloads/minitest-autotest-1.0.3.gem,rubygem-minitest-autotest,1.0.3
|
||||
https://rubygems.org/downloads/minitest-focus-1.1.2.gem,rubygem-minitest-focus,1.1.2
|
||||
https://rubygems.org/downloads/minitest-server-1.0.4.gem,rubygem-minitest-server,1.0.4
|
||||
https://rubygems.org/downloads/minitest_tu_shim-1.3.3.gem,rubygem-minitest_tu_shim,1.3.3
|
||||
https://rubygems.org/downloads/mocha-1.2.1.gem,rubygem-mocha,1.2.1
|
||||
https://rubygems.org/downloads/mongoid-6.0.2.gem,rubygem-mongoid,6.0.2
|
||||
https://rubygems.org/downloads/mongo_mapper-0.13.1.gem,rubygem-mongo_mapper,0.13.1
|
||||
https://rubygems.org/downloads/moped-2.0.7.gem,rubygem-moped,2.0.7
|
||||
https://rubygems.org/downloads/morecane-0.1.0.gem,rubygem-morecane,0.1.0
|
||||
https://rubygems.org/downloads/multi_json-1.12.1.gem,rubygem-multi_json,1.12.1
|
||||
https://rubygems.org/downloads/multipart-post-2.0.0.gem,rubygem-multipart-post,2.0.0
|
||||
https://rubygems.org/downloads/multi_test-0.1.2.gem,rubygem-multi_test,0.1.2
|
||||
https://rubygems.org/downloads/multi_xml-0.5.5.gem,rubygem-multi_xml,0.5.5
|
||||
https://rubygems.org/downloads/mustache-1.0.3.gem,rubygem-mustache,1.0.3
|
||||
https://rubygems.org/downloads/nanotest-0.9.4.1.gem,rubygem-nanotest,0.9.4.1
|
||||
https://rubygems.org/downloads/nenv-0.3.0.gem,rubygem-nenv,0.3.0
|
||||
https://rubygems.org/downloads/net-http-persistent-2.9.4.gem,rubygem-net-http-persistent,2.9.4
|
||||
https://rubygems.org/downloads/netrc-0.11.0.gem,rubygem-netrc,0.11.0
|
||||
https://rubygems.org/downloads/nokogiri-diff-0.2.0.gem,rubygem-nokogiri-diff,0.2.0
|
||||
https://rubygems.org/downloads/nokogumbo-1.4.2.gem,rubygem-nokogumbo,1.4.2
|
||||
https://rubygems.org/downloads/notiffany-0.1.1.gem,rubygem-notiffany,0.1.1
|
||||
https://rubygems.org/downloads/notify-0.5.2.gem,rubygem-notify,0.5.2
|
||||
https://rubygems.org/downloads/numerizer-0.2.0.gem,rubygem-numerizer,0.2.0
|
||||
https://rubygems.org/downloads/oauth2-1.2.0.gem,rubygem-oauth2,1.2.0
|
||||
https://rubygems.org/downloads/open4-1.3.4.gem,rubygem-open4,1.3.4
|
||||
https://rubygems.org/downloads/origin-2.2.2.gem,rubygem-origin,2.2.2
|
||||
https://rubygems.org/downloads/orm_adapter-0.5.0.gem,rubygem-orm_adapter,0.5.0
|
||||
https://rubygems.org/downloads/parallel-1.9.0.gem,rubygem-parallel,1.9.0
|
||||
https://rubygems.org/downloads/parser-2.3.1.4.gem,rubygem-parser,2.3.1.4
|
||||
https://rubygems.org/downloads/patron-0.4.18.gem,rubygem-patron,0.4.18
|
||||
https://rubygems.org/downloads/pdf-core-0.6.1.gem,rubygem-pdf-core,0.6.1
|
||||
https://rubygems.org/downloads/pdf-inspector-1.2.1.gem,rubygem-pdf-inspector,1.2.1
|
||||
https://rubygems.org/downloads/pdf-reader-1.4.0.gem,rubygem-pdf-reader,1.4.0
|
||||
https://rubygems.org/downloads/permutation-0.1.8.gem,rubygem-permutation,0.1.8
|
||||
https://rubygems.org/downloads/plucky-0.7.0.gem,rubygem-plucky,0.7.0
|
||||
https://rubygems.org/downloads/powerpack-0.1.1.gem,rubygem-powerpack,0.1.1
|
||||
https://rubygems.org/downloads/prawn-2.1.0.gem,rubygem-prawn,2.1.0
|
||||
https://rubygems.org/downloads/prawn-manual_builder-0.2.0.gem,rubygem-prawn-manual_builder,0.2.0
|
||||
https://rubygems.org/downloads/prawn-table-0.2.2.gem,rubygem-prawn-table,0.2.2
|
||||
https://rubygems.org/downloads/pry-0.10.4.gem,rubygem-pry,0.10.4
|
||||
https://rubygems.org/downloads/pry-doc-0.9.0.gem,rubygem-pry-doc,0.9.0
|
||||
https://rubygems.org/downloads/racc-1.4.14.gem,rubygem-racc,1.4.14
|
||||
https://rubygems.org/downloads/rack-2.0.1.gem,rubygem-rack,2.0.1
|
||||
https://rubygems.org/downloads/rack-protection-1.5.3.gem,rubygem-rack-protection,1.5.3
|
||||
https://rubygems.org/downloads/rack-test-0.6.3.gem,rubygem-rack-test,0.6.3
|
||||
https://rubygems.org/downloads/rails-5.0.0.1.gem,rubygem-rails,5.0.0.1
|
||||
https://rubygems.org/downloads/rails-deprecated_sanitizer-1.0.3.gem,rubygem-rails-deprecated_sanitizer,1.0.3
|
||||
https://rubygems.org/downloads/rails-html-sanitizer-1.0.3.gem,rubygem-rails-html-sanitizer,1.0.3
|
||||
https://rubygems.org/downloads/rainbow-2.1.0.gem,rubygem-rainbow,2.1.0
|
||||
https://rubygems.org/downloads/rake-compiler-1.0.1.gem,rubygem-rake-compiler,1.0.1
|
||||
https://rubygems.org/downloads/rake-compiler-dock-0.5.3.gem,rubygem-rake-compiler-dock,0.5.3
|
||||
https://rubygems.org/downloads/rbench-0.2.3.gem,rubygem-rbench,0.2.3
|
||||
https://rubygems.org/downloads/rb-inotify-0.9.7.gem,rubygem-rb-inotify,0.9.7
|
||||
https://rubygems.org/downloads/rdiscount-2.2.0.1.gem,rubygem-rdiscount,2.2.0.1
|
||||
https://rubygems.org/downloads/redcarpet-3.3.4.gem,rubygem-redcarpet,3.3.4
|
||||
https://rubygems.org/downloads/RedCloth-4.3.2.gem,rubygem-RedCloth,4.3.2
|
||||
https://rubygems.org/downloads/ref-2.0.0.gem,rubygem-ref,2.0.0
|
||||
https://rubygems.org/downloads/representable-3.0.0.gem,rubygem-representable,3.0.0
|
||||
https://rubygems.org/downloads/responders-2.3.0.gem,rubygem-responders,2.3.0
|
||||
https://rubygems.org/downloads/rest-client-1.8.0.gem,rubygem-rest-client,1.8.0
|
||||
https://rubygems.org/downloads/rexical-1.0.5.gem,rubygem-rexical,1.0.5
|
||||
https://rubygems.org/downloads/ritex-1.0.1.gem,rubygem-ritex,1.0.1
|
||||
https://rubygems.org/downloads/ronn-0.7.3.gem,rubygem-ronn,0.7.3
|
||||
https://rubygems.org/downloads/rouge-2.0.6.gem,rubygem-rouge,2.0.6
|
||||
https://rubygems.org/downloads/rspec-3.5.0.gem,rubygem-rspec,3.5.0
|
||||
https://rubygems.org/downloads/rspec-core-3.5.4.gem,rubygem-rspec-core,3.5.4
|
||||
https://rubygems.org/downloads/rspec-expectations-3.5.0.gem,rubygem-rspec-expectations,3.5.0
|
||||
https://rubygems.org/downloads/rspec-fire-1.3.0.gem,rubygem-rspec-fire,1.3.0
|
||||
https://rubygems.org/downloads/rspec-its-1.2.0.gem,rubygem-rspec-its,1.2.0
|
||||
https://rubygems.org/downloads/rspec-mocks-3.5.0.gem,rubygem-rspec-mocks,3.5.0
|
||||
https://rubygems.org/downloads/rspec-rails-3.5.2.gem,rubygem-rspec-rails,3.5.2
|
||||
https://rubygems.org/downloads/rspec-spies-2.1.4.gem,rubygem-rspec-spies,2.1.4
|
||||
https://rubygems.org/downloads/rspec-support-3.5.0.gem,rubygem-rspec-support,3.5.0
|
||||
https://rubygems.org/downloads/rspectacular-0.70.7.gem,rubygem-rspectacular,0.70.7
|
||||
https://rubygems.org/downloads/rubocop-0.44.1.gem,rubygem-rubocop,0.44.1
|
||||
https://rubygems.org/downloads/ruby-rc4-0.1.5.gem,rubygem-ruby,0.1.5
|
||||
https://rubygems.org/downloads/ruby-beautify-0.92.2.gem,rubygem-ruby-beautify,0.92.2
|
||||
https://rubygems.org/downloads/rubyforge-2.0.4.gem,rubygem-rubyforge,2.0.4
|
||||
https://rubygems.org/downloads/rubygems-tasks-0.2.4.gem,rubygem-rubygems-tasks,0.2.4
|
||||
https://rubygems.org/downloads/ruby-progressbar-1.8.1.gem,rubygem-ruby-progressbar,1.8.1
|
||||
https://rubygems.org/downloads/rubytest-0.8.1.gem,rubygem-rubytest,0.8.1
|
||||
https://rubygems.org/downloads/rubytest-cli-0.2.0.gem,rubygem-rubytest-cli,0.2.0
|
||||
https://rubygems.org/downloads/rubyzip-1.2.0.gem,rubygem-rubyzip,1.2.0
|
||||
https://rubygems.org/downloads/rulebow-0.4.0.gem,rubygem-rulebow,0.4.0
|
||||
https://rubygems.org/downloads/rvm-1.11.3.9.gem,rubygem-rvm,1.11.3.9
|
||||
https://rubygems.org/downloads/safe_yaml-1.0.4.gem,rubygem-safe_yaml,1.0.4
|
||||
https://rubygems.org/downloads/sanitize-4.0.0.gem,rubygem-sanitize,4.0.0
|
||||
https://rubygems.org/downloads/sass-rails-5.0.6.gem,rubygem-sass-rails,5.0.6
|
||||
https://rubygems.org/downloads/selenium-webdriver-3.0.0.gem,rubygem-selenium-webdriver,3.0.0
|
||||
https://rubygems.org/downloads/shellany-0.0.1.gem,rubygem-shellany,0.0.1
|
||||
https://rubygems.org/downloads/shindo-0.3.8.gem,rubygem-shindo,0.3.8
|
||||
https://rubygems.org/downloads/shoulda-3.5.0.gem,rubygem-shoulda,3.5.0
|
||||
https://rubygems.org/downloads/shoulda-context-1.2.1.gem,rubygem-shoulda-context,1.2.1
|
||||
https://rubygems.org/downloads/shoulda-matchers-3.1.1.gem,rubygem-shoulda-matchers,3.1.1
|
||||
https://rubygems.org/downloads/simplecov-0.12.0.gem,rubygem-simplecov,0.12.0
|
||||
https://rubygems.org/downloads/simplecov-html-0.10.0.gem,rubygem-simplecov-html,0.10.0
|
||||
https://rubygems.org/downloads/simplecov-json-0.2.gem,rubygem-simplecov-json,0.2
|
||||
https://rubygems.org/downloads/simplecov-sublime-ruby-coverage-1.0.0.gem,rubygem-simplecov-sublime-ruby-coverage,1.0.0
|
||||
https://rubygems.org/downloads/sinatra-1.4.7.gem,rubygem-sinatra,1.4.7
|
||||
https://rubygems.org/downloads/slim-3.0.7.gem,rubygem-slim,3.0.7
|
||||
https://rubygems.org/downloads/slop-4.4.1.gem,rubygem-slop,4.4.1
|
||||
https://rubygems.org/downloads/source_map-3.0.1.gem,rubygem-source_map,3.0.1
|
||||
https://rubygems.org/downloads/spec-5.3.4.gem,rubygem-spec,5.3.4
|
||||
https://rubygems.org/downloads/sprockets-3.7.0.gem,rubygem-sprockets,3.7.0
|
||||
https://rubygems.org/downloads/sprockets-rails-3.2.0.gem,rubygem-sprockets-rails,3.2.0
|
||||
https://rubygems.org/downloads/sqlite3-1.3.12.gem,rubygem-sqlite3,1.3.12
|
||||
https://rubygems.org/downloads/stringex-2.6.1.gem,rubygem-stringex,2.6.1
|
||||
https://rubygems.org/downloads/syntax-1.2.1.gem,rubygem-syntax,1.2.1
|
||||
https://rubygems.org/downloads/tdiff-0.3.3.gem,rubygem-tdiff,0.3.3
|
||||
https://rubygems.org/downloads/temple-0.7.7.gem,rubygem-temple,0.7.7
|
||||
https://rubygems.org/downloads/term-ansicolor-1.4.0.gem,rubygem-term-ansicolor,1.4.0
|
||||
https://rubygems.org/downloads/test-construct-1.2.2.gem,rubygem-test-construct,1.2.2
|
||||
https://rubygems.org/downloads/test_helper-0.0.1.gem,rubygem-test_helper,0.0.1
|
||||
https://rubygems.org/downloads/test_xml-0.1.7.gem,rubygem-test_xml,0.1.7
|
||||
https://rubygems.org/downloads/therubyracer-0.12.2.gem,rubygem-therubyracer,0.12.2
|
||||
https://rubygems.org/downloads/thor-0.19.1.gem,rubygem-thor,0.19.1
|
||||
https://rubygems.org/downloads/thoughtbot-shoulda-2.11.1.gem,rubygem-thoughtbot-shoulda,2.11.1
|
||||
https://rubygems.org/downloads/thread_order-1.1.0.gem,rubygem-thread_order,1.1.0
|
||||
https://rubygems.org/downloads/thread_safe-0.3.5.gem,rubygem-thread_safe,0.3.5
|
||||
https://rubygems.org/downloads/tidy-ext-0.1.14.gem,rubygem-tidy-ext,0.1.14
|
||||
https://rubygems.org/downloads/timecop-0.8.1.gem,rubygem-timecop,0.8.1
|
||||
https://rubygems.org/downloads/timers-4.1.1.gem,rubygem-timers,4.1.1
|
||||
https://rubygems.org/downloads/tins-1.12.0.gem,rubygem-tins,1.12.0
|
||||
https://rubygems.org/downloads/travis-lint-2.0.0.gem,rubygem-travis-lint,2.0.0
|
||||
https://rubygems.org/downloads/ttfunk-1.4.0.gem,rubygem-ttfunk,1.4.0
|
||||
https://rubygems.org/downloads/turn-0.9.7.gem,rubygem-turn,0.9.7
|
||||
https://rubygems.org/downloads/typhoeus-1.1.0.gem,rubygem-typhoeus,1.1.0
|
||||
https://rubygems.org/downloads/tzinfo-1.2.2.gem,rubygem-tzinfo,1.2.2
|
||||
https://rubygems.org/downloads/uber-0.0.15.gem,rubygem-uber,0.0.15
|
||||
https://rubygems.org/downloads/uglifier-3.0.2.gem,rubygem-uglifier,3.0.2
|
||||
https://rubygems.org/downloads/unf-0.1.4.gem,rubygem-unf,0.1.4
|
||||
https://rubygems.org/downloads/unf_ext-0.0.7.2.gem,rubygem-unf_ext,0.0.7.2
|
||||
https://rubygems.org/downloads/unindent-1.0.gem,rubygem-unindent,1.0
|
||||
https://rubygems.org/downloads/uuidtools-2.1.5.gem,rubygem-uuidtools,2.1.5
|
||||
https://rubygems.org/downloads/versionomy-0.5.0.gem,rubygem-versionomy,0.5.0
|
||||
https://rubygems.org/downloads/virtus-1.0.5.gem,rubygem-virtus,1.0.5
|
||||
https://rubygems.org/downloads/vulcan-0.8.2.gem,rubygem-vulcan,0.8.2
|
||||
https://rubygems.org/downloads/warden-1.2.6.gem,rubygem-warden,1.2.6
|
||||
https://rubygems.org/downloads/webmock-2.1.0.gem,rubygem-webmock,2.1.0
|
||||
https://rubygems.org/downloads/yard-0.8.7.6.gem,rubygem-yard,0.8.7.6
|
||||
https://rubygems.org/downloads/yui-compressor-0.12.0.gem,rubygem-yui-compressor,0.12.0
|
||||
https://rubygems.org/downloads/ZenTest-4.11.1.gem,rubygem-ZenTest,4.11.1
|
||||
https://github.com/clearcontainers/runtime/archive/3.0.2.tar.gz,runtime,3.0.2
|
||||
https://github.com/hyperhq/runv/archive/v0.5.0.tar.gz,runv,0.5.0
|
||||
https://static.rust-lang.org/dist/rustc-1.20.0-src.tar.gz,rustc,1.20.0
|
||||
|
||||
@@ -182,77 +182,6 @@ class TestBuildpattern(unittest.TestCase):
|
||||
self.assertIn('pypi(testpkg)', reqs.buildreqs)
|
||||
self.assertEqual(pkg.must_restart, 1)
|
||||
|
||||
def test_failed_pattern_ruby(self):
|
||||
"""
|
||||
Test failed_pattern with buildtool set to ruby, but no match in
|
||||
config.gems, it should just prepend 'rubygem-' to the package name.
|
||||
"""
|
||||
conf = config.Config('')
|
||||
reqs = buildreq.Requirements("")
|
||||
pkg = build.Build()
|
||||
pkg.failed_pattern('line to test for failure: testpkg.rb',
|
||||
conf,
|
||||
reqs,
|
||||
r'(testpkg)',
|
||||
0, # verbose=0
|
||||
buildtool='ruby')
|
||||
self.assertIn('rubygem-testpkg', reqs.buildreqs)
|
||||
self.assertEqual(pkg.must_restart, 1)
|
||||
|
||||
def test_failed_pattern_ruby_gem_match(self):
|
||||
"""
|
||||
Test failed_pattern with buildtool set to ruby and a match in
|
||||
config.gems. In the particular case of test/unit, the result should
|
||||
be rubygem-test-unit.
|
||||
"""
|
||||
conf = config.Config('')
|
||||
conf.setup_patterns()
|
||||
reqs = buildreq.Requirements("")
|
||||
pkg = build.Build()
|
||||
pkg.failed_pattern('line to test for failure: test/unit',
|
||||
conf,
|
||||
reqs,
|
||||
r'(test/unit)',
|
||||
0, # verbose=0
|
||||
buildtool='ruby')
|
||||
self.assertIn('rubygem-test-unit', reqs.buildreqs)
|
||||
self.assertEqual(pkg.must_restart, 1)
|
||||
|
||||
def test_failed_pattern_ruby_table(self):
|
||||
"""
|
||||
Test failed_pattern with buildtool set to ruby table and a match in
|
||||
config.gems
|
||||
"""
|
||||
conf = config.Config('')
|
||||
conf.setup_patterns()
|
||||
reqs = buildreq.Requirements("")
|
||||
pkg = build.Build()
|
||||
pkg.failed_pattern('line to test for failure: test/unit',
|
||||
conf,
|
||||
reqs,
|
||||
r'(test/unit)',
|
||||
0, # verbose=0
|
||||
buildtool='ruby table')
|
||||
self.assertIn('rubygem-test-unit', reqs.buildreqs)
|
||||
self.assertEqual(pkg.must_restart, 1)
|
||||
|
||||
def test_failed_pattern_ruby_table_no_match(self):
|
||||
"""
|
||||
Test failed_pattern with buildtool set to ruby table but no match in
|
||||
config.gems. This should not modify anything.
|
||||
"""
|
||||
conf = config.Config('')
|
||||
reqs = buildreq.Requirements("")
|
||||
pkg = build.Build()
|
||||
pkg.failed_pattern('line to test for failure: testpkg',
|
||||
conf,
|
||||
reqs,
|
||||
r'(testpkg)',
|
||||
0, # verbose=0
|
||||
buildtool='ruby table')
|
||||
self.assertEqual(reqs.buildreqs, set())
|
||||
self.assertEqual(pkg.must_restart, 0)
|
||||
|
||||
def test_parse_buildroot_log_fail(self):
|
||||
"""
|
||||
Test parse_buildroot_log with a test log indicating failure due to
|
||||
|
||||
+1
-100
@@ -201,104 +201,6 @@ class TestBuildreq(unittest.TestCase):
|
||||
'intltool',
|
||||
'sed']))
|
||||
|
||||
def test_parse_go_mod(self):
|
||||
"""
|
||||
Test parse_go_mod
|
||||
"""
|
||||
open_name = 'buildreq.open'
|
||||
content = """module example.com/foo/bar
|
||||
|
||||
require (
|
||||
github.com/example/foo v1.0.0
|
||||
git.apache.org/skip.git v0.0.0-20180101111111-barf0000000d
|
||||
github.com/redirect/bar v2.0.0 // indirect
|
||||
"github.com/quote/baz" v0.0.3
|
||||
"github.com/qdirect/raz" v1.0.3 // indirect
|
||||
)"""
|
||||
m_open = mock_open(read_data=content)
|
||||
with patch(open_name, m_open, create=True):
|
||||
result = buildreq.parse_go_mod('filename')
|
||||
self.assertEqual(len(result), 4)
|
||||
self.assertEqual(len(result[0]), 2)
|
||||
self.assertEqual(result[0][0], "github.com/example/foo")
|
||||
self.assertEqual(result[0][1], "v1.0.0")
|
||||
self.assertEqual(len(result[1]), 2)
|
||||
self.assertEqual(result[1][0], "github.com/redirect/bar")
|
||||
self.assertEqual(result[1][1], "v2.0.0")
|
||||
self.assertEqual(len(result[2]), 2)
|
||||
self.assertEqual(result[2][0], "github.com/quote/baz")
|
||||
self.assertEqual(result[2][1], "v0.0.3")
|
||||
self.assertEqual(len(result[3]), 2)
|
||||
self.assertEqual(result[3][0], "github.com/qdirect/raz")
|
||||
self.assertEqual(result[3][1], "v1.0.3")
|
||||
|
||||
def test_parse_cargo_toml(self):
|
||||
"""
|
||||
Test parse_cargo_toml
|
||||
"""
|
||||
def mock_loads(loadstr):
|
||||
return {'dependencies': ['dep1', 'dep2', 'dep3'], 'bin': True}
|
||||
|
||||
def mock_exists(path):
|
||||
return True
|
||||
|
||||
exists_backup = buildreq.os.path.exists
|
||||
loads_backup = buildreq.toml.loads
|
||||
|
||||
buildreq.os.path.exists = mock_exists
|
||||
buildreq.toml.loads = mock_loads
|
||||
|
||||
open_name = 'buildreq.util.open_auto'
|
||||
content = 'does not matter, let us mock'
|
||||
m_open = mock_open(read_data=content)
|
||||
conf = config.Config("")
|
||||
with patch(open_name, m_open, create=True):
|
||||
self.reqs.parse_cargo_toml('filename', conf)
|
||||
|
||||
buildreq.os.path.exists = exists_backup
|
||||
buildreq.toml.loads = loads_backup
|
||||
|
||||
self.assertEqual(self.reqs.buildreqs,
|
||||
set(['rustc', 'dep1', 'dep2', 'dep3']))
|
||||
self.assertTrue(self.reqs.cargo_bin)
|
||||
self.assertEqual(conf.default_pattern, 'cargo')
|
||||
|
||||
def test_set_build_req_ruby(self):
|
||||
"""
|
||||
Test set_build_req with default_pattern set to ruby.
|
||||
This is just a simple test for the inclusion of a single package, in
|
||||
case the overall package list changes in the future.
|
||||
"""
|
||||
conf = config.Config("")
|
||||
conf.default_pattern = "ruby"
|
||||
self.reqs.set_build_req(conf)
|
||||
self.assertIn('ruby', self.reqs.buildreqs)
|
||||
|
||||
def test_set_build_req_cargo(self):
|
||||
"""
|
||||
Test set_build_req with default_pattern set to cargo.
|
||||
This is just a simple test for the inclusion of a single package, in
|
||||
case the overall package list changes in the future.
|
||||
"""
|
||||
conf = config.Config("")
|
||||
conf.default_pattern = "cargo"
|
||||
self.reqs.set_build_req(conf)
|
||||
self.assertIn('rustc', self.reqs.buildreqs)
|
||||
|
||||
def test_rakefile(self):
|
||||
"""
|
||||
Test rakefile parsing with both configured gems and unconfigured gems
|
||||
"""
|
||||
conf = config.Config("")
|
||||
conf.setup_patterns()
|
||||
open_name = 'buildreq.util.open_auto'
|
||||
content = "line1\nrequire 'bundler/gem_tasks'\nline3\nrequire 'nope'"
|
||||
m_open = mock_open(read_data=content)
|
||||
with patch(open_name, m_open, create=True):
|
||||
self.reqs.rakefile('filename', conf.gems)
|
||||
|
||||
self.assertEqual(self.reqs.buildreqs, set(['rubygem-rubygems-tasks']))
|
||||
|
||||
@patch('buildreq.pypidata.get_pypi_name', get_pypi_name_wrapper)
|
||||
def test_clean_python_req(self):
|
||||
"""
|
||||
@@ -496,7 +398,6 @@ class TestBuildreq(unittest.TestCase):
|
||||
conf = config.Config("")
|
||||
with tempfile.TemporaryDirectory() as tmpd:
|
||||
os.mkdir(os.path.join(tmpd, 'subdir'))
|
||||
open(os.path.join(tmpd, 'subdir', 'test.go'), 'w').close()
|
||||
open(os.path.join(tmpd, 'setup.py'), 'w').close()
|
||||
open(os.path.join(tmpd, 'CMakeLists.txt'), 'w').close()
|
||||
open(os.path.join(tmpd, 'SConstruct'), 'w').close()
|
||||
@@ -505,7 +406,7 @@ class TestBuildreq(unittest.TestCase):
|
||||
self.reqs.scan_for_configure(tmpd, "", conf)
|
||||
|
||||
self.assertEqual(self.reqs.buildreqs,
|
||||
set(['buildreq-golang', 'buildreq-cmake', 'buildreq-scons', 'buildreq-distutils3', 'buildreq-meson']))
|
||||
set(['buildreq-cmake', 'buildreq-scons', 'buildreq-distutils3', 'buildreq-meson']))
|
||||
|
||||
def test_scan_for_configure_pypi(self):
|
||||
"""
|
||||
|
||||
@@ -10,7 +10,6 @@ BUILD_PAT_URL = [
|
||||
("https://pypi.python.org/packages/source/T/Tempita/Tempita-0.5.2.tar.gz", "distutils3"),
|
||||
("https://cpan.metacpan.org/authors/id/T/TO/TODDR/IO-Tty-1.14.tar.gz", "cpan"),
|
||||
("http://search.cpan.org/CPAN/authors/id/D/DS/DSKOLL/IO-stringy-2.111.tar.gz", "cpan"),
|
||||
("https://proxy.golang.org/github.com/spf13/pflag/@v/list", "godep"),
|
||||
("https://pecl.php.net//get/lua-2.0.6.tgz", "phpize"),
|
||||
]
|
||||
|
||||
|
||||
@@ -17,7 +17,6 @@ TESTKEYDIR = os.path.join(TESTDIR, "testkeys")
|
||||
PACKAGE_URL = "http://pkgconfig.freedesktop.org/releases/pkg-config-0.29.1.tar.gz"
|
||||
XATTR_PKT_URL = "http://pypi.debian.net/xattr/xattr-0.9.1.tar.gz"
|
||||
NO_SIGN_PKT_URL = "http://www.ferzkopp.net/Software/SDL_gfx-2.0/SDL_gfx-2.0.25.tar.gz"
|
||||
GEM_PKT = "https://rubygems.org/downloads/hoe-debugging-1.2.1.gem"
|
||||
NOSIGN_PKT_URL_BAD = "http://gnu.mirrors.pair.com/savannah/savannah/quagga/bad_quagga-1.1.0.tar.gz"
|
||||
NOSIGN_PKT_URL = "http://download.savannah.gnu.org/releases/quagga/quagga-1.1.0.tar.gz"
|
||||
NOSIGN_SIGN_URL = "http://download.savannah.gnu.org/releases/quagga/quagga-1.1.0.tar.gz.asc"
|
||||
@@ -131,50 +130,6 @@ class TestDomainBasedVerifiers(unittest.TestCase):
|
||||
self.assertTrue(result)
|
||||
|
||||
|
||||
@patch('download.do_curl', mock_download_do_curl)
|
||||
class TestGEMShaVerifier(unittest.TestCase):
|
||||
|
||||
def _mock_get_gem_info(pkg):
|
||||
info = '''
|
||||
[
|
||||
{
|
||||
"number": "2.0.0",
|
||||
"sha": "2ac86b58bd2d0b4164c6d82e6d46381c987c47b0eb76428fd6e616370af2cc67"
|
||||
},
|
||||
{
|
||||
"number": "1.2.1",
|
||||
"sha": "b391da81ea5efb96d648e69c852e386a269129f543e371c8db64ada80342ac5f"
|
||||
}
|
||||
]
|
||||
'''
|
||||
return json.loads(info)
|
||||
|
||||
@patch('pkg_integrity.GEMShaVerifier.get_rubygems_info', _mock_get_gem_info)
|
||||
def test_from_url(self):
|
||||
with tempfile.TemporaryDirectory() as tmpd:
|
||||
conf = config.Config(tmpd)
|
||||
conf.rewrite_config_opts = unittest.mock.Mock()
|
||||
conf.config_opts['verify_required'] = False
|
||||
filen = os.path.basename(GEM_PKT)
|
||||
shutil.copy(os.path.join(TESTDIR, filen), tmpd)
|
||||
result = pkg_integrity.check(GEM_PKT, conf)
|
||||
self.assertTrue(result)
|
||||
|
||||
@patch('pkg_integrity.GEMShaVerifier.get_rubygems_info', _mock_get_gem_info)
|
||||
def test_non_matchingsha(self):
|
||||
with tempfile.TemporaryDirectory() as tmpd:
|
||||
conf = config.Config(tmpd)
|
||||
conf.rewrite_config_opts = unittest.mock.Mock()
|
||||
conf.config_opts['verify_required'] = False
|
||||
out_file = os.path.join(tmpd, os.path.basename(GEM_PKT))
|
||||
f = open(out_file, 'wb')
|
||||
f.write(b'this is made up data that will force a failure')
|
||||
f.close()
|
||||
with self.assertRaises(SystemExit) as a:
|
||||
pkg_integrity.check(GEM_PKT, conf)
|
||||
self.assertEqual(a.exception.code, 1)
|
||||
|
||||
|
||||
@patch('download.do_curl', mock_download_do_curl)
|
||||
class TestGPGVerifier(unittest.TestCase):
|
||||
|
||||
@@ -370,12 +325,6 @@ class TestUtils(unittest.TestCase):
|
||||
)
|
||||
self.assertTrue(isinstance(y, pkg_integrity.GPGVerifier))
|
||||
|
||||
z = pkg_integrity.get_verifier('jeweler-2.1.1.gem')(
|
||||
package_path='',
|
||||
url='https://rubygems.org/downloads/jeweler-2.1.1.gem'
|
||||
)
|
||||
self.assertTrue(isinstance(z, pkg_integrity.GEMShaVerifier))
|
||||
|
||||
def test_parse_gpg_packets_for_keyid(self):
|
||||
"""Test parse_gpg_packets() to retrieve keyid info."""
|
||||
def check_packets(algo, key_id, packet_count, packet_with_val):
|
||||
|
||||
@@ -78,20 +78,16 @@ class TestSpecfileWrite(unittest.TestCase):
|
||||
self.specfile.config.sources["archive"] = ["archA", "archD", "archB", "archC"]
|
||||
self.specfile.config.sources["tmpfile"] = ["tmp1", "tmp2"]
|
||||
self.specfile.config.sources["gcov"] = ["pkg.gcov"]
|
||||
self.specfile.config.sources["godep"] = ["pkg.godep"]
|
||||
self.specfile.config.sources["version"] = ["pkg.oldver"]
|
||||
self.specfile.write_sources()
|
||||
expect = ["Source1 : archA\n",
|
||||
"Source2 : archB\n",
|
||||
"Source3 : archC\n",
|
||||
"Source4 : archD\n",
|
||||
"Source5 : pkg.gcov\n",
|
||||
"Source6 : pkg.godep\n",
|
||||
"Source7 : pkg.oldver\n",
|
||||
"Source8 : pkg1.service\n",
|
||||
"Source9 : pkg2.service\n",
|
||||
"Source10 : tmp1\n",
|
||||
"Source11 : tmp2\n"]
|
||||
"Source6 : pkg1.service\n",
|
||||
"Source7 : pkg2.service\n",
|
||||
"Source8 : tmp1\n",
|
||||
"Source9 : tmp2\n"]
|
||||
self.assertEqual(expect, self.WRITES)
|
||||
|
||||
def test_write_summary(self):
|
||||
|
||||
@@ -79,7 +79,6 @@ SRC_CREATION = [
|
||||
("https://example/src-prefix.tar", "", "/tmp/src-prefix.tar", CONTENT_PREFIX, "tar", "common-prefix", None),
|
||||
("https://example/src-subdir.tar", "", "/tmp/src-subdir.tar", CONTENT_SUBDIR, "tar", "", "src-subdir"),
|
||||
("https://example/src-no-extractable.tar", ":", "/tmp/src-no-extractable.tar", None, None, None, None),
|
||||
("https://example/go-src/list", "", "/tmp/list", None, "go", "", "list"),
|
||||
]
|
||||
|
||||
|
||||
@@ -214,66 +213,6 @@ class TestTarball(unittest.TestCase):
|
||||
self.content.set_gcov()
|
||||
self.assertEqual(self.content.gcov_file, 'test.gcov')
|
||||
|
||||
def test_set_multi_version_no_ver(self):
|
||||
versions = OrderedDict()
|
||||
self.content.config.parse_config_versions = lambda: versions
|
||||
self.content.config.default_pattern = ""
|
||||
latest = self.content.set_multi_version("")
|
||||
self.assertEqual(latest, "1")
|
||||
self.assertNotEqual(id(self.content.multi_version), id(versions))
|
||||
|
||||
def test_set_multi_version_with_ver(self):
|
||||
versions = OrderedDict()
|
||||
self.content.config.parse_config_versions = lambda: versions
|
||||
self.content.config.default_pattern = ""
|
||||
latest = self.content.set_multi_version("3")
|
||||
self.assertEqual(latest, "3")
|
||||
self.assertNotEqual(id(self.content.multi_version), id(versions))
|
||||
|
||||
def test_process_go_archives(self):
|
||||
"""Test for tarball.process_go_archives method."""
|
||||
# Set up input values
|
||||
self.content.url = 'https://proxy.golang.org/github.com/!burnt!sushi/toml/@v/list'
|
||||
self.content.multi_version = ['v0.3.1', 'v0.3.0', 'v0.2.0']
|
||||
go_archives = []
|
||||
go_archives_expected = [
|
||||
"https://proxy.golang.org/github.com/!burnt!sushi/toml/@v/v0.3.1.info", ":",
|
||||
"https://proxy.golang.org/github.com/!burnt!sushi/toml/@v/v0.3.1.mod", ":",
|
||||
"https://proxy.golang.org/github.com/!burnt!sushi/toml/@v/v0.3.1.zip", "",
|
||||
"https://proxy.golang.org/github.com/!burnt!sushi/toml/@v/v0.3.0.info", ":",
|
||||
"https://proxy.golang.org/github.com/!burnt!sushi/toml/@v/v0.3.0.mod", ":",
|
||||
"https://proxy.golang.org/github.com/!burnt!sushi/toml/@v/v0.3.0.zip", "",
|
||||
"https://proxy.golang.org/github.com/!burnt!sushi/toml/@v/v0.2.0.info", ":",
|
||||
"https://proxy.golang.org/github.com/!burnt!sushi/toml/@v/v0.2.0.mod", ":",
|
||||
"https://proxy.golang.org/github.com/!burnt!sushi/toml/@v/v0.2.0.zip", "",
|
||||
]
|
||||
self.content.process_go_archives(go_archives)
|
||||
self.assertEqual(go_archives, go_archives_expected)
|
||||
|
||||
def test_process_multiver_archives(self):
|
||||
"""Test for tarball.process_multiver_archives method."""
|
||||
# Set up input values
|
||||
main_src = tarball.Source('https://example/src-5.0.tar', ':', '/tmp/src.tar')
|
||||
multiver_archives = []
|
||||
config_versions = {
|
||||
'5.0': 'https://example/src-5.0.tar',
|
||||
'4.0': 'https://example/src-4.0.tar',
|
||||
'3.5': 'https://example/src-3.5.tar',
|
||||
'3.0': 'https://example/src-3.0.tar',
|
||||
}
|
||||
expected_multiver_archives = [
|
||||
'https://example/src-4.0.tar', '',
|
||||
'https://example/src-3.5.tar', '',
|
||||
'https://example/src-3.0.tar', '',
|
||||
]
|
||||
# Set up a return value for parse_config_versions method
|
||||
attrs = {'parse_config_versions.return_value': config_versions}
|
||||
conf = MagicMock()
|
||||
conf.configure_mock(**attrs)
|
||||
self.content.config = conf
|
||||
self.content.process_multiver_archives(main_src, multiver_archives)
|
||||
self.assertEqual(multiver_archives, expected_multiver_archives)
|
||||
|
||||
@patch('tarball.Source.set_prefix', Mock())
|
||||
@patch('tarball.Source.extract', Mock())
|
||||
def test_extract_sources(self):
|
||||
|
||||
Reference in New Issue
Block a user