From 4d929f955f8ec6ab0eba7987fd4cd2a418ddb135 Mon Sep 17 00:00:00 2001 From: "Travis-CI on github.com/conda-forge/staged-recipes" Date: Thu, 27 Jun 2019 14:17:20 +0000 Subject: [PATCH] Re-render the feedstock after CI registration. --- .azure-pipelines/azure-pipelines-linux.yml | 31 ++++++ .azure-pipelines/build_steps.sh | 39 +++++++ .azure-pipelines/run_docker_build.sh | 73 +++++++++++++ .ci_support/README | 1 + .ci_support/linux_.yaml | 6 ++ .circleci/config.yml | 24 +++++ .gitattributes | 7 ++ .github/CODEOWNERS | 1 + .github/CONTRIBUTING.md | 15 +++ .github/ISSUE_TEMPLATE.md | 25 +++++ .github/PULL_REQUEST_TEMPLATE.md | 18 ++++ .gitignore | 3 + LICENSE.txt | 13 +++ README.md | 120 +++++++++++++++++++++ azure-pipelines.yml | 6 ++ build-locally.py | 58 ++++++++++ conda-forge.yml | 7 +- 17 files changed, 446 insertions(+), 1 deletion(-) create mode 100755 .azure-pipelines/azure-pipelines-linux.yml create mode 100755 .azure-pipelines/build_steps.sh create mode 100755 .azure-pipelines/run_docker_build.sh create mode 100644 .ci_support/README create mode 100644 .ci_support/linux_.yaml create mode 100644 .circleci/config.yml create mode 100644 .gitattributes create mode 100644 .github/CODEOWNERS create mode 100644 .github/CONTRIBUTING.md create mode 100644 .github/ISSUE_TEMPLATE.md create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .gitignore create mode 100644 LICENSE.txt create mode 100644 README.md create mode 100644 azure-pipelines.yml create mode 100755 build-locally.py diff --git a/.azure-pipelines/azure-pipelines-linux.yml b/.azure-pipelines/azure-pipelines-linux.yml new file mode 100755 index 0000000..89af458 --- /dev/null +++ b/.azure-pipelines/azure-pipelines-linux.yml @@ -0,0 +1,31 @@ +# This file was generated automatically from conda-smithy. To update this configuration, +# update the conda-forge.yml and/or the recipe/meta.yaml. +# -*- mode: yaml -*- + +jobs: +- job: linux + pool: + vmImage: ubuntu-16.04 + timeoutInMinutes: 360 + strategy: + maxParallel: 8 + matrix: + linux_: + CONFIG: linux_ + UPLOAD_PACKAGES: True + DOCKER_IMAGE: condaforge/linux-anvil-comp7 + steps: + # configure qemu binfmt-misc running. This allows us to run docker containers + # embedded qemu-static + - script: | + docker run --rm --privileged multiarch/qemu-user-static:register --reset --credential yes + ls /proc/sys/fs/binfmt_misc/ + condition: not(startsWith(variables['CONFIG'], 'linux_64')) + displayName: Configure binfmt_misc + + - script: | + export CI=azure + .azure-pipelines/run_docker_build.sh + displayName: Run docker build + env: + BINSTAR_TOKEN: $(BINSTAR_TOKEN) \ No newline at end of file diff --git a/.azure-pipelines/build_steps.sh b/.azure-pipelines/build_steps.sh new file mode 100755 index 0000000..8a4af44 --- /dev/null +++ b/.azure-pipelines/build_steps.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash + +# PLEASE NOTE: This script has been automatically generated by conda-smithy. Any changes here +# will be lost next time ``conda smithy rerender`` is run. If you would like to make permanent +# changes to this script, consider a proposal to conda-smithy so that other feedstocks can also +# benefit from the improvement. + +set -xeuo pipefail +export PYTHONUNBUFFERED=1 +export FEEDSTOCK_ROOT="${FEEDSTOCK_ROOT:-/home/conda/feedstock_root}" +export RECIPE_ROOT="${RECIPE_ROOT:-/home/conda/recipe_root}" +export CI_SUPPORT="${FEEDSTOCK_ROOT}/.ci_support" +export CONFIG_FILE="${CI_SUPPORT}/${CONFIG}.yaml" + +cat >~/.condarc </dev/null && pwd )" +PROVIDER_DIR="$(basename $THISDIR)" + +FEEDSTOCK_ROOT=$(cd "$(dirname "$0")/.."; pwd;) +RECIPE_ROOT="${FEEDSTOCK_ROOT}/recipe" + +docker info + +# In order for the conda-build process in the container to write to the mounted +# volumes, we need to run with the same id as the host machine, which is +# normally the owner of the mounted volumes, or at least has write permission +export HOST_USER_ID=$(id -u) +# Check if docker-machine is being used (normally on OSX) and get the uid from +# the VM +if hash docker-machine 2> /dev/null && docker-machine active > /dev/null; then + export HOST_USER_ID=$(docker-machine ssh $(docker-machine active) id -u) +fi + +ARTIFACTS="$FEEDSTOCK_ROOT/build_artifacts" + +if [ -z "$CONFIG" ]; then + set +x + FILES=`ls .ci_support/linux_*` + CONFIGS="" + for file in $FILES; do + CONFIGS="${CONFIGS}'${file:12:-5}' or "; + done + echo "Need to set CONFIG env variable. Value can be one of ${CONFIGS:0:-4}" + exit 1 +fi + +if [ -z "${DOCKER_IMAGE}" ]; then + SHYAML_INSTALLED="$(shyaml --version || echo NO)" + if [ "${SHYAML_INSTALLED}" == "NO" ]; then + echo "WARNING: DOCKER_IMAGE variable not set and shyaml not installed. Falling back to condaforge/linux-anvil-comp7" + DOCKER_IMAGE="condaforge/linux-anvil-comp7" + else + DOCKER_IMAGE="$(cat "${FEEDSTOCK_ROOT}/.ci_support/${CONFIG}.yaml" | shyaml get-value docker_image.0 condaforge/linux-anvil-comp7 )" + fi +fi + +mkdir -p "$ARTIFACTS" +DONE_CANARY="$ARTIFACTS/conda-forge-build-done-${CONFIG}" +rm -f "$DONE_CANARY" + +if [ -z "${CI}" ]; then + DOCKER_RUN_ARGS="-it " +fi + +export UPLOAD_PACKAGES="${UPLOAD_PACKAGES:-True}" +docker run ${DOCKER_RUN_ARGS} \ + -v "${RECIPE_ROOT}":/home/conda/recipe_root:ro,z \ + -v "${FEEDSTOCK_ROOT}":/home/conda/feedstock_root:rw,z \ + -e CONFIG \ + -e BINSTAR_TOKEN \ + -e HOST_USER_ID \ + -e UPLOAD_PACKAGES \ + -e CI \ + $DOCKER_IMAGE \ + bash \ + /home/conda/feedstock_root/${PROVIDER_DIR}/build_steps.sh + +# verify that the end of the script was reached +test -f "$DONE_CANARY" \ No newline at end of file diff --git a/.ci_support/README b/.ci_support/README new file mode 100644 index 0000000..e4e2dce --- /dev/null +++ b/.ci_support/README @@ -0,0 +1 @@ +This file is automatically generated by conda-smithy. To change any matrix elements, you should change conda-smithy's input conda_build_config.yaml and re-render the recipe, rather than editing these files directly. \ No newline at end of file diff --git a/.ci_support/linux_.yaml b/.ci_support/linux_.yaml new file mode 100644 index 0000000..f97a142 --- /dev/null +++ b/.ci_support/linux_.yaml @@ -0,0 +1,6 @@ +channel_sources: +- conda-forge,defaults +channel_targets: +- conda-forge main +docker_image: +- condaforge/linux-anvil-comp7 diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..6ad461b --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,24 @@ +# This file was generated automatically from conda-smithy. To update this configuration, +# update the conda-forge.yml and/or the recipe/meta.yaml. +# -*- mode: yaml -*- + +version: 2 + +jobs: + build: + working_directory: ~/test + machine: true + steps: + - run: + # The Circle-CI build should not be active, but if this is not true for some reason, do a fast finish. + command: exit 0 + +workflows: + version: 2 + build_and_test: + jobs: + - build: + filters: + branches: + ignore: + - /.*/ diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..974953e --- /dev/null +++ b/.gitattributes @@ -0,0 +1,7 @@ +* text=auto + +*.patch binary +*.diff binary +meta.yaml text eol=lf +build.sh text eol=lf +bld.bat text eol=crlf diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..e1edb76 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1 @@ +* @ocefpaf diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md new file mode 100644 index 0000000..d87090f --- /dev/null +++ b/.github/CONTRIBUTING.md @@ -0,0 +1,15 @@ +Thanks for your interest in helping out conda-forge. + +Whether you are brand new or a seasoned maintainer, we always appreciate +feedback from the community about how we can improve conda-forge. If you +are submitting a PR or issue, please fill out the respective template. Should +any questions arise please feel free to ask the maintainer team of the +respective feedstock or reach out to `@conda-forge/core` for more complex +issues. + +In the case of any issues reported, please be sure to demonstrate the relevant +issue (even if it is an absence of a feature). Providing this information will +help busy maintainers understand what it is you hope to accomplish. Also this +will help provide them clues as to what might be going wrong. These examples +can also be reused as tests in the build to ensure further packages meet these +criteria. This is requested to help you get timely and relevant feedback. :) diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..fc95334 --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,25 @@ + +Issue: + +
+Environment (conda list): +
+ +``` +$ conda list + +``` +
+ +
+Details about conda and system ( conda info ): +
+ +``` +$ conda info + +``` +
diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..ba618a2 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,18 @@ + +Checklist +* [ ] Used a fork of the feedstock to propose changes +* [ ] Bumped the build number (if the version is unchanged) +* [ ] Reset the build number to `0` (if the version changed) +* [ ] [Re-rendered]( https://conda-forge.org/docs/maintainer/updating_pkgs.html#rerendering-feedstocks ) with the latest `conda-smithy` (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering) +* [ ] Ensured the license file is being packaged. + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c89ecb7 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.pyc + +build_artifacts diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..cba42cf --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,13 @@ +BSD 3-clause license +Copyright (c) 2015-2019, conda-forge +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..6111421 --- /dev/null +++ b/README.md @@ -0,0 +1,120 @@ +About cenpy +=========== + +Home: https://github.com/ljwolf/cenpy + +Package license: BSD-3-Clause + +Feedstock license: BSD 3-Clause + +Summary: Explore and download data from Census APIs + + + +Current build status +==================== + + + + + +
All platforms: + + + +
+ +Current release info +==================== + +| Name | Downloads | Version | Platforms | +| --- | --- | --- | --- | +| [![Conda Recipe](https://img.shields.io/badge/recipe-cenpy-green.svg)](https://anaconda.org/conda-forge/cenpy) | [![Conda Downloads](https://img.shields.io/conda/dn/conda-forge/cenpy.svg)](https://anaconda.org/conda-forge/cenpy) | [![Conda Version](https://img.shields.io/conda/vn/conda-forge/cenpy.svg)](https://anaconda.org/conda-forge/cenpy) | [![Conda Platforms](https://img.shields.io/conda/pn/conda-forge/cenpy.svg)](https://anaconda.org/conda-forge/cenpy) | + +Installing cenpy +================ + +Installing `cenpy` from the `conda-forge` channel can be achieved by adding `conda-forge` to your channels with: + +``` +conda config --add channels conda-forge +``` + +Once the `conda-forge` channel has been enabled, `cenpy` can be installed with: + +``` +conda install cenpy +``` + +It is possible to list all of the versions of `cenpy` available on your platform with: + +``` +conda search cenpy --channel conda-forge +``` + + +About conda-forge +================= + +[![Powered by NumFOCUS](https://img.shields.io/badge/powered%20by-NumFOCUS-orange.svg?style=flat&colorA=E1523D&colorB=007D8A)](http://numfocus.org) + +conda-forge is a community-led conda channel of installable packages. +In order to provide high-quality builds, the process has been automated into the +conda-forge GitHub organization. The conda-forge organization contains one repository +for each of the installable packages. Such a repository is known as a *feedstock*. + +A feedstock is made up of a conda recipe (the instructions on what and how to build +the package) and the necessary configurations for automatic building using freely +available continuous integration services. Thanks to the awesome service provided by +[CircleCI](https://circleci.com/), [AppVeyor](https://www.appveyor.com/) +and [TravisCI](https://travis-ci.org/) it is possible to build and upload installable +packages to the [conda-forge](https://anaconda.org/conda-forge) +[Anaconda-Cloud](https://anaconda.org/) channel for Linux, Windows and OSX respectively. + +To manage the continuous integration and simplify feedstock maintenance +[conda-smithy](https://github.com/conda-forge/conda-smithy) has been developed. +Using the ``conda-forge.yml`` within this repository, it is possible to re-render all of +this feedstock's supporting files (e.g. the CI configuration files) with ``conda smithy rerender``. + +For more information please check the [conda-forge documentation](https://conda-forge.org/docs/). + +Terminology +=========== + +**feedstock** - the conda recipe (raw material), supporting scripts and CI configuration. + +**conda-smithy** - the tool which helps orchestrate the feedstock. + Its primary use is in the construction of the CI ``.yml`` files + and simplify the management of *many* feedstocks. + +**conda-forge** - the place where the feedstock and smithy live and work to + produce the finished article (built conda distributions) + + +Updating cenpy-feedstock +======================== + +If you would like to improve the cenpy recipe or build a new +package version, please fork this repository and submit a PR. Upon submission, +your changes will be run on the appropriate platforms to give the reviewer an +opportunity to confirm that the changes result in a successful build. Once +merged, the recipe will be re-built and uploaded automatically to the +`conda-forge` channel, whereupon the built conda packages will be available for +everybody to install and use from the `conda-forge` channel. +Note that all branches in the conda-forge/cenpy-feedstock are +immediately built and any created packages are uploaded, so PRs should be based +on branches in forks and branches in the main repository should only be used to +build distinct package versions. + +In order to produce a uniquely identifiable distribution: + * If the version of a package **is not** being increased, please add or increase + the [``build/number``](https://conda.io/docs/user-guide/tasks/build-packages/define-metadata.html#build-number-and-string). + * If the version of a package **is** being increased, please remember to return + the [``build/number``](https://conda.io/docs/user-guide/tasks/build-packages/define-metadata.html#build-number-and-string) + back to 0. + +Feedstock Maintainers +===================== + +* [@ocefpaf](https://github.com/ocefpaf/) + diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 0000000..ad85a2c --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,6 @@ +# This file was generated automatically from conda-smithy. To update this configuration, +# update the conda-forge.yml and/or the recipe/meta.yaml. +# -*- mode: yaml -*- + +jobs: + - template: ./.azure-pipelines/azure-pipelines-linux.yml \ No newline at end of file diff --git a/build-locally.py b/build-locally.py new file mode 100755 index 0000000..a7d9c2d --- /dev/null +++ b/build-locally.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python +# +# This file has been generated by conda-smithy in order to build the recipe +# locally. +# +import os +import glob +import subprocess +from argparse import ArgumentParser + + +def setup_environment(ns): + os.environ["CONFIG"] = ns.config + os.environ["UPLOAD_PACKAGES"] = "False" + + +def run_docker_build(ns): + script = glob.glob(".*/run_docker_build.sh")[0] + subprocess.check_call(script) + +def verify_config(ns): + valid_configs = {os.path.basename(f)[:-5] for f in glob.glob(".ci_support/*.yaml")} + print(f"valid configs are {valid_configs}") + if ns.config in valid_configs: + print("Using " + ns.config + " configuration") + return + elif len(valid_configs) == 1: + ns.config = valid_configs.pop() + print("Found " + ns.config + " configuration") + elif ns.config is None: + print("config not selected, please choose from the following:\n") + selections = list(enumerate(sorted(valid_configs), 1)) + for i, c in selections: + print(f"{i}. {c}") + s = input("\n> ") + idx = int(s) - 1 + ns.config = selections[idx][1] + print(f"selected {ns.config}") + else: + raise ValueError("config " + ns.config + " is not valid") + # Remove the following, as implemented + if not ns.config.startswith('linux'): + raise ValueError(f"only Linux configs currently supported, got {ns.config}") + + +def main(args=None): + p = ArgumentParser("build-locally") + p.add_argument("config", default=None, nargs="?") + + ns = p.parse_args(args=args) + verify_config(ns) + setup_environment(ns) + + run_docker_build(ns) + + +if __name__ == "__main__": + main() \ No newline at end of file diff --git a/conda-forge.yml b/conda-forge.yml index 0637a08..e7ffb3a 100644 --- a/conda-forge.yml +++ b/conda-forge.yml @@ -1 +1,6 @@ -[] \ No newline at end of file +travis: + secure: + BINSTAR_TOKEN: R43uOdn4e0P7xSmwkFLFxVEr2oetGZS2m/uleTEIopZtVCUGEskVlyCR+VTqIpgKYMXv2MUs30Ip5eHc05GGsKwfTfzEKBzkYu8O0ja2GnMWmcHD6FVsFKlu+KfcE9DlJ1/i4vKuH2AAFFI1vSPaItpwUbQvxcaU6BdfouwOI/TvlskXrpea9Y1kpz3eA6uTo5ERqgSsTwpVhWaakEmXiyeCgFTvy7zxD2mmOXA77GRMTs7qmdqIkhkhIeIirGBxq8oGRZWyaTEWdMjYP/TpWk5uT3t3eyATY6yf0mZII2wHaKQxoQJ8DRBYyYdhrz1Rz77d4EDCkuM2Fx5WtB4djFq9QrIEKeQrD/SbdEv74GxJ4wWZKRUVTPBbVl+sroaYXEuOPY9bLIqWmvqg6QMvUaV/jY4i2JALm2sgOospXTDG+Jy6fvlHKtejaU1GtWagF/HgDDGA6njSTUH7LLkY6Y+9a3A3EC5psIW4GWviivhHnGfRery56iepaGFGJJA/Xye5Fdq+tc8JxE8IkNKCsPTeJjHw9hajJjRh7luDFleggC5aSMqQdLZccUQNbYrVaMdiITTvSQCE9et4NCHjX46Zs/GRwB6YT4wFq4tHP7UZkWpyDmESXgOytNde/1eRvPPOr1fe+fpTkmmnvkcUF+0AIStYTXZMY0xpIMEo5Dk= +appveyor: + secure: + BINSTAR_TOKEN: tumuXLL8PU75WMnRDemRy02ruEq2RpNxeK3dz0MjFssnosPm2v4EFjfNB4PTotA1