diff --git a/misc/pyobd/Makefile b/misc/pyobd/Makefile index 40fc193c707d..d716289f3fd3 100644 --- a/misc/pyobd/Makefile +++ b/misc/pyobd/Makefile @@ -1,42 +1,58 @@ PORTNAME= pyobd -DISTVERSION= 0.9.3 -PORTREVISION= 15 +DISTVERSIONPREFIX= v +DISTVERSION= 1.19 CATEGORIES= misc -MASTER_SITES= http://www.obdtester.com/download/ -DISTNAME= pyobd_${PORTVERSION} +#MASTER_SITES= http://www.obdtester.com/download/ +#DISTNAME= pyobd_${PORTVERSION} MAINTAINER= yuri@FreeBSD.org COMMENT= OBD-II compliant car diagnostic tool -WWW= http://www.obdtester.com/pyobd +WWW= http://www.obdtester.com/pyobd \ + https://github.com/barracuda-fsh/pyobd LICENSE= GPLv2 LICENSE_FILE= ${WRKSRC}/COPYING -RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pyserial>0:comms/py-pyserial@${PY_FLAVOR} - -USES= dos2unix gnome magick:6,build python shebangfix -DOS2UNIX_FILES= ${PORTNAME}.desktop -SHEBANG_FILES= ${PORTNAME} +BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pillow>=10.4.0:graphics/py-pillow@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}setuptools>=61.0:devel/py-setuptools@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}wheel>=0:devel/py-wheel@${PY_FLAVOR} +RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}numpy>=1.23:math/py-numpy@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pillow>=10.4.0:graphics/py-pillow@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pint>=0.20.1:devel/py-pint@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}pyserial>=3.5:comms/py-pyserial@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}six>=1.16.0:devel/py-six@${PY_FLAVOR} \ + ${PYTHON_PKGNAMEPREFIX}tornado>=3.2.1:www/py-tornado@${PY_FLAVOR} + +USES= dos2unix gnome python shebangfix +USE_PYTHON= autoplist pep517 USE_WX= 3.2 + +USE_GITHUB= yes +GH_ACCOUNT= barracuda-fsh + +SHEBANG_FILES= pyobd.py + WX_COMPS= python NO_ARCH= yes -WRKSRC= ${WRKDIR}/${PORTNAME}-${PORTVERSION} +PLIST_FILES= bin/pyobd \ + share/applications/pyobd.desktop \ + share/icons/hicolor/32x32/apps/pyobd.png \ + %%PYTHON_SITELIBDIR%%/pyobd.ico -do-build: - @convert ${WRKSRC}/${PORTNAME}.gif ${WRKSRC}/${PORTNAME}.png +post-build: + @${PYTHON_CMD} -c "from PIL import Image; Image.open('${WRKSRC}/${PORTNAME}.gif').save('${WRKSRC}/${PORTNAME}.png')" -do-install: - ${INSTALL_DATA} ${WRKSRC}/${PORTNAME}.desktop \ +post-install: + @(${ECHO_CMD} "#!/bin/sh"; \ + ${ECHO_CMD} "exec ${PYTHON_CMD} -m pyobd \"\$$@\"") > ${STAGEDIR}${PREFIX}/bin/${PORTNAME} + @${CHMOD} +x ${STAGEDIR}${PREFIX}/bin/${PORTNAME} + ${INSTALL_DATA} ${FILESDIR}/${PORTNAME}.desktop \ ${STAGEDIR}${PREFIX}/share/applications/${PORTNAME}.desktop @${MKDIR} ${STAGEDIR}${PREFIX}/share/icons/hicolor/32x32/apps ${INSTALL_DATA} ${WRKSRC}/${PORTNAME}.png \ ${STAGEDIR}${PREFIX}/share/icons/hicolor/32x32/apps/${PORTNAME}.png - @${MKDIR} ${STAGEDIR}${DATADIR} - ${INSTALL_DATA} ${WRKSRC}/${PORTNAME} ${WRKSRC}/*.py ${WRKSRC}/*.pyc \ - ${STAGEDIR}${DATADIR} - @${CHMOD} +x ${STAGEDIR}${DATADIR}/${PORTNAME} - @${LN} -sf ../share/${PORTNAME}/${PORTNAME} ${STAGEDIR}${PREFIX}/bin/${PORTNAME} + ${INSTALL_DATA} ${WRKSRC}/${PORTNAME}.ico ${STAGEDIR}${PYTHON_SITELIBDIR}/ .include diff --git a/misc/pyobd/distinfo b/misc/pyobd/distinfo index 537284ea2fd5..30c060b03492 100644 --- a/misc/pyobd/distinfo +++ b/misc/pyobd/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1468366650 -SHA256 (pyobd_0.9.3.tar.gz) = f3004db4000e2bc166aae3b4342c98aa62f74f3372c5829472af0ee56c5e110c -SIZE (pyobd_0.9.3.tar.gz) = 768154 +TIMESTAMP = 1781892413 +SHA256 (barracuda-fsh-pyobd-v1.19_GH0.tar.gz) = 94ce6f7574cff7ed3a8412002c06a6bea2251fed0bb1f890db33ad080154d10f +SIZE (barracuda-fsh-pyobd-v1.19_GH0.tar.gz) = 304818 diff --git a/misc/pyobd/files/patch-pyobd b/misc/pyobd/files/patch-pyobd deleted file mode 100644 index a65d6c4f978c..000000000000 --- a/misc/pyobd/files/patch-pyobd +++ /dev/null @@ -1,47 +0,0 @@ ---- pyobd.orig 2015-04-21 10:02:41 UTC -+++ pyobd -@@ -356,7 +356,7 @@ class MyApp(wx.App): - else: - self.configfilepath=os.environ['HOME']+'/.pyobdrc' - if self.config.read(self.configfilepath)==[]: -- self.COMPORT="/dev/ttyACM0" -+ self.COMPORT="/dev/ttyU0" - self.RECONNATTEMPTS=5 - self.SERTIMEOUT=2 - else: -@@ -592,34 +592,7 @@ the Free Software Foundation, Inc., 59 T - def scanSerial(self): - """scan for available ports. return a list of serial names""" - available = [] -- for i in range(256): -- try: #scan standart ttyS* -- s = serial.Serial(i) -- available.append(s.portstr) -- s.close() # explicit close 'cause of delayed GC in java -- except serial.SerialException: -- pass -- for i in range(256): -- try: #scan USB ttyACM -- s = serial.Serial("/dev/ttyACM"+str(i)) -- available.append(s.portstr) -- s.close() # explicit close 'cause of delayed GC in java -- except serial.SerialException: -- pass -- for i in range(256): -- try: -- s = serial.Serial("/dev/ttyUSB"+str(i)) -- available.append(s.portstr) -- s.close() # explicit close 'cause of delayed GC in java -- except serial.SerialException: -- pass -- for i in range(256): -- try: -- s = serial.Serial("/dev/ttyd"+str(i)) -- available.append(s.portstr) -- s.close() # explicit close 'cause of delayed GC in java -- except serial.SerialException: -- pass -+ available.append("/dev/ttyU0") - - # ELM-USB shows up as /dev/tty.usbmodemXXXX, where XXXX is a changing hex string - # on connection; so we have to search through all 64K options diff --git a/misc/pyobd/files/patch-pyobd.desktop b/misc/pyobd/files/patch-pyobd.desktop deleted file mode 100644 index d70f1d2b4b5c..000000000000 --- a/misc/pyobd/files/patch-pyobd.desktop +++ /dev/null @@ -1,16 +0,0 @@ ---- pyobd.desktop.orig 2016-07-21 17:05:31 UTC -+++ pyobd.desktop -@@ -1,9 +1,10 @@ - [Desktop Entry] - Encoding=UTF8 --Icon=/usr/share/pyobd/pyobd.gif --Name=pyOBD: OBD2 Diagnostics -+Icon=pyOBD -+Name=pyOBD -+GenericName=OBD2 Diagnostics - Comment=Car On-Board 2 vehicle diagnostics (ELM-32x compatible interface) --Exec=python /usr/bin/pyobd -+Exec=pyobd - Terminal=false - Type=Application - Categories=Utility; diff --git a/misc/pyobd/files/patch-pyobd.py b/misc/pyobd/files/patch-pyobd.py new file mode 100644 index 000000000000..c2b6e6b65ae8 --- /dev/null +++ b/misc/pyobd/files/patch-pyobd.py @@ -0,0 +1,14 @@ +-- Fix path calculation in resource_path when PyInstaller is not used. +-- Falling back to os.path.dirname(os.path.abspath(__file__)) ensures resource files (like pyobd.ico) are correctly found next to the script in site-packages. +-- +--- pyobd.py.orig 2026-06-19 19:04:49 UTC ++++ pyobd.py +@@ -127,7 +127,7 @@ def resource_path(relative_path): + # PyInstaller creates a temp folder and stores path in _MEIPASS + base_path = sys._MEIPASS + except Exception: +- base_path = os.path.abspath(".") ++ base_path = os.path.dirname(os.path.abspath(__file__)) + + return os.path.join(base_path, relative_path) + diff --git a/misc/pyobd/files/patch-pyproject.toml b/misc/pyobd/files/patch-pyproject.toml new file mode 100644 index 000000000000..7987e5e8eb56 --- /dev/null +++ b/misc/pyobd/files/patch-pyproject.toml @@ -0,0 +1,27 @@ +-- Fix format of project.license field in pyproject.toml to comply with PEP 621. +-- The original format uses a string instead of a table, which is invalid PEP 621 metadata and causes the PEP 517 build backend to fail validation. +-- +--- pyproject.toml.orig 2026-06-19 18:31:19 UTC ++++ pyproject.toml +@@ -9,14 +9,18 @@ dependencies = [ + "six==1.16.0", + ] + +-name = "pyobd2" +-version = "1.17" ++name = "pyobd" ++version = "1.19" + description = "An OBD-II compliant car diagnostic tool " + authors = [{ "name" = "Jure Poljsak" }, { "name" = "Charles Donour Sizemore" }] + readme = "README.md" +-license = "GPL-2.0-only" ++license = {text = "GPL-2.0-only"} + requires-python = ">=3.8" + + [build-system] + requires = ["setuptools", "wheel"] + build-backend = "setuptools.build_meta" ++ ++[tool.setuptools] ++packages = ["obd", "obd.protocols"] ++py-modules = ["pyobd", "obd2_codes", "obd_io", "obd_sensors", "debugEvent"] diff --git a/misc/pyobd/files/pyobd.desktop b/misc/pyobd/files/pyobd.desktop new file mode 100644 index 000000000000..f515955a190c --- /dev/null +++ b/misc/pyobd/files/pyobd.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF8 +Icon=pyobd +Name=pyOBD +GenericName=OBD2 Diagnostics +Comment=Car On-Board 2 vehicle diagnostics (ELM-32x compatible interface) +Exec=pyobd +Terminal=false +Type=Application +Categories=Utility; diff --git a/misc/pyobd/pkg-plist b/misc/pyobd/pkg-plist deleted file mode 100644 index bdc1d1ef8586..000000000000 --- a/misc/pyobd/pkg-plist +++ /dev/null @@ -1,12 +0,0 @@ -bin/pyobd -share/applications/pyobd.desktop -share/icons/hicolor/32x32/apps/pyobd.png -%%DATADIR%%/debugEvent.py -%%DATADIR%%/debugEvent.pyc -%%DATADIR%%/obd2_codes.py -%%DATADIR%%/obd2_codes.pyc -%%DATADIR%%/obd_io.py -%%DATADIR%%/obd_io.pyc -%%DATADIR%%/obd_sensors.py -%%DATADIR%%/obd_sensors.pyc -%%DATADIR%%/pyobd