unofficial mirror of guix-patches@gnu.org 
 help / color / mirror / code / Atom feed
From: elaexuotee--- via Guix-patches via <guix-patches@gnu.org>
To: 41574@debbugs.gnu.org
Subject: [bug#41574] gnu: Add xed.
Date: Thu, 28 May 2020 17:41:52 +0900	[thread overview]
Message-ID: <30SSS7KMH7STU.2VZS2NNFF6QOP@wilsonb.com> (raw)


[-- Attachment #1.1: Type: text/plain, Size: 1626 bytes --]

This patch packages up Intel's X86 Encoder and Decoder library and associated
cli tool "examples."

A few things of note:

1) The build uses Intel's custom Python build tool `mbuild' so we have to
   manually handle the main build phases. We may need to add explicit options
   to the build script invocation so that build variables (e.g. CFLAGS etc.)
   propogate correctly. These don't look to be set in the environment, so what
   variables should we pick be picking up and from where?

2) The group of tests under `tests/tests-avx512pf' seems to be failing. A user
   on the irc channel also cross-checked for me and confirmed the same. This
   program isn't actually *executing* the avx instructions, so I don't think
   the failing test are specific to the executing cpu. Anyway, I opted to leave
   this test in the source commented out.

3) The commands provided by the `out' output are pretty poorly documented and
   have dumb names. I suspose this is becase the utilities are branded as just
   "examples" of using the library. Anyway, this is a case where the only
   reasonable documentation is the source code, so I provide that for the
   utilities in the `doc' output.

4) Finally, the `devel' output supplies the library and headers proper.

