bug#70886: Packaging a gradle application

2024-05-12 Thread Julien Lepiller
After 1.0.0, I'm able to build one more version, but it is not built properly, 
as it's not able to build ittelf or any other version. There's probably 
something wrong with one of the dependencies, but it's hard to say what and 
which one exactly.

One way to test would be to rebuild with the shipped jar dependencies and see 
if we can get further, then figure out which is responsible for the issue. It's 
very time consumming though.

Le 12 mai 2024 20:57:12 GMT+02:00, Nicolas Graves  a écrit :
>
>Hi Noé,
>
>Regarding Gradle, IIRC, the main hinderance to get that into Guix is the
>extremely costly bootstrap process through which its building blocks (in
>particular recent Kotlin versions) can be built. 
>
>The work on this is mainly done by Julien Lepiller in channel
>guix-android :
>https://framagit.org/tyreunom/guix-android/-/blob/master/android/packages/kotlin.scm
>
>He managed to get kotlin v1.0.0 to work but there was another
>hurdle IIRC, I can't tell you more, but maybe Julien can.
>
>There's still quite some work to do before we're able to write and use a
>gradle-build-system. If you have a lot of computer power, don't hesitate
>to take a look there.
>
>There's also more info disseminated in the mailing list.
>





bug#70886: Packaging a gradle application

2024-05-12 Thread Nicolas Graves via Bug reports for GNU Guix


Hi Noé,

Regarding Gradle, IIRC, the main hinderance to get that into Guix is the
extremely costly bootstrap process through which its building blocks (in
particular recent Kotlin versions) can be built. 

The work on this is mainly done by Julien Lepiller in channel
guix-android :
https://framagit.org/tyreunom/guix-android/-/blob/master/android/packages/kotlin.scm

He managed to get kotlin v1.0.0 to work but there was another
hurdle IIRC, I can't tell you more, but maybe Julien can.

There's still quite some work to do before we're able to write and use a
gradle-build-system. If you have a lot of computer power, don't hesitate
to take a look there.

There's also more info disseminated in the mailing list.

-- 
Best regards,
Nicolas Graves





bug#66866: Grafting breaks cross-compilation

2024-05-12 Thread David Elsing
Hello,

I think I finally understand why the problem only occurs with grafts if
a dependency uses copy-build-system. It is actually somewhat
complicated.

When a package is lowered into a derivation by 'package->derivation' in
guix/packages.scm, a list of potentially applicable grafts is created by
the 'bag-grafts' procedure.
This works by first traversing the bag for native packages (where
bag-build-inputs and bag-target-inputs are followed recursively; and
also bag-host-inputs if not cross building) and building the native
derivations of the grafted versions of the packages which have a
replacement (such as glibc at the time of writing). Building the grafted
package (in the 'input-graft' procedure) is done again with
'package->derivation', which eventually calls 'graft-derivation' in
guix/grafts.scm, which in turn calls 'non-self-references', where the
ungrafted package is actually built (ignoring the store monad
indirection), not just its derivation.
In the case of cross builds, the bag is also traversed for the target
dependencies, where the bag-host-inputs are followed recursively.
Analogously, this causes the ungrafted packages and their ungrafted
replacement to be cross built to compute the grafted derivations.

