diff --git a/bob/devtools/bootstrap.py b/bob/devtools/bootstrap.py index ab937ef6f43d614479c3289c1f7cbf83d5689ea2..bf072a285eee6f497a557d98f5dd15180565e267 100644 --- a/bob/devtools/bootstrap.py +++ b/bob/devtools/bootstrap.py @@ -45,6 +45,43 @@ import logging logger = logging.getLogger(__name__) +def do_hack(project_dir): + """ + This function is supposed to be for temporary usage. + + It implements hacks for the issues: https://gitlab.idiap.ch/bob/bob.devtools/merge_requests/112 + and https://github.com/conda/conda-build/issues/3767) + + """ + + #### HACK to avoid ripgrep ignoring bin/ directories in our checkouts + import shutil + git_ignore_file = os.path.join(project_dir, '.gitignore') + if os.path.exists(git_ignore_file): + logger.warn('Removing ".gitignore" to overcome issues with ripgrep') + logger.warn('See https://gitlab.idiap.ch/bob/bob.devtools/merge_requests/112') + os.unlink(git_ignore_file) + #### END OF HACK + + #### HACK that avoids this issue: https://github.com/conda/conda-build/issues/3767 + license_file = os.path.join(project_dir, 'LICENSE') + recipe_dir = os.path.join(project_dir, 'conda') + if os.path.exists(license_file) and os.path.exists(recipe_dir): + logger.warn('Copying LICENSE file to `./conda` dir to avoid issue with conda build (https://github.com/conda/conda-build/issues/3767)') + logger.warn('Replacing ../LICENSE to LICENSE (https://github.com/conda/conda-build/issues/3767)') + shutil.copyfile(license_file, os.path.join(recipe_dir,"LICENSE")) + + # Checking COPYING file just in case + copying_file = os.path.join(project_dir, 'COPYING') + if(os.path.exists(copying_file)): + shutil.copyfile(copying_file, os.path.join(recipe_dir,"COPYING")) + meta_file = os.path.join(recipe_dir,"meta.yaml") + recipe = open(meta_file).readlines() + recipe = [l.replace("../COPYING","COPYING").replace("../LICENSE","LICENSE") for l in recipe] + open(meta_file, "wt").write(''.join(recipe)) + #### END OF HACK + + def set_environment(name, value, env=os.environ): """Function to setup the environment variable and print debug message. @@ -431,28 +468,9 @@ if __name__ == "__main__": setup_logger(logger, args.verbose) - #### HACK to avoid ripgrep ignoring bin/ directories in our checkouts - if os.path.exists('.gitignore'): - logger.warn('Removing ".gitignore" to overcome issues with ripgrep') - logger.warn('See https://gitlab.idiap.ch/bob/bob.devtools/merge_requests/112') - os.unlink('.gitignore') - #### END OF HACK - - #### HACK that avoids this issue: https://github.com/conda/conda-build/issues/3767 - if os.path.exists('LICENSE') and os.path.exists('conda'): - logger.warn('Creating symlink in `./conda` to avoid issue with conda build (https://github.com/conda/conda-build/issues/3767)') - logger.warn('Replacing ../LICENSE to LICENSE (https://github.com/conda/conda-build/issues/3767)') - pwd = os.path.abspath(os.curdir) - os.symlink(f"{pwd}/LICENSE", f"{pwd}/conda/LICENSE") - if(os.path.exists('COPYING')): - os.symlink(f"{pwd}/COPYING", f"{pwd}/conda/COPYING") - recipe = open("./conda/meta.yaml").readlines() - recipe = [l.replace("../COPYING","COPYING").replace("../LICENSE","LICENSE") for l in recipe] - open("./conda/meta.yaml", "wt").write(''.join(recipe)) - - - - #### END OF HACK + # Run conda-build hacks + # TODO: Remove this hack as soon as possible + do_hack(".") condarc = os.path.join(args.conda_root, "condarc") diff --git a/bob/devtools/scripts/build.py b/bob/devtools/scripts/build.py index 8b7bb10247f6d37a63ba47aae5de8528cdf11ba6..263b98f58838f49e36e32f94a77e0dd924a4c584 100644 --- a/bob/devtools/scripts/build.py +++ b/bob/devtools/scripts/build.py @@ -178,29 +178,11 @@ def build( ) #### HACK to avoid ripgrep ignoring bin/ directories in our checkouts + # TODO: Remove this hack as soon as possible + from bob.devtools.bootstrap import do_hack project_dir = os.path.dirname(recipe_dir[0]) - import shutil - if os.path.exists(os.path.join(project_dir, '.gitignore')): - logger.warn('Removing ".gitignore" to overcome issues with ripgrep') - logger.warn('See https://gitlab.idiap.ch/bob/bob.devtools/merge_requests/112') - os.unlink(os.path.join(project_dir, '.gitignore')) - #### END OF HACK - - #### HACK that avoids this issue: https://github.com/conda/conda-build/issues/3767 - if os.path.exists(os.path.join(project_dir,'LICENSE')) and os.path.exists(recipe_dir[0]): - logger.warn('Creating symlink in `./conda` to avoid issue with conda build (https://github.com/conda/conda-build/issues/3767)') - logger.warn('Replacing ../LICENSE to LICENSE (https://github.com/conda/conda-build/issues/3767)') - pwd = project_dir - - # WE NEED TO COPY. FOR SOME REASON SYMLINK DOESN'T WORK IN THIS CASE - shutil.copyfile(f"{pwd}/LICENSE", f"{pwd}/conda/LICENSE") - if(os.path.exists(os.path.join(project_dir,'COPYING'))): - shutil.copyfile(f"{pwd}/COPYING", f"{pwd}/conda/COPYING") - recipe = open(os.path.join(recipe_dir[0],"meta.yaml")).readlines() - recipe = [l.replace("../COPYING","COPYING").replace("../LICENSE","LICENSE") for l in recipe] - open(os.path.join(recipe_dir[0],"meta.yaml"), "wt").write(''.join(recipe)) - - #### END OF HACK + do_hack(project_dir) + # get potential channel upload and other auxiliary channels channels = get_channels(