5) The package name `xed' potentially collides with the package from
   http://xed.sourceforge.net/. We don't currently have the latter yet, but I
   mention this just in case there is a good way to proactively handle this up
   front.

Thoughts? I threw this together just because I wanted it myself but figured
it's worth sharing.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: 0001-gnu-Add-xed.patch --]
[-- Type: text/x-patch, Size: 5656 bytes --]

From 9ec113c2bfed745ffe28bdbc4510fa799bea5199 Mon Sep 17 00:00:00 2001
From: "B. Wilson" <elaexuotee@wilsonb.com>
Date: Thu, 28 May 2020 07:32:28 +0900
Subject: [PATCH] gnu: Add xed.
To: guix-patches@gnu.org

* gnu/packages/assembly.scm (xed): New variable.
---
 gnu/packages/assembly.scm | 92 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 92 insertions(+)

diff --git a/gnu/packages/assembly.scm b/gnu/packages/assembly.scm
index c775603445..f0293fe54d 100644
--- a/gnu/packages/assembly.scm
+++ b/gnu/packages/assembly.scm
@@ -8,6 +8,7 @@
 ;;; Copyright © 2019 Andy Tai <atai@atai.org>
 ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
 ;;; Copyright © 2020 Christopher Lemmer Webber <cwebber@dustycloud.org>
+;;; Copyright © 2020 B. Wilson <elaexuotee@wilsonb.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -371,3 +372,94 @@ It understands mnemonics and generates code for NMOS 6502s (such
 as 6502A, 6504, 6507, 6510, 7501, 8500, 8501, 8502 ...),
  CMOS 6502s (65C02 and Rockwell R65C02) and the 65816.")
     (license license:gpl2)))
+
+(define-public xed
+  (package
+    (name "xed")
+    (version "11.2.0")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/intelxed/xed/archive/"
+                           version ".tar.gz"))
+       (sha256
+        (base32 "1dl23wxz0dlkbcw6k78njnz2yc8a8yr4lp979sd9x1lnz74malvi"))
+       (file-name (string-append name "-" version ".tar.gz"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("python-2" ,python-2)
+       ("python-3" ,python-3)
+       ("mbuild"
+        ,(let ((name "mbuild")
+               (version "0.2496"))
+           (origin
+             (method git-fetch)
+             (uri (git-reference
+                   (url "https://github.com/intelxed/mbuild.git")
+                   (commit "5304b94361fccd830c0e2417535a866b79c1c297")))
+             (sha256
+              (base32
+               "0r3avc3035aklqxcnc14rlmmwpj3jp09vbcbwynhvvmcp8srl7dl"))
+             (file-name (git-file-name name version)))))))
+    (arguments
+     `(#:phases
+       ;; Upstream uses the custom Python build tool `mbuild', so we munge
+       ;; gnu-build-system to fit.  The build process for this package is
+       ;; documented at https://intelxed.github.io/build-manual/.
+       (let* ((build-dir "build")
+              (kit-dir "kit"))
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (replace 'build
+             (lambda* (#:key inputs #:allow-other-keys)
+               (let ((mbuild (assoc-ref inputs "mbuild")))
+                 ;; The build system requires that `mbuild' be in a sibling
+                 ;; directory to the project's source.
+                 (symlink mbuild "../mbuild")
+                 (invoke "./mfile.py"
+                         (string-append "--build-dir=" build-dir)
+                         (string-append "--install-dir=" kit-dir)
+                         "examples"
+                         "doc"
+                         "install"))))
+           (replace 'check
+             (lambda _
+               (invoke "tests/run-cmd.py"
+                       (string-append "--build-dir=" kit-dir "/bin")
+                       "--tests" "tests/tests-base"
+                       "--tests" "tests/tests-avx512"
+                       ; "--tests" "tests/tests-avx512pf"  ; Broken
+                       "--tests" "tests/tests-cet"
+                       "--tests" "tests/tests-via"
+                       "--tests" "tests/tests-syntax"
+                       "--tests" "tests/tests-xop")))
+           (replace 'install
+             (lambda* (#:key outputs #:allow-other-keys)
+               (let* ((out (assoc-ref outputs "out"))
+                      (doc (assoc-ref outputs "doc"))
+                      (devel (assoc-ref outputs "devel"))
+                      (pkg (strip-store-file-name out)))
+                 (copy-recursively (string-append kit-dir "/bin")
+                                   (string-append out "/bin"))
+                 (copy-recursively (string-append kit-dir "/examples")
+                                   (string-append doc "/share/doc/" pkg
+                                                  "/examples"))
+                 (copy-recursively (string-append kit-dir "/include")
+                                   (string-append devel "/include"))
+                 (copy-recursively (string-append kit-dir "/lib")
+                                   (string-append devel "/lib")))))))))
+    (outputs '("out" "devel" "doc"))
+    (home-page "https://intelxed.github.io/")
+    (synopsis "Encoder and decoder for x86 (IA32 and Intel64) instructions")
+    (description "The X86 Encoder Decoder (XED) is a software library and
+for encoding and decoding X86 (IA32 and Intel64) instructions.  The decoder
+takes sequences of 1-15 bytes along with machine mode information and produces
+a data structure describing the opcode, operands, and flags.  The encoder takes
+a similar data structure and produces a sequence of 1 to 15 bytes.  Disassembly
+is essentially a printing pass on the data structure.
+
+The default output contains a family of command line wrappers @code{xed*}
+around the library with the development files themselves in the @code{devel}
+output.  See the @code{doc} output for documentation and examples about the
+library, including the source code to the @code{xed*} utilities.")
+    (license license:asl2.0)))
-- 
2.26.2


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 260 bytes --]

             reply	other threads:[~2020-05-28  8:43 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-28  8:41 elaexuotee--- via Guix-patches via [this message]
2020-05-30  4:16 ` [bug#41574] gnu: Add xev elaexuotee--- via Guix-patches via
2020-06-03 10:33 ` [bug#41574] gnu: Add intel-xev elaexuotee--- via Guix-patches via
2020-06-22 20:49   ` Marius Bakke
2020-06-23  6:04     ` elaexuotee--- via Guix-patches via
2020-06-24 19:55       ` Marius Bakke
2020-06-24 19:59         ` Marius Bakke
2020-06-25  2:50         ` elaexuotee--- via Guix-patches via
2020-07-21 21:02           ` bug#41574: " Marius Bakke
2020-07-24  6:56             ` [bug#41574] " elaexuotee--- via Guix-patches via

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=30SSS7KMH7STU.2VZS2NNFF6QOP@wilsonb.com \
    --to=guix-patches@gnu.org \
    --cc=41574@debbugs.gnu.org \
    --cc=elaexuotee@wilsonb.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).