Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions genquery.py
Original file line number Diff line number Diff line change
Expand Up @@ -267,8 +267,11 @@ def total_rows(self):
# So instead, we run the query twice manually. This should
# perform only slightly worse.
# [1]: https://github.com/irods/irods/blob/4.2.6/plugins/database/src/general_query.cpp#L2393
self._total = Query(self.callback, self.columns, self.conditions, limit=0,
options=self.options|Option.RETURN_TOTAL_ROW_COUNT).total_rows()
# Preserve query attributes such as case_sensitive when
# issuing the recount query.
self._total = self.copy(offset=0,
limit=0,
options=self.options | Option.RETURN_TOTAL_ROW_COUNT).total_rows()

return self._total

Expand Down
48 changes: 31 additions & 17 deletions irods_consortium_continuous_integration_build_hook.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
from __future__ import print_function

import argparse
import glob
import multiprocessing
import optparse
import os
import shutil
import subprocess
Expand Down Expand Up @@ -58,12 +56,15 @@ def install_building_dependencies(externals_directory):
add_cmake_to_front_of_path()
install_os_specific_dependencies()


def install_os_specific_dependencies_apt():
irods_python_ci_utilities.install_os_packages(['make', 'python3-dev', 'libssl-dev', 'gcc'])


def install_os_specific_dependencies_yum():
irods_python_ci_utilities.install_os_packages(['make', 'gcc', 'python3-devel', 'openssl-devel'])


def install_os_specific_dependencies():
dispatch_map = {
'Ubuntu': install_os_specific_dependencies_apt,
Expand All @@ -78,31 +79,44 @@ def install_os_specific_dependencies():
except KeyError:
irods_python_ci_utilities.raise_not_implemented_for_distribution()


def copy_output_packages(build_directory, output_root_directory):
irods_python_ci_utilities.gather_files_satisfying_predicate(
build_directory,
irods_python_ci_utilities.append_os_specific_directory(output_root_directory),
lambda s:s.endswith(irods_python_ci_utilities.get_package_suffix()))

def main(build_directory, output_root_directory, irods_packages_root_directory, externals_directory):

def main(build_directory, output_root_directory, irods_packages_root_directory, externals_directory, irods_package_version, debug_build=False):
install_building_dependencies(externals_directory)
if irods_packages_root_directory:
if irods_package_version is not None:
irods_python_ci_utilities.install_irods_packages_repository()
irods_python_ci_utilities.install_released_irods_dev_and_runtime_packages(irods_package_version)
elif irods_packages_root_directory:
irods_python_ci_utilities.install_irods_dev_and_runtime_packages(irods_packages_root_directory)
build_directory = os.path.abspath(build_directory or tempfile.mkdtemp(prefix='irods_python_rule_engine_plugin_build_directory'))
irods_python_ci_utilities.subprocess_get_output(['cmake', os.path.dirname(os.path.realpath(__file__))], check_rc=True, cwd=build_directory)
build_type = 'Debug' if debug_build else 'Release'
cmake_command = ['cmake', f'-DCMAKE_BUILD_TYPE={build_type}', os.path.dirname(os.path.realpath(__file__))]
print(cmake_command)
irods_python_ci_utilities.subprocess_get_output(cmake_command, check_rc=True, cwd=build_directory)
irods_python_ci_utilities.subprocess_get_output(['make', '-j', str(multiprocessing.cpu_count()), 'package'], check_rc=True, cwd=build_directory)
if output_root_directory:
copy_output_packages(build_directory, output_root_directory)


if __name__ == '__main__':
parser = optparse.OptionParser()
parser.add_option('--build_directory')
parser.add_option('--output_root_directory')
parser.add_option('--irods_packages_root_directory')
parser.add_option('--externals_packages_directory')
options, _ = parser.parse_args()

main(options.build_directory,
options.output_root_directory,
options.irods_packages_root_directory,
options.externals_packages_directory)
parser = argparse.ArgumentParser(description='Build python rule engine plugin.')
parser.add_argument('--build_directory')
parser.add_argument('--output_root_directory')
parser.add_argument('--irods_packages_root_directory')
parser.add_argument('--externals_packages_directory')
parser.add_argument('--irods_package_version')
parser.add_argument('--debug_build', action='store_true')
args = parser.parse_args()

main(args.build_directory,
args.output_root_directory,
args.irods_packages_root_directory,
args.externals_packages_directory,
args.irods_package_version,
args.debug_build)
2 changes: 1 addition & 1 deletion src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ const std::string STRING_VALUE_KEY = "STRING_VALUE_KEY";
const std::string IRODS_ERROR_PREFIX = "[iRods__Error__Code:";

const std::string STATIC_PEP_RULE_REGEX = "ac[^ ]*";
const std::string DYNAMIC_PEP_RULE_REGEX = "[^ ]*pep_[^ ]*_(pre|post)";
const std::string DYNAMIC_PEP_RULE_REGEX = "[^ ]*pep_[^ ]*_(pre|post|except|finally)";

namespace bp = boost::python;

Expand Down
Loading