* [PATCH] gnu: java-swt: Use other archive on 64-bit systems.
@ 2016-05-09 14:16 Ricardo Wurmus
2016-05-09 18:03 ` Efraim Flashner
0 siblings, 1 reply; 5+ messages in thread
From: Ricardo Wurmus @ 2016-05-09 14:16 UTC (permalink / raw)
To: guix-devel
* gnu/packages/java.scm (java-swt)[source]: Use separate source archive
for 64-bit systems.
---
gnu/packages/java.scm | 37 +++++++++++++++++++++++++++----------
1 file changed, 27 insertions(+), 10 deletions(-)
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 45e5683..d2a93bc 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -51,21 +51,38 @@
#:use-module (gnu packages xorg)
#:use-module (gnu packages zip)
#:use-module (gnu packages texinfo)
- #:use-module ((srfi srfi-1) #:select (fold alist-delete)))
+ #:use-module ((srfi srfi-1) #:select (fold alist-delete))
+ #:use-module (srfi srfi-11)
+ #:use-module (ice-9 match))
(define-public java-swt
(package
(name "java-swt")
(version "4.5")
- (source (origin
- (method url-fetch)
- (uri (string-append
- "http://ftp-stud.fht-esslingen.de/pub/Mirrors/"
- "eclipse/eclipse/downloads/drops4/R-" version
- "-201506032000/swt-" version "-gtk-linux-x86.zip"))
- (sha256
- (base32
- "03mhzraikcs4fsz7d3h5af9pw1bbcfd6dglsvbk2ciwimy9zj30q"))))
+ (source
+ ;; The types of many variables and procedures differ in the sources
+ ;; dependent on whether the target architecture is a 32-bit system or a
+ ;; 64-bit system. Instead of patching the sources on demand in a build
+ ;; phase we download either the 32-bit archive (which mostly uses "int"
+ ;; types) or the 64-bit archive (which mostly uses "long" types).
+ (let ((hash32 "03mhzraikcs4fsz7d3h5af9pw1bbcfd6dglsvbk2ciwimy9zj30q")
+ (hash64 "1qq0pjll6030v4ml0hifcaaik7sx3fl7ghybfdw95vsvxafwp2ff")
+ (file32 "x86")
+ (file64 "x86_64"))
+ (let-values (((hash file)
+ (match (or (%current-target-system) (%current-system))
+ ("i686-linux" (values hash32 file32))
+ ("x86_64-linux" (values hash64 file64))
+ ("armhf-linux" (values hash32 file32))
+ ("mips64el-linux" (values hash64 file64))
+ (_ (values hash32 file32)))))
+ (origin
+ (method url-fetch)
+ (uri (string-append
+ "http://ftp-stud.fht-esslingen.de/pub/Mirrors/"
+ "eclipse/eclipse/downloads/drops4/R-" version
+ "-201506032000/swt-" version "-gtk-linux-" file ".zip"))
+ (sha256 (base32 hash))))))
(build-system ant-build-system)
(arguments
`(#:jar-name "swt.jar"
--
2.7.3
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] gnu: java-swt: Use other archive on 64-bit systems.
2016-05-09 14:16 [PATCH] gnu: java-swt: Use other archive on 64-bit systems Ricardo Wurmus
@ 2016-05-09 18:03 ` Efraim Flashner
2016-05-09 20:03 ` Ricardo Wurmus
2016-06-07 10:43 ` Ricardo Wurmus
0 siblings, 2 replies; 5+ messages in thread
From: Efraim Flashner @ 2016-05-09 18:03 UTC (permalink / raw)
To: Ricardo Wurmus; +Cc: guix-devel
[-- Attachment #1: Type: text/plain, Size: 3263 bytes --]
On Mon, May 09, 2016 at 04:16:33PM +0200, Ricardo Wurmus wrote:
> * gnu/packages/java.scm (java-swt)[source]: Use separate source archive
> for 64-bit systems.
> ---
> gnu/packages/java.scm | 37 +++++++++++++++++++++++++++----------
> 1 file changed, 27 insertions(+), 10 deletions(-)
>
> diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
> index 45e5683..d2a93bc 100644
> --- a/gnu/packages/java.scm
> +++ b/gnu/packages/java.scm
> @@ -51,21 +51,38 @@
> #:use-module (gnu packages xorg)
> #:use-module (gnu packages zip)
> #:use-module (gnu packages texinfo)
> - #:use-module ((srfi srfi-1) #:select (fold alist-delete)))
> + #:use-module ((srfi srfi-1) #:select (fold alist-delete))
> + #:use-module (srfi srfi-11)
> + #:use-module (ice-9 match))
>
> (define-public java-swt
> (package
> (name "java-swt")
> (version "4.5")
> - (source (origin
> - (method url-fetch)
> - (uri (string-append
> - "http://ftp-stud.fht-esslingen.de/pub/Mirrors/"
> - "eclipse/eclipse/downloads/drops4/R-" version
> - "-201506032000/swt-" version "-gtk-linux-x86.zip"))
> - (sha256
> - (base32
> - "03mhzraikcs4fsz7d3h5af9pw1bbcfd6dglsvbk2ciwimy9zj30q"))))
> + (source
> + ;; The types of many variables and procedures differ in the sources
> + ;; dependent on whether the target architecture is a 32-bit system or a
> + ;; 64-bit system. Instead of patching the sources on demand in a build
> + ;; phase we download either the 32-bit archive (which mostly uses "int"
> + ;; types) or the 64-bit archive (which mostly uses "long" types).
> + (let ((hash32 "03mhzraikcs4fsz7d3h5af9pw1bbcfd6dglsvbk2ciwimy9zj30q")
> + (hash64 "1qq0pjll6030v4ml0hifcaaik7sx3fl7ghybfdw95vsvxafwp2ff")
> + (file32 "x86")
> + (file64 "x86_64"))
> + (let-values (((hash file)
> + (match (or (%current-target-system) (%current-system))
> + ("i686-linux" (values hash32 file32))
> + ("x86_64-linux" (values hash64 file64))
> + ("armhf-linux" (values hash32 file32))
> + ("mips64el-linux" (values hash64 file64))
> + (_ (values hash32 file32)))))
If the catch-all is for 32-bit then you could leave out i686 and armhf.
With the values being x86 or x86_64, will it build on arm or mips?
> + (origin
> + (method url-fetch)
> + (uri (string-append
> + "http://ftp-stud.fht-esslingen.de/pub/Mirrors/"
> + "eclipse/eclipse/downloads/drops4/R-" version
> + "-201506032000/swt-" version "-gtk-linux-" file ".zip"))
> + (sha256 (base32 hash))))))
> (build-system ant-build-system)
> (arguments
> `(#:jar-name "swt.jar"
> --
> 2.7.3
>
>
>
--
Efraim Flashner <efraim@flashner.co.il> אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] gnu: java-swt: Use other archive on 64-bit systems.
2016-05-09 18:03 ` Efraim Flashner
@ 2016-05-09 20:03 ` Ricardo Wurmus
2016-06-07 10:43 ` Ricardo Wurmus
1 sibling, 0 replies; 5+ messages in thread
From: Ricardo Wurmus @ 2016-05-09 20:03 UTC (permalink / raw)
To: Efraim Flashner; +Cc: guix-devel
Efraim Flashner <efraim@flashner.co.il> writes:
>> - "03mhzraikcs4fsz7d3h5af9pw1bbcfd6dglsvbk2ciwimy9zj30q"))))
>> + (source
>> + ;; The types of many variables and procedures differ in the sources
>> + ;; dependent on whether the target architecture is a 32-bit system or a
>> + ;; 64-bit system. Instead of patching the sources on demand in a build
>> + ;; phase we download either the 32-bit archive (which mostly uses "int"
>> + ;; types) or the 64-bit archive (which mostly uses "long" types).
>> + (let ((hash32 "03mhzraikcs4fsz7d3h5af9pw1bbcfd6dglsvbk2ciwimy9zj30q")
>> + (hash64 "1qq0pjll6030v4ml0hifcaaik7sx3fl7ghybfdw95vsvxafwp2ff")
>> + (file32 "x86")
>> + (file64 "x86_64"))
>> + (let-values (((hash file)
>> + (match (or (%current-target-system) (%current-system))
>> + ("i686-linux" (values hash32 file32))
>> + ("x86_64-linux" (values hash64 file64))
>> + ("armhf-linux" (values hash32 file32))
>> + ("mips64el-linux" (values hash64 file64))
>> + (_ (values hash32 file32)))))
>
> If the catch-all is for 32-bit then you could leave out i686 and armhf.
> With the values being x86 or x86_64, will it build on arm or mips?
I only have a catch-all here, because I wouldn’t know what else I could
do here. Practically speaking we only have Icedtea packages for i686
and x86_64 right now, so we could just handle those cases.
The only difference between the different source archives is that the
32-bit version uses “int /*long*/”, whereas the other uses “/*int*/
long” in type declarations. This is important in at least one place
where the size of the “int” type is used at runtime to check whether we
are on a 32-bit or 64-bit system.
It’s all a bit messy and since we have no way of testing this on
architectures other than i686 and x86_64 I cannot say what a good
default would be. Maybe it would be better to only handle the two cases
we are sure of, and add others later. What do you think?
~~ Ricardo
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] gnu: java-swt: Use other archive on 64-bit systems.
2016-05-09 18:03 ` Efraim Flashner
2016-05-09 20:03 ` Ricardo Wurmus
@ 2016-06-07 10:43 ` Ricardo Wurmus
2016-06-07 11:44 ` Ludovic Courtès
1 sibling, 1 reply; 5+ messages in thread
From: Ricardo Wurmus @ 2016-06-07 10:43 UTC (permalink / raw)
To: Efraim Flashner; +Cc: guix-devel
Efraim Flashner <efraim@flashner.co.il> writes:
> On Mon, May 09, 2016 at 04:16:33PM +0200, Ricardo Wurmus wrote:
>> * gnu/packages/java.scm (java-swt)[source]: Use separate source archive
>> for 64-bit systems.
>> ---
>> gnu/packages/java.scm | 37 +++++++++++++++++++++++++++----------
>> 1 file changed, 27 insertions(+), 10 deletions(-)
>>
>> diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
>> index 45e5683..d2a93bc 100644
>> --- a/gnu/packages/java.scm
>> +++ b/gnu/packages/java.scm
>> @@ -51,21 +51,38 @@
>> #:use-module (gnu packages xorg)
>> #:use-module (gnu packages zip)
>> #:use-module (gnu packages texinfo)
>> - #:use-module ((srfi srfi-1) #:select (fold alist-delete)))
>> + #:use-module ((srfi srfi-1) #:select (fold alist-delete))
>> + #:use-module (srfi srfi-11)
>> + #:use-module (ice-9 match))
>>
>> (define-public java-swt
>> (package
>> (name "java-swt")
>> (version "4.5")
>> - (source (origin
>> - (method url-fetch)
>> - (uri (string-append
>> - "http://ftp-stud.fht-esslingen.de/pub/Mirrors/"
>> - "eclipse/eclipse/downloads/drops4/R-" version
>> - "-201506032000/swt-" version "-gtk-linux-x86.zip"))
>> - (sha256
>> - (base32
>> - "03mhzraikcs4fsz7d3h5af9pw1bbcfd6dglsvbk2ciwimy9zj30q"))))
>> + (source
>> + ;; The types of many variables and procedures differ in the sources
>> + ;; dependent on whether the target architecture is a 32-bit system or a
>> + ;; 64-bit system. Instead of patching the sources on demand in a build
>> + ;; phase we download either the 32-bit archive (which mostly uses "int"
>> + ;; types) or the 64-bit archive (which mostly uses "long" types).
>> + (let ((hash32 "03mhzraikcs4fsz7d3h5af9pw1bbcfd6dglsvbk2ciwimy9zj30q")
>> + (hash64 "1qq0pjll6030v4ml0hifcaaik7sx3fl7ghybfdw95vsvxafwp2ff")
>> + (file32 "x86")
>> + (file64 "x86_64"))
>> + (let-values (((hash file)
>> + (match (or (%current-target-system) (%current-system))
>> + ("i686-linux" (values hash32 file32))
>> + ("x86_64-linux" (values hash64 file64))
>> + ("armhf-linux" (values hash32 file32))
>> + ("mips64el-linux" (values hash64 file64))
>> + (_ (values hash32 file32)))))
>
> If the catch-all is for 32-bit then you could leave out i686 and armhf.
> With the values being x86 or x86_64, will it build on arm or mips?
I’ve pushed this after only handling the case of x86_64. Since we only
have working JDK packages for i686 and x86_64 right now, I think this
makes sense.
Thanks for your comments!
~~ Ricardo
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] gnu: java-swt: Use other archive on 64-bit systems.
2016-06-07 10:43 ` Ricardo Wurmus
@ 2016-06-07 11:44 ` Ludovic Courtès
0 siblings, 0 replies; 5+ messages in thread
From: Ludovic Courtès @ 2016-06-07 11:44 UTC (permalink / raw)
To: Ricardo Wurmus; +Cc: guix-devel
Halo!
Sorry for the late reply.
Ricardo Wurmus <rekado@elephly.net> skribis:
> Efraim Flashner <efraim@flashner.co.il> writes:
>
>> On Mon, May 09, 2016 at 04:16:33PM +0200, Ricardo Wurmus wrote:
>>> * gnu/packages/java.scm (java-swt)[source]: Use separate source archive
>>> for 64-bit systems.
>>> ---
>>> gnu/packages/java.scm | 37 +++++++++++++++++++++++++++----------
>>> 1 file changed, 27 insertions(+), 10 deletions(-)
>>>
>>> diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
>>> index 45e5683..d2a93bc 100644
>>> --- a/gnu/packages/java.scm
>>> +++ b/gnu/packages/java.scm
>>> @@ -51,21 +51,38 @@
>>> #:use-module (gnu packages xorg)
>>> #:use-module (gnu packages zip)
>>> #:use-module (gnu packages texinfo)
>>> - #:use-module ((srfi srfi-1) #:select (fold alist-delete)))
>>> + #:use-module ((srfi srfi-1) #:select (fold alist-delete))
>>> + #:use-module (srfi srfi-11)
>>> + #:use-module (ice-9 match))
>>>
>>> (define-public java-swt
>>> (package
>>> (name "java-swt")
>>> (version "4.5")
>>> - (source (origin
>>> - (method url-fetch)
>>> - (uri (string-append
>>> - "http://ftp-stud.fht-esslingen.de/pub/Mirrors/"
>>> - "eclipse/eclipse/downloads/drops4/R-" version
>>> - "-201506032000/swt-" version "-gtk-linux-x86.zip"))
>>> - (sha256
>>> - (base32
>>> - "03mhzraikcs4fsz7d3h5af9pw1bbcfd6dglsvbk2ciwimy9zj30q"))))
>>> + (source
>>> + ;; The types of many variables and procedures differ in the sources
>>> + ;; dependent on whether the target architecture is a 32-bit system or a
>>> + ;; 64-bit system. Instead of patching the sources on demand in a build
>>> + ;; phase we download either the 32-bit archive (which mostly uses "int"
>>> + ;; types) or the 64-bit archive (which mostly uses "long" types).
Really?! Are integer types the only difference?
>>> + (let ((hash32 "03mhzraikcs4fsz7d3h5af9pw1bbcfd6dglsvbk2ciwimy9zj30q")
>>> + (hash64 "1qq0pjll6030v4ml0hifcaaik7sx3fl7ghybfdw95vsvxafwp2ff")
>>> + (file32 "x86")
>>> + (file64 "x86_64"))
>>> + (let-values (((hash file)
>>> + (match (or (%current-target-system) (%current-system))
>>> + ("i686-linux" (values hash32 file32))
>>> + ("x86_64-linux" (values hash64 file64))
>>> + ("armhf-linux" (values hash32 file32))
>>> + ("mips64el-linux" (values hash64 file64))
>>> + (_ (values hash32 file32)))))
There are two (non-critical) issues here:
1. ‘current-target-system’ returns a GNU triplet (such as
“arm-linux-gnueabihf”), not a “system string” (like “armhf-linux”).
Thus, the above code doesn’t handle cross-compilation.
(Mark once suggested that we should somehow rename
‘%current-target-system’ to make this common mistake less likely.)
2. Since ‘source’ is not a “thunked” field (unlike ‘inputs’ etc.), its
value is evaluated when the package object is created, so, in this
case, at the top level.
That means that the value of ‘%current-target-system’ and that of
‘%current-system’ that is taken is the one that is current when
(gnu packages java) is loaded. In practice, that’s #f and
"x86_64-linux" (or whatever).
For that reason, ‘mit-scheme’, ‘ghc’, and other packages that
depend on architecture-dependent binary blobs (blech!) have them in
‘inputs’ or ‘native-inputs’, rather than in ‘source’. I think the
same should be done here.
Thanks!
Ludo’.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2016-06-07 11:44 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-05-09 14:16 [PATCH] gnu: java-swt: Use other archive on 64-bit systems Ricardo Wurmus
2016-05-09 18:03 ` Efraim Flashner
2016-05-09 20:03 ` Ricardo Wurmus
2016-06-07 10:43 ` Ricardo Wurmus
2016-06-07 11:44 ` Ludovic Courtès
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).