gnu: Add AVRDUDE
* gnu/packages/avrdude.scm: New file * gnu-system.am (GNU_SYSTEM_MODULES): Add avrdude.scm * gnu/packages/patches/avrdude-fix-libusb.patch: New patch. * gnu-system.am (dist_patch_DATA): Add it. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
		
							parent
							
								
									3a09e1d2e8
								
							
						
					
					
						commit
						4acd5c0f9a
					
				
					 3 changed files with 316 additions and 0 deletions
				
			
		|  | @ -37,6 +37,7 @@ GNU_SYSTEM_MODULES =				\ | ||||||
|   gnu/packages/autogen.scm			\ |   gnu/packages/autogen.scm			\ | ||||||
|   gnu/packages/autotools.scm			\ |   gnu/packages/autotools.scm			\ | ||||||
|   gnu/packages/avahi.scm			\ |   gnu/packages/avahi.scm			\ | ||||||
|  |   gnu/packages/avrdude.scm			\ | ||||||
|   gnu/packages/backup.scm			\ |   gnu/packages/backup.scm			\ | ||||||
|   gnu/packages/base.scm				\ |   gnu/packages/base.scm				\ | ||||||
|   gnu/packages/bash.scm				\ |   gnu/packages/bash.scm				\ | ||||||
|  | @ -280,6 +281,7 @@ dist_patch_DATA =						\ | ||||||
|   gnu/packages/patches/apr-skip-getservbyname-test.patch	\ |   gnu/packages/patches/apr-skip-getservbyname-test.patch	\ | ||||||
|   gnu/packages/patches/automake-skip-amhello-tests.patch	\ |   gnu/packages/patches/automake-skip-amhello-tests.patch	\ | ||||||
|   gnu/packages/patches/avahi-localstatedir.patch		\ |   gnu/packages/patches/avahi-localstatedir.patch		\ | ||||||
|  |   gnu/packages/patches/avrdude-fix-libusb.patch			\ | ||||||
|   gnu/packages/patches/bigloo-gc-shebangs.patch			\ |   gnu/packages/patches/bigloo-gc-shebangs.patch			\ | ||||||
|   gnu/packages/patches/binutils-ld-new-dtags.patch		\ |   gnu/packages/patches/binutils-ld-new-dtags.patch		\ | ||||||
|   gnu/packages/patches/binutils-loongson-workaround.patch	\ |   gnu/packages/patches/binutils-loongson-workaround.patch	\ | ||||||
|  |  | ||||||
							
								
								
									
										58
									
								
								gnu/packages/avrdude.scm
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								gnu/packages/avrdude.scm
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,58 @@ | ||||||
|  | ;;; GNU Guix --- Functional package management for GNU | ||||||
|  | ;;; Copyright © 2014 Manolis Fragkiskos Ragkousis <manolis837@gmail.com> | ||||||
|  | ;;; | ||||||
|  | ;;; This file is part of GNU Guix. | ||||||
|  | ;;; | ||||||
|  | ;;; GNU Guix 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. | ||||||
|  | ;;; | ||||||
|  | ;;; GNU Guix 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 GNU Guix.  If not, see <http://www.gnu.org/licenses/>. | ||||||
|  | 
 | ||||||
