Added debian packaging
This commit is contained in:
parent
8d11c36361
commit
23498ba122
15 changed files with 92 additions and 31 deletions
11
.gitignore
vendored
11
.gitignore
vendored
|
|
@ -1,7 +1,16 @@
|
|||
debian/tmp/
|
||||
debian/python3-validity/
|
||||
debian/python3-validity.substvars
|
||||
debian/python3-validity.prerm.debhelper
|
||||
debian/python3-validity.postinst.debhelper
|
||||
debian/files
|
||||
debian/.debhelper/
|
||||
|
||||
__pycache__
|
||||
.pybuild/
|
||||
build
|
||||
dist
|
||||
python3_validity.egg-info/
|
||||
python_validity.egg-info/
|
||||
tls.dict
|
||||
*.bin
|
||||
*.log
|
||||
|
|
|
|||
4
dbus_service/50-python-validity.rules
Normal file
4
dbus_service/50-python-validity.rules
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
# TODO me
|
||||
|
||||
ACTION=="add", SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="138a", ATTRS{idProduct}=="0097", TAG+="systemd", ENV{SYSTEMD_WANTS}+="python-validity@usb-$env{BUSNUM}-$env{DEVNUM}.service"
|
||||
|
||||
12
dbus_service/python-validity@.service
Normal file
12
dbus_service/python-validity@.service
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
# TODO me
|
||||
|
||||
[Unit]
|
||||
Description=python-validity driver dbus service for %I
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/usr/lib/python-validity/dbus-service %i
|
||||
Restart=no
|
||||
|
||||
#[Install]
|
||||
#WantedBy=multi-user.target
|
||||
5
debian/changelog
vendored
Normal file
5
debian/changelog
vendored
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
python-validity (0.1~ppa1) bionic; urgency=medium
|
||||
|
||||
* Initial release.
|
||||
|
||||
-- uunicorn <viktor.dragomiretskyy@gmail.com> Fri, 10 Jul 2020 17:21:35 +1200
|
||||
1
debian/compat
vendored
Normal file
1
debian/compat
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
9
|
||||
25
debian/control
vendored
Normal file
25
debian/control
vendored
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
Source: python-validity
|
||||
Section: misc
|
||||
Priority: optional
|
||||
Maintainer: uunicorn <viktor.dragomiretskyy@gmail.com>
|
||||
Build-Depends: debhelper (>= 7.0.50~),
|
||||
dh-python,
|
||||
python3-all,
|
||||
python3-setuptools
|
||||
X-Python3-Version: >= 3.6
|
||||
Standards-Version: 3.9.2
|
||||
|
||||
Package: python3-validity
|
||||
Architecture: all
|
||||
Depends: ${python3:Depends},
|
||||
${misc:Depends},
|
||||
python3-dbus,
|
||||
python3-usb,
|
||||
dbus,
|
||||
open-fprintd (>= 0.2~)
|
||||
XB-Python-Version: ${python3:Versions}
|
||||
Description: Validity Fingerprint Sensor DBus Driver
|
||||
This package adds support to some Validity sensors.
|
||||
.
|
||||
Warning: this is an experimental software. It lacks proper auth checks.
|
||||
Install and use at your own risk.
|
||||
9
debian/copyright
vendored
Normal file
9
debian/copyright
vendored
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
|
||||
Files: *
|
||||
Copyright: Copyright © 2020, uunicorn <viktor.dragomiretskyy@gmail.com>
|
||||
License: GPL-2+
|
||||
|
||||
License: GPL-2+
|
||||
On Debian systems, the complete text of the GNU General
|
||||
Public License can be found in `/usr/share/common-licenses/GPL-2'.
|
||||
|
||||
5
debian/install
vendored
Normal file
5
debian/install
vendored
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
usr/bin
|
||||
usr/lib/python*/*-packages/*.egg-info
|
||||
usr/lib/python*/*-packages/validitysensor/*.py
|
||||
usr/lib/python-validity
|
||||
usr/share/python-validity
|
||||
1
debian/pycompat
vendored
Normal file
1
debian/pycompat
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
2
|
||||
10
debian/rules
vendored
Executable file
10
debian/rules
vendored
Executable file
|
|
@ -0,0 +1,10 @@
|
|||
#!/usr/bin/make -f
|
||||
|
||||
#export DH_VERBOSE = 1
|
||||
|
||||
%:
|
||||
dh $@ --with python3 --buildsystem=pybuild
|
||||
|
||||
override_dh_auto_install:
|
||||
python3 ./setup.py install --root=$(CURDIR)/debian/tmp --prefix=/usr --install-layout=deb
|
||||
|
||||
1
debian/source/format
vendored
Normal file
1
debian/source/format
vendored
Normal file
|
|
@ -0,0 +1 @@
|
|||
3.0 (native)
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
cryptography>=2.1.4
|
||||
pyusb>=1.0.2
|
||||
3
setup.py
3
setup.py
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
from setuptools import setup
|
||||
|
||||
setup(name='python3-validity',
|
||||
setup(name='python-validity',
|
||||
version='0.1',
|
||||
py_modules = [],
|
||||
packages=['validitysensor'],
|
||||
|
|
@ -15,6 +15,7 @@ setup(name='python3-validity',
|
|||
'pyusb >= 1.0.2'
|
||||
],
|
||||
data_files=[
|
||||
('share/python-validity/playground/', ['factory-reset.py', 'pair.py', 'prototype.py']),
|
||||
('lib/python-validity/', ['dbus_service/dbus-service']),
|
||||
]
|
||||
)
|
||||
|
|
|
|||
|
|
@ -15,9 +15,8 @@ from .hw_tables import dev_info_lookup
|
|||
from .blobs import reset_blob
|
||||
from . import timeslot as prg
|
||||
|
||||
calib_data_path='calib-data.bin'
|
||||
|
||||
debug=False
|
||||
# TODO: this should be specific to an individual device (system may have more than one sensor)
|
||||
calib_data_path='/usr/share/python-validity/calib-data.bin'
|
||||
|
||||
line_update_type1_devices = [ 0xB5, 0x885, 0xB3, 0x143B, 0x1055, 0xE1, 0x8B1, 0xEA, 0xE4, 0xED, 0x1825, 0x1FF5, 0x199 ]
|
||||
|
||||
|
|
@ -67,12 +66,7 @@ def factory_reset():
|
|||
|
||||
class RomInfo():
|
||||
def get():
|
||||
if not debug:
|
||||
rsp=tls.cmd(b'\x01')
|
||||
else:
|
||||
# 0097
|
||||
rsp=unhexlify('0000f0b05e54a40000000607013000010000090a089141a80023000000000100000000000007');
|
||||
|
||||
rsp=tls.cmd(b'\x01')
|
||||
assert_status(rsp)
|
||||
rsp=rsp[2:]
|
||||
return RomInfo(*unpack('<LLBBxBxxxB', rsp[0:0x10]))
|
||||
|
|
@ -86,14 +80,7 @@ class RomInfo():
|
|||
|
||||
|
||||
def identify_sensor():
|
||||
if not debug:
|
||||
rsp=tls.cmd(b'\x75')
|
||||
else:
|
||||
# 009a
|
||||
#rsp=unhexlify('0000000000005a009001');
|
||||
# 0097
|
||||
rsp=unhexlify('0000000000000d007100');
|
||||
|
||||
rsp=tls.cmd(b'\x75')
|
||||
assert_status(rsp)
|
||||
rsp=rsp[2:]
|
||||
|
||||
|
|
@ -113,15 +100,7 @@ def identify_sensor():
|
|||
# 6c010000 1400 0e00 0f00 0080 05550007 7701002805720000080100020811e107
|
||||
# 88010000 0c00 0e00 1200 0080 07000000 7002 7800 7002 7800
|
||||
def get_factory_bits(tag):
|
||||
if not debug:
|
||||
rsp=tls.cmd(pack('<B H HL', 0x6f, tag, 0, 0))
|
||||
else:
|
||||
# 6f 000e 00000000 response from the 009a logs:
|
||||
#rsp=unhex('0000a80200000c0000000800000074000e0003000080070000007e7e7c767d7a737a807c7c7975847f85858184888786888a8a8a8c8d8b85878c8689878689898484837d8b8b8289898d8f8c90908f86858c8b8d90908b848f8694928a8e908d8e8d898d8d8c8e8f8d8c878986808a8a818686848187888c8e7e7e85888989857f8077777b7872767c7e8400000074000e0003000080070000007e7e7c767d7a737a807c7c7975847f85858184888786888a8a8a8c8d8b85878c8689878689898484837d8b8b8289898d8f8c90908f86858c8b8d90908b848f8694928a8e908d8e8d898d8d8c8e8f8d8c878986808a8a818686848187888c8e7e7e85888989857f8077777b7872767c7e0001000034020e000c00008007000000010205060504040708060403050709080705040401fffdfbfdfdfcfaf8f7f7f7f7f5f5f5f5f4f6f6f5f4f6fbff00fffcfaf9f7f7f5f6f6f9fcfdfefefefdfcfdfdfdfd000202020303020103050609090c0e100f0a0909080501ffff00020303020201ff0000fffefcfcfbfbfdff0000f0f4f5f5f7f9fbfaf5f3f3f6f5f6f7f7f6f6f7f8f9f9fbfafbfdfe00000101020306080a0a09080706040303030403050204050704fcf7f6f9fbfdff000306090a0909090b0d0e0e0e0d0c0d0e0c07070a0c090603020100fefbfafafcfcfdfcfcfbfaf9fafbff000201ff0003060403f1f3f2f3f4f3f0eff0f1f2f2f2f0f0f1f1eff0f2f6f8fcff04090c0d0c0f1013141617191c1d1e1c1a1b1c1e1c1c19141210100b07090f141614110f0f0d090401fffffdfefaf7f2f0edececebebeceff1f1efeef0f4f6f5f2eff1f4f5f6f6f5f5f5f5f5f4f5f7f6f4f2f4f4f7f9f9f9ebfafbfaf7f8f6f5f4f1f0f0f2f2f4f3f1eff0f4f7fbfd00030407070a0c1115151515171b1e1d1d1c1d2022201e1d1e20212324231e1a1c1d1b1b1a17120f0e0a080500fdfbfbf9f5f2f1f0f0f0f0efedeef0f1eeebeaeaeceff0efedebe9e9e9e9eae9e8ebeef1f2f4f3f3f2f3f7f9eff2f3f4f9fafcfbfbfaf7f6f6f8f9f8f7f7f9f9f8f7f6f5f6f6f9fafcfbfbfafafaf7f7f7f8f8fafafbfbff0000fdfbfafcfdfffefe0003050503010001050a101313110f0d09070400fefcfe000101fcf9f8f7f6f4f5f4f8fcff01020100fdf8f7f9fc000102fdfbfbfdff000407083c03000034020e000c00008007000000010205060504040708060403050709080705040401fffdfbfdfdfcfaf8f7f7f7f7f5f5f5f5f4f6f6f5f4f6fbff00fffcfaf9f7f7f5f6f6f9fcfdfefefefdfcfdfdfdfd000202020303020103050609090c0e100f0a0909080501ffff00020303020201ff0000fffefcfcfbfbfdff0000f0f4f5f5f7f9fbfaf5f3f3f6f5f6f7f7f6f6f7f8f9f9fbfafbfdfe00000101020306080a0a09080706040303030403050204050704fcf7f6f9fbfdff000306090a0909090b0d0e0e0e0d0c0d0e0c07070a0c090603020100fefbfafafcfcfdfcfcfbfaf9fafbff000201ff0003060403f1f3f2f3f4f3f0eff0f1f2f2f2f0f0f1f1eff0f2f6f8fcff04090c0d0c0f1013141617191c1d1e1c1a1b1c1e1c1c19141210100b07090f141614110f0f0d090401fffffdfefaf7f2f0edececebebeceff1f1efeef0f4f6f5f2eff1f4f5f6f6f5f5f5f5f5f4f5f7f6f4f2f4f4f7f9f9f9ebfafbfaf7f8f6f5f4f1f0f0f2f2f4f3f1eff0f4f7fbfd00030407070a0c1115151515171b1e1d1d1c1d2022201e1d1e20212324231e1a1c1d1b1b1a17120f0e0a080500fdfbfbf9f5f2f1f0f0f0f0efedeef0f1eeebeaeaeceff0efedebe9e9e9e9eae9e8ebeef1f2f4f3f3f2f3f7f9eff2f3f4f9fafcfbfbfaf7f6f6f8f9f8f7f7f9f9f8f7f6f5f6f6f9fafcfbfbfafafaf7f7f7f8f8fafafbfbff0000fdfbfafcfdfffefe0003050503010001050a101313110f0d09070400fefcfe000101fcf9f8f7f6f4f5f4f8fcff01020100fdf8f7f9fc000102fdfbfbfdff000407087805000014000e000f00008005550007890312000587000781010026040fe3079405000014000e000f00008005550007890312000587000781010026040fe307b005000008000e00080000809901000000000000c005000008000e00080000809901000000000000d005000008000e0002000000000000005a009001e005000008000e0002000000000000005a009001f005000004000e00050000803a690200fc05000004000e00050000803a690200')
|
||||
# another example, which will require alignment adjustments
|
||||
#rsp=unhex('0000080c0000070000000800000074000e0003000080070000007f7f7e787f7c747b827f7f7c768681888883868a8988898b8b8a8d8e8d86888c878a88868a8a8586847d8b8b8389898c8e8b8f908f86878d8b8d90908b868f8592918a8e908d8e8e8a8e8e8c8d8f8d8d888887828a8b818787848389898d8f7f80878a8a8a86818178797d7b74787e818400000008000e0002000000000000004a0090019400000008000e00080000809901000000000000a400000004000e0005000080337b0200b000000034020e000c00008007000000fd050809050202030404060809060200fefcfcff01010000ff00000301fdfbfdfdfd000101fcf9f9f9fcfe0001010000fcfcfafb00040d1215100b0703fffd000202fefcfefd0002080708080804030301030103010204070402fffdf8f8fbff0301020204050406070b090a0604fffeedf2f5f6f2f0f1f3f5f7fafcfffffefcfaf9f7f7f9fbfbfaf8f8f2f3f4fafcfdfdff00feff00fefbf8f8fc010506060706060403fdf8f7fa02050707060300fe0003070a090a0a0a0705050c0e100d080505070604020407080808060504070a0d0a09080b0b0a0a070400000200fffeeaf3f7f7f6f7f5f1eceaebeaeaeaeaeeeff1f3f4f3f3f4f8f9f9f6f9fe0204040706050508080a0809080b0c0f0f110d0f10151312120c0a040605090d0e0f0e1112100c0808070400fdfdff000200fcfbfe0202ff000407030100fefefcff0304060608090c0f0e100b080505080908ed02fffbf8f8f9f9fbfcfcf7f6f8fcfbf9f5f4f7f9f8f6f5f4f6fc03090c0b07030304080707080c0c0a0603020304050406050100ff0400fffbf9fbfd0000fdfaf8f9ff03000000080a09080702faf7f5f7f7f8f9f8fafafaf6f2f0f1f4f7f6f5f5f8f9fafb0000fff9f4f5f8fe0200f70000fefcfbfafc000204060708060603060807070607070302fefffe0305050305050600fcf8fcff0005080903030303030307070702fffe030807070508080a0c0f0d090707060601fdfbfafbfbfaf8f6f6f4f6f7fefefffdfefcfdfcfcfbfcfcfafaf9fd00000402030205070808ec02000014000e000f00008005550007770100310587000780010013000fe207080300000c000e0012000080070000003807540138075401')
|
||||
rsp=unhex('0000880d0000070000000800000094000e0003000080070000007e7f807f808080808080808080808080808080808080818081808180818080808080818081808080818081808180818081808180818081808180808081808180808081807f80808180808081808180818080808180818081808180818081808080818081808180818081808180818081808180818081808180818081808080808080808080807f807f807f807f7f7e7ea400000008000e0002000000000000000d007100b400000008000e0008000080db00000000000000c400000004000e00050000801c6f0400d000000094000e0007000080070000002b23203c2d182e1e30182e1c321d341d341e321c301e1e241e201f201d1c321a301e1c211e21341f1e202024201f1e20201f212221221d221e23341e1d1e1d20341f1d193b341c1d1e35201e201c20221f341c1e1e1c221f201d21201e1c1f34242221201f20221f201e241e241d2020221e2420231d221e211e1f1e1e341c321e3220301d2d302f2d2c2b23223a211c6c01000014000e000f000080055500077701002805720000080100020811e107880100000c000e0012000080070000007002780070027800')
|
||||
|
||||
rsp=tls.cmd(pack('<B H HL', 0x6f, tag, 0, 0))
|
||||
assert_status(rsp)
|
||||
rsp=rsp[2:]
|
||||
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ from .sensor import reboot, write_hw_reg32, read_hw_reg32, identify_sensor
|
|||
from .flash import flush_changes, read_flash, erase_flash, write_flash_all, write_fw_signature, get_fw_info
|
||||
from .util import assert_status
|
||||
|
||||
firmware_home='/usr/share/python-validity'
|
||||
|
||||
def default_fwext_name():
|
||||
if usb.usb_dev().idVendor == 0x138a:
|
||||
|
|
@ -32,7 +33,7 @@ def upload_fwext(fw_path=None):
|
|||
# ^ TODO -- what is the real reason to detect HW at this stage?
|
||||
# just a guess: perhaps it is used to construct fwext filename
|
||||
|
||||
default_name = default_fwext_name()
|
||||
default_name = firmware_home + '/' + default_fwext_name()
|
||||
if not fw_path:
|
||||
fw_path = default_name
|
||||
elif basename(fw_path) != default_name:
|
||||
|
|
|
|||
Loading…
Reference in a new issue