Giter Club home page Giter Club logo

conda-smithy's Introduction

Overview

conda-smithy is a tool for combining a conda recipe with configurations to build using freely hosted CI services into a single repository, also known as a feedstock. conda-smithy is still a work-in-progress, but when complete, conda-smithy will:

  • Create a git repo with a conda recipe and the files to run conda builds via CI services.
  • Register the repo on github and push it.
  • Connect the repo to the CI services travis-ci.com, appveyor.com, circleci.com, dev.azure.com (For travis-ci.com, configure your org or user to enable the service for all repos)

tests Coverage Status Code style: black

Installation

The easiest way to install conda-smithy is to use conda and conda-forge:

conda install -n root -c conda-forge conda-smithy

To install conda-smithy from source, see the requirements file in requirements.txt, clone this repo, and python -m pip install ..

Setup

You need a token from github, travis-ci.com, appveyor.com and circleci.com to try out conda-smithy. The commands which need this will tell you where to get these tokens and where to place them. If you need help getting tokens please ask on the conda-forge google group.

You should be able to test parts of conda-smithy with whatever tokens you have. For example, you should be able to conda smithy register-github without the CI service tokens. Re-rendering an existing feedstock is also possible without CI service tokens set.

Re-rendering an existing feedstock

Periodically feedstocks need to be upgraded to include new features. To do this we use conda-smithy to go through a process called re-rendering. Make sure you have installed conda-smithy before proceeding. Re-rendering an existing feedstock is possible without CI service tokens set.

  1. cd <feedstock directory>
  2. conda smithy rerender [--commit]
  3. Commit and push all changes

Optionally one can commit the changes automatically with conda-smithy version 1.4.1+. To do this just use the --commit/-c option. By default this will open an editor to make a commit. It will provide a default commit message and show the changes to be added. If you wish to do this automatically, please just use --commit auto/-c auto and it will use the stock commit message.

Making a new feedstock

  1. Make the feedstock repo: conda smithy init <directory_of_conda_recipe>. For a recipe called foo, this creates a directory called foo-feedstock, populates it with CI setup skeletons, adds the recipe under recipe and initializes it as a git repo.

  2. Create a github repo: conda smithy register-github --organization conda-forge ./foo-feedstock. This requires a github token. You can try it out with a github user account instead of an organization by replacing the organization argument with --user github_user_name. If you are interested in adding teams for your feedstocks, you can provide the --add-teams option to create them. This can be done when creating the feedstock or after.

  3. Register the feedstock with CI services: conda smithy register-ci --organization conda-forge --feedstock_directory ./foo-feedstock. This requires tokens for the CI services. You can give the name of a user instead of organization with --user github_user_name. By default this command requires an Anaconda/Binstar token to be available in ~/.conda-smithy/anaconda.token, or as BINSTAR_TOKEN in the environment. This can be opted out of by specifying --without-anaconda-token, as such execpted package uploads will not be attempted.

    • For Azure, you will have to create a service connection with the same name as your github user or org https://dev.azure.com/YOUR_ORG/feedstock-builds/_settings/adminservices
    • For Azure builds, you will have to export the environment variable AZURE_ORG_OR_USER to point to your Azure org
    • If this is your first build on Azure, make sure to add Library Variable Group containing your BINSTAR_TOKEN for automated anaconda uploads.
  4. Specify the feedstock channel and label: Optionally, you can specify source channels and choose a channel to upload to in recipe/conda_build_config.yaml.

    channel_sources:
      - mysourcechannel1,mysourcechannel2,conda-forge,defaults
    channel_targets:
      - target_channel target_label

    Default source channels are conda-forge,defaults. Default for channel targets is conda-forge main.

  5. Specify your branding in the README.md: Optionally, you can specify the branding on the README.md file by adding the following the conda-forge.yml file:

    github:
      user_or_org: YOUR_GITHUB_USER_OR_ORG
    
  6. Re-render the feedstock: conda smithy rerender --feedstock_directory ./foo-feedstock

  7. Commit the changes: cd foo-feedstock && git commit, then push git push upstream master.

Running a build

When everything is configured you can trigger a build with a push to the feedstock repo on github.

Developing conda-smithy

To develop conda smithy, use your favortite conda-based environment manager and create an environment based on the environment.yml.

$ conda env create

Releasing conda-smithy

