Import Upstream version 1.4.0
This commit is contained in:
commit
5c9aa18b94
|
@ -0,0 +1,147 @@
|
|||
## 1.4.0 (2019.2.4)
|
||||
|
||||
BACKWARD COMPATIBILITY:
|
||||
* Prefer the VERSION_CODENAME field of os-release to parsing it from VERSION [[#230](https://github.com/nir0s/distro/pull/230)]
|
||||
|
||||
BUG FIXES:
|
||||
* Return _uname_info from the uname_info() method [[#233](https://github.com/nir0s/distro/pull/233)]
|
||||
* Fixed CloudLinux id discovery [[#234](https://github.com/nir0s/distro/pull/234)]
|
||||
* Update Oracle matching [[#224](https://github.com/nir0s/distro/pull/224)]
|
||||
|
||||
DOCS:
|
||||
* Update Fedora package link [[#225](https://github.com/nir0s/distro/pull/225)]
|
||||
* Distro is the recommended replacement for platform.linux_distribution [[#220](https://github.com/nir0s/distro/pull/220)]
|
||||
|
||||
RELEASE:
|
||||
* Use Markdown for long description in setup.py [[#219](https://github.com/nir0s/distro/pull/219)]
|
||||
|
||||
Additionally, The Python2.6 branch was fixed and rebased on top of master. It is now passing all tests. Thanks [abadger](https://github.com/abadger)!
|
||||
|
||||
## 1.3.0 (2018.05.09)
|
||||
|
||||
ENHANCEMENTS:
|
||||
* Added support for OpenBSD, FreeBSD, and NetBSD [[#207](https://github.com/nir0s/distro/issues/207)]
|
||||
|
||||
TESTS:
|
||||
* Add test for Kali Linux Rolling [[#214](https://github.com/nir0s/distro/issues/214)]
|
||||
|
||||
DOCS:
|
||||
* Update docs with regards to #207 [[#209](https://github.com/nir0s/distro/issues/209)]
|
||||
* Add Ansible reference implementation and fix arch-linux link [[#213](https://github.com/nir0s/distro/issues/213)]
|
||||
* Add facter reference implementation [[#213](https://github.com/nir0s/distro/issues/213)]
|
||||
|
||||
## 1.2.0 (2017.12.24)
|
||||
|
||||
BACKWARD COMPATIBILITY:
|
||||
* Don't raise ImportError on non-linux platforms [[#202](https://github.com/nir0s/distro/issues/202)]
|
||||
|
||||
ENHANCEMENTS:
|
||||
* Lazily load the LinuxDistribution data [[#201](https://github.com/nir0s/distro/issues/201)]
|
||||
|
||||
BUG FIXES:
|
||||
* Stdout of shell should be decoded with sys.getfilesystemencoding() [[#203](https://github.com/nir0s/distro/issues/203)]
|
||||
|
||||
TESTS:
|
||||
* Explicitly set Python versions on Travis for flake [[#204](https://github.com/nir0s/distro/issues/204)]
|
||||
|
||||
|
||||
## 1.1.0 (2017.11.28)
|
||||
|
||||
BACKWARD COMPATIBILITY:
|
||||
* Drop python3.3 support [[#199](https://github.com/nir0s/distro/issues/199)]
|
||||
* Remove Official Python26 support [[#195](https://github.com/nir0s/distro/issues/195)]
|
||||
|
||||
TESTS:
|
||||
* Add MandrivaLinux test case [[#181](https://github.com/nir0s/distro/issues/181)]
|
||||
* Add test cases for CloudLinux 5, 6, and 7 [[#180](https://github.com/nir0s/distro/issues/180)]
|
||||
|
||||
RELEASE:
|
||||
* Modify MANIFEST to include resources for tests and docs in source tarballs [[97c91a1](97c91a1)]
|
||||
|
||||
## 1.0.4 (2017.04.01)
|
||||
|
||||
BUG FIXES:
|
||||
* Guess common *-release files if /etc not readable [[#175](https://github.com/nir0s/distro/issues/175)]
|
||||
|
||||
## 1.0.3 (2017.03.19)
|
||||
|
||||
ENHANCEMENTS:
|
||||
* Show keys for empty values when running distro from the CLI [[#160](https://github.com/nir0s/distro/issues/160)]
|
||||
* Add manual mapping for `redhatenterpriseserver` (previously only redhatenterpriseworkstation was mapped) [[#148](https://github.com/nir0s/distro/issues/148)]
|
||||
* Race condition in `_parse_distro_release_file` [[#163](https://github.com/nir0s/distro/issues/163)]
|
||||
|
||||
TESTS:
|
||||
* Add RHEL5 test case [[#165](https://github.com/nir0s/distro/issues/165)]
|
||||
* Add OpenELEC test case [[#166](https://github.com/nir0s/distro/issues/166)]
|
||||
* Replace nose with pytest [[#158](https://github.com/nir0s/distro/issues/158)]
|
||||
|
||||
RELEASE:
|
||||
* Update classifiers
|
||||
* Update supported Python versions (with py36)
|
||||
|
||||
## 1.0.2 (2017.01.12)
|
||||
|
||||
TESTS:
|
||||
* Test on py33, py36 and py3 based flake8
|
||||
|
||||
RELEASE:
|
||||
* Add MANIFEST file (which also includes the LICENSE as part of Issue [[#139](https://github.com/nir0s/distro/issues/139)])
|
||||
* Default to releasing using Twine [[#121](https://github.com/nir0s/distro/issues/121)]
|
||||
* Add setup.cfg file [[#145](https://github.com/nir0s/distro/issues/145)]
|
||||
* Update license in setup.py
|
||||
|
||||
## 1.0.1 (2016-11-03)
|
||||
|
||||
ENHANCEMENTS:
|
||||
* Prettify distro -j's output and add more elaborate docs [[#147](https://github.com/nir0s/distro/issues/147)]
|
||||
* Decode output of `lsb_release` as utf-8 [[#144](https://github.com/nir0s/distro/issues/144)]
|
||||
* Logger now uses `message %s, string` form to not-evaulate log messages if unnecessary [[#145](https://github.com/nir0s/distro/issues/145)]
|
||||
|
||||
TESTS:
|
||||
* Increase code-coverage [[#146](https://github.com/nir0s/distro/issues/146)]
|
||||
* Fix landscape code-quality warnings [[#145](https://github.com/nir0s/distro/issues/145)]
|
||||
|
||||
RELEASE:
|
||||
* Add CONTRIBUTING.md
|
||||
|
||||
## 1.0.0 (2016-09-25)
|
||||
|
||||
BACKWARD COMPATIBILITY:
|
||||
* raise exception when importing on non-supported platforms [[#129](https://github.com/nir0s/distro/issues/129)]
|
||||
|
||||
ENHANCEMENTS:
|
||||
* Use `bytes` invariantly [[#135](https://github.com/nir0s/distro/issues/135)]
|
||||
* Some minor code adjustments plus a CLI [[#134](https://github.com/nir0s/distro/issues/134)]
|
||||
* Emit stderr if `lsb_release` fails
|
||||
|
||||
BUG FIXES:
|
||||
* Fix some encoding related issues
|
||||
|
||||
TESTS:
|
||||
* Add many test cases (e.g. Raspbian 8, CoreOS, Amazon Linux, Scientific Linux, Gentoo, Manjaro)
|
||||
* Completely redo the testing framework to make it easier to add tests
|
||||
* Test on pypy
|
||||
|
||||
RELEASE:
|
||||
* Remove six as a dependency
|
||||
|
||||
## 0.6.0 (2016-04-21)
|
||||
|
||||
This is the first release of `distro`.
|
||||
All previous work was done on `ld` and therefore unmentioned here. See the release log in GitHub if you want the entire log.
|
||||
|
||||
BACKWARD COMPATIBILITY:
|
||||
* No longer a package. constants.py has been removed and distro is now a single module
|
||||
|
||||
ENHANCEMENTS:
|
||||
* distro.info() now receives best and pretty flags
|
||||
* Removed get_ prefix from get_*_release_attr functions
|
||||
* Codename is now passed in distro.info()
|
||||
|
||||
TESTS:
|
||||
* Added Linux Mint test case
|
||||
* Now testing on Python 3.4
|
||||
|
||||
DOCS:
|
||||
* Documentation fixes
|
||||
|
|
@ -0,0 +1,54 @@
|
|||
# General
|
||||
|
||||
* Contributing to distro identification currently doesn't have any specific standards and rather depends on the specific implementation.
|
||||
* A 100% coverage is expected for each PR unless explicitly authorized by the reviewer.
|
||||
* Please try to maintain maximum code-health (via landscape.io).
|
||||
|
||||
# Contributing distro specific tests
|
||||
|
||||
Distro's tests are implemented via a standardized framework under `tests/test_distro.py`
|
||||
|
||||
For each distribution, tests should be added in the relevant class according to which distribution file(s) exists on it, so, for example, tests should be added under `TestOSRelease` where `/etc/os-release` is available.
|
||||
|
||||
The tests must be self-contained, meaning that the release files for the distribution should be maintained in the repository under `tests/resources/distros/distribution_name+distribution_version`.
|
||||
|
||||
A tests method would like somewhat like this:
|
||||
|
||||
```python
|
||||
def test_centos7_os_release(self):
|
||||
desired_outcome = {
|
||||
'id': 'centos',
|
||||
'name': 'CentOS Linux',
|
||||
'pretty_name': 'CentOS Linux 7 (Core)',
|
||||
'version': '7',
|
||||
'pretty_version': '7 (Core)',
|
||||
'best_version': '7',
|
||||
'like': 'rhel fedora',
|
||||
'codename': 'Core'
|
||||
}
|
||||
self._test_outcome(desired_outcome)
|
||||
```
|
||||
|
||||
The framework will automatically try to pick up the relevant file according to the method's name (`centos7` meaning the folder should be named `centos7` as well) and compare the `desired_outcome` with the parsed files found under the test dir.
|
||||
|
||||
The exception to the rule is under the `TestDistroRelease` test class which should look somewhat like this:
|
||||
|
||||
```python
|
||||
def test_centos5_dist_release(self):
|
||||
desired_outcome = {
|
||||
'id': 'centos',
|
||||
'name': 'CentOS',
|
||||
'pretty_name': 'CentOS 5.11 (Final)',
|
||||
'version': '5.11',
|
||||
'pretty_version': '5.11 (Final)',
|
||||
'best_version': '5.11',
|
||||
'codename': 'Final',
|
||||
'major_version': '5',
|
||||
'minor_version': '11'
|
||||
}
|
||||
self._test_outcome(desired_outcome, 'centos', '5')
|
||||
```
|
||||
|
||||
Where the name of the method is not indicative of the lookup folder but rather tha two last arguments in `_test_outcome`.
|
||||
|
||||
A test case is mandatory under `TestOverall` for a PR to be complete.
|
|
@ -0,0 +1,13 @@
|
|||
Thanks!
|
||||
|
||||
* https://github.com/andy-maier
|
||||
* https://github.com/SethMichaelLarson
|
||||
* https://github.com/asottile
|
||||
* https://github.com/MartijnBraam
|
||||
* https://github.com/funkyfuture
|
||||
* https://github.com/adamjstewart
|
||||
* https://github.com/xavfernandez
|
||||
* https://github.com/xsuchy
|
||||
* https://github.com/marcoceppi
|
||||
* https://github.com/tgamblin
|
||||
* https://github.com/sebix
|
|
@ -0,0 +1,202 @@
|
|||
Apache License
|
||||
Version 2.0, January 2004
|
||||
http://www.apache.org/licenses/
|
||||
|
||||
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||
|
||||
1. Definitions.
|
||||
|
||||
"License" shall mean the terms and conditions for use, reproduction,
|
||||
and distribution as defined by Sections 1 through 9 of this document.
|
||||
|
||||
"Licensor" shall mean the copyright owner or entity authorized by
|
||||
the copyright owner that is granting the License.
|
||||
|
||||
"Legal Entity" shall mean the union of the acting entity and all
|
||||
other entities that control, are controlled by, or are under common
|
||||
control with that entity. For the purposes of this definition,
|
||||
"control" means (i) the power, direct or indirect, to cause the
|
||||
direction or management of such entity, whether by contract or
|
||||
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||
|
||||
"You" (or "Your") shall mean an individual or Legal Entity
|
||||
exercising permissions granted by this License.
|
||||
|
||||
"Source" form shall mean the preferred form for making modifications,
|
||||
including but not limited to software source code, documentation
|
||||
source, and configuration files.
|
||||
|
||||
"Object" form shall mean any form resulting from mechanical
|
||||
transformation or translation of a Source form, including but
|
||||
not limited to compiled object code, generated documentation,
|
||||
and conversions to other media types.
|
||||
|
||||
"Work" shall mean the work of authorship, whether in Source or
|
||||
Object form, made available under the License, as indicated by a
|
||||
copyright notice that is included in or attached to the work
|
||||
(an example is provided in the Appendix below).
|
||||
|
||||
"Derivative Works" shall mean any work, whether in Source or Object
|
||||
form, that is based on (or derived from) the Work and for which the
|
||||
editorial revisions, annotations, elaborations, or other modifications
|
||||
represent, as a whole, an original work of authorship. For the purposes
|
||||
of this License, Derivative Works shall not include works that remain
|
||||
separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.
|
||||
|
||||
"Contribution" shall mean any work of authorship, including
|
||||
the original version of the Work and any modifications or additions
|
||||
to that Work or Derivative Works thereof, that is intentionally
|
||||
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||
or by an individual or Legal Entity authorized to submit on behalf of
|
||||
the copyright owner. For the purposes of this definition, "submitted"
|
||||
means any form of electronic, verbal, or written communication sent
|
||||
to the Licensor or its representatives, including but not limited to
|
||||
communication on electronic mailing lists, source code control systems,
|
||||
and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but
|
||||
excluding communication that is conspicuously marked or otherwise
|
||||
designated in writing by the copyright owner as "Not a Contribution."
|
||||
|
||||
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||
on behalf of whom a Contribution has been received by Licensor and
|
||||
subsequently incorporated within the Work.
|
||||
|
||||
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
copyright license to reproduce, prepare Derivative Works of,
|
||||
publicly display, publicly perform, sublicense, and distribute the
|
||||
Work and such Derivative Works in Source or Object form.
|
||||
|
||||
3. Grant of Patent License. Subject to the terms and conditions of
|
||||
this License, each Contributor hereby grants to You a perpetual,
|
||||
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||
(except as stated in this section) patent license to make, have made,
|
||||
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||
where such license applies only to those patent claims licensable
|
||||
by such Contributor that are necessarily infringed by their
|
||||
Contribution(s) alone or by combination of their Contribution(s)
|
||||
with the Work to which such Contribution(s) was submitted. If You
|
||||
institute patent litigation against any entity (including a
|
||||
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||
or a Contribution incorporated within the Work constitutes direct
|
||||
or contributory patent infringement, then any patent licenses
|
||||
granted to You under this License for that Work shall terminate
|
||||
as of the date such litigation is filed.
|
||||
|
||||
4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without
|
||||
modifications, and in Source or Object form, provided that You
|
||||
meet the following conditions:
|
||||
|
||||
(a) You must give any other recipients of the Work or
|
||||
Derivative Works a copy of this License; and
|
||||
|
||||
(b) You must cause any modified files to carry prominent notices
|
||||
stating that You changed the files; and
|
||||
|
||||
(c) You must retain, in the Source form of any Derivative Works
|
||||
that You distribute, all copyright, patent, trademark, and
|
||||
attribution notices from the Source form of the Work,
|
||||
excluding those notices that do not pertain to any part of
|
||||
the Derivative Works; and
|
||||
|
||||
(d) If the Work includes a "NOTICE" text file as part of its
|
||||
distribution, then any Derivative Works that You distribute must
|
||||
include a readable copy of the attribution notices contained
|
||||
within such NOTICE file, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works, in at least one
|
||||
of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or
|
||||
documentation, if provided along with the Derivative Works; or,
|
||||
within a display generated by the Derivative Works, if and
|
||||
wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and
|
||||
do not modify the License. You may add Your own attribution
|
||||
notices within Derivative Works that You distribute, alongside
|
||||
or as an addendum to the NOTICE text from the Work, provided
|
||||
that such additional attribution notices cannot be construed
|
||||
as modifying the License.
|
||||
|
||||
You may add Your own copyright statement to Your modifications and
|
||||
may provide additional or different license terms and conditions
|
||||
for use, reproduction, or distribution of Your modifications, or
|
||||
for any such Derivative Works as a whole, provided Your use,
|
||||
reproduction, and distribution of the Work otherwise complies with
|
||||
the conditions stated in this License.
|
||||
|
||||
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||
any Contribution intentionally submitted for inclusion in the Work
|
||||
by You to the Licensor shall be under the terms and conditions of
|
||||
this License, without any additional terms or conditions.
|
||||
Notwithstanding the above, nothing herein shall supersede or modify
|
||||
the terms of any separate license agreement you may have executed
|
||||
with Licensor regarding such Contributions.
|
||||
|
||||
6. Trademarks. This License does not grant permission to use the trade
|
||||
names, trademarks, service marks, or product names of the Licensor,
|
||||
except as required for reasonable and customary use in describing the
|
||||
origin of the Work and reproducing the content of the NOTICE file.
|
||||
|
||||
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||
agreed to in writing, Licensor provides the Work (and each
|
||||
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||
implied, including, without limitation, any warranties or conditions
|
||||
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||
appropriateness of using or redistributing the Work and assume any
|
||||
risks associated with Your exercise of permissions under this License.
|
||||
|
||||
8. Limitation of Liability. In no event and under no legal theory,
|
||||
whether in tort (including negligence), contract, or otherwise,
|
||||
unless required by applicable law (such as deliberate and grossly
|
||||
negligent acts) or agreed to in writing, shall any Contributor be
|
||||
liable to You for damages, including any direct, indirect, special,
|
||||
incidental, or consequential damages of any character arising as a
|
||||
result of this License or out of the use or inability to use the
|
||||
Work (including but not limited to damages for loss of goodwill,
|
||||
work stoppage, computer failure or malfunction, or any and all
|
||||
other commercial damages or losses), even if such Contributor
|
||||
has been advised of the possibility of such damages.
|
||||
|
||||
9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer,
|
||||
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||
or other liability obligations and/or rights consistent with this
|
||||
License. However, in accepting such obligations, You may act only
|
||||
on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify,
|
||||
defend, and hold each Contributor harmless for any liability
|
||||
incurred by, or claims asserted against, such Contributor by reason
|
||||
of your accepting any such warranty or additional liability.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
APPENDIX: How to apply the Apache License to your work.
|
||||
|
||||
To apply the Apache License to your work, attach the following
|
||||
boilerplate notice, with the fields enclosed by brackets "{}"
|
||||
replaced with your own identifying information. (Don't include
|
||||
the brackets!) The text should be enclosed in the appropriate
|
||||
comment syntax for the file format. We also recommend that a
|
||||
file or class name and description of purpose be included on the
|
||||
same "printed page" as the copyright notice for easier
|
||||
identification within third-party archives.
|
||||
|
||||
Copyright {yyyy} {name of copyright owner}
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
include *.md
|
||||
include *.py
|
||||
include *.txt
|
||||
include LICENSE
|
||||
include CHANGES
|
||||
include Makefile
|
||||
|
||||
graft tests
|
||||
|
||||
include docs/*
|
||||
|
||||
global-exclude *.py[co]
|
|
@ -0,0 +1,145 @@
|
|||
# Copyright 2015,2016 Nir Cohen
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
# Name of this package
|
||||
PACKAGENAME = distro
|
||||
|
||||
# Additional options for Sphinx
|
||||
SPHINXOPTS = -v
|
||||
|
||||
# Paper format for the Sphinx LaTex/PDF builder.
|
||||
# Valid values: a4, letter
|
||||
SPHINXPAPER = a4
|
||||
|
||||
# Sphinx build subtree.
|
||||
SPHINXBUILDDIR = build_docs
|
||||
|
||||
# Directory where conf.py is located
|
||||
SPHINXCONFDIR = docs
|
||||
|
||||
# Directory where input files for Sphinx are located
|
||||
SPHINXSOURCEDIR = .
|
||||
|
||||
# Sphinx build command (Use 'pip install sphinx' to get it)
|
||||
SPHINXBUILD = sphinx-build
|
||||
|
||||
# Internal variables for Sphinx
|
||||
SPHINXPAPEROPT_a4 = -D latex_paper_size=a4
|
||||
SPHINXPAPEROPT_letter = -D latex_paper_size=letter
|
||||
ALLSPHINXOPTS = -d $(SPHINXBUILDDIR)/doctrees -c $(SPHINXCONFDIR) \
|
||||
$(SPHINXPAPEROPT_$(SPHINXPAPER)) $(SPHINXOPTS) \
|
||||
$(SPHINXSOURCEDIR)
|
||||
|
||||
.PHONY: help
|
||||
help:
|
||||
@echo 'Please use "make <target>" where <target> is one of'
|
||||
@echo " release - build a release and publish it"
|
||||
@echo " dev - prepare a development environment (includes tests)"
|
||||
@echo " instdev - prepare a development environment (no tests)"
|
||||
@echo " install - install into current Python environment"
|
||||
@echo " html - generate docs as standalone HTML files in: $(SPHINXBUILDDIR)/html"
|
||||
@echo " pdf - generate docs as PDF (via LaTeX) for paper format: $(SPHINXPAPER) in: $(SPHINXBUILDDIR)/pdf"
|
||||
@echo " man - generate docs as manual pages in: $(SPHINXBUILDDIR)/man"
|
||||
@echo " docchanges - generate an overview of all changed/added/deprecated items in docs"
|
||||
@echo " doclinkcheck - check all external links in docs for integrity"
|
||||
@echo " doccoverage - run coverage check of the documentation"
|
||||
@echo " clobber - remove any build products"
|
||||
@echo " build - build the package"
|
||||
@echo " test - test from this directory using tox, including test coverage"
|
||||
@echo " publish - upload to PyPI"
|
||||
@echo " clean - remove any temporary build products"
|
||||
@echo " dry-run - perform all action required for a release without actually releasing"
|
||||
|
||||
.PHONY: release
|
||||
release: test clean build publish
|
||||
@echo "$@ done."
|
||||
|
||||
.PHONY: test
|
||||
test:
|
||||
pip install 'tox>=1.7.2'
|
||||
tox
|
||||
@echo "$@ done."
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
rm -rf dist build $(PACKAGENAME).egg-info
|
||||
@echo "$@ done."
|
||||
|
||||
.PHONY: build
|
||||
build:
|
||||
python setup.py sdist bdist_wheel
|
||||
|
||||
.PHONY: publish
|
||||
publish:
|
||||
twine upload -r pypi dist/$(PACKAGENAME)-*
|
||||
@echo "$@ done."
|
||||
|
||||
.PHONY: dry-run
|
||||
dry-run: test clean build
|
||||
@echo "$@ done."
|
||||
|
||||
.PHONY: dev
|
||||
dev: instdev test
|
||||
@echo "$@ done."
|
||||
|
||||
.PHONY: instdev
|
||||
instdev:
|
||||
pip install -r dev-requirements.txt
|
||||
python setup.py develop
|
||||
@echo "$@ done."
|
||||
|
||||
.PHONY: install
|
||||
install:
|
||||
python setup.py install
|
||||
@echo "$@ done."
|
||||
|
||||
.PHONY: html
|
||||
html:
|
||||
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(SPHINXBUILDDIR)/html
|
||||
@echo "$@ done; the HTML pages are in $(SPHINXBUILDDIR)/html."
|
||||
|
||||
.PHONY: pdf
|
||||
pdf:
|
||||
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(SPHINXBUILDDIR)/pdf
|
||||
@echo "Running LaTeX files through pdflatex..."
|
||||
$(MAKE) -C $(SPHINXBUILDDIR)/pdf all-pdf
|
||||
@echo "$@ done; the PDF files are in $(SPHINXBUILDDIR)/pdf."
|
||||
|
||||
.PHONY: man
|
||||
man:
|
||||
$(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(SPHINXBUILDDIR)/man
|
||||
@echo "$@ done; the manual pages are in $(SPHINXBUILDDIR)/man."
|
||||
|
||||
.PHONY: docchanges
|
||||
docchanges:
|
||||
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(SPHINXBUILDDIR)/changes
|
||||
@echo
|
||||
@echo "$@ done; the doc changes overview file is in $(SPHINXBUILDDIR)/changes."
|
||||
|
||||
.PHONY: doclinkcheck
|
||||
doclinkcheck:
|
||||
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(SPHINXBUILDDIR)/linkcheck
|
||||
@echo
|
||||
@echo "$@ done; look for any errors in the above output " \
|
||||
"or in $(SPHINXBUILDDIR)/linkcheck/output.txt."
|
||||
|
||||
.PHONY: doccoverage
|
||||
doccoverage:
|
||||
$(SPHINXBUILD) -b coverage $(ALLSPHINXOPTS) $(SPHINXBUILDDIR)/coverage
|
||||
@echo "$@ done; the doc coverage results are in $(SPHINXBUILDDIR)/coverage/python.txt."
|
||||
|
||||
.PHONY: clobber
|
||||
clobber: clean
|
||||
rm -rf $(SPHINXBUILDDIR)
|
||||
@echo "$@ done."
|
|
@ -0,0 +1,168 @@
|
|||
Metadata-Version: 2.1
|
||||
Name: distro
|
||||
Version: 1.4.0
|
||||
Summary: Distro - an OS platform information API
|
||||
Home-page: https://github.com/nir0s/distro
|
||||
Author: Nir Cohen
|
||||
Author-email: nir36g@gmail.com
|
||||
License: Apache License, Version 2.0
|
||||
Description: Distro - an OS platform information API
|
||||
=======================================
|
||||
|
||||
[![Build Status](https://travis-ci.org/nir0s/distro.svg?branch=master)](https://travis-ci.org/nir0s/distro)
|
||||
[![Build status](https://ci.appveyor.com/api/projects/status/e812qjk1gf0f74r5/branch/master?svg=true)](https://ci.appveyor.com/project/nir0s/distro/branch/master)
|
||||
[![PyPI version](http://img.shields.io/pypi/v/distro.svg)](https://pypi.python.org/pypi/distro)
|
||||
[![Supported Python Versions](https://img.shields.io/pypi/pyversions/distro.svg)](https://img.shields.io/pypi/pyversions/distro.svg)
|
||||
[![Requirements Status](https://requires.io/github/nir0s/distro/requirements.svg?branch=master)](https://requires.io/github/nir0s/distro/requirements/?branch=master)
|
||||
[![Code Coverage](https://codecov.io/github/nir0s/distro/coverage.svg?branch=master)](https://codecov.io/github/nir0s/distro?branch=master)
|
||||
[![Code Quality](https://landscape.io/github/nir0s/distro/master/landscape.svg?style=flat)](https://landscape.io/github/nir0s/distro)
|
||||
[![Is Wheel](https://img.shields.io/pypi/wheel/distro.svg?style=flat)](https://pypi.python.org/pypi/distro)
|
||||
[![Latest Github Release](https://readthedocs.org/projects/distro/badge/?version=stable)](http://distro.readthedocs.io/en/latest/)
|
||||
[![Join the chat at https://gitter.im/nir0s/distro](https://badges.gitter.im/nir0s/distro.svg)](https://gitter.im/nir0s/distro?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
|
||||
`distro` provides information about the
|
||||
OS distribution it runs on, such as a reliable machine-readable ID, or
|
||||
version information.
|
||||
|
||||
It is the recommended replacement for Python's original
|
||||
[`platform.linux_distribution`](https://docs.python.org/3.7/library/platform.html#platform.linux_distribution)
|
||||
function (which will be removed in Python 3.8).
|
||||
It also provides much more functionality which isn't necessarily Python bound,
|
||||
like a command-line interface.
|
||||
|
||||
Distro currently supports Linux and BSD based systems but [Windows and OS X support](https://github.com/nir0s/distro/issues/177) is also planned.
|
||||
|
||||
For Python 2.6 support, see https://github.com/nir0s/distro/tree/python2.6-support
|
||||
|
||||
## Installation
|
||||
|
||||
Installation of the latest released version from PyPI:
|
||||
|
||||
```shell
|
||||
pip install distro
|
||||
```
|
||||
|
||||
Installation of the latest development version:
|
||||
|
||||
```shell
|
||||
pip install https://github.com/nir0s/distro/archive/master.tar.gz
|
||||
```
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
```bash
|
||||
$ distro
|
||||
Name: Antergos Linux
|
||||
Version: 2015.10 (ISO-Rolling)
|
||||
Codename: ISO-Rolling
|
||||
|
||||
$ distro -j
|
||||
{
|
||||
"codename": "ISO-Rolling",
|
||||
"id": "antergos",
|
||||
"like": "arch",
|
||||
"version": "16.9",
|
||||
"version_parts": {
|
||||
"build_number": "",
|
||||
"major": "16",
|
||||
"minor": "9"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$ python
|
||||
>>> import distro
|
||||
>>> distro.linux_distribution(full_distribution_name=False)
|
||||
('centos', '7.1.1503', 'Core')
|
||||
```
|
||||
|
||||
|
||||
## Documentation
|
||||
|
||||
On top of the aforementioned API, several more functions are available. For a complete description of the
|
||||
API, see the [latest API documentation](http://distro.readthedocs.org/en/latest/).
|
||||
|
||||
## Background
|
||||
|
||||
An alternative implementation became necessary because Python 3.5 deprecated
|
||||
this function, and Python 3.8 will remove it altogether.
|
||||
Its predecessor function `platform.dist` was already deprecated since
|
||||
Python 2.6 and will also be removed in Python 3.8.
|
||||
Still, there are many cases in which access to that information is needed.
|
||||
See [Python issue 1322](https://bugs.python.org/issue1322) for more
|
||||
information.
|
||||
|
||||
The `distro` package implements a robust and inclusive way of retrieving the
|
||||
information about a distribution based on new standards and old methods,
|
||||
namely from these data sources (from high to low precedence):
|
||||
|
||||
* The os-release file `/etc/os-release`, if present.
|
||||
* The output of the `lsb_release` command, if available.
|
||||
* The distro release file (`/etc/*(-|_)(release|version)`), if present.
|
||||
* The `uname` command for BSD based distrubtions.
|
||||
|
||||
|
||||
## Python and Distribution Support
|
||||
|
||||
`distro` is supported and tested on Python 2.7, 3.4+ and PyPy and on
|
||||
any distribution that provides one or more of the data sources
|
||||
covered.
|
||||
|
||||
This package is tested with test data that mimics the exact behavior of the data sources of [a number of Linux distributions](https://github.com/nir0s/distro/tree/master/tests/resources/distros).
|
||||
|
||||
|
||||
## Testing
|
||||
|
||||
```shell
|
||||
git clone git@github.com:nir0s/distro.git
|
||||
cd distro
|
||||
pip install tox
|
||||
tox
|
||||
```
|
||||
|
||||
|
||||
## Contributions
|
||||
|
||||
Pull requests are always welcome to deal with specific distributions or just
|
||||
for general merriment.
|
||||
|
||||
See [CONTRIBUTIONS](https://github.com/nir0s/distro/blob/master/CONTRIBUTING.md) for contribution info.
|
||||
|
||||
Reference implementations for supporting additional distributions and file
|
||||
formats can be found here:
|
||||
|
||||
* https://github.com/saltstack/salt/blob/develop/salt/grains/core.py#L1172
|
||||
* https://github.com/chef/ohai/blob/master/lib/ohai/plugins/linux/platform.rb
|
||||
* https://github.com/ansible/ansible/blob/devel/lib/ansible/module_utils/facts/system/distribution.py
|
||||
* https://github.com/puppetlabs/facter/blob/master/lib/src/facts/linux/os_linux.cc
|
||||
|
||||
## Package manager distributions
|
||||
|
||||
* https://src.fedoraproject.org/rpms/python-distro
|
||||
* https://www.archlinux.org/packages/community/any/python-distro/
|
||||
* https://launchpad.net/ubuntu/+source/python-distro
|
||||
* https://packages.debian.org/sid/python-distro
|
||||
* https://packages.gentoo.org/packages/dev-python/distro
|
||||
* https://pkgs.org/download/python2-distro
|
||||
* https://slackbuilds.org/repository/14.2/python/python-distro/
|
||||
|
||||
Platform: All
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: Intended Audience :: System Administrators
|
||||
Classifier: License :: OSI Approved :: Apache Software License
|
||||
Classifier: Operating System :: POSIX :: Linux
|
||||
Classifier: Operating System :: POSIX :: BSD
|
||||
Classifier: Operating System :: POSIX :: BSD :: FreeBSD
|
||||
Classifier: Operating System :: POSIX :: BSD :: NetBSD
|
||||
Classifier: Operating System :: POSIX :: BSD :: OpenBSD
|
||||
Classifier: Programming Language :: Python :: 2
|
||||
Classifier: Programming Language :: Python :: 2.7
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3.4
|
||||
Classifier: Programming Language :: Python :: 3.5
|
||||
Classifier: Programming Language :: Python :: 3.6
|
||||
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
||||
Classifier: Topic :: System :: Operating System
|
||||
Description-Content-Type: text/markdown
|
|
@ -0,0 +1,140 @@
|
|||
Distro - an OS platform information API
|
||||
=======================================
|
||||
|
||||
[![Build Status](https://travis-ci.org/nir0s/distro.svg?branch=master)](https://travis-ci.org/nir0s/distro)
|
||||
[![Build status](https://ci.appveyor.com/api/projects/status/e812qjk1gf0f74r5/branch/master?svg=true)](https://ci.appveyor.com/project/nir0s/distro/branch/master)
|
||||
[![PyPI version](http://img.shields.io/pypi/v/distro.svg)](https://pypi.python.org/pypi/distro)
|
||||
[![Supported Python Versions](https://img.shields.io/pypi/pyversions/distro.svg)](https://img.shields.io/pypi/pyversions/distro.svg)
|
||||
[![Requirements Status](https://requires.io/github/nir0s/distro/requirements.svg?branch=master)](https://requires.io/github/nir0s/distro/requirements/?branch=master)
|
||||
[![Code Coverage](https://codecov.io/github/nir0s/distro/coverage.svg?branch=master)](https://codecov.io/github/nir0s/distro?branch=master)
|
||||
[![Code Quality](https://landscape.io/github/nir0s/distro/master/landscape.svg?style=flat)](https://landscape.io/github/nir0s/distro)
|
||||
[![Is Wheel](https://img.shields.io/pypi/wheel/distro.svg?style=flat)](https://pypi.python.org/pypi/distro)
|
||||
[![Latest Github Release](https://readthedocs.org/projects/distro/badge/?version=stable)](http://distro.readthedocs.io/en/latest/)
|
||||
[![Join the chat at https://gitter.im/nir0s/distro](https://badges.gitter.im/nir0s/distro.svg)](https://gitter.im/nir0s/distro?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
|
||||
`distro` provides information about the
|
||||
OS distribution it runs on, such as a reliable machine-readable ID, or
|
||||
version information.
|
||||
|
||||
It is the recommended replacement for Python's original
|
||||
[`platform.linux_distribution`](https://docs.python.org/3.7/library/platform.html#platform.linux_distribution)
|
||||
function (which will be removed in Python 3.8).
|
||||
It also provides much more functionality which isn't necessarily Python bound,
|
||||
like a command-line interface.
|
||||
|
||||
Distro currently supports Linux and BSD based systems but [Windows and OS X support](https://github.com/nir0s/distro/issues/177) is also planned.
|
||||
|
||||
For Python 2.6 support, see https://github.com/nir0s/distro/tree/python2.6-support
|
||||
|
||||
## Installation
|
||||
|
||||
Installation of the latest released version from PyPI:
|
||||
|
||||
```shell
|
||||
pip install distro
|
||||
```
|
||||
|
||||
Installation of the latest development version:
|
||||
|
||||
```shell
|
||||
pip install https://github.com/nir0s/distro/archive/master.tar.gz
|
||||
```
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
```bash
|
||||
$ distro
|
||||
Name: Antergos Linux
|
||||
Version: 2015.10 (ISO-Rolling)
|
||||
Codename: ISO-Rolling
|
||||
|
||||
$ distro -j
|
||||
{
|
||||
"codename": "ISO-Rolling",
|
||||
"id": "antergos",
|
||||
"like": "arch",
|
||||
"version": "16.9",
|
||||
"version_parts": {
|
||||
"build_number": "",
|
||||
"major": "16",
|
||||
"minor": "9"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$ python
|
||||
>>> import distro
|
||||
>>> distro.linux_distribution(full_distribution_name=False)
|
||||
('centos', '7.1.1503', 'Core')
|
||||
```
|
||||
|
||||
|
||||
## Documentation
|
||||
|
||||
On top of the aforementioned API, several more functions are available. For a complete description of the
|
||||
API, see the [latest API documentation](http://distro.readthedocs.org/en/latest/).
|
||||
|
||||
## Background
|
||||
|
||||
An alternative implementation became necessary because Python 3.5 deprecated
|
||||
this function, and Python 3.8 will remove it altogether.
|
||||
Its predecessor function `platform.dist` was already deprecated since
|
||||
Python 2.6 and will also be removed in Python 3.8.
|
||||
Still, there are many cases in which access to that information is needed.
|
||||
See [Python issue 1322](https://bugs.python.org/issue1322) for more
|
||||
information.
|
||||
|
||||
The `distro` package implements a robust and inclusive way of retrieving the
|
||||
information about a distribution based on new standards and old methods,
|
||||
namely from these data sources (from high to low precedence):
|
||||
|
||||
* The os-release file `/etc/os-release`, if present.
|
||||
* The output of the `lsb_release` command, if available.
|
||||
* The distro release file (`/etc/*(-|_)(release|version)`), if present.
|
||||
* The `uname` command for BSD based distrubtions.
|
||||
|
||||
|
||||
## Python and Distribution Support
|
||||
|
||||
`distro` is supported and tested on Python 2.7, 3.4+ and PyPy and on
|
||||
any distribution that provides one or more of the data sources
|
||||
covered.
|
||||
|
||||
This package is tested with test data that mimics the exact behavior of the data sources of [a number of Linux distributions](https://github.com/nir0s/distro/tree/master/tests/resources/distros).
|
||||
|
||||
|
||||
## Testing
|
||||
|
||||
```shell
|
||||
git clone git@github.com:nir0s/distro.git
|
||||
cd distro
|
||||
pip install tox
|
||||
tox
|
||||
```
|
||||
|
||||
|
||||
## Contributions
|
||||
|
||||
Pull requests are always welcome to deal with specific distributions or just
|
||||
for general merriment.
|
||||
|
||||
See [CONTRIBUTIONS](https://github.com/nir0s/distro/blob/master/CONTRIBUTING.md) for contribution info.
|
||||
|
||||
Reference implementations for supporting additional distributions and file
|
||||
formats can be found here:
|
||||
|
||||
* https://github.com/saltstack/salt/blob/develop/salt/grains/core.py#L1172
|
||||
* https://github.com/chef/ohai/blob/master/lib/ohai/plugins/linux/platform.rb
|
||||
* https://github.com/ansible/ansible/blob/devel/lib/ansible/module_utils/facts/system/distribution.py
|
||||
* https://github.com/puppetlabs/facter/blob/master/lib/src/facts/linux/os_linux.cc
|
||||
|
||||
## Package manager distributions
|
||||
|
||||
* https://src.fedoraproject.org/rpms/python-distro
|
||||
* https://www.archlinux.org/packages/community/any/python-distro/
|
||||
* https://launchpad.net/ubuntu/+source/python-distro
|
||||
* https://packages.debian.org/sid/python-distro
|
||||
* https://packages.gentoo.org/packages/dev-python/distro
|
||||
* https://pkgs.org/download/python2-distro
|
||||
* https://slackbuilds.org/repository/14.2/python/python-distro/
|
|
@ -0,0 +1,3 @@
|
|||
pytest
|
||||
pytest-cov
|
||||
sphinx>=1.1
|
|
@ -0,0 +1,168 @@
|
|||
Metadata-Version: 2.1
|
||||
Name: distro
|
||||
Version: 1.4.0
|
||||
Summary: Distro - an OS platform information API
|
||||
Home-page: https://github.com/nir0s/distro
|
||||
Author: Nir Cohen
|
||||
Author-email: nir36g@gmail.com
|
||||
License: Apache License, Version 2.0
|
||||
Description: Distro - an OS platform information API
|
||||
=======================================
|
||||
|
||||
[![Build Status](https://travis-ci.org/nir0s/distro.svg?branch=master)](https://travis-ci.org/nir0s/distro)
|
||||
[![Build status](https://ci.appveyor.com/api/projects/status/e812qjk1gf0f74r5/branch/master?svg=true)](https://ci.appveyor.com/project/nir0s/distro/branch/master)
|
||||
[![PyPI version](http://img.shields.io/pypi/v/distro.svg)](https://pypi.python.org/pypi/distro)
|
||||
[![Supported Python Versions](https://img.shields.io/pypi/pyversions/distro.svg)](https://img.shields.io/pypi/pyversions/distro.svg)
|
||||
[![Requirements Status](https://requires.io/github/nir0s/distro/requirements.svg?branch=master)](https://requires.io/github/nir0s/distro/requirements/?branch=master)
|
||||
[![Code Coverage](https://codecov.io/github/nir0s/distro/coverage.svg?branch=master)](https://codecov.io/github/nir0s/distro?branch=master)
|
||||
[![Code Quality](https://landscape.io/github/nir0s/distro/master/landscape.svg?style=flat)](https://landscape.io/github/nir0s/distro)
|
||||
[![Is Wheel](https://img.shields.io/pypi/wheel/distro.svg?style=flat)](https://pypi.python.org/pypi/distro)
|
||||
[![Latest Github Release](https://readthedocs.org/projects/distro/badge/?version=stable)](http://distro.readthedocs.io/en/latest/)
|
||||
[![Join the chat at https://gitter.im/nir0s/distro](https://badges.gitter.im/nir0s/distro.svg)](https://gitter.im/nir0s/distro?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
|
||||
`distro` provides information about the
|
||||
OS distribution it runs on, such as a reliable machine-readable ID, or
|
||||
version information.
|
||||
|
||||
It is the recommended replacement for Python's original
|
||||
[`platform.linux_distribution`](https://docs.python.org/3.7/library/platform.html#platform.linux_distribution)
|
||||
function (which will be removed in Python 3.8).
|
||||
It also provides much more functionality which isn't necessarily Python bound,
|
||||
like a command-line interface.
|
||||
|
||||
Distro currently supports Linux and BSD based systems but [Windows and OS X support](https://github.com/nir0s/distro/issues/177) is also planned.
|
||||
|
||||
For Python 2.6 support, see https://github.com/nir0s/distro/tree/python2.6-support
|
||||
|
||||
## Installation
|
||||
|
||||
Installation of the latest released version from PyPI:
|
||||
|
||||
```shell
|
||||
pip install distro
|
||||
```
|
||||
|
||||
Installation of the latest development version:
|
||||
|
||||
```shell
|
||||
pip install https://github.com/nir0s/distro/archive/master.tar.gz
|
||||
```
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
```bash
|
||||
$ distro
|
||||
Name: Antergos Linux
|
||||
Version: 2015.10 (ISO-Rolling)
|
||||
Codename: ISO-Rolling
|
||||
|
||||
$ distro -j
|
||||
{
|
||||
"codename": "ISO-Rolling",
|
||||
"id": "antergos",
|
||||
"like": "arch",
|
||||
"version": "16.9",
|
||||
"version_parts": {
|
||||
"build_number": "",
|
||||
"major": "16",
|
||||
"minor": "9"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$ python
|
||||
>>> import distro
|
||||
>>> distro.linux_distribution(full_distribution_name=False)
|
||||
('centos', '7.1.1503', 'Core')
|
||||
```
|
||||
|
||||
|
||||
## Documentation
|
||||
|
||||
On top of the aforementioned API, several more functions are available. For a complete description of the
|
||||
API, see the [latest API documentation](http://distro.readthedocs.org/en/latest/).
|
||||
|
||||
## Background
|
||||
|
||||
An alternative implementation became necessary because Python 3.5 deprecated
|
||||
this function, and Python 3.8 will remove it altogether.
|
||||
Its predecessor function `platform.dist` was already deprecated since
|
||||
Python 2.6 and will also be removed in Python 3.8.
|
||||
Still, there are many cases in which access to that information is needed.
|
||||
See [Python issue 1322](https://bugs.python.org/issue1322) for more
|
||||
information.
|
||||
|
||||
The `distro` package implements a robust and inclusive way of retrieving the
|
||||
information about a distribution based on new standards and old methods,
|
||||
namely from these data sources (from high to low precedence):
|
||||
|
||||
* The os-release file `/etc/os-release`, if present.
|
||||
* The output of the `lsb_release` command, if available.
|
||||
* The distro release file (`/etc/*(-|_)(release|version)`), if present.
|
||||
* The `uname` command for BSD based distrubtions.
|
||||
|
||||
|
||||
## Python and Distribution Support
|
||||
|
||||
`distro` is supported and tested on Python 2.7, 3.4+ and PyPy and on
|
||||
any distribution that provides one or more of the data sources
|
||||
covered.
|
||||
|
||||
This package is tested with test data that mimics the exact behavior of the data sources of [a number of Linux distributions](https://github.com/nir0s/distro/tree/master/tests/resources/distros).
|
||||
|
||||
|
||||
## Testing
|
||||
|
||||
```shell
|
||||
git clone git@github.com:nir0s/distro.git
|
||||
cd distro
|
||||
pip install tox
|
||||
tox
|
||||
```
|
||||
|
||||
|
||||
## Contributions
|
||||
|
||||
Pull requests are always welcome to deal with specific distributions or just
|
||||
for general merriment.
|
||||
|
||||
See [CONTRIBUTIONS](https://github.com/nir0s/distro/blob/master/CONTRIBUTING.md) for contribution info.
|
||||
|
||||
Reference implementations for supporting additional distributions and file
|
||||
formats can be found here:
|
||||
|
||||
* https://github.com/saltstack/salt/blob/develop/salt/grains/core.py#L1172
|
||||
* https://github.com/chef/ohai/blob/master/lib/ohai/plugins/linux/platform.rb
|
||||
* https://github.com/ansible/ansible/blob/devel/lib/ansible/module_utils/facts/system/distribution.py
|
||||
* https://github.com/puppetlabs/facter/blob/master/lib/src/facts/linux/os_linux.cc
|
||||
|
||||
## Package manager distributions
|
||||
|
||||
* https://src.fedoraproject.org/rpms/python-distro
|
||||
* https://www.archlinux.org/packages/community/any/python-distro/
|
||||
* https://launchpad.net/ubuntu/+source/python-distro
|
||||
* https://packages.debian.org/sid/python-distro
|
||||
* https://packages.gentoo.org/packages/dev-python/distro
|
||||
* https://pkgs.org/download/python2-distro
|
||||
* https://slackbuilds.org/repository/14.2/python/python-distro/
|
||||
|
||||
Platform: All
|
||||
Classifier: Development Status :: 5 - Production/Stable
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: Intended Audience :: System Administrators
|
||||
Classifier: License :: OSI Approved :: Apache Software License
|
||||
Classifier: Operating System :: POSIX :: Linux
|
||||
Classifier: Operating System :: POSIX :: BSD
|
||||
Classifier: Operating System :: POSIX :: BSD :: FreeBSD
|
||||
Classifier: Operating System :: POSIX :: BSD :: NetBSD
|
||||
Classifier: Operating System :: POSIX :: BSD :: OpenBSD
|
||||
Classifier: Programming Language :: Python :: 2
|
||||
Classifier: Programming Language :: Python :: 2.7
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3.4
|
||||
Classifier: Programming Language :: Python :: 3.5
|
||||
Classifier: Programming Language :: Python :: 3.6
|
||||
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
||||
Classifier: Topic :: System :: Operating System
|
||||
Description-Content-Type: text/markdown
|
|
@ -0,0 +1,147 @@
|
|||
CHANGELOG.md
|
||||
CONTRIBUTING.md
|
||||
CONTRIBUTORS.md
|
||||
LICENSE
|
||||
MANIFEST.in
|
||||
Makefile
|
||||
README.md
|
||||
dev-requirements.txt
|
||||
distro.py
|
||||
query_local_distro.py
|
||||
setup.cfg
|
||||
setup.py
|
||||
distro.egg-info/PKG-INFO
|
||||
distro.egg-info/SOURCES.txt
|
||||
distro.egg-info/dependency_links.txt
|
||||
distro.egg-info/entry_points.txt
|
||||
distro.egg-info/top_level.txt
|
||||
docs/conf.py
|
||||
docs/index.rst
|
||||
tests/__init__.py
|
||||
tests/test_distro.py
|
||||
tests/resources/distros/__shared__/bin/lsb_release
|
||||
tests/resources/distros/amazon2014/etc/system-release
|
||||
tests/resources/distros/amazon2016/etc/os-release
|
||||
tests/resources/distros/amazon2016/etc/system-release
|
||||
tests/resources/distros/arch/etc/arch-release
|
||||
tests/resources/distros/arch/etc/os-release
|
||||
tests/resources/distros/arch/usr/lib/os-release
|
||||
tests/resources/distros/centos5/etc/centos-release
|
||||
tests/resources/distros/centos5/etc/redhat-release
|
||||
tests/resources/distros/centos5/etc/system-release
|
||||
tests/resources/distros/centos7/etc/centos-release
|
||||
tests/resources/distros/centos7/etc/os-release
|
||||
tests/resources/distros/centos7/etc/redhat-release
|
||||
tests/resources/distros/centos7/etc/system-release
|
||||
tests/resources/distros/cloudlinux5/etc/redhat-release
|
||||
tests/resources/distros/cloudlinux6/etc/redhat-release
|
||||
tests/resources/distros/cloudlinux7/etc/os-release
|
||||
tests/resources/distros/cloudlinux7/etc/redhat-release
|
||||
tests/resources/distros/coreos/etc/oem-release
|
||||
tests/resources/distros/coreos/etc/os-release
|
||||
tests/resources/distros/debian8/bin/lsb_release
|
||||
tests/resources/distros/debian8/etc/debian_version
|
||||
tests/resources/distros/debian8/etc/os-release
|
||||
tests/resources/distros/exherbo/etc/os-release
|
||||
tests/resources/distros/fedora19/etc/fedora-release
|
||||
tests/resources/distros/fedora19/etc/issue
|
||||
tests/resources/distros/fedora19/etc/issue.net
|
||||
tests/resources/distros/fedora19/etc/os-release
|
||||
tests/resources/distros/fedora19/etc/redhat-release
|
||||
tests/resources/distros/fedora19/etc/system-release
|
||||
tests/resources/distros/fedora19/etc/system-release-cpe
|
||||
tests/resources/distros/fedora23/etc/fedora-release
|
||||
tests/resources/distros/fedora23/etc/os-release
|
||||
tests/resources/distros/fedora23/etc/redhat-release
|
||||
tests/resources/distros/fedora23/etc/system-release
|
||||
tests/resources/distros/fedora23/usr/lib/os-release
|
||||
tests/resources/distros/fedora30/etc/fedora-release
|
||||
tests/resources/distros/fedora30/etc/os-release
|
||||
tests/resources/distros/fedora30/etc/redhat-release
|
||||
tests/resources/distros/fedora30/etc/system-release
|
||||
tests/resources/distros/fedora30/usr/lib/os-release
|
||||
tests/resources/distros/freebsd111/bin/uname
|
||||
tests/resources/distros/gentoo/etc/gentoo-release
|
||||
tests/resources/distros/gentoo/etc/os-release
|
||||
tests/resources/distros/kali/etc/os-release
|
||||
tests/resources/distros/kvmibm1/bin/lsb_release
|
||||
tests/resources/distros/kvmibm1/etc/base-release
|
||||
tests/resources/distros/kvmibm1/etc/os-release
|
||||
tests/resources/distros/kvmibm1/etc/redhat-release
|
||||
tests/resources/distros/kvmibm1/etc/system-release
|
||||
tests/resources/distros/linuxmint17/bin/lsb_release
|
||||
tests/resources/distros/linuxmint17/etc/debian_version
|
||||
tests/resources/distros/linuxmint17/etc/lsb-release
|
||||
tests/resources/distros/linuxmint17/etc/os-release
|
||||
tests/resources/distros/linuxmint17/etc/upstream-release/lsb-release
|
||||
tests/resources/distros/mageia5/bin/lsb_release
|
||||
tests/resources/distros/mageia5/etc/lsb-release
|
||||
tests/resources/distros/mageia5/etc/mageia-release
|
||||
tests/resources/distros/mageia5/etc/mandrake-release
|
||||
tests/resources/distros/mageia5/etc/mandrakelinux-release
|
||||
tests/resources/distros/mageia5/etc/mandriva-release
|
||||
tests/resources/distros/mageia5/etc/os-release
|
||||
tests/resources/distros/mageia5/etc/redhat-release
|
||||
tests/resources/distros/mageia5/etc/release
|
||||
tests/resources/distros/mageia5/etc/version
|
||||
tests/resources/distros/mageia5/usr/lib/os-release
|
||||
tests/resources/distros/mandriva2011/bin/lsb_release
|
||||
tests/resources/distros/mandriva2011/etc/lsb-release
|
||||
tests/resources/distros/mandriva2011/etc/mandrake-release
|
||||
tests/resources/distros/mandriva2011/etc/mandrakelinux-release
|
||||
tests/resources/distros/mandriva2011/etc/mandriva-release
|
||||
tests/resources/distros/mandriva2011/etc/redhat-release
|
||||
tests/resources/distros/mandriva2011/etc/release
|
||||
tests/resources/distros/mandriva2011/etc/version
|
||||
tests/resources/distros/manjaro1512/bin/lsb_release
|
||||
tests/resources/distros/manjaro1512/etc/lsb-release
|
||||
tests/resources/distros/manjaro1512/etc/manjaro-release
|
||||
tests/resources/distros/manjaro1512/etc/os-release
|
||||
tests/resources/distros/netbsd711/bin/uname
|
||||
tests/resources/distros/openbsd62/bin/uname
|
||||
tests/resources/distros/openelec6/etc/os-release
|
||||
tests/resources/distros/opensuse42/etc/SuSE-release
|
||||
tests/resources/distros/opensuse42/etc/os-release
|
||||
tests/resources/distros/oracle7/etc/oracle-release
|
||||
tests/resources/distros/oracle7/etc/os-release
|
||||
tests/resources/distros/raspbian7/etc/debian_version
|
||||
tests/resources/distros/raspbian7/etc/os-release
|
||||
tests/resources/distros/raspbian7/etc/os-release.orig
|
||||
tests/resources/distros/raspbian8/etc/debian_version
|
||||
tests/resources/distros/raspbian8/etc/os-release
|
||||
tests/resources/distros/rhel5/etc/redhat-release
|
||||
tests/resources/distros/rhel6/etc/redhat-release
|
||||
tests/resources/distros/rhel6/etc/system-release
|
||||
tests/resources/distros/rhel7/etc/os-release
|
||||
tests/resources/distros/rhel7/etc/redhat-release
|
||||
tests/resources/distros/rhel7/etc/system-release
|
||||
tests/resources/distros/scientific6/etc/redhat-release
|
||||
tests/resources/distros/scientific6/etc/system-release
|
||||
tests/resources/distros/scientific7/etc/os-release
|
||||
tests/resources/distros/scientific7/etc/redhat-release
|
||||
tests/resources/distros/scientific7/etc/sl-release
|
||||
tests/resources/distros/scientific7/etc/system-release
|
||||
tests/resources/distros/slackware14/etc/os-release
|
||||
tests/resources/distros/slackware14/etc/slackware-version
|
||||
tests/resources/distros/sles12/bin/lsb_release
|
||||
tests/resources/distros/sles12/etc/SuSE-release
|
||||
tests/resources/distros/sles12/etc/os-release
|
||||
tests/resources/distros/ubuntu14/bin/lsb_release
|
||||
tests/resources/distros/ubuntu14/etc/debian_version
|
||||
tests/resources/distros/ubuntu14/etc/lsb-release
|
||||
tests/resources/distros/ubuntu14/etc/os-release
|
||||
tests/resources/distros/ubuntu16/bin/lsb_release
|
||||
tests/resources/distros/ubuntu16/etc/debian_version
|
||||
tests/resources/distros/ubuntu16/etc/lsb-release
|
||||
tests/resources/distros/ubuntu16/etc/os-release
|
||||
tests/resources/special/empty-release
|
||||
tests/resources/testdistros/distro/baduname/bin/uname
|
||||
tests/resources/testdistros/distro/unknowndistro/etc/unknowndistro-release
|
||||
tests/resources/testdistros/lsb/lsb_rc001/bin/lsb_release
|
||||
tests/resources/testdistros/lsb/lsb_rc002/bin/lsb_release
|
||||
tests/resources/testdistros/lsb/lsb_rc126/bin/lsb_release
|
||||
tests/resources/testdistros/lsb/lsb_rc130/bin/lsb_release
|
||||
tests/resources/testdistros/lsb/lsb_rc255/bin/lsb_release
|
||||
tests/resources/testdistros/lsb/ubuntu14_nomodules/bin/lsb_release
|
||||
tests/resources/testdistros/lsb/ubuntu14_normal/bin/lsb_release
|
||||
tests/resources/testdistros/lsb/ubuntu14_trailingblanks/bin/lsb_release
|
|
@ -0,0 +1 @@
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
[console_scripts]
|
||||
distro = distro:main
|
||||
|
|
@ -0,0 +1 @@
|
|||
distro
|
|
@ -0,0 +1,342 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
#
|
||||
# Configuration file for Sphinx builds, created by
|
||||
# sphinx-quickstart on Wed Mar 2 11:33:06 2016.
|
||||
#
|
||||
# This file is execfile()d with the current directory set to its
|
||||
# containing dir.
|
||||
#
|
||||
# Note that not all possible configuration values are present in this
|
||||
# autogenerated file.
|
||||
#
|
||||
# All configuration values have a default; values that are commented out
|
||||
# serve to show the default.
|
||||
|
||||
import sys
|
||||
import os
|
||||
import re
|
||||
|
||||
# If extensions (or modules to document with autodoc) are in another directory,
|
||||
# add these directories to sys.path here. If the directory is relative to the
|
||||
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
||||
sys.path.insert(0, os.path.abspath('..'))
|
||||
|
||||
# -- General configuration ------------------------------------------------
|
||||
|
||||
# If your documentation needs a minimal Sphinx version, state it here.
|
||||
needs_sphinx = '1.1'
|
||||
|
||||
# Add any Sphinx extension module names here, as strings. They can be
|
||||
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
||||
# ones.
|
||||
extensions = [
|
||||
'sphinx.ext.autodoc',
|
||||
'sphinx.ext.intersphinx',
|
||||
'sphinx.ext.todo',
|
||||
'sphinx.ext.coverage',
|
||||
'sphinx.ext.viewcode',
|
||||
]
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
templates_path = ['_templates']
|
||||
|
||||
# The suffix(es) of source filenames.
|
||||
# You can specify multiple suffix as a list of string:
|
||||
# source_suffix = ['.rst', '.md']
|
||||
source_suffix = '.rst'
|
||||
|
||||
# The encoding of source files.
|
||||
source_encoding = 'utf-8'
|
||||
|
||||
# The master toctree document.
|
||||
on_rtd = os.environ.get('READTHEDOCS', None) == 'True'
|
||||
if on_rtd:
|
||||
master_doc = 'index'
|
||||
else:
|
||||
master_doc = 'docs/index'
|
||||
|
||||
# General information about the project.
|
||||
project = u'distro'
|
||||
copyright = u'2015,2016, Nir Cohen, Andreas Maier'
|
||||
author = u'Nir Cohen, Andreas Maier'
|
||||
|
||||
# The short description of the package.
|
||||
_short_description = u'Linux Distribution - a Linux OS platform information API'
|
||||
|
||||
# The version info for the project you're documenting, acts as replacement for
|
||||
# |version| and |release|, also used in various other places throughout the
|
||||
# built documents.
|
||||
|
||||
def parse_version():
|
||||
with open('../setup.py', 'r') as _fp:
|
||||
_lines = _fp.readlines()
|
||||
for _line in _lines:
|
||||
m = re.match(r'^package_version *= *[\'"](.+)[\'"].*$', _line)
|
||||
if m:
|
||||
break
|
||||
if m:
|
||||
return m.group(1)
|
||||
else:
|
||||
return 'unknown'
|
||||
|
||||
# The short X.Y version.
|
||||
# Note: We use the full version in both cases.
|
||||
version = parse_version()
|
||||
|
||||
# The full version, including alpha/beta/rc tags.
|
||||
release = version
|
||||
|
||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||
# for a list of supported languages.
|
||||
#
|
||||
# This is also used if you do content translation via gettext catalogs.
|
||||
# Usually you set "language" from the command line for these cases.
|
||||
language = None
|
||||
|
||||
# There are two options for replacing |today|: either, you set today to some
|
||||
# non-false value, then it is used:
|
||||
#today = ''
|
||||
# Else, today_fmt is used as the format for a strftime call.
|
||||
#today_fmt = '%B %d, %Y'
|
||||
|
||||
# List of patterns, relative to source directory, that match files and
|
||||
# directories to ignore when looking for source files.
|
||||
exclude_patterns = ["tests", ".tox", ".git", "build_docs", "ld.egg-info"]
|
||||
|
||||
# The reST default role (used for this markup: `text`) to use for all
|
||||
# documents.
|
||||
#default_role = None
|
||||
|
||||
# If true, '()' will be appended to :func: etc. cross-reference text.
|
||||
add_function_parentheses = True
|
||||
|
||||
# If true, the current module name will be prepended to all description
|
||||
# unit titles (such as .. function::).
|
||||
#add_module_names = True
|
||||
|
||||
# If true, sectionauthor and moduleauthor directives will be shown in the
|
||||
# output. They are ignored by default.
|
||||
#show_authors = False
|
||||
|
||||
# The name of the Pygments (syntax highlighting) style to use.
|
||||
pygments_style = 'sphinx'
|
||||
|
||||
# A list of ignored prefixes for module index sorting.
|
||||
#modindex_common_prefix = []
|
||||
|
||||
# If true, keep warnings as "system message" paragraphs in the built documents.
|
||||
#keep_warnings = False
|
||||
|
||||
# If true, `todo` and `todoList` produce output, else they produce nothing.
|
||||
todo_include_todos = True
|
||||
|
||||
|
||||
# -- Options for HTML output ----------------------------------------------
|
||||
|
||||
# The theme to use for HTML and HTML Help pages.
|
||||
# See http://www.sphinx-doc.org/en/stable/theming.html for built-in themes.
|
||||
html_theme = "classic"
|
||||
|
||||
# Theme options are theme-specific and customize the look and feel of a theme
|
||||
# further.
|
||||
# See http://www.sphinx-doc.org/en/stable/theming.html for the options
|
||||
# available for built-in themes.
|
||||
html_theme_options = {
|
||||
}
|
||||
|
||||
# Add any paths that contain custom themes here, relative to this directory.
|
||||
#html_theme_path = []
|
||||
|
||||
# The name for this set of Sphinx documents. If not defined, it defaults to
|
||||
# "<project> v<release> documentation".
|
||||
#html_title = None
|
||||
|
||||
# A shorter title for the navigation bar. Default is the same as html_title.
|
||||
#html_short_title = 'distro'
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top
|
||||
# of the sidebar.
|
||||
#html_logo = None
|
||||
|
||||
# The name of an image file (relative to this directory) to use as a favicon of
|
||||
# the docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
|
||||
# pixels large.
|
||||
#html_favicon = None
|
||||
|
||||
# Add any paths that contain custom static files (such as style sheets) here,
|
||||
# relative to this directory. They are copied after the builtin static files,
|
||||
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||
html_static_path = ['html_static']
|
||||
|
||||
# Add any extra paths that contain custom files (such as robots.txt or
|
||||
# .htaccess) here, relative to this directory. These files are copied
|
||||
# directly to the root of the documentation.
|
||||
html_extra_path = ['html_extra']
|
||||
|
||||
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
|
||||
# using the given strftime format.
|
||||
#html_last_updated_fmt = '%b %d, %Y'
|
||||
|
||||
# If true, SmartyPants will be used to convert quotes and dashes to
|
||||
# typographically correct entities.
|
||||
#html_use_smartypants = True
|
||||
|
||||
# Custom sidebar templates, maps document names to template names.
|
||||
#html_sidebars = {}
|
||||
|
||||
# Additional templates that should be rendered to pages, maps page names to
|
||||
# template names.
|
||||
#html_additional_pages = {}
|
||||
|
||||
# If false, no module index is generated.
|
||||
#html_domain_indices = True
|
||||
|
||||
# If false, no index is generated.
|
||||
#html_use_index = True
|
||||
|
||||
# If true, the index is split into individual pages for each letter.
|
||||
#html_split_index = False
|
||||
|
||||
# If true, links to the reST sources are added to the pages.
|
||||
#html_show_sourcelink = True
|
||||
|
||||
# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
|
||||
#html_show_sphinx = True
|
||||
|
||||
# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
|
||||
#html_show_copyright = True
|
||||
|
||||
# If true, an OpenSearch description file will be output, and all pages will
|
||||
# contain a <link> tag referring to it. The value of this option must be the
|
||||
# base URL from which the finished HTML is served.
|
||||
#html_use_opensearch = ''
|
||||
|
||||
# This is the file name suffix for HTML files (e.g. ".xhtml").
|
||||
#html_file_suffix = None
|
||||
|
||||
# Language to be used for generating the HTML full-text search index.
|
||||
# Sphinx supports the following languages:
|
||||
# 'da', 'de', 'en', 'es', 'fi', 'fr', 'hu', 'it', 'ja'
|
||||
# 'nl', 'no', 'pt', 'ro', 'ru', 'sv', 'tr'
|
||||
#html_search_language = 'en'
|
||||
|
||||
# A dictionary with options for the search language support, empty by default.
|
||||
# Now only 'ja' uses this config value
|
||||
#html_search_options = {'type': 'default'}
|
||||
|
||||
# The name of a javascript file (relative to the configuration directory) that
|
||||
# implements a search results scorer. If empty, the default will be used.
|
||||
#html_search_scorer = 'scorer.js'
|
||||
|
||||
# Output file base name for HTML help builder.
|
||||
htmlhelp_basename = 'distro_doc'
|
||||
|
||||
# -- Options for LaTeX output ---------------------------------------------
|
||||
|
||||
latex_elements = {
|
||||
# The paper size ('letterpaper' or 'a4paper').
|
||||
#'papersize': 'letterpaper',
|
||||
|
||||
# The font size ('10pt', '11pt' or '12pt').
|
||||
#'pointsize': '10pt',
|
||||
|
||||
# Additional stuff for the LaTeX preamble.
|
||||
#'preamble': '',
|
||||
|
||||
# Latex figure (float) alignment
|
||||
#'figure_align': 'htbp',
|
||||
}
|
||||
|
||||
# Grouping the document tree into LaTeX files. List of tuples
|
||||
# (source start file, target name, title,
|
||||
# author, documentclass [howto, manual, or own class]).
|
||||
latex_documents = [
|
||||
(master_doc, 'ld.tex', _short_description, author, 'manual'),
|
||||
]
|
||||
|
||||
# The name of an image file (relative to this directory) to place at the top of
|
||||
# the title page.
|
||||
#latex_logo = None
|
||||
|
||||
# For "manual" documents, if this is true, then toplevel headings are parts,
|
||||
# not chapters.
|
||||
#latex_use_parts = False
|
||||
|
||||
# If true, show page references after internal links.
|
||||
#latex_show_pagerefs = False
|
||||
|
||||
# If true, show URL addresses after external links.
|
||||
#latex_show_urls = False
|
||||
|
||||
# Documents to append as an appendix to all manuals.
|
||||
#latex_appendices = []
|
||||
|
||||
# If false, no module index is generated.
|
||||
#latex_domain_indices = True
|
||||
|
||||
|
||||
# -- Options for manual page output ---------------------------------------
|
||||
|
||||
# One entry per manual page. List of tuples
|
||||
# (source start file, name, description, authors, manual section).
|
||||
man_pages = [
|
||||
(master_doc, 'ld', _short_description, [author], 1)
|
||||
]
|
||||
|
||||
# If true, show URL addresses after external links.
|
||||
#man_show_urls = False
|
||||
|
||||
|
||||
# -- Options for Texinfo output -------------------------------------------
|
||||
|
||||
# Grouping the document tree into Texinfo files. List of tuples
|
||||
# (source start file, target name, title, author,
|
||||
# dir menu entry, description, category)
|
||||
texinfo_documents = [
|
||||
(master_doc, 'LinuxDistribution', _short_description,
|
||||
author, 'LinuxDistribution', _short_description,
|
||||
'Miscellaneous'),
|
||||
]
|
||||
|
||||
# Documents to append as an appendix to all manuals.
|
||||
#texinfo_appendices = []
|
||||
|
||||
# If false, no module index is generated.
|
||||
#texinfo_domain_indices = True
|
||||
|
||||
# How to display URL addresses: 'footnote', 'no', or 'inline'.
|
||||
#texinfo_show_urls = 'footnote'
|
||||
|
||||
# If true, do not generate a @detailmenu in the "Top" node's menu.
|
||||
#texinfo_no_detailmenu = False
|
||||
|
||||
|
||||
# -- Options for autodoc extension ----------------------------------------
|
||||
# For documentation, see
|
||||
# http://www.sphinx-doc.org/en/stable/ext/autodoc.html
|
||||
|
||||
# Selects what content will be inserted into a class description.
|
||||
# The possible values are:
|
||||
# "class" - Only the class’ docstring is inserted. This is the default.
|
||||
# "both" - Both the class’ and the __init__ method’s docstring are
|
||||
# concatenated and inserted.
|
||||
# "init" - Only the __init__ method’s docstring is inserted.
|
||||
autoclass_content = "both"
|
||||
|
||||
# Selects if automatically documented members are sorted alphabetically
|
||||
# (value 'alphabetical'), by member type (value 'groupwise') or by source
|
||||
# order (value 'bysource'). The default is alphabetical.
|
||||
autodoc_member_order = "bysource"
|
||||
|
||||
# -- Options for intersphinx extension ------------------------------------
|
||||
# For documentation, see
|
||||
# http://www.sphinx-doc.org/en/stable/ext/intersphinx.html
|
||||
|
||||
# Defines the prefixes for intersphinx links, and the targets they resolve
|
||||
# to. Example RST source for 'py' prefix:
|
||||
# :py:func:`platform.dist`
|
||||
intersphinx_mapping = {
|
||||
'py': ('https://docs.python.org/3.5', None)
|
||||
}
|
||||
|
||||
intersphinx_cache_limit = 5
|
|
@ -0,0 +1,476 @@
|
|||
|
||||
.. _distro official repo: https://github.com/nir0s/distro
|
||||
.. _distro issue tracker: https://github.com/nir0s/distro/issues
|
||||
.. _open issues on missing test data: https://github.com/nir0s/distro/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22>
|
||||
|
||||
|
||||
**distro** package (Linux Distribution) version |version|
|
||||
*********************************************************
|
||||
|
||||
Official distro repository: `distro official repo`_
|
||||
|
||||
Overview and motivation
|
||||
=======================
|
||||
|
||||
.. automodule:: distro
|
||||
|
||||
If you want to jump into the API description right away, read about the
|
||||
`consolidated accessor functions`_.
|
||||
|
||||
Compatibility
|
||||
=============
|
||||
|
||||
The ``distro`` package is supported on Python 2.7, 3.4+ and PyPy, and on
|
||||
any Linux or *BSD distribution that provides one or more of the `data sources`_
|
||||
used by this package.
|
||||
|
||||
This package is tested on Python 2.7, 3.4+ and PyPy, with test data that
|
||||
mimics the exact behavior of the data sources of
|
||||
`a number of Linux distributions <https://github.com/nir0s/distro/tree/master/tests/resources/distros>`_.
|
||||
|
||||
If you want to add test data for more distributions, please
|
||||
create an issue in the `distro issue tracker`_
|
||||
and provide the following information in the issue:
|
||||
|
||||
* The content of the `/etc/os-release` file, if any.
|
||||
* The file names and content of the `/etc/*release` and `/etc/*version` files, if any.
|
||||
* The output of the command: `lsb_release -a`, if available.
|
||||
* The file names and content of any other files you are aware of that provide
|
||||
useful information about the distro.
|
||||
|
||||
There are already some `open issues on missing test data`_.
|
||||
|
||||
|
||||
Data sources
|
||||
============
|
||||
|
||||
The ``distro`` package implements a robust and inclusive way of retrieving the
|
||||
information about a Linux distribution based on new standards and old methods,
|
||||
namely from these data sources:
|
||||
|
||||
* The `os-release file`_, if present.
|
||||
|
||||
* The `lsb_release command output`_, if the lsb_release command is available.
|
||||
|
||||
* The `distro release file`_, if present.
|
||||
|
||||
* The `uname command output`_, if present.
|
||||
|
||||
|
||||
Access to the information
|
||||
=========================
|
||||
|
||||
This package provides three ways to access the information about a Linux
|
||||
distribution:
|
||||
|
||||
* `Consolidated accessor functions`_
|
||||
|
||||
These are module-global functions that take into account all data sources in
|
||||
a priority order, and that return information about the current Linux
|
||||
distribution.
|
||||
|
||||
These functions should be the normal way to access the information.
|
||||
|
||||
The precedence of data sources is applied for each information item
|
||||
separately. Therefore, it is possible that not all information items returned
|
||||
by these functions come from the same data source. For example, on a
|
||||
distribution that has an lsb_release command that returns the
|
||||
"Distributor ID" field but not the "Codename" field, and that has a distro
|
||||
release file that specifies a codename inside, the distro ID will come from
|
||||
the lsb_release command (because it has higher precedence), and the codename
|
||||
will come from the distro release file (because it is not provided by the
|
||||
lsb_release command).
|
||||
|
||||
Examples: :func:`distro.id` for retrieving
|
||||
the distro ID, or :func:`ld.info` to get the machine-readable part of the
|
||||
information in a more aggregated way, or :func:`distro.linux_distribution` with
|
||||
an interface that is compatible to the original
|
||||
:py:func:`platform.linux_distribution` function, supporting a subset of its
|
||||
parameters.
|
||||
|
||||
* `Single source accessor functions`_
|
||||
|
||||
These are module-global functions that take into account a single data
|
||||
source, and that return information about the current Linux distribution.
|
||||
|
||||
They are useful for distributions that provide multiple inconsistent data
|
||||
sources, or for retrieving information items that are not provided by the
|
||||
consolidated accessor functions.
|
||||
|
||||
Examples: :func:`distro.os_release_attr` for retrieving a single information
|
||||
item from the os-release data source, or :func:`distro.lsb_release_info` for
|
||||
retrieving all information items from the lsb_release command output data
|
||||
source.
|
||||
|
||||
* `LinuxDistribution class`_
|
||||
|
||||
The :class:`distro.LinuxDistribution` class provides the main code of this
|
||||
package.
|
||||
|
||||
This package contains a private module-global :class:`distro.LinuxDistribution`
|
||||
instance with default initialization arguments, that is used by the
|
||||
consolidated and single source accessor functions.
|
||||
|
||||
A user-defined instance of the :class:`distro.LinuxDistribution` class allows
|
||||
specifying the path names of the os-release file and distro release file and
|
||||
whether the lsb_release command should be used or not. That is useful for
|
||||
example when the distribution information from a chrooted environment
|
||||
is to be retrieved, or when a distro has multiple distro release files and
|
||||
the default algorithm uses the wrong one.
|
||||
|
||||
|
||||
Consolidated accessor functions
|
||||
===============================
|
||||
|
||||
This section describes the consolidated accessor functions.
|
||||
See `access to the information`_ for a discussion of the different kinds of
|
||||
accessor functions.
|
||||
|
||||
.. autofunction:: distro.linux_distribution
|
||||
.. autofunction:: distro.id
|
||||
.. autofunction:: distro.name
|
||||
.. autofunction:: distro.version
|
||||
.. autofunction:: distro.version_parts
|
||||
.. autofunction:: distro.major_version
|
||||
.. autofunction:: distro.minor_version
|
||||
.. autofunction:: distro.build_number
|
||||
.. autofunction:: distro.like
|
||||
.. autofunction:: distro.codename
|
||||
.. autofunction:: distro.info
|
||||
|
||||
Single source accessor functions
|
||||
================================
|
||||
|
||||
This section describes the single source accessor functions.
|
||||
See `access to the information`_ for a discussion of the different kinds of
|
||||
accessor functions.
|
||||
|
||||
.. autofunction:: distro.os_release_info
|
||||
.. autofunction:: distro.lsb_release_info
|
||||
.. autofunction:: distro.distro_release_info
|
||||
.. autofunction:: distro.os_release_attr
|
||||
.. autofunction:: distro.lsb_release_attr
|
||||
.. autofunction:: distro.distro_release_attr
|
||||
|
||||
LinuxDistribution class
|
||||
=======================
|
||||
|
||||
This section describes the access via the :class:`distro.LinuxDistribution` class.
|
||||
See `access to the information`_ for a discussion of the different kinds of
|
||||
accessor functions.
|
||||
|
||||
.. autoclass:: distro.LinuxDistribution
|
||||
:members:
|
||||
:undoc-members:
|
||||
|
||||
Normalization tables
|
||||
====================
|
||||
|
||||
These translation tables are used to normalize the parsed distro ID values
|
||||
into reliable IDs. See :func:`distro.id` for details.
|
||||
|
||||
They are documented in order to show for which distros a normalization is
|
||||
currently defined.
|
||||
|
||||
As a quick fix, these tables can also be extended by the user by appending new
|
||||
entries, should the need arise. If you have a need to get these tables
|
||||
extended, please make an according request in the `distro issue tracker`_.
|
||||
|
||||
.. autodata:: distro.NORMALIZED_OS_ID
|
||||
.. autodata:: distro.NORMALIZED_LSB_ID
|
||||
.. autodata:: distro.NORMALIZED_DISTRO_ID
|
||||
|
||||
Os-release file
|
||||
===============
|
||||
|
||||
The os-release file is looked up using the path name ``/etc/os-release``. Its
|
||||
optional additional location ``/usr/lib/os-release`` is ignored.
|
||||
|
||||
The os-release file is expected to be encoded in UTF-8.
|
||||
|
||||
It is parsed using the standard Python :py:mod:`shlex` package, which treats it
|
||||
like a shell script.
|
||||
|
||||
The attribute names found in the file are translated to lower case and then
|
||||
become the keys of the information items from the os-release file data source.
|
||||
These keys can be used to retrieve single items with the
|
||||
:func:`distro.os_release_attr` function, and they are also used as keys in the
|
||||
dictionary returned by :func:`distro.os_release_info`.
|
||||
|
||||
The attribute values found in the file are processed using shell rules (e.g.
|
||||
for whitespace, escaping, and quoting) before they become the values of the
|
||||
information items from the os-release file data source.
|
||||
|
||||
If the attribute "VERSION" is found in the file, the distro codename is
|
||||
extracted from its value if it can be found there. If a codename is found, it
|
||||
becomes an additional information item with key "codename".
|
||||
|
||||
See the `os-release man page
|
||||
<http://www.freedesktop.org/software/systemd/man/os-release.html>`_
|
||||
for a list of possible attributes in the file.
|
||||
|
||||
**Examples:**
|
||||
|
||||
1. The following os-release file content:
|
||||
|
||||
.. sourcecode:: shell
|
||||
|
||||
NAME='Ubuntu'
|
||||
VERSION="14.04.3 LTS, Trusty Tahr"
|
||||
ID=ubuntu
|
||||
ID_LIKE=debian
|
||||
PRETTY_NAME="Ubuntu 14.04.3 LTS"
|
||||
VERSION_ID="14.04"
|
||||
HOME_URL="http://www.ubuntu.com/"
|
||||
SUPPORT_URL="http://help.ubuntu.com/"
|
||||
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
|
||||
|
||||
results in these information items:
|
||||
|
||||
=============================== ==========================================
|
||||
Key Value
|
||||
=============================== ==========================================
|
||||
name "Ubuntu"
|
||||
version "14.04.3 LTS, Trusty Tahr"
|
||||
id "ubuntu"
|
||||
id_like "debian"
|
||||
pretty_name "Ubuntu 14.04.3 LTS"
|
||||
version_id "14.04"
|
||||
home_url "http://www.ubuntu.com/"
|
||||
support_url "http://help.ubuntu.com/"
|
||||
bug_report_url "http://bugs.launchpad.net/ubuntu/"
|
||||
codename "Trusty Tahr"
|
||||
=============================== ==========================================
|
||||
|
||||
2. The following os-release file content:
|
||||
|
||||
.. sourcecode:: shell
|
||||
|
||||
NAME="Red Hat Enterprise Linux Server"
|
||||
VERSION="7.0 (Maipo)"
|
||||
ID="rhel"
|
||||
ID_LIKE="fedora"
|
||||
VERSION_ID="7.0"
|
||||
PRETTY_NAME="Red Hat Enterprise Linux Server 7.0 (Maipo)"
|
||||
ANSI_COLOR="0;31"
|
||||
CPE_NAME="cpe:/o:redhat:enterprise_linux:7.0:GA:server"
|
||||
HOME_URL="https://www.redhat.com/"
|
||||
BUG_REPORT_URL="https://bugzilla.redhat.com/"
|
||||
|
||||
REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 7"
|
||||
REDHAT_BUGZILLA_PRODUCT_VERSION=7.0
|
||||
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
|
||||
REDHAT_SUPPORT_PRODUCT_VERSION=7.0
|
||||
|
||||
results in these information items:
|
||||
|
||||
=============================== ==========================================
|
||||
Key Value
|
||||
=============================== ==========================================
|
||||
name "Red Hat Enterprise Linux Server"
|
||||
version "7.0 (Maipo)"
|
||||
id "rhel"
|
||||
id_like "fedora"
|
||||
version_id "7.0"
|
||||
pretty_name "Red Hat Enterprise Linux Server 7.0 (Maipo)"
|
||||
ansi_color "0;31"
|
||||
cpe_name "cpe:/o:redhat:enterprise_linux:7.0:GA:server"
|
||||
home_url "https://www.redhat.com/"
|
||||
bug_report_url "https://bugzilla.redhat.com/"
|
||||
redhat_bugzilla_product "Red Hat Enterprise Linux 7"
|
||||
redhat_bugzilla_product_version "7.0"
|
||||
redhat_support_product "Red Hat Enterprise Linux"
|
||||
redhat_support_product_version "7.0"
|
||||
codename "Maipo"
|
||||
=============================== ==========================================
|
||||
|
||||
Lsb_release command output
|
||||
==========================
|
||||
|
||||
The lsb_release command is expected to be in the PATH, and is invoked as
|
||||
follows:
|
||||
|
||||
.. sourcecode:: shell
|
||||
|
||||
lsb_release -a
|
||||
|
||||
The command output is expected to be encoded in UTF-8.
|
||||
|
||||
Only lines in the command output with the following format will be used:
|
||||
|
||||
``<attr-name>: <attr-value>``
|
||||
|
||||
Where:
|
||||
|
||||
* ``<attr-name>`` is the name of the attribute, and
|
||||
* ``<attr-value>`` is the attribute value.
|
||||
|
||||
The attribute names are stripped from surrounding blanks, any remaining blanks
|
||||
are translated to underscores, they are translated to lower case, and then
|
||||
become the keys of the information items from the lsb_release command output
|
||||
data source.
|
||||
|
||||
The attribute values are stripped from surrounding blanks, and then become the
|
||||
values of the information items from the lsb_release command output data
|
||||
source.
|
||||
|
||||
See the `lsb_release man page
|
||||
<http://refspecs.linuxfoundation.org/LSB_5.0.0/LSB-Core-generic/
|
||||
LSB-Core-generic/lsbrelease.html>`_
|
||||
for a description of standard attributes returned by the lsb_release command.
|
||||
|
||||
**Examples:**
|
||||
|
||||
1. The following lsb_release command output:
|
||||
|
||||
.. sourcecode:: text
|
||||
|
||||
No LSB modules are available.
|
||||
Distributor ID: Ubuntu
|
||||
Description: Ubuntu 14.04.3 LTS
|
||||
Release: 14.04
|
||||
Codename: trusty
|
||||
|
||||
results in these information items:
|
||||
|
||||
=============================== ==========================================
|
||||
Key Value
|
||||
=============================== ==========================================
|
||||
distributor_id "Ubuntu"
|
||||
description "Ubuntu 14.04.3 LTS"
|
||||
release "14.04"
|
||||
codename "trusty"
|
||||
=============================== ==========================================
|
||||
|
||||
2. The following lsb_release command output:
|
||||
|
||||
.. sourcecode:: text
|
||||
|
||||
LSB Version: n/a
|
||||
Distributor ID: SUSE LINUX
|
||||
Description: SUSE Linux Enterprise Server 12 SP1
|
||||
Release: 12.1
|
||||
Codename: n/a
|
||||
|
||||
results in these information items:
|
||||
|
||||
=============================== ==========================================
|
||||
Key Value
|
||||
=============================== ==========================================
|
||||
lsb_version "n/a"
|
||||
distributor_id "SUSE LINUX"
|
||||
description "SUSE Linux Enterprise Server 12 SP1"
|
||||
release "12.1"
|
||||
codename "n/a"
|
||||
=============================== ==========================================
|
||||
|
||||
Distro release file
|
||||
===================
|
||||
|
||||
Unless specified with a particular path name when using the
|
||||
:class:`distro.LinuxDistribution` class, the distro release file is found by using
|
||||
the first match in the alphabetically sorted list of the files matching the
|
||||
following path name patterns:
|
||||
|
||||
* ``/etc/*-release``
|
||||
* ``/etc/*_release``
|
||||
* ``/etc/*-version``
|
||||
* ``/etc/*_version``
|
||||
|
||||
where the following special path names are excluded:
|
||||
|
||||
* ``/etc/debian_version``
|
||||
* ``/etc/system-release``
|
||||
* ``/etc/os-release``
|
||||
|
||||
and where the first line within the file has the expected format.
|
||||
|
||||
The algorithm to sort the files alphabetically is far from perfect, but the
|
||||
distro release file has the least priority as a data source, and it is expected
|
||||
that distributions provide one of the other data sources.
|
||||
|
||||
The distro release file is expected to be encoded in UTF-8.
|
||||
|
||||
Only its first line is used, and it is expected to have the following format:
|
||||
|
||||
``<name> [[[release] <version_id>] (<codename>)]``
|
||||
|
||||
Where:
|
||||
|
||||
* square brackets indicate optionality,
|
||||
* ``<name>`` is the distro name,
|
||||
* ``<version_id>`` is the distro version, and
|
||||
* ``<codename>`` is the distro codename.
|
||||
|
||||
The following information items can be found in a distro release file
|
||||
(shown with their keys and data types):
|
||||
|
||||
* ``id`` (string): Distro ID, taken from the first part of the file name
|
||||
before the hyphen (``-``) or underscore (``_``).
|
||||
|
||||
Note that the distro ID is not normalized or translated to lower case at this
|
||||
point; this happens only for the result of the :func:`distro.id` function.
|
||||
|
||||
* ``name`` (string): Distro name, as found in the first line of the file.
|
||||
|
||||
* ``version_id`` (string): Distro version, as found in the first line of the
|
||||
file. If not found, this information item will not exist.
|
||||
|
||||
* ``codename`` (string): Distro codename, as found in the first line of the
|
||||
file. If not found, this information item will not exist.
|
||||
|
||||
Note that the string in the codename field is not always really a
|
||||
codename. For example, openSUSE returns "x86_64".
|
||||
|
||||
**Examples:**
|
||||
|
||||
1. The following distro release file ``/etc/centos-release``:
|
||||
|
||||
.. sourcecode:: text
|
||||
|
||||
CentOS Linux release 7.1.1503 (Core)
|
||||
|
||||
results in these information items:
|
||||
|
||||
=============================== ==========================================
|
||||
Key Value
|
||||
=============================== ==========================================
|
||||
id "centos"
|
||||
name "CentOS Linux"
|
||||
version_id "7.1.1503"
|
||||
codename "Core"
|
||||
=============================== ==========================================
|
||||
|
||||
2. The following distro release file ``/etc/oracle-release``:
|
||||
|
||||
.. sourcecode:: text
|
||||
|
||||
Oracle Linux Server release 7.1
|
||||
|
||||
results in these information items:
|
||||
|
||||
=============================== ==========================================
|
||||
Key Value
|
||||
=============================== ==========================================
|
||||
id "oracle"
|
||||
name "Oracle Linux Server"
|
||||
version_id "7.1"
|
||||
=============================== ==========================================
|
||||
|
||||
3. The following distro release file ``/etc/SuSE-release``:
|
||||
|
||||
.. sourcecode:: text
|
||||
|
||||
openSUSE 42.1 (x86_64)
|
||||
|
||||
results in these information items:
|
||||
|
||||
=============================== ==========================================
|
||||
Key Value
|
||||
=============================== ==========================================
|
||||
id "SuSE"
|
||||
name "openSUSE"
|
||||
version_id "42.1"
|
||||
codename "x86_64"
|
||||
=============================== ==========================================
|
||||
|
|
@ -0,0 +1,45 @@
|
|||
#!/usr/bin/env python
|
||||
# Copyright 2015,2016 Nir Cohen
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from __future__ import print_function
|
||||
|
||||
from pprint import pformat
|
||||
|
||||
import distro
|
||||
|
||||
|
||||
def pprint(obj):
|
||||
for line in pformat(obj).split('\n'):
|
||||
print(4 * ' ' + line)
|
||||
|
||||
|
||||
print('os_release_info:')
|
||||
pprint(distro.os_release_info())
|
||||
print('lsb_release_info:')
|
||||
pprint(distro.lsb_release_info())
|
||||
print('distro_release_info:')
|
||||
pprint(distro.distro_release_info())
|
||||
print('id: {0}'.format(distro.id()))
|
||||
print('name: {0}'.format(distro.name()))
|
||||
print('name_pretty: {0}'.format(distro.name(True)))
|
||||
print('version: {0}'.format(distro.version()))
|
||||
print('version_pretty: {0}'.format(distro.version(True)))
|
||||
print('like: {0}'.format(distro.like()))
|
||||
print('codename: {0}'.format(distro.codename()))
|
||||
print('linux_distribution_full: {0}'.format(distro.linux_distribution()))
|
||||
print('linux_distribution: {0}'.format(distro.linux_distribution(False)))
|
||||
print('major_version: {0}'.format(distro.major_version()))
|
||||
print('minor_version: {0}'.format(distro.minor_version()))
|
||||
print('build_number: {0}'.format(distro.build_number()))
|
|
@ -0,0 +1,10 @@
|
|||
[bdist_wheel]
|
||||
universal = 1
|
||||
|
||||
[metadata]
|
||||
license_file = LICENSE
|
||||
|
||||
[egg_info]
|
||||
tag_build =
|
||||
tag_date = 0
|
||||
|
|
@ -0,0 +1,67 @@
|
|||
# Copyright 2015,2016 Nir Cohen
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
import os
|
||||
import codecs
|
||||
from setuptools import setup
|
||||
|
||||
# The following version is parsed by other parts of this package.
|
||||
# Don't change the format of the line, or the variable name.
|
||||
package_version = "1.4.0"
|
||||
|
||||
here = os.path.abspath(os.path.dirname(__file__))
|
||||
|
||||
|
||||
def read(*parts):
|
||||
# intentionally *not* adding an encoding option to open
|
||||
return codecs.open(os.path.join(here, *parts), 'r').read()
|
||||
|
||||
|
||||
setup(
|
||||
name='distro',
|
||||
version=package_version,
|
||||
url='https://github.com/nir0s/distro',
|
||||
author='Nir Cohen',
|
||||
author_email='nir36g@gmail.com',
|
||||
license='Apache License, Version 2.0',
|
||||
platforms='All',
|
||||
description='Distro - an OS platform information API',
|
||||
long_description=read('README.md'),
|
||||
long_description_content_type='text/markdown',
|
||||
py_modules=['distro'],
|
||||
entry_points={
|
||||
'console_scripts': [
|
||||
'distro = distro:main',
|
||||
]
|
||||
},
|
||||
classifiers=[
|
||||
'Development Status :: 5 - Production/Stable',
|
||||
'Intended Audience :: Developers',
|
||||
'Intended Audience :: System Administrators',
|
||||
'License :: OSI Approved :: Apache Software License',
|
||||
'Operating System :: POSIX :: Linux',
|
||||
'Operating System :: POSIX :: BSD',
|
||||
'Operating System :: POSIX :: BSD :: FreeBSD',
|
||||
'Operating System :: POSIX :: BSD :: NetBSD',
|
||||
'Operating System :: POSIX :: BSD :: OpenBSD',
|
||||
'Programming Language :: Python :: 2',
|
||||
'Programming Language :: Python :: 2.7',
|
||||
'Programming Language :: Python :: 3',
|
||||
'Programming Language :: Python :: 3.4',
|
||||
'Programming Language :: Python :: 3.5',
|
||||
'Programming Language :: Python :: 3.6',
|
||||
'Topic :: Software Development :: Libraries :: Python Modules',
|
||||
'Topic :: System :: Operating System',
|
||||
]
|
||||
)
|
|
@ -0,0 +1,43 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# lsb_release command for testing the ld module.
|
||||
# Only the -a option is supported.
|
||||
#
|
||||
# This version of the lsb_release command reads an lsb-release file.
|
||||
#
|
||||
# The lsb-release file has the usual format, e.g.:
|
||||
# DISTRIB_ID=Ubuntu
|
||||
# DISTRIB_RELEASE=14.04
|
||||
# DISTRIB_CODENAME=trusty
|
||||
# DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS"
|
||||
# Where each line is optional. If a line is missing, the default value
|
||||
# will be the empty string.
|
||||
#
|
||||
|
||||
if [[ "$@" != "-a" ]]; then
|
||||
echo "Usage: lsb_release -a"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
# Because the PATH is set to just this directory, we cannot use 'dirname'
|
||||
# or other external programs, but need to use built-in abilities of bash.
|
||||
LSB_FILE="${0%/*}/../etc/lsb-release"
|
||||
|
||||
if [[ ! -f $LSB_FILE ]]; then
|
||||
echo "Error: LSB release file does not exist: $LSB_FILE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
source $LSB_FILE
|
||||
|
||||
if [[ -n $LSB_VERSION ]]; then
|
||||
echo "LSB Version: $LSB_VERSION"
|
||||
else
|
||||
echo "No LSB modules are available."
|
||||
fi
|
||||
echo "Distributor ID: ${DISTRIB_ID:-}"
|
||||
echo "Description: ${DISTRIB_DESCRIPTION:-}"
|
||||
echo "Release: ${DISTRIB_RELEASE:-}"
|
||||
echo "Codename: ${DISTRIB_CODENAME:-}"
|
||||
|
||||
exit 0
|
|
@ -0,0 +1 @@
|
|||
Amazon Linux AMI release 2014.03
|
|
@ -0,0 +1,9 @@
|
|||
NAME="Amazon Linux AMI"
|
||||
VERSION="2016.03"
|
||||
ID="amzn"
|
||||
ID_LIKE="rhel fedora"
|
||||
VERSION_ID="2016.03"
|
||||
PRETTY_NAME="Amazon Linux AMI 2016.03"
|
||||
ANSI_COLOR="0;33"
|
||||
CPE_NAME="cpe:/o:amazon:linux:2016.03:ga"
|
||||
HOME_URL="http://aws.amazon.com/amazon-linux-ami/"
|
|
@ -0,0 +1 @@
|
|||
Amazon Linux AMI release 2016.03
|
|
@ -0,0 +1,7 @@
|
|||
NAME="Arch Linux"
|
||||
ID=arch
|
||||
PRETTY_NAME="Arch Linux"
|
||||
ANSI_COLOR="0;36"
|
||||
HOME_URL="https://www.archlinux.org/"
|
||||
SUPPORT_URL="https://bbs.archlinux.org/"
|
||||
BUG_REPORT_URL="https://bugs.archlinux.org/"
|
|
@ -0,0 +1,7 @@
|
|||
NAME="Arch Linux"
|
||||
ID=arch
|
||||
PRETTY_NAME="Arch Linux"
|
||||
ANSI_COLOR="0;36"
|
||||
HOME_URL="https://www.archlinux.org/"
|
||||
SUPPORT_URL="https://bbs.archlinux.org/"
|
||||
BUG_REPORT_URL="https://bugs.archlinux.org/"
|
|
@ -0,0 +1 @@
|
|||
CentOS release 5.11 (Final)
|
|
@ -0,0 +1 @@
|
|||
CentOS release 5.11 (Final)
|
|
@ -0,0 +1 @@
|
|||
CentOS release 5.11 (Final)
|
|
@ -0,0 +1 @@
|
|||
CentOS Linux release 7.1.1503 (Core)
|
|
@ -0,0 +1,16 @@
|
|||
NAME="CentOS Linux"
|
||||
VERSION="7 (Core)"
|
||||
ID="centos"
|
||||
ID_LIKE="rhel fedora"
|
||||
VERSION_ID="7"
|
||||
PRETTY_NAME="CentOS Linux 7 (Core)"
|
||||
ANSI_COLOR="0;31"
|
||||
CPE_NAME="cpe:/o:centos:centos:7"
|
||||
HOME_URL="https://www.centos.org/"
|
||||
BUG_REPORT_URL="https://bugs.centos.org/"
|
||||
|
||||
CENTOS_MANTISBT_PROJECT="CentOS-7"
|
||||
CENTOS_MANTISBT_PROJECT_VERSION="7"
|
||||
REDHAT_SUPPORT_PRODUCT="centos"
|
||||
REDHAT_SUPPORT_PRODUCT_VERSION="7"
|
||||
|
|
@ -0,0 +1 @@
|
|||
CentOS Linux release 7.1.1503 (Core)
|
|
@ -0,0 +1 @@
|
|||
CentOS Linux release 7.1.1503 (Core)
|
|
@ -0,0 +1 @@
|
|||
CloudLinux Server release 5.11 (Vladislav Volkov)
|
|
@ -0,0 +1 @@
|
|||
CloudLinux Server release 6.8 (Oleg Makarov)
|
|
@ -0,0 +1,10 @@
|
|||
NAME="CloudLinux"
|
||||
VERSION="7.3 (Yury Malyshev)"
|
||||
ID="cloudlinux"
|
||||
ID_LIKE="rhel fedora centos"
|
||||
VERSION_ID="7.3"
|
||||
PRETTY_NAME="CloudLinux 7.3 (Yury Malyshev)"
|
||||
ANSI_COLOR="0:31"
|
||||
CPE_NAME="cpe:/o:cloudlinux:cloudlinux:7.3:GA:server"
|
||||
HOME_URL="https://www.cloudlinux.com/"
|
||||
BUG_REPORT_URL="https://helpdesk.cloudlinux.com/"
|
|
@ -0,0 +1 @@
|
|||
CloudLinux release 7.3 (Yury Malyshev)
|
|
@ -0,0 +1,5 @@
|
|||
ID=digitalocean
|
||||
VERSION_ID=0.0.4
|
||||
NAME="DigitalOcean"
|
||||
HOME_URL="https://www.digitalocean.com/"
|
||||
BUG_REPORT_URL="https://github.com/coreos/bugs/issues"
|
|
@ -0,0 +1,9 @@
|
|||
NAME=CoreOS
|
||||
ID=coreos
|
||||
VERSION=899.15.0
|
||||
VERSION_ID=899.15.0
|
||||
BUILD_ID=2016-04-05-1035
|
||||
PRETTY_NAME="CoreOS 899.15.0"
|
||||
ANSI_COLOR="1;32"
|
||||
HOME_URL="https://coreos.com/"
|
||||
BUG_REPORT_URL="https://github.com/coreos/bugs/issues"
|
|
@ -0,0 +1,21 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# lsb_release command for testing the ld module.
|
||||
# Only the -a option is supported.
|
||||
#
|
||||
# This version of the lsb_release command works without a corresponding
|
||||
# etc/lsb-release file.
|
||||
#
|
||||
|
||||
if [[ "$@" != "-a" ]]; then
|
||||
echo "Usage: lsb_release -a"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
echo "No LSB modules are available."
|
||||
echo "Distributor ID: Debian"
|
||||
echo "Description: Debian GNU/Linux 8.2 (jessie)"
|
||||
echo "Release: 8.2"
|
||||
echo "Codename: jessie"
|
||||
|
||||
exit 0
|
|
@ -0,0 +1 @@
|
|||
8.2
|
|
@ -0,0 +1,8 @@
|
|||
PRETTY_NAME="Debian GNU/Linux 8 (jessie)"
|
||||
NAME="Debian GNU/Linux"
|
||||
VERSION_ID="8"
|
||||
VERSION="8 (jessie)"
|
||||
ID=debian
|
||||
HOME_URL="http://www.debian.org/"
|
||||
SUPPORT_URL="http://www.debian.org/support/"
|
||||
BUG_REPORT_URL="https://bugs.debian.org/"
|
|
@ -0,0 +1,7 @@
|
|||
NAME="Exherbo"
|
||||
PRETTY_NAME="Exherbo Linux"
|
||||
ID="exherbo"
|
||||
ANSI_COLOR="0;32"
|
||||
HOME_URL="https://www.exherbo.org/"
|
||||
SUPPORT_URL="irc://irc.freenode.net/#exherbo"
|
||||
BUG_REPORT_URL="https://bugs.exherbo.org/"
|
|
@ -0,0 +1 @@
|
|||
Fedora release 19 (Schrödinger’s Cat)
|
|
@ -0,0 +1,3 @@
|
|||
Fedora release 19 (Schrödinger’s Cat)
|
||||
Kernel \r on an \m (\l)
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
Fedora release 19 (Schrödinger’s Cat)
|
||||
Kernel \r on an \m (\l)
|
|
@ -0,0 +1,7 @@
|
|||
NAME=Fedora
|
||||
VERSION="19 (Schrödinger’s Cat)"
|
||||
ID=fedora
|
||||
VERSION_ID=19
|
||||
PRETTY_NAME="Fedora 19 (Schrödinger’s Cat)"
|
||||
ANSI_COLOR="0;34"
|
||||
CPE_NAME="cpe:/o:fedoraproject:fedora:19"
|
|
@ -0,0 +1 @@
|
|||
Fedora release 19 (Schrödinger’s Cat)
|
|
@ -0,0 +1 @@
|
|||
Fedora release 19 (Schrödinger’s Cat)
|
|
@ -0,0 +1 @@
|
|||
cpe:/o:fedoraproject:fedora:19
|
|
@ -0,0 +1 @@
|
|||
Fedora release 23 (Twenty Three)
|
|
@ -0,0 +1,14 @@
|
|||
NAME=Fedora
|
||||
VERSION="23 (Twenty Three)"
|
||||
ID=fedora
|
||||
VERSION_ID=23
|
||||
PRETTY_NAME="Fedora 23 (Twenty Three)"
|
||||
ANSI_COLOR="0;34"
|
||||
CPE_NAME="cpe:/o:fedoraproject:fedora:23"
|
||||
HOME_URL="https://fedoraproject.org/"
|
||||
BUG_REPORT_URL="https://bugzilla.redhat.com/"
|
||||
REDHAT_BUGZILLA_PRODUCT="Fedora"
|
||||
REDHAT_BUGZILLA_PRODUCT_VERSION=23
|
||||
REDHAT_SUPPORT_PRODUCT="Fedora"
|
||||
REDHAT_SUPPORT_PRODUCT_VERSION=23
|
||||
PRIVACY_POLICY_URL=https://fedoraproject.org/wiki/Legal:PrivacyPolicy
|
|
@ -0,0 +1 @@
|
|||
Fedora release 23 (Twenty Three)
|
|
@ -0,0 +1 @@
|
|||
Fedora release 23 (Twenty Three)
|
|
@ -0,0 +1,14 @@
|
|||
NAME=Fedora
|
||||
VERSION="23 (Twenty Three)"
|
||||
ID=fedora
|
||||
VERSION_ID=23
|
||||
PRETTY_NAME="Fedora 23 (Twenty Three)"
|
||||
ANSI_COLOR="0;34"
|
||||
CPE_NAME="cpe:/o:fedoraproject:fedora:23"
|
||||
HOME_URL="https://fedoraproject.org/"
|
||||
BUG_REPORT_URL="https://bugzilla.redhat.com/"
|
||||
REDHAT_BUGZILLA_PRODUCT="Fedora"
|
||||
REDHAT_BUGZILLA_PRODUCT_VERSION=23
|
||||
REDHAT_SUPPORT_PRODUCT="Fedora"
|
||||
REDHAT_SUPPORT_PRODUCT_VERSION=23
|
||||
PRIVACY_POLICY_URL=https://fedoraproject.org/wiki/Legal:PrivacyPolicy
|
|
@ -0,0 +1 @@
|
|||
Fedora release 30 (Thirty)
|
|
@ -0,0 +1,19 @@
|
|||
NAME=Fedora
|
||||
VERSION="30 (Thirty)"
|
||||
ID=fedora
|
||||
VERSION_ID=30
|
||||
VERSION_CODENAME=""
|
||||
PLATFORM_ID="platform:f30"
|
||||
PRETTY_NAME="Fedora 30 (Thirty)"
|
||||
ANSI_COLOR="0;34"
|
||||
LOGO=fedora-logo-icon
|
||||
CPE_NAME="cpe:/o:fedoraproject:fedora:30"
|
||||
HOME_URL="https://fedoraproject.org/"
|
||||
DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/30/system-administrators-guide/"
|
||||
SUPPORT_URL="https://fedoraproject.org/wiki/Communicating_and_getting_help"
|
||||
BUG_REPORT_URL="https://bugzilla.redhat.com/"
|
||||
REDHAT_BUGZILLA_PRODUCT="Fedora"
|
||||
REDHAT_BUGZILLA_PRODUCT_VERSION=30
|
||||
REDHAT_SUPPORT_PRODUCT="Fedora"
|
||||
REDHAT_SUPPORT_PRODUCT_VERSION=30
|
||||
PRIVACY_POLICY_URL="https://fedoraproject.org/wiki/Legal:PrivacyPolicy"
|
|
@ -0,0 +1 @@
|
|||
Fedora release 30 (Thirty)
|
|
@ -0,0 +1 @@
|
|||
Fedora release 30 (Thirty)
|
|
@ -0,0 +1,19 @@
|
|||
NAME=Fedora
|
||||
VERSION="30 (Thirty)"
|
||||
ID=fedora
|
||||
VERSION_ID=30
|
||||
VERSION_CODENAME=""
|
||||
PLATFORM_ID="platform:f30"
|
||||
PRETTY_NAME="Fedora 30 (Thirty)"
|
||||
ANSI_COLOR="0;34"
|
||||
LOGO=fedora-logo-icon
|
||||
CPE_NAME="cpe:/o:fedoraproject:fedora:30"
|
||||
HOME_URL="https://fedoraproject.org/"
|
||||
DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/30/system-administrators-guide/"
|
||||
SUPPORT_URL="https://fedoraproject.org/wiki/Communicating_and_getting_help"
|
||||
BUG_REPORT_URL="https://bugzilla.redhat.com/"
|
||||
REDHAT_BUGZILLA_PRODUCT="Fedora"
|
||||
REDHAT_BUGZILLA_PRODUCT_VERSION=30
|
||||
REDHAT_SUPPORT_PRODUCT="Fedora"
|
||||
REDHAT_SUPPORT_PRODUCT_VERSION=30
|
||||
PRIVACY_POLICY_URL="https://fedoraproject.org/wiki/Legal:PrivacyPolicy"
|
|
@ -0,0 +1,4 @@
|
|||
#!/bin/sh
|
||||
|
||||
echo "FreeBSD 11.1-RELEASE"
|
||||
|
|
@ -0,0 +1 @@
|
|||
Gentoo Base System release 2.2
|
|
@ -0,0 +1,7 @@
|
|||
NAME=Gentoo
|
||||
ID=gentoo
|
||||
PRETTY_NAME="Gentoo/Linux"
|
||||
ANSI_COLOR="1;32"
|
||||
HOME_URL="http://www.gentoo.org/"
|
||||
SUPPORT_URL="http://www.gentoo.org/main/en/support.xml"
|
||||
BUG_REPORT_URL="https://bugs.gentoo.org/"
|
|
@ -0,0 +1,10 @@
|
|||
PRETTY_NAME="Kali GNU/Linux Rolling"
|
||||
NAME="Kali GNU/Linux"
|
||||
ID=kali
|
||||
VERSION="2017.1"
|
||||
VERSION_ID="2017.1"
|
||||
ID_LIKE=debian
|
||||
ANSI_COLOR="1;31"
|
||||
HOME_URL="http://www.kali.org/"
|
||||
SUPPORT_URL="http://forums.kali.org/"
|
||||
BUG_REPORT_URL="http://bugs.kali.org/"
|
|
@ -0,0 +1,21 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# lsb_release command for testing the ld module.
|
||||
# Only the -a option is supported.
|
||||
#
|
||||
# This version of the lsb_release command works without a corresponding
|
||||
# etc/lsb-release file.
|
||||
#
|
||||
|
||||
if [[ "$@" != "-a" ]]; then
|
||||
echo "Usage: lsb_release -a"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
echo "LSB Version: :core-4.1-noarch:core-4.1-s390x"
|
||||
echo "Distributor ID: kvmibm"
|
||||
echo "Description: KVM for IBM z Systems release 1.1.1 (Z) "
|
||||
echo "Release: 1.1.1"
|
||||
echo "Codename: Z"
|
||||
|
||||
exit 0
|
|
@ -0,0 +1 @@
|
|||
KVM for IBM z Systems release 1.1.1 (Z)
|
|
@ -0,0 +1,9 @@
|
|||
NAME="KVM for IBM z Systems"
|
||||
VERSION="1.1.1 (Z)"
|
||||
ID="kvmibm"
|
||||
ID_LIKE="rhel fedora"
|
||||
VERSION_ID="1.1.1"
|
||||
PRETTY_NAME="KVM for IBM z Systems 1.1.1 (Z)"
|
||||
ANSI_COLOR="0;34"
|
||||
CPE_NAME="cpe:/o:ibm:kvmibm:1.1.1"
|
||||
BUILD_ID="20160316"
|
|
@ -0,0 +1 @@
|
|||
KVM for IBM z Systems release 1.1.1 (Z)
|
|
@ -0,0 +1 @@
|
|||
KVM for IBM z Systems release 1.1.1 (Z)
|
|
@ -0,0 +1,43 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# lsb_release command for testing the ld module.
|
||||
# Only the -a option is supported.
|
||||
#
|
||||
# This version of the lsb_release command reads an lsb-release file.
|
||||
#
|
||||
# The lsb-release file has the usual format, e.g.:
|
||||
# DISTRIB_ID=Ubuntu
|
||||
# DISTRIB_RELEASE=14.04
|
||||
# DISTRIB_CODENAME=trusty
|
||||
# DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS"
|
||||
# Where each line is optional. If a line is missing, the default value
|
||||
# will be the empty string.
|
||||
#
|
||||
|
||||
if [[ "$@" != "-a" ]]; then
|
||||
echo "Usage: lsb_release -a"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
# Because the PATH is set to just this directory, we cannot use 'dirname'
|
||||
# or other external programs, but need to use built-in abilities of bash.
|
||||
LSB_FILE="${0%/*}/../etc/lsb-release"
|
||||
|
||||
if [[ ! -f $LSB_FILE ]]; then
|
||||
echo "Error: LSB release file does not exist: $LSB_FILE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
source $LSB_FILE
|
||||
|
||||
if [[ -n $LSB_VERSION ]]; then
|
||||
echo "LSB Version: $LSB_VERSION"
|
||||
else
|
||||
echo "No LSB modules are available."
|
||||
fi
|
||||
echo "Distributor ID: ${DISTRIB_ID:-}"
|
||||
echo "Description: ${DISTRIB_DESCRIPTION:-}"
|
||||
echo "Release: ${DISTRIB_RELEASE:-}"
|
||||
echo "Codename: ${DISTRIB_CODENAME:-}"
|
||||
|
||||
exit 0
|
|
@ -0,0 +1 @@
|
|||
jessie/sid
|
|
@ -0,0 +1,4 @@
|
|||
DISTRIB_ID=LinuxMint
|
||||
DISTRIB_RELEASE=17.3
|
||||
DISTRIB_CODENAME=rosa
|
||||
DISTRIB_DESCRIPTION="Linux Mint 17.3 Rosa"
|
|
@ -0,0 +1,9 @@
|
|||
NAME="Ubuntu"
|
||||
VERSION="14.04.3 LTS, Trusty Tahr"
|
||||
ID=ubuntu
|
||||
ID_LIKE=debian
|
||||
PRETTY_NAME="Ubuntu 14.04.3 LTS"
|
||||
VERSION_ID="14.04"
|
||||
HOME_URL="http://www.ubuntu.com/"
|
||||
SUPPORT_URL="http://help.ubuntu.com/"
|
||||
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
|
|
@ -0,0 +1,4 @@
|
|||
DISTRIB_ID=Ubuntu
|
||||
DISTRIB_RELEASE=14.04
|
||||
DISTRIB_CODENAME=trusty
|
||||
DISTRIB_DESCRIPTION="Ubuntu 14.04 LTS"
|
|
@ -0,0 +1,39 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# lsb_release command for testing the ld module.
|
||||
# Only the -a option is supported.
|
||||
#
|
||||
# This version of the lsb_release command reads an lsb-release file.
|
||||
#
|
||||
# The lsb-release file has the usual format, e.g.:
|
||||
# DISTRIB_ID=Ubuntu
|
||||
# DISTRIB_RELEASE=14.04
|
||||
# DISTRIB_CODENAME=trusty
|
||||
# DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS"
|
||||
# Where each line is optional. If a line is missing, the default value
|
||||
# will be the empty string.
|
||||
#
|
||||
|
||||
if [[ "$@" != "-a" ]]; then
|
||||
echo "Usage: lsb_release -a"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
# Because the PATH is set to just this directory, we cannot use 'dirname'
|
||||
# or other external programs, but need to use built-in abilities of bash.
|
||||
LSB_FILE="${0%/*}/../etc/lsb-release"
|
||||
|
||||
if [[ ! -f $LSB_FILE ]]; then
|
||||
echo "Error: LSB release file does not exist: $LSB_FILE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
source $LSB_FILE
|
||||
|
||||
echo "LSB Version: ${LSB_VERSION:-*}"
|
||||
echo "Distributor ID: ${DISTRIB_ID:-}"
|
||||
echo "Description: ${DISTRIB_DESCRIPTION:-}"
|
||||
echo "Release: ${DISTRIB_RELEASE:-}"
|
||||
echo "Codename: ${DISTRIB_CODENAME:-}"
|
||||
|
||||
exit 0
|
|
@ -0,0 +1,5 @@
|
|||
LSB_VERSION=
|
||||
DISTRIB_ID="Mageia"
|
||||
DISTRIB_RELEASE=5
|
||||
DISTRIB_CODENAME=thornicroft
|
||||
DISTRIB_DESCRIPTION="Mageia 5"
|
|
@ -0,0 +1 @@
|
|||
Mageia release 5 (Official) for x86_64
|
|
@ -0,0 +1 @@
|
|||
Mageia release 5 (Official) for x86_64
|
|
@ -0,0 +1 @@
|
|||
Mageia release 5 (Official) for x86_64
|
|
@ -0,0 +1 @@
|
|||
Mageia release 5 (Official) for x86_64
|
|
@ -0,0 +1,10 @@
|
|||
NAME="Mageia"
|
||||
VERSION="5"
|
||||
ID=mageia
|
||||
VERSION_ID=5
|
||||
ID_LIKE="mandriva fedora"
|
||||
PRETTY_NAME="Mageia 5"
|
||||
ANSI_COLOR="1;36"
|
||||
HOME_URL="http://www.mageia.org/"
|
||||
SUPPORT_URL="http://www.mageia.org/support/"
|
||||
BUG_REPORT_URL="https://bugs.mageia.org/"
|
|
@ -0,0 +1 @@
|
|||
Mageia release 5 (Official) for x86_64
|
|
@ -0,0 +1 @@
|
|||
Mageia release 5 (Official) for x86_64
|
|
@ -0,0 +1 @@
|
|||
5 2 official
|
|
@ -0,0 +1,10 @@
|
|||
NAME="Mageia"
|
||||
VERSION="5"
|
||||
ID=mageia
|
||||
VERSION_ID=5
|
||||
ID_LIKE="mandriva fedora"
|
||||
PRETTY_NAME="Mageia 5"
|
||||
ANSI_COLOR="1;36"
|
||||
HOME_URL="http://www.mageia.org/"
|
||||
SUPPORT_URL="http://www.mageia.org/support/"
|
||||
BUG_REPORT_URL="https://bugs.mageia.org/"
|
|
@ -0,0 +1,39 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# lsb_release command for testing the ld module.
|
||||
# Only the -a option is supported.
|
||||
#
|
||||
# This version of the lsb_release command reads an lsb-release file.
|
||||
#
|
||||
# The lsb-release file has the usual format, e.g.:
|
||||
# DISTRIB_ID=Ubuntu
|
||||
# DISTRIB_RELEASE=14.04
|
||||
# DISTRIB_CODENAME=trusty
|
||||
# DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS"
|
||||
# Where each line is optional. If a line is missing, the default value
|
||||
# will be the empty string.
|
||||
#
|
||||
|
||||
if [[ "$@" != "-a" ]]; then
|
||||
echo "Usage: lsb_release -a"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
# Because the PATH is set to just this directory, we cannot use 'dirname'
|
||||
# or other external programs, but need to use built-in abilities of bash.
|
||||
LSB_FILE="${0%/*}/../etc/lsb-release"
|
||||
|
||||
if [[ ! -f $LSB_FILE ]]; then
|
||||
echo "Error: LSB release file does not exist: $LSB_FILE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
source $LSB_FILE
|
||||
|
||||
echo "LSB Version: ${LSB_VERSION:-*}"
|
||||
echo "Distributor ID: ${DISTRIB_ID:-}"
|
||||
echo "Description: ${DISTRIB_DESCRIPTION:-}"
|
||||
echo "Release: ${DISTRIB_RELEASE:-}"
|
||||
echo "Codename: ${DISTRIB_CODENAME:-}"
|
||||
|
||||
exit 0
|
|
@ -0,0 +1,5 @@
|
|||
LSB_VERSION=
|
||||
DISTRIB_ID=MandrivaLinux
|
||||
DISTRIB_RELEASE=2011.0
|
||||
DISTRIB_CODENAME=turtle
|
||||
DISTRIB_DESCRIPTION="Mandriva Linux 2011.0"
|
|
@ -0,0 +1 @@
|
|||
Mandriva Linux release 2011.0 (Official) for x86_64
|
|
@ -0,0 +1 @@
|
|||
Mandriva Linux release 2011.0 (Official) for x86_64
|
|
@ -0,0 +1 @@
|
|||
Mandriva Linux release 2011.0 (Official) for x86_64
|
|
@ -0,0 +1 @@
|
|||
Mandriva Linux release 2011.0 (Official) for x86_64
|
|
@ -0,0 +1 @@
|
|||
Mandriva Linux release 2011.0 (Official) for x86_64
|
|
@ -0,0 +1 @@
|
|||
2011.0.0 2 cooker
|
|
@ -0,0 +1,43 @@
|
|||
#!/bin/bash
|
||||
#
|
||||
# lsb_release command for testing the ld module.
|
||||
# Only the -a option is supported.
|
||||
#
|
||||
# This version of the lsb_release command reads an lsb-release file.
|
||||
#
|
||||
# The lsb-release file has the usual format, e.g.:
|
||||
# DISTRIB_ID=Ubuntu
|
||||
# DISTRIB_RELEASE=14.04
|
||||
# DISTRIB_CODENAME=trusty
|
||||
# DISTRIB_DESCRIPTION="Ubuntu 14.04.3 LTS"
|
||||
# Where each line is optional. If a line is missing, the default value
|
||||
# will be the empty string.
|
||||
#
|
||||
|
||||
if [[ "$@" != "-a" ]]; then
|
||||
echo "Usage: lsb_release -a"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
# Because the PATH is set to just this directory, we cannot use 'dirname'
|
||||
# or other external programs, but need to use built-in abilities of bash.
|
||||
LSB_FILE="${0%/*}/../etc/lsb-release"
|
||||
|
||||
if [[ ! -f $LSB_FILE ]]; then
|
||||
echo "Error: LSB release file does not exist: $LSB_FILE"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
source $LSB_FILE
|
||||
|
||||
if [[ -n $LSB_VERSION ]]; then
|
||||
echo "LSB Version: $LSB_VERSION"
|
||||
else
|
||||
echo "No LSB modules are available."
|
||||
fi
|
||||
echo "Distributor ID: ${DISTRIB_ID:-}"
|
||||
echo "Description: ${DISTRIB_DESCRIPTION:-}"
|
||||
echo "Release: ${DISTRIB_RELEASE:-}"
|
||||
echo "Codename: ${DISTRIB_CODENAME:-}"
|
||||
|
||||
exit 0
|
|
@ -0,0 +1,4 @@
|
|||
DISTRIB_ID=ManjaroLinux
|
||||
DISTRIB_RELEASE=15.12
|
||||
DISTRIB_CODENAME=Capella
|
||||
DISTRIB_DESCRIPTION="Manjaro Linux"
|
|
@ -0,0 +1 @@
|
|||
Manjaro Linux
|
|
@ -0,0 +1,7 @@
|
|||
NAME="Manjaro Linux"
|
||||
ID=manjaro
|
||||
PRETTY_NAME="Manjaro Linux"
|
||||
ANSI_COLOR="1;32"
|
||||
HOME_URL="http://www.manjaro.org/"
|
||||
SUPPORT_URL="http://www.manjaro.org/"
|
||||
BUG_REPORT_URL="http://bugs.manjaro.org/"
|
|
@ -0,0 +1,4 @@
|
|||
#!/bin/sh
|
||||
|
||||
echo "NetBSD 7.1.1"
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue