GithubHelp home page GithubHelp logo

pombredanne / manylinux Goto Github PK

View Code? Open in Web Editor NEW

This project forked from pypa/manylinux

0.0 1.0 0.0 128 KB

Python wheels that work on any linux (almost)

License: MIT License

Shell 80.26% Python 19.74%

manylinux's Introduction

manylinux

Email: [email protected]

Archives: https://mail.python.org/mailman/listinfo/wheel-builders

Older archives: https://groups.google.com/forum/#!forum/manylinux-discuss

The goal of the manylinux project is to provide a convenient way to distribute binary Python extensions as wheels on Linux. This effort has produced PEP 513 which defines the manylinux1_x86_64 and manylinux1_i686 platform tags.

Wheel packages compliant with those tags can be uploaded to PyPI (for instance with twine) and can be installed with pip 8.1 and later.

The manylinux1 tags allow projects to distribute wheels that are automatically installed (and work!) on the vast majority of desktop and server Linux distributions.

This repository hosts several manylinux-related things:

Docker images

https://travis-ci.org/pypa/manylinux.svg?branch=master

Building manylinux-compatible wheels is not trivial; as a general rule, binaries built on one Linux distro will only work on other Linux distros that are the same age or newer. Therefore, if we want to make binaries that run on most Linux distros, we have to use a very old distro -- CentOS 5.

Rather than forcing you to install CentOS 5 yourself, install Python, etc., we provide two Docker images where we've done the work for you:

64-bit image (x86-64): quay.io/pypa/manylinux1_x86_64

https://quay.io/repository/pypa/manylinux1_x86_64/status

32-bit image (i686): quay.io/pypa/manylinux1_i686

https://quay.io/repository/pypa/manylinux1_i686/status

These images are rebuilt using Travis-CI on every commit to this repository; see the docker/ directory for source code.

The images currently contain:

  • CPython 2.6, 2.7, 3.3, 3.4, and 3.5, installed in /opt/python/<python tag>-<abi tag>. The directories are named after the PEP 425 tags for each environment -- e.g. /opt/python/cp27-cp27mu contains a wide-unicode CPython 2.7 build, and can be used to produce wheels named like <pkg>-<version>-cp27-cp27mu-<arch>.whl.
  • Devel packages for all the libraries that PEP 513 allows you to assume are present on the host system
  • The auditwheel tool

Note that prior to CPython 3.3, there were two ABI-incompatible ways of building CPython: --enable-unicode=ucs2 and --enable-unicode=ucs4. We provide both versions (e.g. /opt/python/cp27-cp27m for narrow-unicode, /opt/python/cp27-cp27mu for wide-unicode). NB: essentially all Linux distributions configure CPython in mu (--enable-unicode=ucs4) mode, but --enable-unicode=ucs2 builds are also encountered in the wild. Other less common or virtually unheard of flag combinations (such as --with-pydebug (d) and --without-pymalloc (absence of m)) are not provided.

Example

An example project which builds 32- and 64-bit wheels for each Python interpreter version can be found here: https://github.com/pypa/python-manylinux-demo.

This demonstrates how to use these docker images in conjunction with auditwheel to build manylinux-compatible wheels using the free travis ci continuous integration service.

(NB: for the 32-bit images running on a 64-bit host machine, it's necessary to run everything under the command line program linux32, which changes reported architecture in new program environment. See this example invocation)

The PEP itself

The official version of PEP 513 is stored in the PEP repository, but we also have our own copy here. This is where the PEP was originally written, so if for some reason you really want to see the full history of edits it went through, then this is the place to look.

This repo also has some analysis code that was used when putting together the original proposal in the policy-info/ directory (might be useful someday in the future for writing a manylinux2 policy).

If you want to read the full discussion that led to the original policy, then lots of that is here: https://groups.google.com/forum/#!forum/manylinux-discuss

The distutils-sig archives for January 2016 also contain several threads.

Code of Conduct

Everyone interacting in the manylinux project's codebases, issue trackers, chat rooms, and mailing lists is expected to follow the PyPA Code of Conduct.

manylinux's People

Contributors

benjixx avatar ibell avatar matthew-brett avatar natefoo avatar njsmith avatar ogrisel avatar pombredanne avatar reaperhulk avatar rmcgibbo avatar stefanv avatar

Watchers

 avatar

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.