tool for creating installers from conda packages

Overview

(conda) Constructor

Description

Constructor is a tool which allows constructing an installer for a collection of conda packages. It solves needed packages using user-provided specifications, and bundles those packages. It can currently create 3 kinds of installers, which are best thought of as delivery vehicles for the bundled packages. There are shell installers, MacOS .pkg installers, and Windows .exe installers. Each of these will create an environment on the end user's system that contains the specs you provided, along with any necessary dependencies. These installers are similar to the Anaconda and Miniconda installers, and indeed constructor is used to create those installers.

Installation

constructor can be installed into the base environment using:

$ conda install constructor

Once installed, the constructor command will be available:

$ constructor -h

Usage

The constructor command takes an installer specification directory as its argument. This directory needs to contain a file construct.yaml, which specifies the name of the installer, the conda channels to pull packages from, the conda packages included in the installer etc. . The complete list of keys in this file can be found in CONSTRUCT.md. Also, the directory may contain some additional optional files (such as a license file, and image files for the Windows installer). An example is located in examples/maxiconda.

Development

To build or update README.md at the root of the repo you'll need to install the jinja2 package (conda install jinja2) and then run make doc, or invoke the the script directly with python scripts/make_docs.py.

Build status

Build status codecov Anaconda-Server Badge
conda install ctools/label/dev::constructor Anaconda-Server Badge
conda install defaults::constructor Anaconda-Server Badge
conda install conda-forge::constructor Anaconda-Server Badge
Comments
  • Support for noarch conda packages?

    Support for noarch conda packages?

    https://docs.continuum.io/anaconda-repository/admin/noarch-packages includes this:

    NOTE: Noarch packages are not compatible with Anaconda constructor. If you intend to use the packages with Anaconda constructor, build the packages for specific operating systems.

    I couldn't find an issue about this here, so I wanted to check: is this still the case?

    type::feature 
    opened by ceball 80
  • Is constructor broken?

    Is constructor broken?

    I can't manage to get constructor working anymore with a recent version of conda.

    • I created a clean centos7 vm on digitalocean, just added bzip2.
    • Downloaded Miniconda in various versions.
    • Activated them
    • conda install constructor
    • constructor . # with a trivial construct yaml

    They all fail except when I go back to this version of conda: https://repo.anaconda.com/miniconda/Miniconda3-4.3.21-Linux-x86_64.sh

    Details

    Succesful run with Miniconda3-4.3.21-Linux-x86_64:

    Miniconda3-4.3.21-Linux-x86_64
     (root) [root@centos-s-1vcpu-1gb-fra1-01 ~]# constructor -V
    constructor version: 1.5.5
    (root) [root@centos-s-1vcpu-1gb-fra1-01 ~]# cat construct.yaml 
    name: MinicondaX
    version: 1.2.3.4 
    
    install_in_dependency_order: True
    
    channels:
      - http://repo.anaconda.com/pkgs/main/
    
    specs:
      - python
      - conda
    (root) [root@centos-s-1vcpu-1gb-fra1-01 ~]# constructor --debug .
    platform: linux-64
    DEBUG:libconda.fetch:channel_urls=('http://repo.anaconda.com/pkgs/main/linux-64/', 'http://repo.anaconda.com/pkgs/main/noarch/')
    Fetching package metadata: INFO:stdoutlog:Fetching package metadata: 
    DEBUG:requests.packages.urllib3.util.retry:Converted retries value: 3 -> Retry(total=3, connect=None, read=None, redirect=None, status=None)
    DEBUG:requests.packages.urllib3.connectionpool:Starting new HTTP connection (1): repo.anaconda.com
    DEBUG:requests.packages.urllib3.connectionpool:Starting new HTTP connection (2): repo.anaconda.com
    DEBUG:requests.packages.urllib3.connectionpool:http://repo.anaconda.com:80 "GET /pkgs/main/linux-64/repodata.json.bz2 HTTP/1.1" 301 None
    DEBUG:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (1): repo.anaconda.com
    DEBUG:requests.packages.urllib3.connectionpool:http://repo.anaconda.com:80 "GET /pkgs/main/noarch/repodata.json.bz2 HTTP/1.1" 301 None
    DEBUG:requests.packages.urllib3.connectionpool:Starting new HTTPS connection (2): repo.anaconda.com
    DEBUG:requests.packages.urllib3.connectionpool:https://repo.anaconda.com:443 "GET /pkgs/main/linux-64/repodata.json.bz2 HTTP/1.1" 304 0
    DEBUG:requests.packages.urllib3.connectionpool:https://repo.anaconda.com:443 "GET /pkgs/main/noarch/repodata.json.bz2 HTTP/1.1" 304 0
    .DEBUG:dotupdate:fetching repodata: args ('http://repo.anaconda.com/pkgs/main/noarch/',) kwargs {'use_cache': False, 'session': <libconda.connection.CondaSession object at 0x7ff4ceb1def0>}
    .DEBUG:dotupdate:fetching repodata: args ('http://repo.anaconda.com/pkgs/main/linux-64/',) kwargs {'use_cache': False, 'session': <libconda.connection.CondaSession object at 0x7ff4ceb1def0>}
    
    INFO:stdoutlog:
    
    Solving package specifications: INFO:stdoutlog:Solving package specifications: 
    .DEBUG:dotupdate:Solving for ['python', 'conda']
    DEBUG:libconda.resolve:Retrieving packages for: [MatchSpec('python'), MatchSpec('conda')]
    DEBUG:libconda.resolve: python: pruned from 66 -> 39
    DEBUG:libconda.resolve: libgcc-ng: pruned from 8 -> 7
    DEBUG:libconda.resolve: libstdcxx-ng: pruned from 8 -> 7
    DEBUG:libconda.resolve: openssl: pruned from 16 -> 13
    DEBUG:libconda.resolve: libedit: pruned from 3 -> 2
    DEBUG:libconda.resolve: ncurses: pruned from 4 -> 2
    DEBUG:libconda.resolve: conda: pruned from 129 -> 127
    DEBUG:libconda.resolve: urllib3: pruned from 28 -> 16
    DEBUG:libconda.resolve: readline: pruned from 4 -> 3
    .DEBUG:dotupdate:Checking satisfiability
    DEBUG:libconda.logic:Empty objective, trivial solution
    .DEBUG:dotupdate:Package removal metric: 0
    DEBUG:libconda.logic:Beginning peak minimization
    DEBUG:libconda.logic:Initial range (0,0)
    DEBUG:libconda.logic:Bisection attempt: (0,0), (5716+162) clauses
    DEBUG:libconda.logic:Bisection success, new range=(0,0)
    DEBUG:libconda.logic:Final peak objective: 0
    DEBUG:libconda.logic:Beginning peak minimization
    DEBUG:libconda.logic:Initial range (0,0)
    DEBUG:libconda.logic:Bisection attempt: (0,0), (5878+23) clauses
    DEBUG:libconda.logic:Bisection success, new range=(0,0)
    DEBUG:libconda.logic:Final peak objective: 0
    .DEBUG:dotupdate:Initial package version/build metrics: 0/0
    DEBUG:libconda.logic:Empty objective, trivial solution
    .DEBUG:dotupdate:Track feature count: 0
    DEBUG:libconda.logic:Empty objective, trivial solution
    .DEBUG:dotupdate:Package feature count: 0
    DEBUG:libconda.logic:Beginning peak minimization
    DEBUG:libconda.logic:Initial range (0,1)
    DEBUG:libconda.logic:Bisection attempt: (0,0), (5901+379) clauses
    DEBUG:libconda.logic:Bisection success, new range=(0,0)
    DEBUG:libconda.logic:Final peak objective: 0
    DEBUG:libconda.logic:Beginning peak minimization
    DEBUG:libconda.logic:Initial range (0,2)
    DEBUG:libconda.logic:Bisection attempt: (0,0), (6280+78) clauses
    DEBUG:libconda.logic:Bisection success, new range=(0,0)
    DEBUG:libconda.logic:Final peak objective: 0
    .DEBUG:dotupdate:Additional package version/build metrics: 0/0
    DEBUG:libconda.logic:Beginning sum minimization
    DEBUG:libconda.logic:Initial range (0,13)
    DEBUG:libconda.logic:Bisection attempt: (0,12), (6358+6891) clauses
    DEBUG:libconda.logic:Bisection success, new range=(0,12)
    DEBUG:libconda.logic:Bisection attempt: (0,6), (6358+3747) clauses
    DEBUG:libconda.logic:Bisection failure, new range=(7,12)
    DEBUG:libconda.logic:Bisection attempt: (7,9), (6358+5410) clauses
    DEBUG:libconda.logic:Bisection failure, new range=(10,12)
    DEBUG:libconda.logic:Bisection attempt: (10,11), (6358+6448) clauses
    DEBUG:libconda.logic:Bisection failure, new range=(12,12)
    DEBUG:libconda.logic:Bisection attempt: (12,12), (6358+6937) clauses
    DEBUG:libconda.logic:Bisection success, new range=(12,12)
    DEBUG:libconda.logic:Final sum objective: 12
    DEBUG:libconda.logic:New peak objective: 1
    .DEBUG:dotupdate:Weak dependency count: 12
    .DEBUG:dotupdate:Looking for alternate solutions
    
    Warning: 2 possible package resolutions (only showing differing packages):
      - yaml-0.1.7-had09818_2.tar.bz2
      - yaml-0.1.7-h014fa73_2.tar.bz2INFO:stdoutlog:
    Warning: 2 possible package resolutions (only showing differing packages):
      - yaml-0.1.7-had09818_2.tar.bz2
      - yaml-0.1.7-h014fa73_2.tar.bz2
    
    INFO:stdoutlog:
    
    
    Reading: /root/s3/lib/python3.6/site-packages/constructor/header.sh
    Successfully created '/root/MinicondaX-1.2.3.4-Linux-x86_64.sh'.
    (root) [root@centos-s-1vcpu-1gb-fra1-01 ~]# 
    

    Newer Versions of conda:

    Fail log
        (base) [root@centos-s-1vcpu-1gb-fra1-01 ~]# source /root/miniconda3/etc/profile.d/conda.sh 
    (base) [root@centos-s-1vcpu-1gb-fra1-01 ~]# constructor -V
    constructor version: 2.3.0
    (base) [root@centos-s-1vcpu-1gb-fra1-01 ~]# constructor --debug .
    platform: linux-64
    DEBUG:conda.core.solve:solving prefix /constructor/no-environment
      specs_to_remove: frozenset()
      specs_to_add: frozenset({MatchSpec("python"), MatchSpec("conda")})
      prune: <auxlib._Null object at 0x7f218fa03518>
    Collecting package metadata (repodata.json): - DEBUG:conda.core.package_cache_data:package cache directory '/root/.conda/constructor/linux-64' writable: True
    DEBUG:conda.core.subdir_data:Using cached repodata for http://repo.anaconda.com/pkgs/main/linux-64/repodata.json at /root/.conda/constructor/linux-64/cache/ddd2bc08.json. Timeout in 5 sec
    DEBUG:conda.core.subdir_data:found pickle file /root/.conda/constructor/linux-64/cache/ddd2bc08.q
    DEBUG:conda.core.subdir_data:Using cached repodata for http://repo.anaconda.com/pkgs/main/noarch/repodata.json at /root/.conda/constructor/linux-64/cache/a53f9773.json. Timeout in 5 sec
    DEBUG:conda.core.subdir_data:found pickle file /root/.conda/constructor/linux-64/cache/a53f9773.q
    done
    Solving environment: / DEBUG:conda.resolve:Retrieving packages for: 
      - conda
      - python
    DEBUG:conda.resolve:libgcc-ng: pruned from 8 -> 7
    DEBUG:conda.resolve:libstdcxx-ng: pruned from 8 -> 7
    \ DEBUG:conda.resolve:conda: pruned from 129 -> 127
    / DEBUG:conda.resolve:urllib3: pruned from 28 -> 16
    | DEBUG:conda.core.solve:specs_map with targets: OrderedDict()
    DEBUG:conda.resolve:Checking if the current environment is consistent
    DEBUG:conda.core.solve:inconsistent precs: None
    DEBUG:conda.core.solve:final specs to add: 
      - conda
      - python
    DEBUG:conda.resolve:Solving for: 
      - conda
      - python
    DEBUG:conda.resolve:Solve: Getting reduced index of compliant packages
    DEBUG:conda.resolve:Solve: determining satisfiability
    / DEBUG:conda.resolve:Using SAT solver interface 'pycosat'.
    / DEBUG:conda.resolve:gen_clauses returning with clause count: 13647
    DEBUG:conda.resolve:generate_spec_constraints returning with clause count: 13647
    DEBUG:conda.common.logic:Invoking SAT with clause count: 13649
    - DEBUG:conda.resolve:Solve: minimize removed packages
    DEBUG:conda.resolve:Solve: maximize versions of requested packages
    DEBUG:conda.common.logic:Empty objective, trivial solution
    DEBUG:conda.common.logic:Invoking SAT with clause count: 13838
    DEBUG:conda.common.logic:Final peak objective: 0
    DEBUG:conda.resolve:Initial package channel/version metric: 0/0
    DEBUG:conda.resolve:Solve: minimize track_feature count
    DEBUG:conda.resolve:generate_feature_count returning with clause count: 13838
    DEBUG:conda.common.logic:Empty objective, trivial solution
    DEBUG:conda.resolve:Track feature count: 0
    DEBUG:conda.common.logic:Empty objective, trivial solution
    DEBUG:conda.resolve:Package misfeature count: 0
    DEBUG:conda.resolve:Solve: maximize build numbers of requested packages
    DEBUG:conda.common.logic:Invoking SAT with clause count: 13886
    DEBUG:conda.common.logic:Final peak objective: 0
    DEBUG:conda.resolve:Initial package build metric: 0
    DEBUG:conda.resolve:Solve: prefer arch over noarch for requested packages
    DEBUG:conda.common.logic:Empty objective, trivial solution
    DEBUG:conda.resolve:Noarch metric: 0
    DEBUG:conda.resolve:Solve: minimize number of optional installations
    DEBUG:conda.common.logic:Empty objective, trivial solution
    DEBUG:conda.resolve:Optional package install metric: 0
    DEBUG:conda.resolve:Solve: minimize number of necessary upgrades
    DEBUG:conda.common.logic:Empty objective, trivial solution
    DEBUG:conda.resolve:Dependency update count: 0
    DEBUG:conda.resolve:Solve: maximize versions and builds of indirect dependencies.  Prefer arch over noarch where equivalent.
    \ DEBUG:conda.common.logic:Empty objective, trivial solution
    DEBUG:conda.common.logic:Invoking SAT with clause count: 14748
    DEBUG:conda.common.logic:Final peak objective: 0
    DEBUG:conda.common.logic:Invoking SAT with clause count: 14880
    DEBUG:conda.common.logic:Final peak objective: 0
    DEBUG:conda.common.logic:Empty objective, trivial solution
    DEBUG:conda.resolve:Additional package channel/version/build/noarch metrics: 0/0/0/0
    DEBUG:conda.resolve:Solve: prune unnecessary packages
    DEBUG:conda.common.logic:Invoking SAT with clause count: 18631
    DEBUG:conda.common.logic:Invoking SAT with clause count: 18762
    | DEBUG:conda.common.logic:Final sum objective: 39
    DEBUG:conda.common.logic:New peak objective: 1
    DEBUG:conda.resolve:Weak dependency count: 39
    DEBUG:conda.common.logic:Invoking SAT with clause count: 18763
    DEBUG:conda.common.logic:Invoking SAT with clause count: 19523
    DEBUG:conda.common.logic:Invoking SAT with clause count: 19195
    DEBUG:conda.common.logic:Invoking SAT with clause count: 18876
    DEBUG:conda.common.logic:Final peak objective: 2
    - DEBUG:conda.common.logic:Invoking SAT with clause count: 65105
    | DEBUG:conda.common.logic:Invoking SAT with clause count: 44053
    / DEBUG:conda.common.logic:Invoking SAT with clause count: 55479
    \ DEBUG:conda.common.logic:Invoking SAT with clause count: 60814
    | DEBUG:conda.common.logic:Invoking SAT with clause count: 63387
    - DEBUG:conda.common.logic:Invoking SAT with clause count: 62408
    | DEBUG:conda.common.logic:Invoking SAT with clause count: 63302
    DEBUG:conda.common.logic:Final sum objective: 31
    DEBUG:conda.common.logic:New peak objective: 2
    DEBUG:conda.resolve:Timestamp metric: 31
    DEBUG:conda.resolve:Looking for alternate solutions
    DEBUG:conda.common.logic:Invoking SAT with clause count: 63303
    done
    DEBUG:conda.core.solve:solved prefix /constructor/no-environment
      solved_linked_dists:
        defaults::ca-certificates-2019.5.15-0
        defaults::libgcc-ng-9.1.0-hdf63c60_0
        defaults::libstdcxx-ng-9.1.0-hdf63c60_0
        defaults::bzip2-1.0.6-h14c3975_5
        defaults::libffi-3.2.1-hd88cf55_4
        defaults::lz4-c-1.8.1.2-h14c3975_0
        defaults::lzo-2.10-h49e0be7_2
        defaults::ncurses-6.1-he6710b0_1
        defaults::openssl-1.1.1c-h7b6447c_1
        defaults::xz-5.2.4-h14c3975_4
        defaults::yaml-0.1.7-had09818_2
        defaults::zlib-1.2.11-h7b6447c_3
        defaults::libedit-3.1.20181209-hc058e9b_0
        defaults::libxml2-2.9.9-hea5a465_1
        defaults::readline-7.0-h7b6447c_5
        defaults::tk-8.6.8-hbc83047_0
        defaults::zstd-1.3.7-h0b5b093_0
        defaults::libarchive-3.3.3-h5d8350f_5
        defaults::sqlite-3.28.0-h7b6447c_0
        defaults::python-3.7.3-h0371630_0
        defaults::asn1crypto-0.24.0-py37_0
        defaults::certifi-2019.6.16-py37_0
        defaults::chardet-3.0.4-py37_1
        defaults::idna-2.8-py37_0
        defaults::pycosat-0.6.3-py37h14c3975_0
        defaults::pycparser-2.19-py37_0
        defaults::pysocks-1.7.0-py37_0
        defaults::python-libarchive-c-2.8-py37_6
        defaults::ruamel_yaml-0.15.46-py37h14c3975_0
        defaults::six-1.12.0-py37_0
        defaults::tqdm-4.32.1-py_0
        defaults::cffi-1.12.3-py37h2e261b9_0
        defaults::conda-package-handling-1.3.10-py37_0
        defaults::setuptools-41.0.1-py37_0
        defaults::cryptography-2.7-py37h1ba5d50_0
        defaults::wheel-0.33.4-py37_0
        defaults::pip-19.1.1-py37_0
        defaults::pyopenssl-19.0.0-py37_0
        defaults::urllib3-1.24.2-py37_0
        defaults::requests-2.22.0-py37_0
        defaults::conda-4.7.5-py37_0
    
    DEBUG:conda.core.package_cache_data:package cache directory '/root/.conda/constructor/linux-64' writable: True
    Checking for duplicate files ...
    Warning: Files 'share/terminfo/2/2621A', 'share/terminfo/2/2621a' found in the package(s): ncurses-6.1-he6710b0_1.conda
    Warning: Files 'share/terminfo/E/Eterm', 'share/terminfo/e/eterm' found in the package(s): ncurses-6.1-he6710b0_1.conda
    Warning: Files 'share/terminfo/E/Eterm-color', 'share/terminfo/e/eterm-color' found in the package(s): ncurses-6.1-he6710b0_1.conda
    Warning: Files 'share/terminfo/l/lft-pc850', 'share/terminfo/L/LFT-PC850' found in the package(s): ncurses-6.1-he6710b0_1.conda
    Warning: Files 'share/terminfo/n/ncr260vt300wpp', 'share/terminfo/N/NCR260VT300WPP' found in the package(s): ncurses-6.1-he6710b0_1.conda
    Warning: Files 'share/terminfo/n/ncrvt100wpp', 'share/terminfo/N/NCRVT100WPP' found in the package(s): ncurses-6.1-he6710b0_1.conda
    Warning: Files 'share/terminfo/P/P12', 'share/terminfo/p/p12' found in the package(s): ncurses-6.1-he6710b0_1.conda
    Warning: Files 'share/terminfo/P/P12-M', 'share/terminfo/p/p12-m' found in the package(s): ncurses-6.1-he6710b0_1.conda
    Warning: Files 'share/terminfo/p/p12-m-w', 'share/terminfo/P/P12-M-W' found in the package(s): ncurses-6.1-he6710b0_1.conda
    Warning: Files 'share/terminfo/P/P12-W', 'share/terminfo/p/p12-w' found in the package(s): ncurses-6.1-he6710b0_1.conda
    Warning: Files 'share/terminfo/p/p14', 'share/terminfo/P/P14' found in the package(s): ncurses-6.1-he6710b0_1.conda
    Warning: Files 'share/terminfo/P/P14-M', 'share/terminfo/p/p14-m' found in the package(s): ncurses-6.1-he6710b0_1.conda
    Warning: Files 'share/terminfo/P/P14-M-W', 'share/terminfo/p/p14-m-w' found in the package(s): ncurses-6.1-he6710b0_1.conda
    Warning: Files 'share/terminfo/p/p14-w', 'share/terminfo/P/P14-W' found in the package(s): ncurses-6.1-he6710b0_1.conda
    Warning: Files 'share/terminfo/P/P4', 'share/terminfo/p/p4' found in the package(s): ncurses-6.1-he6710b0_1.conda
    Warning: Files 'share/terminfo/p/p5', 'share/terminfo/P/P5' found in the package(s): ncurses-6.1-he6710b0_1.conda
    Warning: Files 'share/terminfo/p/p7', 'share/terminfo/P/P7' found in the package(s): ncurses-6.1-he6710b0_1.conda
    Warning: Files 'share/terminfo/p/p8', 'share/terminfo/P/P8' found in the package(s): ncurses-6.1-he6710b0_1.conda
    Warning: Files 'share/terminfo/p/p8-w', 'share/terminfo/P/P8-W' found in the package(s): ncurses-6.1-he6710b0_1.conda
    Warning: Files 'share/terminfo/P/P9', 'share/terminfo/p/p9' found in the package(s): ncurses-6.1-he6710b0_1.conda
    Warning: Files 'share/terminfo/P/P9-8', 'share/terminfo/p/p9-8' found in the package(s): ncurses-6.1-he6710b0_1.conda
    Warning: Files 'share/terminfo/P/P9-8-W', 'share/terminfo/p/p9-8-w' found in the package(s): ncurses-6.1-he6710b0_1.conda
    Warning: Files 'share/terminfo/P/P9-W', 'share/terminfo/p/p9-w' found in the package(s): ncurses-6.1-he6710b0_1.conda
    Warning: Files 'share/terminfo/h/hp2621A', 'share/terminfo/h/hp2621a' found in the package(s): ncurses-6.1-he6710b0_1.conda
    Warning: Files 'share/terminfo/h/hp70092a', 'share/terminfo/h/hp70092A' found in the package(s): ncurses-6.1-he6710b0_1.conda
    DEBUG:urllib3.util.retry:Converted retries value: 3 -> Retry(total=3, connect=None, read=None, redirect=None, status=None)
    DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): repo.anaconda.com:80
    DEBUG:urllib3.connectionpool:http://repo.anaconda.com:80 "GET /pkgs/main/linux-64/repodata.json HTTP/1.1" 301 None
    DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): repo.anaconda.com:443
    DEBUG:urllib3.connectionpool:https://repo.anaconda.com:443 "GET /pkgs/main/linux-64/repodata.json HTTP/1.1" 200 None
    DEBUG:conda.core.subdir_data:
    >>GET /pkgs/main/linux-64/repodata.json HTTPS
    > User-Agent: conda/4.7.5 requests/2.22.0 CPython/3.7.3 Linux/3.10.0-957.12.2.el7.x86_64 centos/7.6.1810 glibc/2.17
    > Accept: */*
    > Accept-Encoding: gzip, deflate, compress, identity
    > Connection: keep-alive
    
    <<HTTPS 200 OK
    < Age: 357959
    < Cache-Control: public, max-age=30
    < CF-Cache-Status: HIT
    < CF-RAY: 4ef77a725da2275a-FRA
    < Content-Encoding: gzip
    < Content-Type: application/json
    < Date: Mon, 01 Jul 2019 09:50:53 GMT
    < ETag: W/"a725c0e868a4be03c9efb546db94fed3-2"
    < Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
    < Expires: Mon, 01 Jul 2019 09:51:23 GMT
    < Last-Modified: Thu, 27 Jun 2019 06:21:20 GMT
    < Server: cloudflare
    < Set-Cookie: __cfduid=d2ef248e9f1e2a67b7c87984492c1ace51561974653; expires=Tue, 30-Jun-20 09:50:53 GMT; path=/; domain=.anaconda.com; HttpOnly; Secure
    < Transfer-Encoding: chunked
    < Vary: Accept-Encoding
    < x-amz-id-2: 1uQWKDf+1wPr9oMdlbAeuwRID9tOFxoxJaDPKPvc7zOjPygt1RkpWzideGWZ47n8bxAx+XilNys=
    < x-amz-request-id: 31C41F5EBE128DDC
    < x-amz-version-id: RpZGC87a0p.da4OaxYCtdSoxcia.6FQ2
    < Connection: keep-alive
    < Elapsed: 00:00.064492
    
    { 'info': {'subdir': 'linux-64'},
      'packages': { '_ipyw_jlab_nb_ext_conf-0.1.0-py27_0.tar.bz2': { 'build': 'py27_0',
                                                                     'build_number': 0,
                                                          
    
    
    DEBUG:urllib3.connectionpool:http://repo.anaconda.com:80 "GET /pkgs/main/noarch/repodata.json HTTP/1.1" 301 None
    DEBUG:urllib3.connectionpool:https://repo.anaconda.com:443 "GET /pkgs/main/noarch/repodata.json HTTP/1.1" 200 None
    DEBUG:conda.core.subdir_data:
    >>GET /pkgs/main/noarch/repodata.json HTTPS
    > User-Agent: conda/4.7.5 requests/2.22.0 CPython/3.7.3 Linux/3.10.0-957.12.2.el7.x86_64 centos/7.6.1810 glibc/2.17
    > Accept: */*
    > Accept-Encoding: gzip, deflate, compress, identity
    > Connection: keep-alive
    > Cookie: __cfduid=d2ef248e9f1e2a67b7c87984492c1ace51561974653
    
    <<HTTPS 200 OK
    < Age: 357984
    < Cache-Control: public, max-age=30
    < CF-Cache-Status: HIT
    < CF-RAY: 4ef77ad38c0a275a-FRA
    < Content-Encoding: gzip
    < Content-Type: application/json
    < Date: Mon, 01 Jul 2019 09:51:09 GMT
    < ETag: W/"d200c5f4aa3959cb789ef5812fe3aeb0"
    < Expect-CT: max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
    < Expires: Mon, 01 Jul 2019 09:51:39 GMT
    < Last-Modified: Thu, 27 Jun 2019 06:21:42 GMT
    < Server: cloudflare
    < Transfer-Encoding: chunked
    < Vary: Accept-Encoding
    < x-amz-id-2: va4pjXk3Xr7syus2ZImAFXVt73QSoH4V0a5GN8723a3tUbUBraMyB9AqqQxw2XbbQjkT2Kez6gc=
    < x-amz-request-id: C159EA0B3CBC5D51
    < x-amz-version-id: tj0liLiqy_p2p5uurUrbuejYf.3IWfoe
    < Connection: keep-alive
    < Elapsed: 00:00.020968
    
    { 'info': {'subdir': 'noarch'},
      'packages': { 'affine-2.1.0-pyh128a3a6_1.tar.bz2': { 'build': 'pyh128a3a6_1',
                                                           'build_number': 1,
                                                           'depends': ['py
    
    
    Traceback (most recent call last):
      File "/root/miniconda3/lib/python3.7/site-packages/conda/models/dist.py", line 207, in parse_dist_name
        version = parts[1]
    IndexError: list index out of range
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/root/miniconda3/bin/constructor", line 11, in <module>
        sys.exit(main())
      File "/root/miniconda3/lib/python3.7/site-packages/constructor/main.py", line 221, in main
        dry_run=opts.dry_run)
      File "/root/miniconda3/lib/python3.7/site-packages/constructor/main.py", line 128, in main_build
        create(info, verbose=verbose)
      File "/root/miniconda3/lib/python3.7/site-packages/constructor/shar.py", line 81, in create
        preconda_write_files(info, tmp_dir)
      File "/root/miniconda3/lib/python3.7/site-packages/constructor/preconda.py", line 137, in write_files
        write_conda_meta(info, dst_dir, final_urls_md5s)
      File "/root/miniconda3/lib/python3.7/site-packages/constructor/preconda.py", line 155, in write_conda_meta
        dists = tuple(Dist(url) for url, _ in final_urls_md5s)
      File "/root/miniconda3/lib/python3.7/site-packages/constructor/preconda.py", line 155, in <genexpr>
        dists = tuple(Dist(url) for url, _ in final_urls_md5s)
      File "/root/miniconda3/lib/python3.7/site-packages/conda/models/dist.py", line 48, in __call__
        dist = Dist.from_string(value)
      File "/root/miniconda3/lib/python3.7/site-packages/conda/models/dist.py", line 182, in from_string
        dist_details = cls.parse_dist_name(original_dist)
      File "/root/miniconda3/lib/python3.7/site-packages/conda/models/dist.py", line 217, in parse_dist_name
        raise CondaError("dist_name is not a valid conda package: %s" % original_string)
    conda.CondaError: dist_name is not a valid conda package: None
    (base) [root@centos-s-1vcpu-1gb-fra1-01 ~]# 
    
    • I tried this on different OSes and different versions of conda. sometimes it works the first time but then fails all subsequent runs.

    • I get the error even when I run the exact steps of your travis file.

    • When I run in --debug mode I have the feeling that the DEBUG:urllib3.connectionpool:https://repo.anaconda.com:443 "GET /pkgs/main/linux-64/repodata.json HTTP/1.1" 200 None step takes far longer, maybe it goes into timeout ?

    • I could invest some time and found that the error is cause from Nones in this structure, in def write_conda_meta: image

    • I forked constructor and triggered a travis run. Same error on all combinations: image travis console shot with the (same) error: image

    locked 
    opened by AXGKl 30
  • Add branding features on MacOS PKGs

    Add branding features on MacOS PKGs

    Branding

    MacOS PKGs were still using the default Anaconda branding and texts, so they couldn't be customized. I took some logic used in the Windows installers to provide equivalent features in this target output. I also needed to add some new keys.

    Note that if these new keys are not provided, Anaconda's default branding is still used; that way no backwards compatibility is broken for anybody relying on that (if this is being used internally or something). To disable Anaconda's branding you need to be explicit about it with empty strings "" (null fields are pruned for some reason during parsing).

    New keys:

    • welcome_file, welcome_text: Shown at the beginning of the wizard.
    • readme_file, readme_text: Shown right before the license if provided.
    • conclusion_file, conclusion_text: Shown at the end of the wizard.

    Reused keys (from Windows)

    • welcome_image: Path to a 1200x600 PNG or "". Takes precedence over *_text. Closes #158.
    • welcome_image_text: A str.

    We have also added:

    • reverse_domain_identifier, so it doesn't hardcode io.continuum internally.
    • default_location_pkg and pkg_name so you can better customize the default installation path. This is not as flexible as Windows or Linux options, but it's the best we can do for now. Closes #432 (in a way)
    • install_path_exists_error_text, which allows you to change the default error message shown when the install path already exists. This way you can tell your users to use a specific mechanism for your app, if needed.
    • notarization_identity_name. We sign the bundled conda-standalone binary so it can pass notarization too. This requires a different certificate, so this key was added.

    Other cosmetic fixes

    • The installer will now report the total installation size accurately. Before, it misreported the compressed tarballs size.
    • The progress bar fills up way too fast up to 90% (little we can do here), where it spends most of the time (conda is running behind the scenes). We use osascript to send notifications and report progress so the users don't think it got stuck.

    Other technical fixes

    • Install the PKG as part of the examples CI. This only happens on actual CI pipelines, not locally, because the PKG mechanism doesn't allow for arbitrary target locations, so we would end up polluting the user home directory. On local runs, the previous pkgutil expand behaviour is kept (unless the user chooses to run the PKG installation, which can be enabled by setting CI=1 to workaround the CI checks).
    cla-signed 
    opened by jaimergp 24
  • Support noarch:python packages

    Support noarch:python packages

    noarch:python packages are now widely used in channels such as plotly, pyviz and conda-forge. Yet constructor does not support them correctly. This PR addresses this issue.

    The idea of this PR is to follow the noarch:python specification in https://www.anaconda.com/condas-new-noarch-packages/ and imitate conda install. install.py is modified to do the following things:

    1. move site-packages/* into lib/pythonX.Y/site-packages
    2. move python-scripts/* into bin
    3. update prefix in the above files
    4. create wrappers for entry points found in info/link.json
    5. fix paths in conda meta.

    Python files are not compiled at the moment but can be added. I test this PR with https://github.com/ProgramFan/anaconda-plus/ and it works as expected.

    locked 
    opened by ProgramFan 21
  • Failures when

    Failures when "exclude"d packages cause inconsistent environments

    I am using the Maxiconda example, and the installer is built fine with no errors reported. When the installer is run there is no error reported however the installation is incomplete. The package cache is created but no packages are installed. If I open "show details" during the installation I can see that the environment creation failed because one of the excluded packages is required by another package:

    Collecting package metadata (current_repodata.json): ...working... done
    Solving environment: ...working... failed
    Collecting package metadata (repodata.json): ...working... done
    Solving environment: ...working... failed
    
    PackagesNotFoundError: The following packages are not available from current channels:
    
      - matplotlib==3.0.0=py35hd159220_0 -> pyqt=5.9
    
    Current channels:
    
      - http://repo.anaconda.com/pkgs/main/win-64
      - http://repo.anaconda.com/pkgs/main/noarch
    

    You can see that the environment solution failed because matplotlib couldn't be installed due to the missing pyqt dependency (pyqt is excluded in the construct.yaml).

    I would expect that either 1) the installer fails to build when the impossible environment is detected or 2) the installation fails when the environment creation fails. The way that the installer reports "Setup was completed successfully" smells like a bug to me.

    How are excluded packages supposed to work? Are the examples out of date?

    I am using constructor 3.0.0 on windows 7.

    type::feature help-wanted stale::recovered 
    opened by amjames 18
  • Windows installer built with constructor 3.0.1 fails at unpacking stage

    Windows installer built with constructor 3.0.1 fails at unpacking stage

    With constructor 3.0.0, my recipe builds a working Windows (win-64) installer. Packages are unpacked properly, menus items are created using menuinst and console_shortcut, and my app works.

    With constructor 3.0.1, the recipe still builds, but the Windows installer is broken. At the package unpacking stage, errors are encounted which are visible in the traceback if you click "Show details" (see below). The unpacking stage, which is normally very slow for my large PyQt-based app, goes by instantly. Next, an error dialog pops up when the installer attempts to create the menu items ("Failed to create menus", with options to "Abort", "Retry", and "Ignore"). Presumably the error about menu items is just a symptom of the failure to unpack everything earlier. If I click "Ignore", the process completes and claims to have done so successfully. Finally, if I inspect the installation directory, I can see that almost everything is missing except for the package tarballs.

    Here's the traceback:

    Traceback

    Output folder: C:\Users\Jeffrey\neurotic\Lib
    Extract: _nsis.py
    Extract: _system_path.py
    Output folder: C:\Users\Jeffrey\neurotic\conda-meta
    Extract: history
    Output folder: C:\Users\Jeffrey\neurotic
    Extract: _conda.exe
    Output folder: C:\Users\Jeffrey\neurotic
    Output folder: C:\Users\Jeffrey\neurotic\pkgs
    Extract: env.txt
    Extract: urls
    Extract: urls.txt
    Extract: post_install.bat
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\cache
    Extract: 09cdf8bf.json
    Extract: 3e39a7aa.json
    Extract: 59ba4880.json
    Extract: 5afe41e9.json
    Extract: 5ca77eed.json
    Extract: c4a505b4.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\av-6.2.0-py38heb183d3_1\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\ca-certificates-2019.11.28-hecc5488_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\certifi-2019.11.28-py38_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\cffi-1.13.2-py38hb32ad35_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\chardet-3.0.4-py38_1003\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\conda-4.7.12-py38_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\conda-package-handling-1.6.0-py38h2fa13f4_1\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\console_shortcut-0.1.1-3\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\cryptography-2.8-py38hb32ad35_1\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\cycler-0.10.0-py_2\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\ephyviewer-1.2.0-py_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\ffmpeg-4.1.3-h6538335_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\freetype-2.10.0-h563cfd7_1\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\icc_rt-2019.0.0-h0cc432a_1\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\icu-64.2-he025d50_1\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\idna-2.8-py38_1000\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\intel-openmp-2019.4-245\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\jpeg-9c-hfa6e2cd_1001\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\kiwisolver-1.1.0-py38he980bc4_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\libblas-3.8.0-14_mkl\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\libcblas-3.8.0-14_mkl\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\libclang-9.0.0-default_hf44288c_4\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\liblapack-3.8.0-14_mkl\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\libpng-1.6.37-h7602738_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\libtiff-4.1.0-h21b02b4_1\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\lz4-c-1.8.3-he025d50_1001\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\matplotlib-3.1.2-py38_1\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\matplotlib-base-3.1.2-py38h2981e6d_1\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\menuinst-1.4.16-py38_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\mkl-2019.4-245\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\neurotic-1.2.0-py38_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\numpy-1.17.3-py38hc71023c_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\olefile-0.46-py_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\openssl-1.1.1d-hfa6e2cd_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\packaging-19.2-py_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\pandas-0.25.3-py38he350917_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\pillow-6.2.1-py38h5fcff3f_1\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\pip-19.3.1-py38_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\pycosat-0.6.3-py38hfa6e2cd_1002\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\pycparser-2.19-py38_1\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\pyopenssl-19.1.0-py38_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\pyparsing-2.4.5-py_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\pyqt-5.12.3-py38h6538335_1\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\pyqtgraph-0.10.0-py_7\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\pysocks-1.7.1-py38_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\python-3.8.0-hc9e8b01_5\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\python-dateutil-2.8.1-py_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\python-neo-0.8.0-py_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\pytz-2019.3-py_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\pywin32-225-py38hfa6e2cd_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\pyyaml-5.2-py38hfa6e2cd_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\qt-5.12.5-h7ef1ec2_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\quantities-0.12.3-pyh24bf2e0_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\requests-2.22.0-py38_1\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\ruamel_yaml-0.15.80-py38hfa6e2cd_1000\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\scipy-1.3.2-py38h582fac2_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\setuptools-42.0.2-py38_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\six-1.13.0-py38_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\sqlite-3.30.1-hfa6e2cd_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\tk-8.6.10-hfa6e2cd_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\tornado-6.0.3-py38hfa6e2cd_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\tqdm-4.40.0-py_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\urllib3-1.25.7-py38_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\vc-14.1-h0510ff6_4\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\vs2015_runtime-14.16.27012-hf0eaf9b_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\wheel-0.33.6-py38_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\win_inet_pton-1.1.0-py38_0\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\wincertstore-0.2-py38_1003\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\xz-5.2.4-h2fa13f4_1001\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\yaml-0.2.2-hfa6e2cd_1\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\zlib-1.2.11-h2fa13f4_1006\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs\zstd-1.4.4-hd8a0e53_1\info
    Extract: repodata_record.json
    Output folder: C:\Users\Jeffrey\neurotic\pkgs
    Extract: python-3.8.0-hc9e8b01_5.tar.bz2
    Extract: ca-certificates-2019.11.28-hecc5488_0.tar.bz2
    Extract: icc_rt-2019.0.0-h0cc432a_1.conda
    Extract: intel-openmp-2019.4-245.conda
    Extract: vs2015_runtime-14.16.27012-hf0eaf9b_0.conda
    Extract: mkl-2019.4-245.conda
    Extract: vc-14.1-h0510ff6_4.conda
    Extract: ffmpeg-4.1.3-h6538335_0.tar.bz2
    Extract: icu-64.2-he025d50_1.tar.bz2
    Extract: jpeg-9c-hfa6e2cd_1001.tar.bz2
    Extract: libblas-3.8.0-14_mkl.tar.bz2
    Extract: libclang-9.0.0-default_hf44288c_4.tar.bz2
    Extract: lz4-c-1.8.3-he025d50_1001.tar.bz2
    Extract: openssl-1.1.1d-hfa6e2cd_0.tar.bz2
    Extract: sqlite-3.30.1-hfa6e2cd_0.tar.bz2
    Extract: tk-8.6.10-hfa6e2cd_0.tar.bz2
    Extract: xz-5.2.4-h2fa13f4_1001.tar.bz2
    Extract: yaml-0.2.2-hfa6e2cd_1.tar.bz2
    Extract: zlib-1.2.11-h2fa13f4_1006.tar.bz2
    Extract: libcblas-3.8.0-14_mkl.tar.bz2
    Extract: liblapack-3.8.0-14_mkl.tar.bz2
    Extract: libpng-1.6.37-h7602738_0.tar.bz2
    Extract: zstd-1.4.4-hd8a0e53_1.tar.bz2
    Extract: freetype-2.10.0-h563cfd7_1.tar.bz2
    Extract: libtiff-4.1.0-h21b02b4_1.tar.bz2
    Extract: pywin32-225-py38hfa6e2cd_0.tar.bz2
    Extract: qt-5.12.5-h7ef1ec2_0.tar.bz2
    Extract: menuinst-1.4.16-py38_0.tar.bz2
    Extract: certifi-2019.11.28-py38_0.tar.bz2
    Extract: chardet-3.0.4-py38_1003.tar.bz2
    Extract: console_shortcut-0.1.1-3.conda
    Extract: idna-2.8-py38_1000.tar.bz2
    Extract: kiwisolver-1.1.0-py38he980bc4_0.tar.bz2
    Extract: numpy-1.17.3-py38hc71023c_0.tar.bz2
    Extract: pycosat-0.6.3-py38hfa6e2cd_1002.tar.bz2
    Extract: pycparser-2.19-py38_1.tar.bz2
    Extract: pyqt-5.12.3-py38h6538335_1.tar.bz2
    Extract: pyyaml-5.2-py38hfa6e2cd_0.tar.bz2
    Extract: ruamel_yaml-0.15.80-py38hfa6e2cd_1000.tar.bz2
    Extract: six-1.13.0-py38_0.tar.bz2
    Extract: tornado-6.0.3-py38hfa6e2cd_0.tar.bz2
    Extract: win_inet_pton-1.1.0-py38_0.tar.bz2
    Extract: wincertstore-0.2-py38_1003.tar.bz2
    Extract: cffi-1.13.2-py38hb32ad35_0.tar.bz2
    Extract: pysocks-1.7.1-py38_0.tar.bz2
    Extract: scipy-1.3.2-py38h582fac2_0.tar.bz2
    Extract: setuptools-42.0.2-py38_0.tar.bz2
    Extract: cryptography-2.8-py38hb32ad35_1.tar.bz2
    Extract: wheel-0.33.6-py38_0.tar.bz2
    Extract: pip-19.3.1-py38_0.tar.bz2
    Extract: pyopenssl-19.1.0-py38_0.tar.bz2
    Extract: urllib3-1.25.7-py38_0.tar.bz2
    Extract: requests-2.22.0-py38_1.tar.bz2
    Extract: av-6.2.0-py38heb183d3_1.tar.bz2
    Extract: conda-4.7.12-py38_0.tar.bz2
    Extract: cycler-0.10.0-py_2.tar.bz2
    Extract: olefile-0.46-py_0.tar.bz2
    Extract: pyparsing-2.4.5-py_0.tar.bz2
    Extract: pyqtgraph-0.10.0-py_7.tar.bz2
    Extract: python-dateutil-2.8.1-py_0.tar.bz2
    Extract: pytz-2019.3-py_0.tar.bz2
    Extract: quantities-0.12.3-pyh24bf2e0_0.tar.bz2
    Extract: tqdm-4.40.0-py_0.tar.bz2
    Extract: conda-package-handling-1.6.0-py38h2fa13f4_1.tar.bz2
    Extract: matplotlib-base-3.1.2-py38h2981e6d_1.tar.bz2
    Extract: packaging-19.2-py_0.tar.bz2
    Extract: pandas-0.25.3-py38he350917_0.tar.bz2
    Extract: pillow-6.2.1-py38h5fcff3f_1.tar.bz2
    Extract: python-neo-0.8.0-py_0.tar.bz2
    Extract: matplotlib-3.1.2-py38_1.tar.bz2
    Extract: ephyviewer-1.2.0-py_0.tar.bz2
    Extract: neurotic-1.2.0-py38_0.tar.bz2
    [30760] Failed to execute script pyi_rth_certifi
    Traceback (most recent call last):
      File "site-packages\PyInstaller\loader\rthooks\pyi_rth_certifi.py", line 11, in <module>
      File "D:\bld\conda-standalone_1574051287430\_h_env\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
      File "ssl.py", line 98, in <module>
    ImportError: DLL load failed: The specified module could not be found.
    [28348] Failed to execute script pyi_rth_certifi
    Traceback (most recent call last):
      File "site-packages\PyInstaller\loader\rthooks\pyi_rth_certifi.py", line 11, in <module>
      File "D:\bld\conda-standalone_1574051287430\_h_env\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
      File "ssl.py", line 98, in <module>
    ImportError: DLL load failed: The specified module could not be found.
    Delete file: C:\Users\Jeffrey\neurotic\pkgs\env.txt
    Output folder: C:\Users\Jeffrey\neurotic\conda-meta
    Extract: history
    Creating neurotic menus...
    [20632] Failed to execute script pyi_rth_certifi
    Traceback (most recent call last):
      File "site-packages\PyInstaller\loader\rthooks\pyi_rth_certifi.py", line 11, in <module>
      File "D:\bld\conda-standalone_1574051287430\_h_env\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", line 627, in exec_module
      File "ssl.py", line 98, in <module>
    ImportError: DLL load failed: The specified module could not be found.
    Execute: "C:\Users\Jeffrey\neurotic\pythonw.exe" -E -s "C:\Users\Jeffrey\neurotic\Lib\_nsis.py" mkdirs
    Running post install...
    Execute: "C:\Users\Jeffrey\neurotic\pythonw.exe" -E -s "C:\Users\Jeffrey\neurotic\Lib\_nsis.py" post_install
    Created uninstaller: C:\Users\Jeffrey\neurotic\Uninstall-neurotic.exe
    Completed
    

    It's looking for a missing module at "D:\bld\conda-standalone_1574051287430\_h_env\lib\site-packages\PyInstaller\loader\pyimod03_importers.py", but I don't even have a D drive. I'm not sure where this is coming from. Perhaps a path is hard-coded into something somewhere? I noticed that conda-standalone was added as a dependency for constructor in 3.0.1, and that it's name appears in the missing module path, so it's possibly implicated.

    I also tried upgrading constructor to the latest dev version using pip install -U git+https://github.com/conda/constructor.git to see if this issue might have been fixed by recent unreleased changes. This caused the installer to change its default install path (from C:\Users\Jeffrey\neurotic to C:\Users\Jeffrey\AppData\Local\Continuum\neurotic), but otherwise the upgrade made no difference.

    The environment in which I ran constructor was created today using conda create -n constructor constructor. Here are my environment details (prior to upgrading with pip):

    conda info

         active environment : base
        active env location : C:\Users\Jeffrey\Miniconda3\envs\constructor
                shell level : 2
           user config file : C:\Users\Jeffrey\.condarc
     populated config files : C:\Users\Jeffrey\.condarc
              conda version : 4.7.12
        conda-build version : not installed
             python version : 3.7.3.final.0
           virtual packages :
           base environment : C:\Users\Jeffrey\Miniconda3\envs\constructor  (writable)
               channel URLs : https://conda.anaconda.org/conda-forge/win-64
                              https://conda.anaconda.org/conda-forge/noarch
                              https://repo.anaconda.com/pkgs/main/win-64
                              https://repo.anaconda.com/pkgs/main/noarch
                              https://repo.anaconda.com/pkgs/r/win-64
                              https://repo.anaconda.com/pkgs/r/noarch
                              https://repo.anaconda.com/pkgs/msys2/win-64
                              https://repo.anaconda.com/pkgs/msys2/noarch
              package cache : C:\Users\Jeffrey\Miniconda3\envs\constructor\pkgs
                              C:\Users\Jeffrey\.conda\pkgs
                              C:\Users\Jeffrey\AppData\Local\conda\conda\pkgs
           envs directories : C:\Users\Jeffrey\Miniconda3\envs\constructor\envs
                              C:\Users\Jeffrey\.conda\envs
                              C:\Users\Jeffrey\AppData\Local\conda\conda\envs
                   platform : win-64
                 user-agent : conda/4.7.12 requests/2.22.0 CPython/3.7.3 Windows/10 Windows/10.0.17763
              administrator : False
                 netrc file : None
               offline mode : False
    

    conda config --show-sources

    ==> C:\Users\Jeffrey\.condarc <==
    ssl_verify: True
    channels:
      - conda-forge
      - defaults
    

    conda list --show-channel-urls

    # packages in environment at C:\Users\Jeffrey\Miniconda3\envs\constructor:
    #
    # Name                    Version                   Build  Channel
    ca-certificates           2019.11.28           hecc5488_0    conda-forge
    certifi                   2019.11.28               py37_0    conda-forge
    cffi                      1.13.2           py37hb32ad35_0    conda-forge
    chardet                   3.0.4                 py37_1003    conda-forge
    conda                     4.7.12                   py37_0    conda-forge
    conda-package-handling    1.6.0            py37h2fa13f4_1    conda-forge
    conda-standalone          4.7.12                        1    conda-forge
    constructor               3.0.1                    py37_0    conda-forge
    cryptography              2.8              py37hb32ad35_1    conda-forge
    freetype                  2.10.0               h563cfd7_1    conda-forge
    idna                      2.8                   py37_1000    conda-forge
    jpeg                      9c                hfa6e2cd_1001    conda-forge
    libpng                    1.6.37               h7602738_0    conda-forge
    libtiff                   4.1.0                h21b02b4_1    conda-forge
    lz4-c                     1.8.3             he025d50_1001    conda-forge
    menuinst                  1.4.16                   py37_0    conda-forge
    nsis                      3.01                          1    conda-forge
    olefile                   0.46                       py_0    conda-forge
    openssl                   1.1.1d               hfa6e2cd_0    conda-forge
    pillow                    6.2.1            py37h5fcff3f_1    conda-forge
    pip                       19.3.1                   py37_0    conda-forge
    pycosat                   0.6.3           py37hfa6e2cd_1002    conda-forge
    pycparser                 2.19                     py37_1    conda-forge
    pyopenssl                 19.1.0                   py37_0    conda-forge
    pysocks                   1.7.1                    py37_0    conda-forge
    python                    3.7.3                h510b542_1    conda-forge
    pywin32                   225              py37hfa6e2cd_0    conda-forge
    requests                  2.22.0                   py37_1    conda-forge
    ruamel_yaml               0.15.80         py37hfa6e2cd_1000    conda-forge
    setuptools                42.0.2                   py37_0    conda-forge
    six                       1.13.0                   py37_0    conda-forge
    sqlite                    3.30.1               hfa6e2cd_0    conda-forge
    tk                        8.6.10               hfa6e2cd_0    conda-forge
    tqdm                      4.40.0                     py_0    conda-forge
    urllib3                   1.25.7                   py37_0    conda-forge
    vc                        14.1                 h0510ff6_4    defaults
    vs2015_runtime            14.16.27012          hf0eaf9b_0    defaults
    wheel                     0.33.6                   py37_0    conda-forge
    win_inet_pton             1.1.0                    py37_0    conda-forge
    wincertstore              0.2                   py37_1003    conda-forge
    xz                        5.2.4             h2fa13f4_1001    conda-forge
    yaml                      0.2.2                hfa6e2cd_1    conda-forge
    zlib                      1.2.11            h2fa13f4_1006    conda-forge
    zstd                      1.4.4                hd8a0e53_1    conda-forge
    

    locked 
    opened by jpgill86 17
  • Use of PREFIX in post_install script

    Use of PREFIX in post_install script

    It would be useful to be able to activate the newly installed conda environment in the post_install script, but there is currently no way of knowing where the user chose to install it. Is there some way to call post_install from a shell that has some appropriately named env var reflecting this information?

    source::community type::documentation stale::recovered 
    opened by FaustinCarter 15
  • `conda --clone` surprised me by downloading a stack of files

    `conda --clone` surprised me by downloading a stack of files

    From @ijstokes on September 12, 2017 15:57

    TL;DR: I expect conda --clone to benefit from the fact that all the necessary files for the clone environment are already on my system, and nothing needs to be downloaded. But that does not seem to be the case.

    Details:

    I'm trying to clone my base environment. Meaning I want an exact* clone of my base environment (* understanding some packages can, at this point, only exist in the base environment and so they won't be in the clone). Worst case scenario the clone will be a subset of what is in my base environment, which I would take to mean that all the bytes related to the clone are already on my system. So it is a surprise when this operation triggers a download of basically everything I have.

    $ conda create -n root_clone --clone root
    Source:      /Users/ijstokes/anaconda
    Destination: /Users/ijstokes/anaconda/envs/root_clone
    The following packages cannot be cloned out of the root environment:
     - conda-4.4.0rc1-py36_0
     - conda-build-3.0.6-py36_0
     - conda-env-2.6.0-0
    Packages: 370
    Files: 344
    
    Downloading and Extracting Packages
    blosc 1.2.3: ###################################################################################################################### | 100% 
    ca-certificates 2017.7.27.1: ###################################################################################################### | 100% 
    expat 2.1.0: ###################################################################################################################### | 100% 
    font-ttf-dejavu-sans-mono 2.37: ################################################################################################### | 100% 
    font-ttf-inconsolata 2.000: ####################################################################################################### | 100% 
    font-ttf-source-code-pro 2.030: ################################################################################################### | 100% 
    font-ttf-ubuntu 0.83: ############################################################################################################# | 100% 
    graphite2 1.3.9: ################################################################################################################## | 100% 
    icu 54.1: ######################################################################################################################### | 100% 
    jbig 2.1: ######################################################################################################################### | 100% 
    jpeg 9b: ########################################################################################################################## | 100% 
    libffi 3.2.1: ##################################################################################################################### | 100% 
    libgcc 4.8.5: ##################################################################################################################### | 100% 
    libgpuarray 0.6.8: ################################################################################################################ | 100% 
    libiconv 1.14: #################################################################################################################### | 100% 
    mkl 2017.0.3:                                                                                                                       |   0% mkl 2017.0.3: ##################################################################################################################### | 100% 
    ncurses 5.9: ###################################################################################################################### | 100% 
    openjdk 8.0.121: ################################################################################################################## | 100% 
    pixman 0.34.0: #################################################################################################################### | 100% 
    readline 6.2: ##################################################################################################################### | 100% 
    redis 3.2.0: ###################################################################################################################### | 100% 
    sqlite 3.13.0: #################################################################################################################### | 100% 
    tk 8.5.18: ######################################################################################################################## | 100% 
    unixodbc 2.3.4: ################################################################################################################### | 100% 
    xz 5.2.2: ######################################################################################################################### | 100% 
    yaml 0.1.6: ####################################################################################################################### | 100% 
    zeromq 4.1.3: ##################################################################################################################### | 100% 
    zlib 1.2.8: ####################################################################################################################### | 100% 
    dbus 1.10.10: ##################################################################################################################### | 100% 
    fonts-continuum 1: ################################################################################################################ | 100% 
    gettext 0.19.8: ################################################################################################################### | 100% 
    gsl 2.2.1: ######################################################################################################################## | 100% 
    h2o 3.10.0.9: ##################################################################################################################### | 100% 
    hdf5 1.8.17: ###################################################################################################################### | 100% 
    libpng 1.6.27: #################################################################################################################### | 100% 
    libprotobuf 3.2.0: ################################################################################################################ | 100% 
    libtiff 4.0.6: #################################################################################################################### | 100% 
    libxml2 2.9.4: #################################################################################################################### | 100% 
    openssl 1.0.2l: ################################################################################################################### | 100% 
    pandoc 1.19.2.1: ################################################################################################################## | 100% 
    pcre 8.39: ######################################################################################################################## | 100% 
    qt 5.6.2: ######################################################################################################################### | 100% 
    curl 7.52.1: ###################################################################################################################### | 100% 
    freetype 2.5.5: ################################################################################################################### | 100% 
    glib 2.50.2: ###################################################################################################################### | 100% 
    libxslt 1.1.29: ################################################################################################################### | 100% 
    python 3.6.1: ##################################################################################################################### | 100% 
    _license 1.1: ##################################################################################################################### | 100% 
    alabaster 0.7.10: ################################################################################################################# | 100% 
    anaconda custom: ################################################################################################################## | 100% 
    appnope 0.1.0: #################################################################################################################### | 100% 
    appscript 1.0.1: ################################################################################################################## | 100% 
    asn1crypto 0.22.0: ################################################################################################################ | 100% 
    backports 1.0: #################################################################################################################### | 100% 
    beautifulsoup4 4.6.0: ############################################################################################################# | 100% 
    bitarray 0.8.1: ################################################################################################################### | 100% 
    blist 1.3.6: ###################################################################################################################### | 100% 
    boto 2.47.0: ###################################################################################################################### | 100% 
    certifi 2016.2.28: ################################################################################################################ | 100% 
    

    You get the idea!

    $ conda info -a
    
         active environment : base
        active env location : /Users/ijstokes/anaconda
                shell level : 1
           user config file : /Users/ijstokes/.condarc
     populated config files : /Users/ijstokes/anaconda/.condarc
                              /Users/ijstokes/.condarc
              conda version : 4.4.0rc1
        conda-build version : 3.0.6
             python version : 3.6.1.final.0
           base environment : /Users/ijstokes/anaconda  (writable)
               channel URLs : https://conda.anaconda.org/conda-forge/osx-64
                              https://conda.anaconda.org/conda-forge/noarch
                              https://repo.continuum.io/pkgs/free/osx-64
                              https://repo.continuum.io/pkgs/free/noarch
                              https://repo.continuum.io/pkgs/r/osx-64
                              https://repo.continuum.io/pkgs/r/noarch
                              https://repo.continuum.io/pkgs/pro/osx-64
                              https://repo.continuum.io/pkgs/pro/noarch
              package cache : /Users/ijstokes/anaconda/pkgs
                              /Users/ijstokes/.conda/pkgs
           envs directories : /Users/ijstokes/anaconda/envs
                              /Users/ijstokes/.conda/envs
                   platform : osx-64
                 user-agent : conda/4.4.0rc1 requests/2.14.2 CPython/3.6.1 Darwin/16.7.0 OSX/10.12.6
                    UID:GID : 502:20
                 netrc file : None
               offline mode : False
    
    # conda environments:
    #
    ana44clean               /Users/ijstokes/anaconda/envs/ana44clean
    ana44scan                /Users/ijstokes/anaconda/envs/ana44scan
    ap-features              /Users/ijstokes/anaconda/envs/ap-features
    bokehwkshp               /Users/ijstokes/anaconda/envs/bokehwkshp
    car-behavioral-cloning     /Users/ijstokes/anaconda/envs/car-behavioral-cloning
    cpuc                     /Users/ijstokes/anaconda/envs/cpuc
    daskwkshp                /Users/ijstokes/anaconda/envs/daskwkshp
    dspyr                    /Users/ijstokes/anaconda/envs/dspyr
    fusion                   /Users/ijstokes/anaconda/envs/fusion
    ggpy36                   /Users/ijstokes/anaconda/envs/ggpy36
    h2o                      /Users/ijstokes/anaconda/envs/h2o
    ingest                   /Users/ijstokes/anaconda/envs/ingest
    jlab                     /Users/ijstokes/anaconda/envs/jlab
    jupyter                  /Users/ijstokes/anaconda/envs/jupyter
    myenv                    /Users/ijstokes/anaconda/envs/myenv
    myoracle                 /Users/ijstokes/anaconda/envs/myoracle
    myoracle60py36           /Users/ijstokes/anaconda/envs/myoracle60py36
    mytest                   /Users/ijstokes/anaconda/envs/mytest
    opensky                  /Users/ijstokes/anaconda/envs/opensky
    oracle                   /Users/ijstokes/anaconda/envs/oracle
    py27                     /Users/ijstokes/anaconda/envs/py27
    py27scan                 /Users/ijstokes/anaconda/envs/py27scan
    py36                     /Users/ijstokes/anaconda/envs/py36
    spark                    /Users/ijstokes/anaconda/envs/spark
    spyder                   /Users/ijstokes/anaconda/envs/spyder
    topher                   /Users/ijstokes/anaconda/envs/topher
    vatic                    /Users/ijstokes/anaconda/envs/vatic
    webex                    /Users/ijstokes/anaconda/envs/webex
    base                  *  /Users/ijstokes/anaconda
    
    sys.version: 3.6.1 |Anaconda custom (x86_64)| (defaul...
    sys.prefix: /Users/ijstokes/anaconda
    sys.executable: /Users/ijstokes/anaconda/bin/python
    conda location: /Users/ijstokes/anaconda/lib/python3.6/site-packages/conda
    conda-build: /Users/ijstokes/anaconda/bin/conda-build
    conda-convert: /Users/ijstokes/anaconda/bin/conda-convert
    conda-develop: /Users/ijstokes/anaconda/bin/conda-develop
    conda-env: /Users/ijstokes/anaconda/bin/conda-env
    conda-index: /Users/ijstokes/anaconda/bin/conda-index
    conda-inspect: /Users/ijstokes/anaconda/bin/conda-inspect
    conda-metapackage: /Users/ijstokes/anaconda/bin/conda-metapackage
    conda-render: /Users/ijstokes/anaconda/bin/conda-render
    conda-server: /Users/ijstokes/anaconda/bin/conda-server
    conda-skeleton: /Users/ijstokes/anaconda/bin/conda-skeleton
    conda-verify: /Users/ijstokes/anaconda/bin/conda-verify
    user site dirs: 
    
    CONDA_DEFAULT_ENV: base
    CONDA_ENVS_PATH: <not set>
    DYLD_LIBRARY_PATH: <not set>
    PATH: /Users/ijstokes/anaconda/bin:/Users/ijstokes/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin
    PYTHONHOME: <not set>
    PYTHONPATH: <not set>
    
    License directories:
        /Users/ijstokes/.continuum
        /Users/ijstokes/Library/Application Support/Anaconda
        /Users/ijstokes/anaconda/licenses
    License files (license*.txt):
        /Users/ijstokes/.continuum/license_bundle_20160524191753.txt
                   Reading license file : 6
                        Signature valid : 6
                           Vendor match : 3
                                product : 'mkl-optimizations'
                               packages : 'mkl'
                               end_date : '2017-05-24'
                                   type : 'Trial'
                                product : 'iopro'
                               packages : 'iopro'
                               end_date : '2017-05-24'
                                   type : 'Trial'
                                product : 'accelerate'
                               packages : 'numbapro mkl'
                               end_date : '2017-05-24'
                                   type : 'Trial'
        /Users/ijstokes/.continuum/license_fusion_20161026132253.txt
                   Reading license file : 1
                        Signature valid : 1
                           Vendor match : 0
    Package/feature end dates:
        mkl             : 2017-05-24
        iopro           : 2017-05-24
        numbapro        : 2017-05-24
    

    Copied from original issue: conda/conda#5953

    locked 
    opened by kalefranz 15
  • PR: Add initial CI for appveyor and travis

    PR: Add initial CI for appveyor and travis

    @kalefranz this is just some initial work to get the CI running with whatever tests are found. I also ran the examples in the example folder but at the moment 2/4 fail.

    Also conda in canary is failing but I added those tests to allowed failures. I could add the travis also on this PR, but I do not have rights to do so

    Comments / thoughts?


    This is where we are:

    ---------- coverage: platform darwin, python 2.7.13-final-0 ----------
    Name                             Stmts   Miss  Cover
    ----------------------------------------------------
    constructor/__init__.py              1      0   100%
    constructor/__main__.py              5      5     0%
    constructor/conda_interface.py      31     13    58%
    constructor/construct.py            94     94     0%
    constructor/exceptions.py           20     20     0%
    constructor/fcp.py                 197    157    20%
    constructor/imaging.py              68      6    91%
    constructor/install.py             362    284    22%
    constructor/jinja.py                21     21     0%
    constructor/main.py                119    119     0%
    constructor/osxpkg.py              142    142     0%
    constructor/preconda.py             85     85     0%
    constructor/shar.py                 82     82     0%
    constructor/utils.py                77     47    39%
    constructor/winexe.py              143    143     0%
    ----------------------------------------------------
    TOTAL                             1447   1218    16%
    

    I could add coveralls.io to this as well, but I think @kalefranz is more fond of codecov.io ?


    Update:

    • [x] Travis added for 2.7 and 3.6 for linux and mac (only 3.6) and linux with conda-canary for 3.6
    • [x] Appveyor added for 2.7 and 3.6 for win and conda-canary for 2.7
    • [x] Updated README to include badges for builds and coverage
    locked 
    opened by goanpeca 15
  • Bus Error (core dumped) with anaconda.org/anaconda and anaconda.org/conda-forge

    Bus Error (core dumped) with anaconda.org/anaconda and anaconda.org/conda-forge

    Hi constructor devs,

    I am getting a bus error when using conda.anaconda.org/anaconda and conda.anaconda.org/conda-forge as my channels in a construct.yaml. I have pared down the construct.yaml as far as it can go

    name: python
    version: 3.5 
    channels:
        - https://conda.anaconda.org/conda-forge
        - https://conda.anaconda.org/anaconda
    specs:
        - python 3.5*
    

    Running the constructor that is produced by this construct.yaml produces the following error:

    $ bash ./python-3.5-Linux-x86_64.sh -b -p /tmp/foo
    PREFIX=/tmp/foo
    installing: python-3.5.2-4 ...
    Python 3.5.2
    ./python-3.5-Linux-x86_64.sh: line 161: 20122 Bus error               (core dumped) $PYTHON -E -s $PREFIX/pkgs/.install.py $INST_OPT
    

    I tried to do a diff of the installer scripts produced when I remove conda-forge as a channel, but, as expected, that diff is pretty much inscrutable and filled with binary diffs :disappointed:

    cc @msarahan

    [edit] Running constructor without conda-forge as a channel does work

    locked 
    opened by ericdill 15
  • Allow for the creation of multiple environments with custom names

    Allow for the creation of multiple environments with custom names

    Would it be possible to update constructor to do something like this:

    name: Uberconda
    version: 1.0
    install_in_dependency_order: True
    channels:
      - http://repo.anaconda.com/pkgs/main/
    
    specs:
        - python 3.5*
        - conda
    
    envs:
      - name: something_else
        specs:
        - python 3.5*
        - numpy
      - name: _something_private
        specs:
        - python 3.5*
        - pandas
    
    license_file: EULA.txt
    
    # Welcome image for Windows installer
    welcome_image: bird.png                  [win]
    
    type::feature 
    opened by goanpeca 14
  • Add pre-commit and fix findings

    Add pre-commit and fix findings

    Description

    Inspired by the .pre-commit-config.yaml in conda/conda-build/conda-pack where similar PRs have been done in the past.

    Checklist - did you ...

    • [ ] Add a file to the news directory (using the template) for the next release's release notes?
    • [ ] Add / update necessary tests?
    • [ ] Add / update outdated documentation?
    cla-signed 
    opened by dbast 0
  • Lint header.sh with shellcheck, add

    Lint header.sh with shellcheck, add "set -eu", fix findings

    TODO: detailed description + news entry

    fixes also a long standing bug in the getopt parsing + error handling code.

    Description

    Checklist - did you ...

    • [ ] Add a file to the news directory (using the template) for the next release's release notes?
    • [ ] Add / update necessary tests?
    • [ ] Add / update outdated documentation?
    cla-signed 
    opened by dbast 2
  • Add docs workflow

    Add docs workflow

    Description

    Copied and adapted from the conda-libmamba-solver docs.

    Closes #437 (@epassaro, I kept your history here so you get your commits counted. I hope that's ok!).

    Checklist - did you ...

    • [ ] Add a file to the news directory (using the template) for the next release's release notes?
    • [X] Add / update necessary tests?
    • [X] Add / update outdated documentation?
    cla-signed type::documentation 
    opened by jaimergp 1
  • Use plugin API for Solver instantiation

    Use plugin API for Solver instantiation

    Description

    We were using a temporary, private API to instantiate solvers to see how it worked. This enables the now official plugin API.

    This would allow users to export CONDA_SOLVER=libmamba to use the conda-libmamba-solver integrations. It would also respect preconfigured values in .condarc.

    xref https://github.com/mamba-org/mamba/issues/1627

    Checklist - did you ...

    • [ ] Add a file to the news directory (using the template) for the next release's release notes?
    • [ ] Add / update necessary tests?
    • [ ] Add / update outdated documentation?
    cla-signed 
    opened by jaimergp 0
  • Customized Welcome After Pages and Conclusion Pages

    Customized Welcome After Pages and Conclusion Pages

    Description

    • This PR enables the adding of extra pages to the Windows GUI installer. These extra pages can display text, links, and images. Such pages can be useful in providing additional instructions, guidance, or promotional materials for end-users before they begin using the application they just installed.
    • This addresses issues brought up in PR #582.

    Checklist - did you ...

    • [ x ] Add a file to the news directory (using the template) for the next release's release notes?
    • [ x ] Add / update outdated documentation?

    Screen shots

    Screen Shot 2022-12-07 at 12 43 38 PM cla-signed 
    opened by ryanskeith 5
  • Investigate the usage of `conda init --reverse` in uninstallers

    Investigate the usage of `conda init --reverse` in uninstallers

    Why not use the same method as conda init --reverse? That might be more robust to upstream pattern change. Moreover, it seems that current method will break AutoRun with value like <Conda AutoRun> & <Other App AutoRun>, by substituting it to & <Other App AutoRun>. But it is invalid to have beginning & in CMD.exe

    Originally posted by @YouJiacheng in https://github.com/conda/constructor/issues/521#issuecomment-1246166684

    opened by jaimergp 0
Releases(3.3.1)
  • 3.3.1(Mar 14, 2022)

    Bug fixes:

    • Fix building examples in CI. (#502, #504, #505)

    • Fix truncated Python version if minor has two digits on Windows, e.g. "3.10". (#506)

    Full Changelog: https://github.com/conda/constructor/compare/3.3.0...3.3.1

    Source code(tar.gz)
    Source code(zip)
  • 3.3.0(Mar 12, 2022)

    Enhancements:

    • Initialize mamba (if it exists), too. (#462)
    • Add support for Python 3.9 and 3.10. (#479)
    • Add an example that uses shortcuts. (#481)
    • Expose the installer metadata to pre/post install scripts as environment variables INSTALLER_NAME, INSTALLER_VER and INSTALLER_PLAT. (#491)

    Bug fixes:

    • Fixes for transmuting packages and generating repodata. (#489)
    • Include cache metadata on the first line of the repodata cache. (#490)
    • Fix constructor.conda_interface to handle alpha, beta, rc versions. (#496)

    Deprecations:

    • Drop support for Python 2.7 and 3.6. (#479)

    Other:

    • CI: Run examples outside conda build to upload installers as artifacts for local testing (#498)
    • Added project board, issue staleness, thread locking and label automation using GitHub action workflows to improve maintenance of GitHub project. More information can be found in the infra repo: https://github.com/conda/infra

    New Contributors:

    • @jaimergp made their first contribution in https://github.com/conda/constructor/pull/482

    Full Changelog: https://github.com/conda/constructor/compare/3.2.2...3.3.0

    Source code(tar.gz)
    Source code(zip)
  • 3.2.2(Feb 14, 2022)

    What's Changed

    • extract pre-conda before extracting conda packages by @wolfv in https://github.com/conda/constructor/pull/450
    • Fix windows shortcuts by @ericpre in https://github.com/conda/constructor/pull/455
    • Avoid yaml warnings (and ensure compatibility with pyyaml 6) by @hmaarrfk in https://github.com/conda/constructor/pull/473
    • Fix uninstaller error by @ericpre in https://github.com/conda/constructor/pull/467
    • Unset DYLD_FALLBACK_LIBRARY_PATH in header on macOS by @XuehaiPan in https://github.com/conda/constructor/pull/472
    • Add option to disable creation of start menu shortcuts and fix regression by @ericpre in https://github.com/conda/constructor/pull/466
    • Add tests for header template preprocessing and fix initialize by default by @hmaarrfk in https://github.com/conda/constructor/pull/459
    • 3.3.2 changelog prerelease by @FaustinCarter in https://github.com/conda/constructor/pull/478

    New Contributors

    • @wolfv made their first contribution in https://github.com/conda/constructor/pull/450
    • @XuehaiPan made their first contribution in https://github.com/conda/constructor/pull/472

    Full Changelog: https://github.com/conda/constructor/compare/3.2.1...3.2.2

    Source code(tar.gz)
    Source code(zip)
  • 3.1.0(Sep 6, 2020)

    • COMMON:

      • New platform selectors: s390x, osx-arm64
      • Added the ability to build installers from an existing, instantiated environment or an environment.yml spec.
      • Added conda_channel_alias and condarc options to allow more complete customization of the installed .condarc
      • Added options to all install types to preserve the package cache after installation
      • Migrated CI to GitHub Actions and added installation/unpack testing of generated installers
    • SHELL:

      • Pre- and post-install scripts are now executed directly if a shebang is present; otherwise they are run by the POSIX shell sh.
    • NSIS:

      • Support for pre-install script
      • Added the ability to check if the path length is longer than 46 characters, so that nodejs package contents will not exceed a path length of 260 characters.
    • PKG:

      • Added an "all" installer type option to support building both .pkg and .sh installers with a single commmand
    Source code(tar.gz)
    Source code(zip)
  • 3.0.1(Sep 17, 2019)

  • 3.0.0(Aug 9, 2019)

Owner
Conda
Conda is an OS-agnostic, system-level binary package manager
Conda
Python virtualenvs in Debian packages

dh-virtualenv Contents Overview Presentations, Blogs & Other Resources Using dh-virtualenv How does it work? Running tests Building the package in a D

Spotify 1.5k Dec 16, 2022
Core utilities for Python packages

packaging Reusable core utilities for various Python Packaging interoperability specifications. This library provides utilities that implement the int

Python Packaging Authority 451 Jan 4, 2023
Install .deb packages on any distribution:)

Install .deb packages on any distribution:) Install Dependencies The project needs dependencies Python python is often installed by default on linux d

GGroup 1 Mar 31, 2022
Subpar is a utility for creating self-contained python executables. It is designed to work well with Bazel.

Subpar Subpar is a utility for creating self-contained python executables. It is designed to work well with Bazel. Status Subpar is currently owned by

Google 550 Dec 27, 2022
A tool used to obfuscate python scripts, bind obfuscated scripts to fixed machine or expire obfuscated scripts.

PyArmor Homepage (中文版网站) Documentation(中文版) PyArmor is a command line tool used to obfuscate python scripts, bind obfuscated scripts to fixed machine

Dashingsoft 1.9k Jan 1, 2023
A library and tool for generating .pex (Python EXecutable) files

PEX Contents Overview Installation Simple Examples Integrating pex into your workflow Documentation Development Contributing Overview pex is a library

Pants Build 2.2k Jan 1, 2023
A modern Python application packaging and distribution tool

PyOxidizer PyOxidizer is a utility for producing binaries that embed Python. The over-arching goal of PyOxidizer is to make complex packaging and dist

Gregory Szorc 4.5k Jan 7, 2023
debinstaller - A tool to install .deb files in any distro.

debinstaller A tool to install .deb files in any distro. Installation for debinstaller

Manoj Paramsetti 6 Nov 6, 2022
Build Windows installers for Python applications

Pynsist is a tool to build Windows installers for your Python applications. The installers bundle Python itself, so you can distribute your applicatio

Thomas Kluyver 818 Jan 5, 2023
Script that allows to download portable installers of different versions Adobe software for macOS

What is this and for what This is a script that allows you to download portable installers of programs from Adobe for macOS with different versions. T

null 715 Jan 6, 2023
A plugin for managing mod installers in Mod Organizer 2

Reinstaller v1.0.* Introduction Reinstaller allows you to conveninetly backup mod installers to re-run later, without risk of them cluttering up your

Alex Ashmore 2 Jun 27, 2022
Conda package for artifact creation that enables offline environments. Ideal for air-gapped deployments.

Conda-Vendor Conda Vendor is a tool to create local conda channels and manifests for vendored deployments Installation To install with pip, run: pip i

MetroStar - Tech 13 Nov 17, 2022
Demo Python project using Conda and Poetry

Conda Poetry This is a demonstration of how Conda and Poetry can be used in a Python project for dev dependency management and production deployment.

Ryan Allen 2 Apr 26, 2022
A conda-smithy repository for boost-histogram.

The official Boost.Histogram Python bindings. Provides fast, efficient histogramming with a variety of different storages combined with dozens of composable axes. Part of the Scikit-HEP family.

conda-forge 0 Dec 17, 2021
Workon - A simple project manager for conda, windows 10 and vscode

WORK ON A simple project manager for conda, windows 10 and vscode Installation p

Jesus Alan Hernandez Galvan 1 Jan 16, 2022
commandpack - A package of modules for working with commands, command packages, files with command packages.

commandpack Help the project financially: Donate: https://smartlegion.github.io/donate/ Yandex Money: https://yoomoney.ru/to/4100115206129186 PayPal:

null 4 Sep 4, 2021
A python starter package to be used as a template for creating your own python packages.

Python Starter Package This is a basic python starter package to be used as a template for creating your own python packages. Github repo: https://git

Mystic 1 Apr 4, 2022
Setup a flask project using a single command, right from creating virtual environment to creating Procfile for deployment.

AutoFlask-Setup About AutoFlask-Setup can help you set up a new Flask Project, right from creating virtual environment to creating Procfile for deploy

Ashutosh Krishna 1 Oct 21, 2021
Dead simple CLI tool to try Python packages - It's never been easier! :package:

try - It's never been easier to try Python packages try is an easy-to-use cli tool to try out Python packages. Features Install specific package versi

Timo Furrer 659 Dec 28, 2022
Tool to check the completeness of MANIFEST.in for Python packages

check-manifest Are you a Python developer? Have you uploaded packages to the Python Package Index? Have you accidentally uploaded broken packages with

Marius Gedminas 270 Dec 26, 2022