summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBert Vermeulen <bert@biot.com>2013-11-27 16:47:04 +0100
committerBert Vermeulen <bert@biot.com>2013-11-27 16:47:04 +0100
commit03d6d746b742fb21ca22086ba6b72943a845ecc9 (patch)
tree3295f183a7cb65397b67da36c2825b4709a9194c
parent37b94c205e4c1c43e77e29993108f23066cbce05 (diff)
downloadlibsigrokdecode-03d6d746b742fb21ca22086ba6b72943a845ecc9.tar.gz
libsigrokdecode-03d6d746b742fb21ca22086ba6b72943a845ecc9.zip
Automate protocol decoder installation.
This automatically figures out the files to install for each protocol decoder, without involving autotools. All python files (filenames ending in .py) are always installed. If a protocol decoder requires installation of a non-python file, a small file called 'config' can be created in that protocol decoder's directory, with the following content: # comments are ok extra-install vendorlist.txt commands.txt
-rw-r--r--Makefile.am8
-rw-r--r--decoders/Makefile.am58
-rw-r--r--decoders/avr_isp/Makefile.am26
-rw-r--r--decoders/can/Makefile.am26
-rw-r--r--decoders/dcf77/Makefile.am26
-rw-r--r--decoders/ds1307/Makefile.am26
-rw-r--r--decoders/edid/Makefile.am26
-rw-r--r--decoders/guess_bitrate/Makefile.am26
-rw-r--r--decoders/i2c/Makefile.am26
-rw-r--r--decoders/i2cdemux/Makefile.am26
-rw-r--r--decoders/i2cfilter/Makefile.am25
-rw-r--r--decoders/i2s/Makefile.am26
-rw-r--r--decoders/i2s_dump/Makefile.am26
-rw-r--r--decoders/jtag/Makefile.am26
-rw-r--r--decoders/jtag_stm32/Makefile.am26
-rw-r--r--decoders/lm75/Makefile.am26
-rw-r--r--decoders/lpc/Makefile.am26
-rw-r--r--decoders/maxim_ds28ea00/Makefile.am26
-rw-r--r--decoders/midi/Makefile.am26
-rw-r--r--decoders/mlx90614/Makefile.am26
-rw-r--r--decoders/mx25lxx05d/Makefile.am26
-rw-r--r--decoders/mxc6225xu/Makefile.am26
-rw-r--r--decoders/nunchuk/Makefile.am26
-rw-r--r--decoders/onewire_link/Makefile.am26
-rw-r--r--decoders/onewire_network/Makefile.am26
-rw-r--r--decoders/pan1321/Makefile.am26
-rw-r--r--decoders/parallel/Makefile.am26
-rw-r--r--decoders/rtc8564/Makefile.am26
-rw-r--r--decoders/sdcard_spi/Makefile.am26
-rw-r--r--decoders/spi/Makefile.am26
-rw-r--r--decoders/tlc5620/Makefile.am26
-rw-r--r--decoders/transitioncounter/Makefile.am26
-rw-r--r--decoders/uart/Makefile.am26
-rw-r--r--decoders/uart_dump/Makefile.am26
-rw-r--r--decoders/usb_packet/Makefile.am26
-rw-r--r--decoders/usb_signalling/Makefile.am26
-rw-r--r--decoders/xfp/Makefile.am26
-rwxr-xr-xtools/install-decoders109
38 files changed, 116 insertions, 968 deletions
diff --git a/Makefile.am b/Makefile.am
index 6a5d6cf..c265331 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -20,7 +20,7 @@
ACLOCAL_AMFLAGS = -I autostuff
-SUBDIRS = contrib decoders tests
+SUBDIRS = contrib tests
lib_LTLIBRARIES = libsigrokdecode.la
@@ -59,3 +59,9 @@ ChangeLog:
dist-hook: ChangeLog
+install-decoders:
+ $(MKDIR_P) $(DECODERS_DIR)
+ tools/install-decoders -o $(DECODERS_DIR)
+
+install-data-hook: install-decoders
+
diff --git a/decoders/Makefile.am b/decoders/Makefile.am
deleted file mode 100644
index bf433a0..0000000
--- a/decoders/Makefile.am
+++ /dev/null
@@ -1,58 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2010 Uwe Hermann <uwe@hermann-uwe.de>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-# Please keep this list in alphabetical order.
-SUBDIRS = \
- avr_isp \
- can \
- dcf77 \
- ds1307 \
- edid \
- guess_bitrate \
- i2c \
- i2cdemux \
- i2cfilter \
- i2s \
- i2s_dump \
- jtag \
- jtag_stm32 \
- lm75 \
- lpc \
- maxim_ds28ea00 \
- midi \
- mlx90614 \
- mx25lxx05d \
- mxc6225xu \
- nunchuk \
- onewire_link \
- onewire_network \
- pan1321 \
- parallel \
- rtc8564 \
- sdcard_spi \
- spi \
- tlc5620 \
- transitioncounter \
- uart \
- uart_dump \
- usb_packet \
- usb_signalling \
- xfp
-
diff --git a/decoders/avr_isp/Makefile.am b/decoders/avr_isp/Makefile.am
deleted file mode 100644
index a6bd858..0000000
--- a/decoders/avr_isp/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2012 Uwe Hermann <uwe@hermann-uwe.de>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/avr_isp
-
-dist_pkgdata_DATA = __init__.py pd.py parts.py
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/can/Makefile.am b/decoders/can/Makefile.am
deleted file mode 100644
index fd077d5..0000000
--- a/decoders/can/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2012 Uwe Hermann <uwe@hermann-uwe.de>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/can
-
-dist_pkgdata_DATA = __init__.py pd.py
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/dcf77/Makefile.am b/decoders/dcf77/Makefile.am
deleted file mode 100644
index a506be7..0000000
--- a/decoders/dcf77/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2012 Uwe Hermann <uwe@hermann-uwe.de>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/dcf77
-
-dist_pkgdata_DATA = __init__.py pd.py
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/ds1307/Makefile.am b/decoders/ds1307/Makefile.am
deleted file mode 100644
index 16d2ab8..0000000
--- a/decoders/ds1307/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2013 Matt Ranostay <mranostay@gmail.com>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/ds1307
-
-dist_pkgdata_DATA = __init__.py pd.py
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/edid/Makefile.am b/decoders/edid/Makefile.am
deleted file mode 100644
index c9261f4..0000000
--- a/decoders/edid/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2012 Bert Vermeulen <bert@biot.com>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/edid
-
-dist_pkgdata_DATA = __init__.py pd.py pnpids.txt
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/guess_bitrate/Makefile.am b/decoders/guess_bitrate/Makefile.am
deleted file mode 100644
index 7c162f6..0000000
--- a/decoders/guess_bitrate/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2013 Uwe Hermann <uwe@hermann-uwe.de>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/guess_bitrate
-
-dist_pkgdata_DATA = __init__.py pd.py
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/i2c/Makefile.am b/decoders/i2c/Makefile.am
deleted file mode 100644
index 7185628..0000000
--- a/decoders/i2c/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2012 Uwe Hermann <uwe@hermann-uwe.de>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/i2c
-
-dist_pkgdata_DATA = __init__.py pd.py
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/i2cdemux/Makefile.am b/decoders/i2cdemux/Makefile.am
deleted file mode 100644
index 10ea7e1..0000000
--- a/decoders/i2cdemux/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2012 Uwe Hermann <uwe@hermann-uwe.de>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/i2cdemux
-
-dist_pkgdata_DATA = __init__.py pd.py
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/i2cfilter/Makefile.am b/decoders/i2cfilter/Makefile.am
deleted file mode 100644
index b5f67e7..0000000
--- a/decoders/i2cfilter/Makefile.am
+++ /dev/null
@@ -1,25 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2012 Bert Vermeulen <bert@biot.com>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 3 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, see <http://www.gnu.org/licenses/>.
-##
-
-pkgdatadir = $(DECODERS_DIR)/i2cfilter
-
-dist_pkgdata_DATA = __init__.py pd.py
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/i2s/Makefile.am b/decoders/i2s/Makefile.am
deleted file mode 100644
index c109a21..0000000
--- a/decoders/i2s/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2012 Joel Holdsworth <joel@airwebreathe.org.uk>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/i2s
-
-dist_pkgdata_DATA = __init__.py pd.py
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/i2s_dump/Makefile.am b/decoders/i2s_dump/Makefile.am
deleted file mode 100644
index fda1fff..0000000
--- a/decoders/i2s_dump/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2013 Uwe Hermann <uwe@hermann-uwe.de>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/i2s_dump
-
-dist_pkgdata_DATA = __init__.py pd.py
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/jtag/Makefile.am b/decoders/jtag/Makefile.am
deleted file mode 100644
index 8faa165..0000000
--- a/decoders/jtag/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2012 Uwe Hermann <uwe@hermann-uwe.de>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/jtag
-
-dist_pkgdata_DATA = __init__.py pd.py
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/jtag_stm32/Makefile.am b/decoders/jtag_stm32/Makefile.am
deleted file mode 100644
index 7d450a2..0000000
--- a/decoders/jtag_stm32/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2012 Uwe Hermann <uwe@hermann-uwe.de>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/jtag_stm32
-
-dist_pkgdata_DATA = __init__.py pd.py
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/lm75/Makefile.am b/decoders/lm75/Makefile.am
deleted file mode 100644
index 60acc6f..0000000
--- a/decoders/lm75/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2012 Uwe Hermann <uwe@hermann-uwe.de>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/lm75
-
-dist_pkgdata_DATA = __init__.py pd.py
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/lpc/Makefile.am b/decoders/lpc/Makefile.am
deleted file mode 100644
index d7572f2..0000000
--- a/decoders/lpc/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2012 Uwe Hermann <uwe@hermann-uwe.de>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/lpc
-
-dist_pkgdata_DATA = __init__.py pd.py
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/maxim_ds28ea00/Makefile.am b/decoders/maxim_ds28ea00/Makefile.am
deleted file mode 100644
index a66d647..0000000
--- a/decoders/maxim_ds28ea00/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2012 Uwe Hermann <uwe@hermann-uwe.de>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/maxim_ds28ea00
-
-dist_pkgdata_DATA = __init__.py pd.py
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/midi/Makefile.am b/decoders/midi/Makefile.am
deleted file mode 100644
index f45d086..0000000
--- a/decoders/midi/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2013 Uwe Hermann <uwe@hermann-uwe.de>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/midi
-
-dist_pkgdata_DATA = __init__.py pd.py lists.py
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/mlx90614/Makefile.am b/decoders/mlx90614/Makefile.am
deleted file mode 100644
index babae0c..0000000
--- a/decoders/mlx90614/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2012 Uwe Hermann <uwe@hermann-uwe.de>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/mlx90614
-
-dist_pkgdata_DATA = __init__.py pd.py
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/mx25lxx05d/Makefile.am b/decoders/mx25lxx05d/Makefile.am
deleted file mode 100644
index 6f9cf1b..0000000
--- a/decoders/mx25lxx05d/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2012 Uwe Hermann <uwe@hermann-uwe.de>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/mx25lxx05d
-
-dist_pkgdata_DATA = __init__.py pd.py
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/mxc6225xu/Makefile.am b/decoders/mxc6225xu/Makefile.am
deleted file mode 100644
index 4908c6b..0000000
--- a/decoders/mxc6225xu/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2012 Uwe Hermann <uwe@hermann-uwe.de>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/mxc6225xu
-
-dist_pkgdata_DATA = __init__.py pd.py
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/nunchuk/Makefile.am b/decoders/nunchuk/Makefile.am
deleted file mode 100644
index 561281e..0000000
--- a/decoders/nunchuk/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2012 Uwe Hermann <uwe@hermann-uwe.de>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/nunchuk
-
-dist_pkgdata_DATA = __init__.py pd.py
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/onewire_link/Makefile.am b/decoders/onewire_link/Makefile.am
deleted file mode 100644
index f1be7b8..0000000
--- a/decoders/onewire_link/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2012 Uwe Hermann <uwe@hermann-uwe.de>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/onewire_link
-
-dist_pkgdata_DATA = __init__.py pd.py
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/onewire_network/Makefile.am b/decoders/onewire_network/Makefile.am
deleted file mode 100644
index 81c2fd1..0000000
--- a/decoders/onewire_network/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2012 Uwe Hermann <uwe@hermann-uwe.de>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/onewire_network
-
-dist_pkgdata_DATA = __init__.py pd.py
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/pan1321/Makefile.am b/decoders/pan1321/Makefile.am
deleted file mode 100644
index e501936..0000000
--- a/decoders/pan1321/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2012 Uwe Hermann <uwe@hermann-uwe.de>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/pan1321
-
-dist_pkgdata_DATA = __init__.py pd.py
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/parallel/Makefile.am b/decoders/parallel/Makefile.am
deleted file mode 100644
index 2371d10..0000000
--- a/decoders/parallel/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2013 Uwe Hermann <uwe@hermann-uwe.de>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/parallel
-
-dist_pkgdata_DATA = __init__.py pd.py
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/rtc8564/Makefile.am b/decoders/rtc8564/Makefile.am
deleted file mode 100644
index 3c08bef..0000000
--- a/decoders/rtc8564/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2012 Uwe Hermann <uwe@hermann-uwe.de>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/rtc8564
-
-dist_pkgdata_DATA = __init__.py pd.py
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/sdcard_spi/Makefile.am b/decoders/sdcard_spi/Makefile.am
deleted file mode 100644
index 3cf829b..0000000
--- a/decoders/sdcard_spi/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2012 Uwe Hermann <uwe@hermann-uwe.de>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/sdcard_spi
-
-dist_pkgdata_DATA = __init__.py pd.py
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/spi/Makefile.am b/decoders/spi/Makefile.am
deleted file mode 100644
index e63c32b..0000000
--- a/decoders/spi/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2012 Uwe Hermann <uwe@hermann-uwe.de>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/spi
-
-dist_pkgdata_DATA = __init__.py pd.py
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/tlc5620/Makefile.am b/decoders/tlc5620/Makefile.am
deleted file mode 100644
index 1eb5520..0000000
--- a/decoders/tlc5620/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2012 Uwe Hermann <uwe@hermann-uwe.de>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/tlc5620
-
-dist_pkgdata_DATA = __init__.py pd.py
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/transitioncounter/Makefile.am b/decoders/transitioncounter/Makefile.am
deleted file mode 100644
index 39b4b3c..0000000
--- a/decoders/transitioncounter/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2012 Uwe Hermann <uwe@hermann-uwe.de>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/transitioncounter
-
-dist_pkgdata_DATA = __init__.py pd.py
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/uart/Makefile.am b/decoders/uart/Makefile.am
deleted file mode 100644
index 89d90ec..0000000
--- a/decoders/uart/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2012 Uwe Hermann <uwe@hermann-uwe.de>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/uart
-
-dist_pkgdata_DATA = __init__.py pd.py
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/uart_dump/Makefile.am b/decoders/uart_dump/Makefile.am
deleted file mode 100644
index 1b7d780..0000000
--- a/decoders/uart_dump/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2012 Uwe Hermann <uwe@hermann-uwe.de>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/uart_dump
-
-dist_pkgdata_DATA = __init__.py pd.py
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/usb_packet/Makefile.am b/decoders/usb_packet/Makefile.am
deleted file mode 100644
index f095957..0000000
--- a/decoders/usb_packet/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2012 Uwe Hermann <uwe@hermann-uwe.de>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/usb_packet
-
-dist_pkgdata_DATA = __init__.py pd.py
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/usb_signalling/Makefile.am b/decoders/usb_signalling/Makefile.am
deleted file mode 100644
index 39c56ad..0000000
--- a/decoders/usb_signalling/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2012 Uwe Hermann <uwe@hermann-uwe.de>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/usb_signalling
-
-dist_pkgdata_DATA = __init__.py pd.py
-
-CLEANFILES = *.pyc
-
diff --git a/decoders/xfp/Makefile.am b/decoders/xfp/Makefile.am
deleted file mode 100644
index 68d982c..0000000
--- a/decoders/xfp/Makefile.am
+++ /dev/null
@@ -1,26 +0,0 @@
-##
-## This file is part of the libsigrokdecode project.
-##
-## Copyright (C) 2013 Bert Vermeulen <bert@biot.com>
-##
-## This program is free software; you can redistribute it and/or modify
-## it under the terms of the GNU General Public License as published by
-## the Free Software Foundation; either version 2 of the License, or
-## (at your option) any later version.
-##
-## This program is distributed in the hope that it will be useful,
-## but WITHOUT ANY WARRANTY; without even the implied warranty of
-## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-## GNU General Public License for more details.
-##
-## You should have received a copy of the GNU General Public License
-## along with this program; if not, write to the Free Software
-## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-##
-
-pkgdatadir = $(DECODERS_DIR)/xfp
-
-dist_pkgdata_DATA = __init__.py pd.py
-
-CLEANFILES = *.pyc
-
diff --git a/tools/install-decoders b/tools/install-decoders
new file mode 100755
index 0000000..8134539
--- /dev/null
+++ b/tools/install-decoders
@@ -0,0 +1,109 @@
+#!/usr/bin/env python3
+#
+# This file is part of the libsigrokdecode project.
+#
+# Copyright (C) 2012 Bert Vermeulen <bert@biot.com>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
+#
+
+import os
+import sys
+from shutil import copy
+from getopt import getopt
+
+
+def install(srcdir, dstdir):
+ worklist = []
+ for pd in os.listdir(srcdir):
+ pd_dir = srcdir + '/' + pd
+ if not os.path.isdir(pd_dir):
+ continue
+ install_list = []
+ for f in os.listdir(pd_dir):
+ pd_file = pd_dir + '/' + f
+ if not os.path.isfile(pd_file):
+ continue
+ if f == 'config':
+ install_list.extend(config_get_extra_install(pd_file))
+ elif f[-3:] == '.py':
+ install_list.append(f)
+ worklist.append((pd, pd_dir, install_list))
+
+ print("Installing %d protocol decoders:" % len(worklist))
+ col = 0
+ for pd, pd_dir, install_list in worklist:
+ msg = pd + ' '
+ if (col + len(msg) > 80):
+ print()
+ col = 0
+ print(msg, end='')
+ col += len(msg)
+ pd_dst = dstdir + '/' + pd
+ try:
+ os.mkdir(pd_dst)
+ except FileExistsError:
+ pass
+ for f in install_list:
+ copy(pd_dir + '/' + f, pd_dst)
+ print()
+
+
+def config_get_extra_install(config_file):
+ install_list = []
+ for line in open(config_file).read().split('\n'):
+ line = line.strip()
+ if len(line) == 0 or line[0] == '#':
+ continue
+ words = line.split()
+ if words[0] != 'extra-install':
+ continue
+ install_list.extend(words[1:])
+
+ return install_list
+
+
+def usage(msg=None):
+ if msg:
+ print(msg)
+ ret = 1
+ else:
+ ret = 0
+ print("""Usage:
+ install-decoders [-i <decoder source>] -o <install path>""")
+ sys.exit(ret)
+
+
+#
+# main
+#
+
+src = 'decoders'
+dst = None
+try:
+ opts, args = getopt(sys.argv[1:], 'i:o:')
+ for opt, arg in opts:
+ if opt == '-i':
+ src = arg
+ elif opt == '-o':
+ dst = arg
+except Exception as e:
+ usage(str(e))
+
+if len(args) != 0 or dst is None:
+ usage()
+
+install(src, dst)
+
+