Before making a release, consult @conda-forge/core and wait some time for objections.

To release a new version of conda-smithy, you can use the rever release managment tool. Run rever in the root repo directory with the version number you want to release. For example,

$ rever 0.1.2

Conda-smithy in a nutshell

xkcd 1319: Automation

xkcd 1319: Automation

conda-smithy's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

conda-smithy's Issues

Obvious CI not found

Hello All,

When testing a simple package (xz), I am seeing the following error in the circle CI build:

./ci_support/run_docker_build.sh

Containers: 0
Images: 11
Storage Driver: btrfs
Execution Driver: lxc-1.0.7
Kernel Version: 3.14.28-031428-generic
Operating System: Ubuntu precise (12.04.5 LTS) (containerized)
CPUs: 2
Total Memory: 240.2 GiB
Name: box860
ID: 6D76:EKQV:CUD4:KSVV:UGDK:OJSW:AX7Y:CIIP:HRVF:VYAP:JM65:LONE
WARNING: No memory limit support
WARNING: No swap limit support
Unable to find image 'pelson/conda64_obvious_ci:latest' locally
Pulling repository pelson/conda64_obvious_ci

FATA[0000] Error: image pelson/conda64_obvious_ci:latest not found ./ci_support/run_docker_build.sh returned exit code 1

broaden to other package managers?

Before I try this: would you be interested to broaden the purpose of conda-smithy to "build-smith" and make it possible to plug in different built scripts for different package managers?

  • wheels for PyPI
  • R packages uploaded to a github repo? (needs some housekeeping task which builds the index)

Clean out brew

We are running into some cases where brew is installing stuff that competes with our packages. We should start cleaning this stuff out so we don't need workarounds. For instance, brew provides its own gmp, which clashes with the one we distribute. See this thread for an example of handling this problem and this issue caused by the brew gmp. Here is some code that I wrote, which would help purge brew.

Here is a list that @ocefpaf compiled of things that brew installed.

- apple-gcc42
- autoconf
- automake
- boost
- cgal
- cloog
- cloog-ppl015
- cloog018
- cmake
- freexl
- gcc
- gcc46
- gcc48
- gdal
- geos
- giflib
- gmp
- gmp4
- go
- gpp
- isl
- isl011
- jpeg
- json-c
- libgeotiff
- libgpg-error
- libksba
- liblwgeom
- libmpc
- libmpc08
- libpng
- libspatialite
- libtiff
- libtool
- libxml2
- libyaml
- lzlib
- maven
- mercurial
- mpfr
- mpfr2
- node
- openssl
- ossp-uuid
- pkg-config
- postgis
- postgresql
- ppl011
- proj
- pyenv
- readline
- sfcgal
- sqlite
- subversion
- wget
- xctool

Add the ability to re-direct built output

It would be neat if we could add some metadata to the recipe, and that automatically diverted the destination channel.

i.e.

extra:
   channels:
      - testing

And this ended up on conda-forge/channel/testing rather than the default of conda-forge/channel/main.

There is some detail here about whether this actually belongs in the recipe, or the conda-forge.yaml file...

Might be nice to add the Anaconda badges to feedstock Readmes

IMHO it would be nice to see the Anaconda badges for feedstocks in their Readmes. For instance, having the latest available version badge ( Anaconda-Server Badge ). Possibly also the number of downloads badge ( Anaconda-Server Badge ).