|  | (define-module (gnu packages avrdude) | ||||||
|  |   #:use-module (guix licenses) | ||||||
|  |   #:use-module (guix download) | ||||||
|  |   #:use-module (guix packages) | ||||||
|  |   #:use-module (gnu packages) | ||||||
|  |   #:use-module (guix build-system gnu) | ||||||
|  |   #:use-module (gnu packages bison) | ||||||
|  |   #:use-module (gnu packages flex) | ||||||
|  |   #:use-module (gnu packages elf) | ||||||
|  |   #:use-module (gnu packages libusb) | ||||||
|  |   #:use-module (gnu packages libftdi)) | ||||||
|  | 
 | ||||||
|  | (define-public avrdude | ||||||
|  |   (package | ||||||
|  |     (name "avrdude") | ||||||
|  |     (version "6.1") | ||||||
|  |     (source | ||||||
|  |      (origin | ||||||
|  |       (method url-fetch) | ||||||
|  |       (uri (string-append "mirror://savannah/avrdude/avrdude-" | ||||||
|  |                           version ".tar.gz")) | ||||||
|  |       (sha256 | ||||||
|  |        (base32 | ||||||
|  |         "0frxg0q09nrm95z7ymzddx7ysl77ilfbdix1m81d9jjpiv5bm64y")) | ||||||
|  |       (patches (list (search-patch "avrdude-fix-libusb.patch"))))) | ||||||
|  |     (build-system gnu-build-system) | ||||||
|  |     (inputs | ||||||
|  |      `(("libelf" ,libelf) | ||||||
|  |        ("libusb" ,libusb) | ||||||
|  |        ("libftdi" ,libftdi))) | ||||||
|  |     (native-inputs | ||||||
|  |      `(("bison" ,bison) | ||||||
|  |        ("flex" ,flex))) | ||||||
|  |     (home-page "http://www.nongnu.org/avrdude/") | ||||||
|  |     (synopsis "AVR downloader and uploader") | ||||||
|  |     (description | ||||||
|  |      "AVRDUDE is a utility to download/upload/manipulate the ROM and | ||||||
|  | EEPROM contents of AVR microcontrollers using the in-system programming | ||||||
|  | technique (ISP).") | ||||||
|  |     (license gpl2+))) | ||||||
							
								
								
									
										256
									
								
								gnu/packages/patches/avrdude-fix-libusb.patch
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										256
									
								
								gnu/packages/patches/avrdude-fix-libusb.patch
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,256 @@ | ||||||
|  | Avrdude cannot build with our version of libusb. This patch fixes that. | ||||||
|  | See http://savannah.nongnu.org/bugs/?41854 | ||||||
|  | 
 | ||||||
|  | diff --git a/dfu.c b/dfu.c
 | ||||||
|  | index 7d349bc..0f80440 100644
 | ||||||
|  | --- a/dfu.c
 | ||||||
|  | +++ b/dfu.c
 | ||||||
|  | @@ -36,13 +36,14 @@
 | ||||||
|  |   | ||||||
|  |  #ifndef HAVE_LIBUSB | ||||||
|  |   | ||||||
|  | -int dfu_open(struct dfu_dev *dfu, char *port_name) {
 | ||||||
|  | +struct dfu_dev * dfu_open(char *port_spec) {
 | ||||||
|  |    fprintf(stderr, "%s: Error: No USB support in this compile of avrdude\n", | ||||||
|  |      progname); | ||||||
|  | -  return -1;
 | ||||||
|  | +  return NULL;
 | ||||||
|  |  } | ||||||
|  |   | ||||||
|  | -int dfu_init(struct dfu_dev *dfu, unsigned short usb_pid) {
 | ||||||
|  | +int dfu_init(struct dfu_dev *dfu,
 | ||||||
|  | +  unsigned short vid, unsigned short pid) {
 | ||||||
|  |    return -1; | ||||||
|  |  } | ||||||
|  |   | ||||||
|  | diff --git a/flip1.c b/flip1.c
 | ||||||
|  | index b891d80..0959996 100644
 | ||||||
|  | --- a/flip1.c
 | ||||||
|  | +++ b/flip1.c
 | ||||||
|  | @@ -164,6 +164,8 @@ static void flip1_setup(PROGRAMMER * pgm);
 | ||||||
|  |  static void flip1_teardown(PROGRAMMER * pgm); | ||||||
|  |   | ||||||
|  |  /* INTERNAL PROGRAMMER FUNCTION PROTOTYPES */ | ||||||
|  | +#ifdef HAVE_LIBUSB
 | ||||||
|  | +// The internal ones are made conditional, as they're not defined further down #ifndef HAVE_LIBUSB
 | ||||||
|  |   | ||||||
|  |  static void flip1_show_info(struct flip1 *flip1); | ||||||
|  |   | ||||||
|  | @@ -177,6 +179,8 @@ static const char * flip1_mem_unit_str(enum flip1_mem_unit mem_unit);
 | ||||||
|  |  static int flip1_set_mem_page(struct dfu_dev *dfu, unsigned short page_addr); | ||||||
|  |  static enum flip1_mem_unit flip1_mem_unit(const char *name); | ||||||
|  |   | ||||||
|  | +#endif /* HAVE_LIBUSB */
 | ||||||
|  | +
 | ||||||
|  |  /* THE INITPGM FUNCTION DEFINITIONS */ | ||||||
|  |   | ||||||
|  |  void flip1_initpgm(PROGRAMMER *pgm) | ||||||
|  | @@ -201,6 +205,7 @@ void flip1_initpgm(PROGRAMMER *pgm)
 | ||||||
|  |    pgm->teardown         = flip1_teardown; | ||||||
|  |  } | ||||||
|  |   | ||||||
|  | +#ifdef HAVE_LIBUSB
 | ||||||
|  |  /* EXPORTED PROGRAMMER FUNCTION DEFINITIONS */ | ||||||
|  |   | ||||||
|  |  int flip1_open(PROGRAMMER *pgm, char *port_spec) | ||||||
|  | @@ -876,3 +881,82 @@ enum flip1_mem_unit flip1_mem_unit(const char *name) {
 | ||||||
|  |      return FLIP1_MEM_UNIT_EEPROM; | ||||||
|  |    return FLIP1_MEM_UNIT_UNKNOWN; | ||||||
|  |  } | ||||||
|  | +#else /* HAVE_LIBUSB */
 | ||||||
|  | +// Dummy functions
 | ||||||
|  | +int flip1_open(PROGRAMMER *pgm, char *port_spec)
 | ||||||
|  | +{
 | ||||||
|  | +  fprintf(stderr, "%s: Error: No USB support in this compile of avrdude\n",
 | ||||||
|  | +    progname);
 | ||||||
|  | +  return NULL;
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +int flip1_initialize(PROGRAMMER* pgm, AVRPART *part)
 | ||||||
|  | +{
 | ||||||
|  | +  return -1;
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +void flip1_close(PROGRAMMER* pgm)
 | ||||||
|  | +{
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +void flip1_enable(PROGRAMMER* pgm)
 | ||||||
|  | +{
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +void flip1_disable(PROGRAMMER* pgm)
 | ||||||
|  | +{
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +void flip1_display(PROGRAMMER* pgm, const char *prefix)
 | ||||||
|  | +{
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +int flip1_program_enable(PROGRAMMER* pgm, AVRPART *part)
 | ||||||
|  | +{
 | ||||||
|  | +  return -1;
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +int flip1_chip_erase(PROGRAMMER* pgm, AVRPART *part)
 | ||||||
|  | +{
 | ||||||
|  | +  return -1;
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +int flip1_read_byte(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem,
 | ||||||
|  | +  unsigned long addr, unsigned char *value)
 | ||||||
|  | +{
 | ||||||
|  | +  return -1;
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +int flip1_write_byte(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem,
 | ||||||
|  | +  unsigned long addr, unsigned char value)
 | ||||||
|  | +{
 | ||||||
|  | +  return -1;
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +int flip1_paged_load(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem,
 | ||||||
|  | +  unsigned int page_size, unsigned int addr, unsigned int n_bytes)
 | ||||||
|  | +{
 | ||||||
|  | +  return -1;
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +int flip1_paged_write(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem,
 | ||||||
|  | +  unsigned int page_size, unsigned int addr, unsigned int n_bytes)
 | ||||||
|  | +{
 | ||||||
|  | +  return -1;
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +int flip1_read_sig_bytes(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem)
 | ||||||
|  | +{
 | ||||||
|  | +  return -1;
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +void flip1_setup(PROGRAMMER * pgm)
 | ||||||
|  | +{
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +void flip1_teardown(PROGRAMMER * pgm)
 | ||||||
|  | +{
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +
 | ||||||
|  | +#endif /* HAVE_LIBUSB */
 | ||||||
|  | \ No newline at end of file | ||||||
|  | 
 | ||||||
|  | diff --git a/flip2.c b/flip2.c
 | ||||||
|  | index ed8e996..16c4bf8 100644
 | ||||||
|  | --- a/flip2.c
 | ||||||
|  | +++ b/flip2.c
 | ||||||
|  | @@ -151,6 +151,8 @@ static void flip2_setup(PROGRAMMER * pgm);
 | ||||||
|  |  static void flip2_teardown(PROGRAMMER * pgm); | ||||||
|  |   | ||||||
|  |  /* INTERNAL PROGRAMMER FUNCTION PROTOTYPES */ | ||||||
|  | +#ifdef HAVE_LIBUSB
 | ||||||
|  | +// The internal ones are made conditional, as they're not defined further down #ifndef HAVE_LIBUSB
 | ||||||
|  |   | ||||||
|  |  static void flip2_show_info(struct flip2 *flip2); | ||||||
|  |   | ||||||
|  | @@ -171,6 +173,8 @@ static const char * flip2_status_str(const struct dfu_status *status);
 | ||||||
|  |  static const char * flip2_mem_unit_str(enum flip2_mem_unit mem_unit); | ||||||
|  |  static enum flip2_mem_unit flip2_mem_unit(const char *name); | ||||||
|  |   | ||||||
|  | +#endif /* HAVE_LIBUSB */
 | ||||||
|  | +
 | ||||||
|  |  /* THE INITPGM FUNCTION DEFINITIONS */ | ||||||
|  |   | ||||||
|  |  void flip2_initpgm(PROGRAMMER *pgm) | ||||||
|  | @@ -195,6 +199,7 @@ void flip2_initpgm(PROGRAMMER *pgm)
 | ||||||
|  |    pgm->teardown         = flip2_teardown; | ||||||
|  |  } | ||||||
|  |   | ||||||
|  | +#ifdef HAVE_LIBUSB
 | ||||||
|  |  /* EXPORTED PROGRAMMER FUNCTION DEFINITIONS */ | ||||||
|  |   | ||||||
|  |  int flip2_open(PROGRAMMER *pgm, char *port_spec) | ||||||
|  | @@ -922,3 +927,85 @@ enum flip2_mem_unit flip2_mem_unit(const char *name) {
 | ||||||
|  |      return FLIP2_MEM_UNIT_SIGNATURE; | ||||||
|  |    return FLIP2_MEM_UNIT_UNKNOWN; | ||||||
|  |  } | ||||||
|  | +
 | ||||||
|  | +#else /* HAVE_LIBUSB */
 | ||||||
|  | +
 | ||||||
|  | +/* EXPORTED PROGRAMMER FUNCTION DEFINITIONS */
 | ||||||
|  | +
 | ||||||
|  | +int flip2_open(PROGRAMMER *pgm, char *port_spec)
 | ||||||
|  | +{
 | ||||||
|  | +  fprintf(stderr, "%s: Error: No USB support in this compile of avrdude\n",
 | ||||||
|  | +    progname);
 | ||||||
|  | +  return NULL;
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +int flip2_initialize(PROGRAMMER* pgm, AVRPART *part)
 | ||||||
|  | +{
 | ||||||
|  | +  return -1;
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +void flip2_close(PROGRAMMER* pgm)
 | ||||||
|  | +{
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +void flip2_enable(PROGRAMMER* pgm)
 | ||||||
|  | +{
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +void flip2_disable(PROGRAMMER* pgm)
 | ||||||
|  | +{
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +void flip2_display(PROGRAMMER* pgm, const char *prefix)
 | ||||||
|  | +{
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +int flip2_program_enable(PROGRAMMER* pgm, AVRPART *part)
 | ||||||
|  | +{
 | ||||||
|  | +  return -1;
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +int flip2_chip_erase(PROGRAMMER* pgm, AVRPART *part)
 | ||||||
|  | +{
 | ||||||
|  | +  return -1;
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +int flip2_read_byte(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem,
 | ||||||
|  | +  unsigned long addr, unsigned char *value)
 | ||||||
|  | +{
 | ||||||
|  | +  return -1;
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +int flip2_write_byte(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem,
 | ||||||
|  | +  unsigned long addr, unsigned char value)
 | ||||||
|  | +{
 | ||||||
|  | +  return -1;
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +int flip2_paged_load(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem,
 | ||||||
|  | +  unsigned int page_size, unsigned int addr, unsigned int n_bytes)
 | ||||||
|  | +{
 | ||||||
|  | +  return -1;
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +int flip2_paged_write(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem,
 | ||||||
|  | +  unsigned int page_size, unsigned int addr, unsigned int n_bytes)
 | ||||||
|  | +{
 | ||||||
|  | +  return -1;
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +int flip2_read_sig_bytes(PROGRAMMER* pgm, AVRPART *part, AVRMEM *mem)
 | ||||||
|  | +{
 | ||||||
|  | +  return -1;
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +void flip2_setup(PROGRAMMER * pgm)
 | ||||||
|  | +{
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +void flip2_teardown(PROGRAMMER * pgm)
 | ||||||
|  | +{
 | ||||||
|  | +}
 | ||||||
|  | +
 | ||||||
|  | +
 | ||||||
|  | +#endif /* HAVE_LIBUSB */
 | ||||||
		Reference in a new issue