As dan found out, the 'lower' procedure in guix/build-system/copy.scm
incorrectly puts standard-packages into the host inputs. They contain
the glibc-final package in gnu/packages/commencement.scm (which inherits
the replacement of glibc). Because copy-build-system puts them into
bag-host-inputs, the package replacement of the glibc-final package is
then cross built without grafts when calculating its grafted derivation,
which it does not support. Note that the glibc-final package and its
package replacement are distinct from the glibc package and its
replacement in gnu/packages/base.scm. I confirmed this by running
--8<---cut here---start->8---
,use (guix)
(with-store store (run-with-store store (package->cross-derivation 
(package-replacement (@@ (gnu packages commencement) glibc-final)) 
"i686-linux-gnu" #:graft? #f)))
--8<---cut here---end--->8---
in the REPL, which returns the same incorrect glibc derivation that is
attempted to be built as a dependency when running
`guix build alsa-lib --target=i686-linux-gnu`.

It is actually possible to compute the graft derivations only when
needed by a store reference (which does not change the derivation of the
grafted package). Then, this problem does not occur even without the fix
for the copy-build-system, as the invalid derivations are never actually
built. With substitutes or after running GC, this may even prevent
building a package with replacement when the requested package output
which (transitively) depends on it has no (transitive) store reference
to it. I made a patch for that here: https://issues.guix.gnu.org/70895

Regarding the changes to the copy-build-system:

Ludovic Courtès  writes:

> But still, there seem to be some expectation that ‘copy-build-system’
> can support cross-compilation for real, so maybe we should add a
> ‘copy-cross-build’ procedure in addition to the patch above.

In guix/build-system/copy.scm, it is described as an extension of
gnu-build-system and the manual says "It adds much of the
gnu-build-system packages to the set of inputs. Because of this, the
copy-build-system does not require all the boilerplate code often needed
for the trivial-build-system."
Therefore, I think it makes sense to add the copy-cross-build procedure
so that copy-build-system actually behaves like gnu-build-system.

Cheers,
David





bug#70897: Guix system hangs on boot with LUKS root partition

2024-05-12 Thread Kaelyn via Bug reports for GNU Guix
Hi Ludo' and others,

I recently updated my systems after finally finding 
https://issues.guix.gnu.org/70051 and seeing the issue I was having with 
booting with a non-root LUKS partition configured had been fixed. After 
updating to a commit past these two:

  49f82fca41 mapped-devices: luks: Specify modules needed at the top-level.
  6062339156 mapped-devices:  can specify modules to import.

I am now seeing a different error, which I am pretty sure is related to the 
module import changes in 49f82fca41. The error I get is about an unknown symbol 
"system*/tty" when the initramfs tries to prompt for a password to unlock the 
LUKS partition containing the root filesystem. I don't know how the module 
plumbing of Shepherd and the generated initramfs work, but I suspect the fix 
for Shepherd opening LUKS partition broke the import of system*/tty in the 
initramfs (for example, at the early REPL that booting my latest system 
generation ends up at, system*/tty is undefined initially, but after evaluating 
"(use-modules (gnu build file-systems))" system*/tty resolves to a procedure as 
exected--so the module is at least present in the initramfs). I have 
encountered this error with two different systems, and I believe the 
reproduction is simply trying to open a LUKS device without a keyfile so that a 
password prompt is necessary.

Cheers,
Kaelyn





bug#70877: guix-daemon fails to copy 4+GB file to store

2024-05-12 Thread Efraim Flashner
On Sat, May 11, 2024 at 12:52:53PM +0200, Ricardo Wurmus wrote:
> The guix-daemon's libutil/util.cc uses copy_file_range to copy a
> downloaded file into the store.  copy_file_range fails on files larger
> than 4GB with an error like this:
> 
> guix build: error: short write in copy_file_range `15' to `16': No such 
> file or directory
> 
> The man page for copy_file_range says that it could return EFBIG when
> the range exceeds the maximum range.  The daemon code does not check any
> limits and will attempt to copy the whole file.
> 
> I believe our code ought to check the value of st.size and fall back to
> a boring copy if it exceeds some "reasonable" value.
> 
> This is where copy_file_range is used:
> https://git.savannah.gnu.org/cgit/guix.git/tree/nix/libutil/util.cc#n382
> 
> Here is a little reproducer:
> 

> (use-modules (guix download)
>  (guix packages)
>  (guix build-system trivial))
> 
> (package
>   (name "chungus")
>   (version "1")
>   (source
>(origin
>  (method url-fetch)
>  (uri "http://localhost:/chungus;)
>  (sha256
>   (base32 "0nx67d4ls2nfwcfdmg81vf240z6lpwpdqypssr1wzn3hyz4szci4"
>   (build-system trivial-build-system)
>   (home-page "")
>   (synopsis "")
>   (description "")
>   (license #f))

> 
> --8<---cut here---start->8---
> # generate a big file
> dd bs=1M count=4096 if=/dev/zero of=/tmp/chungus
> # serve it
> guix shell woof -- woof -i 127.0.0.1 -p  -c 1 /tmp/chungus
> # build the source derivation
> guix build --no-grafts -Sf bug.scm
> # observe the error
> # guix build: error: short write in copy_file_range `15' to `16': No such 
> file or directory
> --8<---cut here---end--->8---
> 

This sounds like a similar failure to bug 65714 that I ran into with
guix copy, but I wasn't able to diagnose it.

https://issues.guix.gnu.org/65714


-- 
Efraim Flashner  רנשלפ םירפא
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted


signature.asc
Description: PGP signature