Switch to v2 installer
authorPhil Howard <phil@gadgetoid.com>
Tue, 2 Jul 2019 12:07:36 +0000 (13:07 +0100)
committerPhil Howard <phil@gadgetoid.com>
Tue, 2 Jul 2019 12:07:36 +0000 (13:07 +0100)
Makefile
install.sh
library/README.rst
library/setup.cfg
library/setup.py
uninstall.sh

index f17d1282ff8a76bdf290741262048603f9727f17..d2bba49882d41fc69cc3ab4df7c6cb87031e972e 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,8 +1,10 @@
-LIBRARY_VERSION=`cat library/setup.py | grep version | awk -F"'" '{print $$2}'`
-LIBRARY_NAME=`cat library/setup.py | grep name | awk -F"'" '{print $$2}'`
+LIBRARY_VERSION=$(shell grep version library/setup.cfg | awk -F" = " '{print $$2}')
+LIBRARY_NAME=$(shell grep name library/setup.cfg | awk -F" = " '{print $$2}')
 
 .PHONY: usage install uninstall
 usage:
 
 .PHONY: usage install uninstall
 usage:
+       @echo "Library: ${LIBRARY_NAME}"
+       @echo "Version: ${LIBRARY_VERSION}\n"
        @echo "Usage: make <target>, where target is one of:\n"
        @echo "install:       install the library locally from source"
        @echo "uninstall:     uninstall the local library"
        @echo "Usage: make <target>, where target is one of:\n"
        @echo "install:       install the library locally from source"
        @echo "uninstall:     uninstall the local library"
@@ -13,6 +15,7 @@ usage:
        @echo "python-clean:  clean python build and dist directories"
        @echo "python-dist:   build all python distribution files"
        @echo "python-testdeploy: build all and deploy to test PyPi"
        @echo "python-clean:  clean python build and dist directories"
        @echo "python-dist:   build all python distribution files"
        @echo "python-testdeploy: build all and deploy to test PyPi"
+       @echo "tag:           tag the repository with the current version"
 
 install:
        ./install.sh
 
 install:
        ./install.sh
@@ -22,20 +25,25 @@ uninstall:
 
 check:
        @echo "Checking for trailing whitespace"
 
 check:
        @echo "Checking for trailing whitespace"
-       @! grep -IUrn --color "[[:blank:]]$$" --exclude-dir=.tox --exclude-dir=.git --exclude=PKG-INFO
+       @! grep -IUrn --color "[[:blank:]]$$" --exclude-dir=sphinx --exclude-dir=.tox --exclude-dir=.git --exclude=PKG-INFO
        @echo "Checking for DOS line-endings"
        @echo "Checking for DOS line-endings"
-       @! grep -IUrn --color "\r" --exclude-dir=fonts --exclude-dir=.tox --exclude-dir=.git --exclude=Makefile
+       @! grep -IUrn --color "\r" --exclude-dir=sphinx --exclude-dir=.tox --exclude-dir=.git --exclude=Makefile
        @echo "Checking library/CHANGELOG.txt"
        @cat library/CHANGELOG.txt | grep ^${LIBRARY_VERSION}
        @echo "Checking library/${LIBRARY_NAME}/__init__.py"
        @cat library/${LIBRARY_NAME}/__init__.py | grep "^__version__ = '${LIBRARY_VERSION}'"
 
        @echo "Checking library/CHANGELOG.txt"
        @cat library/CHANGELOG.txt | grep ^${LIBRARY_VERSION}
        @echo "Checking library/${LIBRARY_NAME}/__init__.py"
        @cat library/${LIBRARY_NAME}/__init__.py | grep "^__version__ = '${LIBRARY_VERSION}'"
 
+tag:
+       git tag -a "v${LIBRARY_VERSION}" -m "Version ${LIBRARY_VERSION}"
+
 python-readme: library/README.rst
 
 python-license: library/LICENSE.txt
 
 python-readme: library/README.rst
 
 python-license: library/LICENSE.txt
 
-library/README.rst: README.md
+library/README.rst: README.md library/CHANGELOG.txt
        pandoc --from=markdown --to=rst -o library/README.rst README.md
        pandoc --from=markdown --to=rst -o library/README.rst README.md
+       echo "" >> library/README.rst
+       cat library/CHANGELOG.txt >> library/README.rst
 
 library/LICENSE.txt: LICENSE
        cp LICENSE library/LICENSE.txt
 
 library/LICENSE.txt: LICENSE
        cp LICENSE library/LICENSE.txt
