diff --git a/gnu/local.mk b/gnu/local.mk index a0e3f6ebe0..75065b019d 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -968,6 +968,7 @@ dist_patch_DATA = \ %D%/packages/patches/perl-module-pluggable-search.patch \ %D%/packages/patches/perl-reproducible-build-date.patch \ %D%/packages/patches/perl-www-curl-remove-symbol.patch \ + %D%/packages/patches/picprog-non-intel-support.patch \ %D%/packages/patches/pidgin-add-search-path.patch \ %D%/packages/patches/pinball-const-fix.patch \ %D%/packages/patches/pinball-cstddef.patch \ diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm index 82080d8ebd..029b5a5c24 100644 --- a/gnu/packages/embedded.scm +++ b/gnu/packages/embedded.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2016, 2017 Ricardo Wurmus ;;; Copyright © 2016, 2017 Theodoros Foradis ;;; Copyright © 2016 David Craven +;;; Copyright © 2017 Efraim Flashner ;;; ;;; This file is part of GNU Guix. ;;; @@ -944,7 +945,8 @@ (define-public picprog (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1r04hg1n3v2jf915qr05la3q9cxy7a5jnh9cc98j04lh6c9p4x85")))) + "1r04hg1n3v2jf915qr05la3q9cxy7a5jnh9cc98j04lh6c9p4x85")) + (patches (search-patches "picprog-non-intel-support.patch")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; No tests exist. @@ -954,7 +956,8 @@ (define-public picprog (lambda* (#:key outputs #:allow-other-keys) (substitute* "Makefile" (("/usr/local") (assoc-ref outputs "out")) - ((" -o 0 -g 0 ") " ")) + ((" -o 0 -g 0 ") " ") + (("testport") "")) #t)) (add-before 'install 'mkdir (lambda* (#:key outputs #:allow-other-keys) diff --git a/gnu/packages/patches/picprog-non-intel-support.patch b/gnu/packages/patches/picprog-non-intel-support.patch new file mode 100644 index 0000000000..8908207011 --- /dev/null +++ b/gnu/packages/patches/picprog-non-intel-support.patch @@ -0,0 +1,74 @@ +https://sources.debian.org/data/main/p/picprog/1.9.1-3/debian/patches/20_iopl.patch + +Description: Avoid some functions in some architectures + Upstream uses iopl() function and other architecture-dependent + codes. This patch adds building switches to avoid them in + some architectures. +Author: Koichi Akabe +Last-Update: 2011-11-30 + +--- picprog-1.9.1.orig/picport.cc ++++ picprog-1.9.1/picport.cc +@@ -38,7 +38,12 @@ + #include + + #include +-#include ++ ++#if defined(__i386__) || defined(__x86_64__) ++ #include ++ #define HAVE_IOPL ++#endif ++ + #include + #include + #include +@@ -160,8 +165,12 @@ + // Not root. Cannot use realtime scheduling. + use_nanosleep = 0; + } ++#ifdef HAVE_IOPL + if (iopl (3)) + disable_interrupts = 0; ++#else ++ disable_interrupts = 0; ++#endif + + #ifdef CPU_SETSIZE + // When computing the delay loops, we do not want the cpu's to change. +@@ -403,13 +412,17 @@ + { + struct timeval tv1, tv2; + gettimeofday (&tv1, 0); ++#if defined(__i386__) or defined(__x86_64__) + if (tsc_1000ns > 1 && disable_interrupts) + asm volatile("pushf; cli"); ++#endif + set_clock_data (1, b); // set data, clock up + delay (cable_delay); + set_clock_data (0, b); // clock down ++#if defined(__i386__) or defined(__x86_64__) + if (tsc_1000ns > 1 && disable_interrupts) + asm volatile("popf"); ++#endif + gettimeofday (&tv2, 0); + + // We may have spent a long time in an interrupt or in another task +@@ -428,13 +441,17 @@ + { + struct timeval tv1, tv2; + gettimeofday (&tv1, 0); ++#if defined(__i386__) or defined(__x86_64__) + if (tsc_1000ns > 1 && disable_interrupts) + asm volatile("pushf; cli"); ++#endif + set_clock_data (1, 1); // clock up + delay (cable_delay); + set_clock_data (0, 1); // set data up, clock down ++#if defined(__i386__) or defined(__x86_64__) + if (tsc_1000ns > 1 && disable_interrupts) + asm volatile("popf"); ++#endif + gettimeofday (&tv2, 0); + + // We may have spent a long time in an interrupt or in another task