It could also be nice to capture info about the currently supported platforms (as Windows is sometimes not supported and some things are Linux only). Though this may require some discussion with Continuum to get the API right. Added this issue ( https://github.com/Anaconda-Server/support/issues/27 ) to start discussion on this point. Broke out in separate issue ( #79 ).

Lint the recipe

Now that we have a linter, one of the CI services should be used to lint the recipes as they are proposed to the feedstock.

Add a "maintainer" tag in the meta.yaml

I think it would be a good idea to have a tag in each recipe's meta.yaml file that indicates where the package is maintained. the recipe travels with the built package, so this would be a way for anyone that got the package from who knows where to know where to go to report bugs, issues etc.

I understand conda now supports a "extras" section. So we could do something like:

extras:
   - recipe_maintainer : https://github.com/conda-forge/udunits-feedstock

feedstock_content not found

Is the following error message because the feedstock_content/ dir is not installed anywhere and I am running outside of the conda-smithy dir?

scopatz@athenaie ~ $ conda smithy init xonsh/recipe --feedstock-directory xonsh-feedstock
Traceback (most recent call last):
  File "/home/scopatz/.local/bin/conda-smithy", line 4, in <module>
    __import__('pkg_resources').run_script('conda-smithy==0.1.0.dev0', 'conda-smithy')
  File "/home/scopatz/miniconda3/lib/python3.4/site-packages/setuptools-18.0.1-py3.4.egg/pkg_resources/__init__.py", line 735, in run_script
  File "/home/scopatz/miniconda3/lib/python3.4/site-packages/setuptools-18.0.1-py3.4.egg/pkg_resources/__init__.py", line 1652, in run_script
  File "/home/scopatz/.local/lib/python3.4/site-packages/conda_smithy-0.1.0.dev0-py3.4.egg/EGG-INFO/scripts/conda-smithy", line 161, in <module>
    args.subcommand_func(args)
  File "/home/scopatz/.local/lib/python3.4/site-packages/conda_smithy-0.1.0.dev0-py3.4.egg/EGG-INFO/scripts/conda-smithy", line 64, in __call__
    generate_feedstock_content(feedstock_directory, args.recipe_directory)
  File "/home/scopatz/.local/lib/python3.4/site-packages/conda_smithy-0.1.0.dev0-py3.4.egg/EGG-INFO/scripts/conda-smithy", line 24, in generate_feedstock_content
    configure_feedstock.main(target_directory)
  File "/home/scopatz/.local/lib/python3.4/site-packages/conda_smithy-0.1.0.dev0-py3.4.egg/conda_smithy/configure_feedstock.py", line 179, in main
    copy_feedstock_content(forge_dir)
  File "/home/scopatz/.local/lib/python3.4/site-packages/conda_smithy-0.1.0.dev0-py3.4.egg/conda_smithy/configure_feedstock.py", line 77, in copy_feedstock_content
    copytree(feedstock_content, forge_dir, 'README')
  File "/home/scopatz/.local/lib/python3.4/site-packages/conda_smithy-0.1.0.dev0-py3.4.egg/conda_smithy/configure_feedstock.py", line 61, in copytree
    for item in os.listdir(src):
FileNotFoundError: [Errno 2] No such file or directory: '/home/scopatz/.local/lib/python3.4/site-packages/conda_smithy-0.1.0.dev0-py3.4.egg/feedstock_content'
scopatz@athenaie ~ $ ls xonsh-feedstock/
conda-forge.yml  recipe

No CircleCI Token

When trying to get smithy help on the command line, I see the following:

scopatz@athenaie ~ $ conda smithy -h
Traceback (most recent call last):
  File "/home/scopatz/.local/bin/conda-smithy", line 4, in <module>
    __import__('pkg_resources').run_script('conda-smithy==0.1.0.dev0', 'conda-smithy')
  File "/home/scopatz/miniconda3/lib/python3.4/site-packages/setuptools-18.0.1-py3.4.egg/pkg_resources/__init__.py", line 735, in run_script
  File "/home/scopatz/miniconda3/lib/python3.4/site-packages/setuptools-18.0.1-py3.4.egg/pkg_resources/__init__.py", line 1652, in run_script
  File "/home/scopatz/.local/lib/python3.4/site-packages/conda_smithy-0.1.0.dev0-py3.4.egg/EGG-INFO/scripts/conda-smithy", line 10, in <module>
    import conda_smithy.configure_circle_ci as configure_circle_ci
  File "/home/scopatz/.local/lib/python3.4/site-packages/conda_smithy-0.1.0.dev0-py3.4.egg/conda_smithy/configure_circle_ci.py", line 13, in <module>
    with open(os.path.expanduser('~/.conda-smithy/circle.token'), 'r') as fh:
FileNotFoundError: [Errno 2] No such file or directory: '/home/scopatz/.conda-smithy/circle.token'

It would be ideal if smithy could ask for the CircleCI username and password and then put the token in the right place.

Lint: sort maintainers

Yes:

extra:
  recipe-maintainers:
    - a
    - b
    - c

No:

extra:
  recipe-maintainers:
    - a
    - c
    - b

Why is BINSTAR_TOKEN handled differently than all other token?

I'm currently trying to build a multiple recipe version of conda-smithy and found that all access token go into a subdir of ~, but only the BINSTAR_TOKEN is requested to be in os.environ. Is it ok, to change that to also use a file based access token ( ~\.conda-smithy\anaconda.token)?

Using colorized text from linter

To help make it stand out, maybe we should colorize the linter text using something like termcolors. Bare minimum would be to make fail red and pass green. Otherwise, we might want to colorize warnings or other relevant errors. Shouldn't be too bad, but will already be a huge asset for the review process.

Check for duplicate package additions

If someone tries to add a package twice (e.g. to staged-recipes when it is already a feedstock), it would be nice if the linter politely told one to get rid of it and PR the changes.

Better still would be if staged-recipes could take the difference and PR them against the correct feedstock. However, that is a separate issue ( conda-forge/staged-recipes#272 ).

Conda recipe linter ideas

Follow on to #42.

For the scope of this ticket, the following ideas should be implemented:

  • verify that package name and version are specified
  • document the use of numpy *
  • verify that an about home and license are specified
  • assert that an MD5 a checksum is defined for file sources
  • assert that each patch has a comment
  • assert that selectors are in their "comment" form (with 2 spaces, a hash then 1 space).

To keep it concrete - any other ideas should have their own issue.

lint the final package

More linter ideas for after the package is build:

  • Check that all dependencies are declared/satisfied (install package, check all imports are importable, see https://github.com/bndr/pipreqs)
  • Check that all native code has it's dependencies satisfied (for all so/dll/lib -> check that the required symbols are in the installed packages)
  • check that there are no wrongly compile python files in it (e.g. some recipes explicitly delete directories from other packages). E.g if the package is named whatever, no other dir in <root>Lib\site-packages\* should exist. Maybe others?

Should we add the lint to the template?

If I understood the system correctly the recipes are linted only at staged-recipes but not as feedstocks. Does it make sense to keep running the linter in the feedstocks? (Maybe to ensure that new lint rules will be applied and that the recipe won't be changed to offend the rules?)

Harden maintainers linting

As addressed in conda-forge/pyutilib-feedstock#1:

Running command: ['python', '/home/travis/build/conda-forge/conda-forge.github.io/scripts/update_teams.py', './feedstocks_repo/feedstocks']
Traceback (most recent call last):
  File "/home/travis/build/conda-forge/conda-forge.github.io/scripts/update_teams.py", line 85, in <module>
    contributors = data.get('extra', {}).get('recipe-maintainers', [])
AttributeError: 'list' object has no attribute 'get'
CalledProcessError: Command '['python', '/home/travis/build/conda-forge/conda-forge.github.io/scripts/update_teams.py',

Calling conda smithy github-create with --user raises exception

When I invoke oncda smithy to create a github repo (after setting the token correctly) I get this:

$ conda smithy github-create --user mwcraig mrjob-feedstock/
Traceback (most recent call last):
  File "/Users/mcraig/miniconda/bin/conda-smithy", line 9, in <module>
    load_entry_point('conda-smithy==0.1.0.dev0', 'console_scripts', 'conda-smithy')()
  File "/Users/mcraig/miniconda/lib/python2.7/site-packages/conda_smithy-0.1.0.dev0-py2.7.egg/conda_smithy/conda_smithy.py", line 164, in main
    args.subcommand_func(args)
  File "/Users/mcraig/miniconda/lib/python2.7/site-packages/conda_smithy-0.1.0.dev0-py2.7.egg/conda_smithy/conda_smithy.py", line 94, in __call__
    user_or_org.get_user(args.user)
UnboundLocalError: local variable 'user_or_org' referenced before assignment

what is the workflow for running a feedstock

I'm currently trying to understand how to run a "feedstock" for the irkernel packages (three or four repos -> IRkernel/irkernel.github.io#16):

I don't want to lose the ability to run travis tests on github ("travis is green" -> merge the PR), but it seems that integrating the conda-smithy files in the main repos will use travis as a macosx builder and not as a testing mechanism on linux? I also don't want to have a package upload for all commits, only for some tags.

If I use a different repo (irkernel-smithy -> much like staged-recipes), but AFAIK every time I push into that repo, a build is attempted for all packages. So my current thinking is adding a small file which only contains the repo which should be built and maybe a tag and let the other configs figure out to use that to only build that one repo and upload to a conda channel (and to our own r repo). Every time I want a tag build and pushed to the repos, I would change that file and trigger a build in that irkernel-smithy repo.

Is this the right way or do I misunderstand the idea behind conda-smithy?

linter: Check bash and possibly batch for issues

There is a tool designed exactly for this for bash called shellcheck. It would be nice if we leveraged this to sniff out issues in build.sh. While I am not currently aware of something like this for batch, it doesn't mean it doesn't exist. It would be good if we could find something similar for batch and use it to lint the batch scripts, as well.

linter: license unknown

Conda skeleton adds a license unknown when the license metadata is missing.

I am not sure if the linter catches that, but we should raise an error and look for a license the proper license in the repo/docs.

Was there a recent change to where recipes are built?

Conda-smithy seems to put the built package at

/feedstock_root/build_artefacts/linux-64/tifffile-0.3.1-np19py34_0.tar.bz2

but then look to upload it from the path

dist/conda-forge/tifffile/0.3.1/linux-64/tifffile-0.3.1-np18py27_0.tar.bz2

See these excerpts from the full log.

# If you want to upload this package to anaconda.org later, type:
#
# $ anaconda upload /feedstock_root/build_artefacts/linux-64/tifffile-0.3.1-np19py34_0.tar.bz2
#
# To have conda build upload to anaconda.org automatically, use
# $ conda config --set anaconda_upload yes
Using anaconda-server api site https://api.anaconda.org
[warning] Distribution linux-64/tifffile-0.3.1-np18py27_0.tar.bz2 already exists ... removing 
[NotFound] The path u'/dist/conda-forge/tifffile/0.3.1/linux-64/tifffile-0.3.1-np18py27_0.tar.bz2' could not be found 
Traceback (most recent call last):
  File "/opt/conda/bin/anaconda", line 6, in <module>
    sys.exit(main())
  File "/opt/conda/lib/python3.4/site-packages/binstar_client/scripts/cli.py", line 93, in main
    description=__doc__, version=version)
  File "/opt/conda/lib/python3.4/site-packages/binstar_client/scripts/cli.py", line 75, in binstar_main
    return args.main(args)
  File "/opt/conda/lib/python3.4/site-packages/binstar_client/commands/upload.py", line 194, in main
    if remove_existing_file(binstar, args, username, package_name, version, file_attrs):
  File "/opt/conda/lib/python3.4/site-packages/binstar_client/commands/upload.py", line 135, in remove_existing_file
    binstar.remove_dist(username, package_name, version, file_attrs['basename'])
  File "/opt/conda/lib/python3.4/site-packages/binstar_client/__init__.py", line 345, in remove_dist
    self._check_response(res)
  File "/opt/conda/lib/python3.4/site-packages/binstar_client/__init__.py", line 161, in _check_response
    raise ErrCls(msg, res.status_code)
binstar_client.errors.NotFound: ("The path u'/dist/conda-forge/tifffile/0.3.1/linux-64/tifffile-0.3.1-np18py27_0.tar.bz2' could not be found", 404)

Traceback (most recent call last):
  File "/feedstock_root/ci_support/upload_or_check_non_existence.py", line 101, in <module>
    upload(cli, meta, owner, channel)
  File "/feedstock_root/ci_support/upload_or_check_non_existence.py", line 51, in upload
    env=os.environ)
  File "/opt/conda/lib/python3.4/subprocess.py", line 561, in check_call
    raise CalledProcessError(retcode, cmd)

subprocess.CalledProcessError: Command '['anaconda', '--quiet', '-t', 'binstar.token', 'upload', '--force', '/feedstock_root/build_artefacts/linux-64/tifffile-0.3.1-np18py27_0.tar.bz2', '--user=conda-forge', '--channel=main']' returned non-zero exit status 1 ./ci_support/run_docker_build.sh returned exit code 1

(You might notice I added the --force argument to anaconda upload, but I can't think this could be related to the problem.)

Having the linter comment on PRs

This may be a bit of work (so long term possibly), but it could be really useful. The linter will error our and point out something(s) wrong with the recipe in CI. I wonder if we could modify it so it actually makes these notes on the PR itself. That way it nicely integrates with the review process. As we add more functionality to the linter, I expect this will only become more valuable.

Limit numpy versions

We currently build against numpy:

  • 1.9
  • 1.10
  • 1.11

We should drop 1.9 from the template.

binstar package is deprecated

That's at least what it tells me when I install it via conda.

The replacement for the binstar command in the templates seems to be anaconda auth --create --name WhateverName --scopes "repos conda api". Without the api bit I couldn't get it to run :-(

Lint: assert certain libraries are pinned

conda-forge/libtiff-feedstock#5 pinned the version of libtiff rather than being promiscuous with supported versions.

According to conda-forge policy (TBD), we can verify that specific common packages are pinned. Whilst this can't be done in general (e.g. numpy), it is rare to not want to pin things like zlib, libtiff etc.

conda recipe lint

We should write a simple linter which checks the quality of our recipes.
I think I wrote this issue someplace else too, but can't find it now.

The kinds of things we want to check:

  • license, about, homepage populated
  • tests are defined
  • other things...

Add a switch to build a multiple recipe forge

For one project, having an (or a few) additional repo(s) for the conda builds is fine. But for things like https://twitter.com/wesmckinn/status/685537127199723523 (+answers...) I think having this layout will lead to hundreds of repos and I think that this a bad idea: you lose overview, it's a lot of work to update passwords or the smithy code itself. And getting bugs assigned to the right repo is a pain (the current ipython problem after the big split).

I would like to propose that conda-smithy gets a switch to build such a multiple recipe forge. I could do the work on this (IMO it's "just" some conditionals in the templates + small code changes in the generation to trigger these conditionals).

Would you take such a PR?

Lint idea: Check that python isn't used directly in bld.bat/build.sh

Usually it is better to use %PYTHON% setup.py install as that prevents problems when other pythons are in the path and the ordere of the envs are wrong (not sure why this should happen but I've seen, where some kind of system python was picked up instead of the python from the conda env)...

Improve lint messages on whitespace

The message about the spacing for selectors isn't clear to see the problem in the number of spaces:

Selectors are suggested to take a " # []" form.

It would be clearer to have a message like: <two spaces> # <one space> [selector]

Cannot upload packages from Circle

Hello Again,

On Circle CI, I set my BINSTAR_TOKEN variable and I see the following error when it goes to update a package:

BUILD END: xz-5.2.2-0
# If you want to upload this package to anaconda.org later, type:
#
# $ anaconda upload /feedstock_root/build_artefacts/linux-64/xz-5.2.2-0.tar.bz2
#
# To have conda build upload to anaconda.org automatically, use
# $ conda config --set anaconda_upload yes

Current conda install:

             platform : linux-64
        conda version : 3.18.1
  conda-build version : 1.18.0
       python version : 3.4.3.final.0
     requests version : 2.8.0
     root environment : /opt/conda  (writable)
  default environment : /opt/conda
     envs directories : /opt/conda/envs
        package cache : /opt/conda/pkgs
         channel URLs : https://repo.continuum.io/pkgs/free/linux-64/
                        https://repo.continuum.io/pkgs/free/noarch/
                        https://repo.continuum.io/pkgs/pro/linux-64/
                        https://repo.continuum.io/pkgs/pro/noarch/
          config file : /root/.condarc
    is foreign system : False

Nothing to test for: xz-5.2.2-0
Traceback (most recent call last):
  File "/feedstock_root/ci_support/upload_or_check_non_existence.py", line 99, in <module>
    on_channel = distribution_exists_on_channel(cli, meta, owner, channel)
  File "/feedstock_root/ci_support/upload_or_check_non_existence.py", line 65, in distribution_exists_on_channel
    binstar_cli.show_channel(owner=owner, channel=channel)['files']]
  File "/opt/conda/lib/python3.4/site-packages/binstar_client/mixins/channels.py", line 29, in show_channel
    self._check_response(res, [200])
  File "/opt/conda/lib/python3.4/site-packages/binstar_client/__init__.py", line 159, in _check_response
    raise ErrCls(msg, res.status_code)
binstar_client.errors.NotFound: ('The user [] does not exist', 404)
lxc-start: lxc_start.c: main: 342 The container failed to start.

lxc-start: lxc_start.c: main: 346 Additional information can be obtained by setting the --logfile and --logpriority options. ./ci_support/run_docker_build.sh returned exit code 1

The full run can be found here: https://circleci.com/gh/scopatz/xz-feedstock/7 Note that this does work without the BINSTAR_TOKEN variable set. Any ideas?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.