diff --git a/debian/CTDConverter.help2man b/debian/CTDConverter.help2man new file mode 100644 index 0000000..2444f4e --- /dev/null +++ b/debian/CTDConverter.help2man @@ -0,0 +1,3 @@ +[NAME] +CTDConverter - Convert CTD files into Galaxy tool and CWL CommandLineTool files + diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..e467ba5 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,5 @@ +ctdconverter (2.0-1) UNRELEASED; urgency=medium + + * Initial release. (Closes: #890755) + + -- Michael R. Crusoe Sun, 18 Feb 2018 02:17:55 -0800 diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000..b4de394 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +11 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..0f2eb28 --- /dev/null +++ b/debian/control @@ -0,0 +1,31 @@ +Source: ctdconverter +Section: science +Priority: optional +Maintainer: Debian Med Packaging Team +Uploaders: Michael R. Crusoe +Build-Depends: debhelper (>= 11), + dh-python, + python3, + python3-setuptools, + python3-lxml, + python3-ruamel.yaml, + python3-ctdopts, + help2man +Standards-Version: 4.1.3 +Vcs-Browser: https://anonscm.debian.org/cgit/debian-med/ctdconverter.git +Vcs-Git: https://anonscm.debian.org/git/debian-med/ctdconverter.git +Homepage: https://github.com/WorkflowConversion/CTDConverter +X-Python-Version: >= 2.6 +X-Python3-Version: >= 3.2 + +Package: ctdconverter +Architecture: all +Depends: ${python3:Depends}, ${misc:Depends} +Suggests: cwl-runner +Description: Convert CTD files into Galaxy tool and CWL CommandLineTool files + Common Tool Descriptors (CTDs) are XML documents that represent the inputs, + outputs, parameters of command line tools in a platform-independent way. + . + CTDConverter, given one or more Common Tool Descriptors (CTD) XML files, + generates Galaxy tool wrappers and Common Workflow Language (CWL) Command + Line Tool v1.0 standard descriptions from CTD files. diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..dddc273 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,45 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: CTDConverter +Source: https://github.com/WorkflowConversion/CTDConverter/ + +Files: * +Copyright: © WorkflowConversion +License: GPL-3+ + +Files: convert.py +Copyright: © WorkflowConversion +License: Apache-2.0 + +Files: debian/* +Copyright: © 2018 Michael R. Crusoe +License: GPL-3+ + +License: GPL-3+ + This package is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + . + This package 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. + . + On Debian systems, the complete text of the GNU General + Public License version 3 can be found in "/usr/share/common-licenses/GPL-3". + +License: Apache-2.0 + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + . + http://www.apache.org/licenses/LICENSE-2.0 + . + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + . + On Debian systems, the full text of the Apache License, Version 2.0 can be + found in the file `/usr/share/common-licenses/Apache-2.0' diff --git a/debian/manpages b/debian/manpages new file mode 100644 index 0000000..e236c1b --- /dev/null +++ b/debian/manpages @@ -0,0 +1 @@ +debian/CTDConverter.1 diff --git a/debian/patches/add_setup.py.patch b/debian/patches/add_setup.py.patch new file mode 100644 index 0000000..b27e7fa --- /dev/null +++ b/debian/patches/add_setup.py.patch @@ -0,0 +1,194 @@ +From: Michael R. Crusoe +Subject: Add setup.py +--- ctdconverter.orig/convert.py ++++ ctdconverter/convert.py +@@ -8,7 +8,7 @@ + from common.exceptions import ApplicationException, ModelError + + __all__ = [] +-__version__ = 2.0 ++__version__ = '2.0' + __date__ = '2014-09-17' + __updated__ = '2017-08-09' + +@@ -269,4 +269,4 @@ + + + if __name__ == "__main__": +- sys.exit(main()) +\ No newline at end of file ++ sys.exit(main()) +--- /dev/null ++++ ctdconverter/setup.py +@@ -0,0 +1,171 @@ ++"""A setuptools based setup module. ++ ++See: ++https://packaging.python.org/en/latest/distributing.html ++https://github.com/pypa/sampleproject ++""" ++ ++# Always prefer setuptools over distutils ++from setuptools import setup, find_packages ++# To use a consistent encoding ++from codecs import open ++from os import path ++import re ++ ++here = path.abspath(path.dirname(__file__)) ++ ++# Get the long description from the README file ++with open(path.join(here, 'README.md'), encoding='utf-8') as f: ++ long_description = f.read() ++ ++def read(*parts): ++ with open(path.join(here, *parts), 'r') as fp: ++ return fp.read() ++ ++def find_version(*file_paths): ++ version_file = read(*file_paths) ++ version_match = re.search(r"^__version__ = ['\"]([^'\"]*)['\"]", ++ version_file, re.M) ++ if version_match: ++ return version_match.group(1) ++ raise RuntimeError("Unable to find version string.") ++ ++# Arguments marked as "Required" below must be included for upload to PyPI. ++# Fields marked as "Optional" may be commented out. ++ ++setup( ++ # This is the name of your project. The first time you publish this ++ # package, this name will be registered for you. It will determine how ++ # users can install this project, e.g.: ++ # ++ # $ pip install sampleproject ++ # ++ # And where it will live on PyPI: https://pypi.org/project/sampleproject/ ++ name='ctdconverter', # Required ++ ++ # Versions should comply with PEP 440: ++ # https://www.python.org/dev/peps/pep-0440/ ++ # ++ # For a discussion on single-sourcing the version across setup.py and the ++ # project code, see ++ # https://packaging.python.org/en/latest/single_source_version.html ++ version=find_version("convert.py"), # Required ++ ++ # This is a one-line description or tagline of what your project does. This ++ # corresponds to the "Summary" metadata field: ++ # https://packaging.python.org/specifications/core-metadata/#summary ++ description='Convert CTD files into Galaxy tool and CWL CommandLineTool files', # Required ++ ++ # This is an optional longer description of your project that represents ++ # the body of text which users will see when they visit PyPI. ++ # ++ # Often, this is the same as your README, so you can just read it in from ++ # that file directly (as we have already done above) ++ # ++ # This field corresponds to the "Description" metadata field: ++ # https://packaging.python.org/specifications/core-metadata/#description-optional ++ long_description=long_description, # Optional ++ ++ # This should be a valid link to your project's main homepage. ++ # ++ # This field corresponds to the "Home-Page" metadata field: ++ # https://packaging.python.org/specifications/core-metadata/#home-page-optional ++ url='https://github.com/WorkflowConversion/CTDConverter', # Optional ++ ++ # This should be your name or the name of the organization which owns the ++ # project. ++ author='The WorkflowConversion team', # Optional ++ ++ # This should be a valid email address corresponding to the author listed ++ # above. ++ # author_email='authors@example.com', # Optional ++ ++ # Classifiers help users find your project by categorizing it. ++ # ++ # For a list of valid classifiers, see ++ # https://pypi.python.org/pypi?%3Aaction=list_classifiers ++ classifiers=[ # Optional ++ # How mature is this project? Common values are ++ # 3 - Alpha ++ # 4 - Beta ++ # 5 - Production/Stable ++ 'Development Status :: 3 - Alpha', ++ ++ # Indicate who your project is intended for ++ 'Intended Audience :: Developers', ++ 'Topic :: Software Development :: Build Tools', ++ ++ 'License :: OSI Approved :: GNU General Public License v3 (GPLv3)', ++ 'License :: OSI Approved :: Apache Software License', ++ ++ # Specify the Python versions you support here. In particular, ensure ++ # that you indicate whether you support Python 2, Python 3 or both. ++ 'Programming Language :: Python :: 2', ++ 'Programming Language :: Python :: 2.7', ++ 'Programming Language :: Python :: 3', ++ 'Programming Language :: Python :: 3.4', ++ 'Programming Language :: Python :: 3.5', ++ 'Programming Language :: Python :: 3.6', ++ ], ++ ++ # This field adds keywords for your project which will appear on the ++ # project page. What does your project relate to? ++ # ++ # Note that this is a string of words separated by whitespace, not a list. ++ keywords='CTD CWL CommonWL Galaxy Workflows WorkflowConversion', # Optional ++ ++ # You can just specify package directories manually here if your project is ++ # simple. Or you can use find_packages(). ++ # ++ # Alternatively, if you just want to distribute a single Python file, use ++ # the `py_modules` argument instead as follows, which will expect a file ++ # called `my_module.py` to exist: ++ # ++ py_modules=["convert"], ++ # ++ packages=find_packages(exclude=['contrib', 'docs', 'tests']), # Required ++ ++ # This field lists other packages that your project depends on to run. ++ # Any package you put here will be installed by pip when your project is ++ # installed, so they must be valid existing projects. ++ # ++ # For an analysis of "install_requires" vs pip's requirements files see: ++ # https://packaging.python.org/en/latest/requirements.html ++ install_requires=['lxml', 'ruamel.yaml'], # Optional ++ # install_requires=['lxml', 'ctdopts'], # Optional ++ ++ # List additional groups of dependencies here (e.g. development ++ # dependencies). Users will be able to install these using the "extras" ++ # syntax, for example: ++ # ++ # $ pip install sampleproject[dev] ++ # ++ # Similar to `install_requires` above, these must be valid existing ++ # projects. ++ # extras_require={ # Optional ++ # 'dev': ['check-manifest'], ++ # 'test': ['coverage'], ++ # }, ++ ++ # If there are data files included in your packages that need to be ++ # installed, specify them here. ++ # ++ # If using Python 2.6 or earlier, then these have to be included in ++ # MANIFEST.in as well. ++ package_data={ # Optional ++ 'ctdconverter': ['galaxy/macros.xml'], ++ }, ++ ++ # To provide executable scripts, use entry points in preference to the ++ # "scripts" keyword. Entry points provide cross-platform support and allow ++ # `pip` to create the appropriate form of executable for the target ++ # platform. ++ # ++ # For example, the following would provide a command called `sample` which ++ # executes the function `main` from this package when invoked: ++ entry_points={ # Optional ++ 'console_scripts': [ ++ 'CTDConverter=convert:main', ++ ], ++ }, ++) diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 0000000..8b00858 --- /dev/null +++ b/debian/patches/series @@ -0,0 +1,2 @@ +add_setup.py.patch +upgrade_deprecated_strip diff --git a/debian/patches/upgrade_deprecated_strip b/debian/patches/upgrade_deprecated_strip new file mode 100644 index 0000000..d39b370 --- /dev/null +++ b/debian/patches/upgrade_deprecated_strip @@ -0,0 +1,27 @@ +From: Michael R. Crusoe +Subject: Upgrade deprecated using of string.strip() +--- ctdconverter.orig/common/utils.py ++++ ctdconverter/common/utils.py +@@ -4,8 +4,7 @@ + import os + + from lxml import etree +-from string import strip +-from logger import info, error, warning ++from logger import info, error, warning + + from common.exceptions import ApplicationException + from CTDopts.CTDopts import CTDModel, ParameterGroup +@@ -73,9 +72,9 @@ + if member_value is not None: + if isinstance(member_value, list): + for file_name in member_value: +- paths_to_check.append(strip(str(file_name))) ++ paths_to_check.append(str(file_name).strip()) + else: +- paths_to_check.append(strip(str(member_value))) ++ paths_to_check.append(str(member_value).strip()) + + for path_to_check in paths_to_check: + validate_path_exists(path_to_check) + diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..edf81b2 --- /dev/null +++ b/debian/rules @@ -0,0 +1,32 @@ +#!/usr/bin/make -f + +# DH_VERBOSE := 1 +export LC_ALL=C.UTF-8 +export PYBUILD_NAME = ctdconverter + +include /usr/share/dpkg/default.mk +# this provides: +# DEB_SOURCE: the source package name +# DEB_VERSION: the full version of the package (epoch + upstream vers. + revision) +# DEB_VERSION_EPOCH_UPSTREAM: the package's version without the Debian revision +# DEB_VERSION_UPSTREAM_REVISION: the package's version without the Debian epoch +# DEB_VERSION_UPSTREAM: the package's upstream version +# DEB_DISTRIBUTION: the distribution(s) listed in the current entry of debian/changelog + +# for hardening you might like to uncomment this: +# export DEB_BUILD_MAINT_OPTIONS=hardening=+all + +%: + dh $@ --with python3 --buildsystem=pybuild + +override_dh_auto_build: + 2to3 --write --nobackups convert.py galaxy/ cwl/ common/ + dh_auto_build + +debian/CTDConverter.1: debian/rules debian/CTDConverter.help2man + help2man 'python3 convert.py' --include=debian/CTDConverter.help2man \ + --no-info --version-string="$(DEB_VERSION_UPSTREAM)" \ + --output=debian/CTDConverter.1 + +override_dh_installman: debian/CTDConverter.1 + dh_installman diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000..163aaf8 --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (quilt) diff --git a/debian/tests/control b/debian/tests/control new file mode 100644 index 0000000..d2aa55a --- /dev/null +++ b/debian/tests/control @@ -0,0 +1,3 @@ +Tests: run-unit-test +Depends: @ +Restrictions: allow-stderr diff --git a/debian/tests/run-unit-test b/debian/tests/run-unit-test new file mode 100644 index 0000000..d94c156 --- /dev/null +++ b/debian/tests/run-unit-test @@ -0,0 +1,15 @@ +#!/bin/bash +set -e + +pkg=#PACKAGENAME# + +if [ "$AUTOPKGTEST_TMP" = "" ] ; then + AUTOPKGTEST_TMP=`mktemp -d /tmp/${pkg}-test.XXXXXX` + trap "rm -rf $AUTOPKGTEST_TMP" 0 INT QUIT ABRT PIPE TERM +fi + +cp -a /usr/share/doc/${pkg}/examples/* $AUTOPKGTEST_TMP + +cd $AUTOPKGTEST_TMP + +#do_stuff_to_test_package# diff --git a/debian/upstream/metadata b/debian/upstream/metadata new file mode 100644 index 0000000..d8b5812 --- /dev/null +++ b/debian/upstream/metadata @@ -0,0 +1,12 @@ +Reference: + Author: + Title: + Journal: + Year: + Volume: + Number: + Pages: + DOI: + PMID: + URL: + eprint: diff --git a/debian/watch b/debian/watch new file mode 100644 index 0000000..8181b7b --- /dev/null +++ b/debian/watch @@ -0,0 +1,19 @@ +version=4 +# Uncomment to find new files on Github +# - when using releases: +https://github.com/WorkflowConversion/CTDConverter/releases .*/archive/v?@ANY_VERSION@@ARCHIVE_EXT@ +# - when using tags +# https://github.com/#GITHUBUSER#/#PACKAGE#/tags .*/#PREFIX#@ANY_VERSION@@ARCHIVE_EXT@ +# Remark: frequently you can do s/#PREFIX#/v?/ since 'v' or nothing is quite common but there are other prefixes possible + +# if tweaking of source is needed +# \ +# debian debian/get-orig-source + +# if you need to repack and choose +dfsg prefix +# opts="repacksuffix=+dfsg,dversionmangle=s/\+dfsg//g,repack,compression=xz" \ + +# See also +# https://people.debian.org/~osamu/uscan.html +# +