index 1136de8635d553ae7c586aedcb2ba1ac25845a1c..9eda1f03e5181715e8b25477cf10b3dfe8d99474 100755 (executable)
@@ -1,9 +1,67 @@
 #!/bin/bash
 
 #!/bin/bash
 
-LIBRARY_VERSION=`cat library/setup.py | grep version | awk -F"'" '{print $2}'`
-LIBRARY_NAME=`cat library/setup.py | grep name | awk -F"'" '{print $2}'`
 CONFIG=/boot/config.txt
 DATESTAMP=`date "+%Y-%M-%d-%H-%M-%S"`
 CONFIG=/boot/config.txt
 DATESTAMP=`date "+%Y-%M-%d-%H-%M-%S"`
+CONFIG_BACKUP=false
+
+CONFIG_VARS=`python - <<EOF
+from configparser import ConfigParser
+c = ConfigParser()
+c.read('library/setup.cfg')
+p = dict(c['pimoroni'])
+# Convert multi-line config entries into bash arrays
+for k in p.keys():
+    fmt = '"{}"'
+    if '\n' in p[k]:
+        p[k] = "'\n\t'".join(p[k].split('\n')[1:])
+        fmt = "('{}')"
+    p[k] = fmt.format(p[k])
+print("""
+LIBRARY_NAME="{name}"
+LIBRARY_VERSION="{version}"
+""".format(**c['metadata']))
+print("""
+PY3_DEPS={py3deps}
+PY2_DEPS={py2deps}
+SETUP_CMDS={commands}
+CONFIG_TXT={configtxt}
+""".format(**p))
+EOF`
+
+if [ $? -ne 0 ]; then
+       printf "Error parsing configuration...\n"
+       exit 1
+fi
+
+function do_config_backup {
+       if [ ! $CONFIG_BACKUP == true ]; then
+               CONFIG_BACKUP=true
+               FILENAME="config.preinstall-$LIBRARY_NAME-$DATESTAMP.txt"
+               printf "Backing up $CONFIG to $FILENAME\n"
+               cp $CONFIG $FILENAME
+       fi
+}
+
+function apt_pkg_install {
+       PACKAGES=()
+       PACKAGES_IN=("$@")
+       for ((i = 0; i < ${#PACKAGES_IN[@]}; i++)); do
+               PACKAGE="${PACKAGES_IN[$i]}"
+               printf "Checking for $PACKAGE\n"
+               dpkg -L $PACKAGE > /dev/null 2>&1
+               if [ "$?" == "1" ]; then
+                       PACKAGES+=("$PACKAGE")
+               fi
+       done
+       PACKAGES="${PACKAGES[@]}"
+       if ! [ "$PACKAGES" == "" ]; then
+               echo "Installing missing packages: $PACKAGES"
+               sudo apt update
+               sudo apt install -y $PACKAGES
+       fi
+}
+
+eval $CONFIG_VARS
 
 printf "$LIBRARY_NAME $LIBRARY_VERSION Python Library: Installer\n\n"
 
 
 printf "$LIBRARY_NAME $LIBRARY_VERSION Python Library: Installer\n\n"
 
@@ -15,31 +73,36 @@ fi
 cd library
 
 printf "Installing for Python 2..\n"
 cd library
 
 printf "Installing for Python 2..\n"
+apt_pkg_install "${PY2_DEPS[@]}"
 python setup.py install
 
 if [ -f "/usr/bin/python3" ]; then
        printf "Installing for Python 3..\n"
 python setup.py install
 
 if [ -f "/usr/bin/python3" ]; then
        printf "Installing for Python 3..\n"
+       apt_pkg_install "${PY3_DEPS[@]}"
        python3 setup.py install
 fi
 
 cd ..
 
        python3 setup.py install
 fi
 
 cd ..
 
-printf "Backing up $CONFIG\n"
-cp $CONFIG "config.preinstall-$DATESTAMP.txt"
-
-printf "Setting up i2c and SPI..\n"
-raspi-config nonint do_spi 0
-raspi-config nonint do_i2c 0
-
-printf "Setting up serial for PMS5003..\n"
-# Disable serial terminal over /dev/ttyAMA0
-raspi-config nonint do_serial 1
-# Enable serial port
-raspi-config nonint set_config_var enable_uart 1 $CONFIG
-# Switch serial port to full UART for stability (may adversely affect bluetooth)
-sed -i 's/^#dtoverlay=pi3-miniuart-bt/dtoverlay=pi3-miniuart-bt/' $CONFIG
-if ! grep -q -E "^dtoverlay=pi3-miniuart-bt" $CONFIG; then
-       printf "dtoverlay=pi3-miniuart-bt\n" >> $CONFIG
-fi
+for ((i = 0; i < ${#SETUP_CMDS[@]}; i++)); do
+       CMD="${SETUP_CMDS[$i]}"
+       # Attempt to catch anything that touches /boot/config.txt and trigger a backup
+       if [[ "$CMD" == *"raspi-config"* ]] || [[ "$CMD" == *"$CONFIG"* ]] || [[ "$CMD" == *"\$CONFIG"* ]]; then
+               do_config_backup
+       fi
+       eval $CMD
+done
+
+for ((i = 0; i < ${#CONFIG_TXT[@]}; i++)); do
+       CONFIG_LINE="${CONFIG_TXT[$i]}"
+       if ! [ "$CONFIG_LINE" == "" ]; then
+               do_config_backup
+               printf "Adding $CONFIG_LINE to $CONFIG\n"
+               sed -i "s/^#$CONFIG_LINE/$CONFIG_LINE/" $CONFIG
+               if ! grep -q "^$CONFIG_LINE" $CONFIG; then
+                       printf "$CONFIG_LINE\n" >> $CONFIG
+               fi
+       fi
+done
 
 printf "Done!\n"
 
 printf "Done!\n"
index 91f88feaf5418417ee54af53b152c6edad757c73..f90e0720eda2696288304feed67d9bf9d9ad0bec 100644 (file)
@@ -1,7 +1,11 @@
 Enviro+ pHAT
 ============
 
 Enviro+ pHAT
 ============
 
-|Build Status| |Coverage Status| |PyPi Package| |Python Versions|
+`Build Status <https://travis-ci.com/pimoroni/enviroplus-python>`__
+`Coverage
+Status <https://coveralls.io/github/pimoroni/enviroplus-python?branch=master>`__
+`PyPi Package <https://pypi.python.org/pypi/enviroplus>`__ `Python
+Versions <https://pypi.python.org/pypi/enviroplus>`__
 
 Installing
 ==========
 
 Installing
 ==========
@@ -10,7 +14,7 @@ Stable library from PyPi:
 
 -  Just run ``sudo pip install enviroplus``
 
 
 -  Just run ``sudo pip install enviroplus``
 
-(**Note** that you're best using the git clone / install.sh method below
+(**Note** that youre best using the git clone / install.sh method below
 if you want all of the UART serial configuration for the PMS5003
 particulate matter sensor to run automatically)
 
 if you want all of the UART serial configuration for the PMS5003
 particulate matter sensor to run automatically)
 
@@ -20,11 +24,7 @@ Latest/development library from GitHub:
 -  ``cd enviroplus-python``
 -  ``sudo ./install.sh``
 
 -  ``cd enviroplus-python``
 -  ``sudo ./install.sh``
 
-.. |Build Status| image:: https://travis-ci.com/pimoroni/enviroplus-python.svg?branch=master
-   :target: https://travis-ci.com/pimoroni/enviroplus-python
-.. |Coverage Status| image:: https://coveralls.io/repos/github/pimoroni/enviroplus-python/badge.svg?branch=master
-   :target: https://coveralls.io/github/pimoroni/enviroplus-python?branch=master
-.. |PyPi Package| image:: https://img.shields.io/pypi/v/enviroplus.svg
-   :target: https://pypi.python.org/pypi/enviroplus
-.. |Python Versions| image:: https://img.shields.io/pypi/pyversions/enviroplus.svg
-   :target: https://pypi.python.org/pypi/enviroplus
+0.0.1
+-----
+
+* Initial Release
index 5f24723e20c6351654994325c33fe8392421fe13..9a3a72787457f71586278d750ba7f9dc9bf9987d 100644 (file)
@@ -1,7 +1,30 @@
+# -*- coding: utf-8 -*-
 [metadata]
 [metadata]
+name = enviroplus
+version = 0.0.1
+author = Philip Howard
+author_email = phil@pimoroni.com
+description = Enviro pHAT Plus environmental monitoring add-on for Raspberry Pi"
+long_description = file: README.rst
+keywords = Raspberry Pi
+url = https://www.pimoroni.com
+project_urls =
+       GitHub=https://www.github.com/pimoroni/enviroplus-python
+license = MIT
 # This includes the license file(s) in the wheel.
 # https://wheel.readthedocs.io/en/stable/user_guide.html#including-license-files-in-the-generated-wheel-file
 license_files = LICENSE.txt
 # This includes the license file(s) in the wheel.
 # https://wheel.readthedocs.io/en/stable/user_guide.html#including-license-files-in-the-generated-wheel-file
 license_files = LICENSE.txt
+classifiers =
+       Development Status :: 4 - Beta
+       Operating System :: POSIX :: Linux
+       License :: OSI Approved :: MIT License
+       Intended Audience :: Developers
+       Programming Language :: Python :: 2.6
+       Programming Language :: Python :: 2.7
+       Programming Language :: Python :: 3
+       Topic :: Software Development
+       Topic :: Software Development :: Libraries
+       Topic :: System :: Hardware
 
 [flake8]
 exclude =
 
 [flake8]
 exclude =
@@ -13,3 +36,16 @@ exclude =
        dist
 ignore =
        E501
        dist
 ignore =
        E501
+
+[pimoroni]
+py2deps =
+py3deps =
+configtxt =
+       dtoverlay=pi3-miniuart-bt # for Enviro+
+commands =
+       printf "Setting up i2c and SPI..\n"
+       raspi-config nonint do_spi 0
+       raspi-config nonint do_i2c 0
+       printf "Setting up serial for PMS5003..\n"
+       raspi-config nonint do_serial 1                                 # Disable serial terminal over /dev/ttyAMA0
+       raspi-config nonint set_config_var enable_uart 1 $CONFIG        # Enable serial port
index 23a965fffee07510dbb34b56cbee78e5c366be67..aefc0229b3e1b2bef05297c985a90db9d1fdf52d 100755 (executable)
@@ -22,33 +22,9 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 SOFTWARE.
 """
 
 SOFTWARE.
 """
 
-try:
-    from setuptools import setup
-except ImportError:
-    from distutils.core import setup
-
-classifiers = ['Development Status :: 4 - Beta',
-               'Operating System :: POSIX :: Linux',
-               'License :: OSI Approved :: MIT License',
-               'Intended Audience :: Developers',
-               'Programming Language :: Python :: 2.6',
-               'Programming Language :: Python :: 2.7',
-               'Programming Language :: Python :: 3',
-               'Topic :: Software Development',
-               'Topic :: System :: Hardware']
+from setuptools import setup
 
 setup(
 
 setup(
-    name='enviroplus',
-    version='0.0.1',
-    author='Philip Howard',
-    author_email='phil@pimoroni.com',
-    description="""Enviro pHAT Plus environmental monitoring add-on for Raspberry Pi""",
-    long_description=open('README.rst').read() + '\n' + open('CHANGELOG.txt').read(),
-    license='MIT',
-    keywords='Raspberry Pi',
-    url='http://www.pimoroni.com',
-    project_urls={'GitHub': 'https://www.github.com/pimoroni/enviroplus-python'},
-    classifiers=classifiers,
     packages=['enviroplus'],
     install_requires=['pimoroni-bme280', 'pms5003', 'ltr559', 'st7735', 'ads1015']
 )
     packages=['enviroplus'],
     install_requires=['pimoroni-bme280', 'pms5003', 'ltr559', 'st7735', 'ads1015']
 )
index aaac11b280bdfc32ddb60df03aaa2a3ad55cd065..e3174449709c8bf884d6d599c446351fd3e437ca 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/bash
 
 #!/bin/bash
 
-LIBRARY_VERSION=`cat library/setup.py | grep version | awk -F"'" '{print $2}'`
-LIBRARY_NAME=`cat library/setup.py | grep name | awk -F"'" '{print $2}'`
+LIBRARY_VERSION=`cat library/setup.cfg | grep version | awk -F" = " '{print $2}'`
+LIBRARY_NAME=`cat library/setup.cfg | grep name | awk -F" = " '{print $2}'`
 
 printf "$LIBRARY_NAME $LIBRARY_VERSION Python Library: Uninstaller\n\n"
 
 
 printf "$LIBRARY_NAME $LIBRARY_VERSION Python Library: Uninstaller\n\n"
 
@@ -28,6 +28,6 @@ raspi-config nonint do_serial 0
 # Disable serial port
 raspi-config nonint set_config_var enable_uart 0 /boot/config.txt
 # Switch serial port back to miniUART
 # Disable serial port
 raspi-config nonint set_config_var enable_uart 0 /boot/config.txt
 # Switch serial port back to miniUART
-sed -i 's/^dtoverlay=pi3-miniuart-bt/#dtoverlay=pi3-miniuart-bt/' /boot/config.txt
+sed -i 's/^dtoverlay=pi3-miniuart-bt # for Enviro+/#dtoverlay=pi3-miniuart-bt # for Enviro+/' /boot/config.txt
 
 printf "Done!\n"
 
 printf "Done!\n"