bug#70339: Constructing hg-fetch fixed-output derivation requires Mercurial

2024-04-12 Thread Ludovic Courtès
Simon Tournier  skribis:

> Hi Ludo,
>
> On Fri, 12 Apr 2024 at 11:30, Ludovic Courtès  
> wrote:
>
>> > $ guix build -S -d hg-commitsigs
>> > substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
>> > 3,7 MB will be downloaded:
>> >   /gnu/store/6fya762sz5hjdj04vdn5g3v6zii6f11d-mercurial-6.2.2
>> > substituting /gnu/store/6fya762sz5hjdj04vdn5g3v6zii6f11d-mercurial-6.2.2...
>> > downloading from 
>> > https://ci.guix.gnu.org/nar/lzip/6fya762sz5hjdj04vdn5g3v6zii6f11d-mercurial-6.2.2
>> >  ...
>> >  mercurial-6.2.2  3.5MiB   
>> > 529KiB/s 00:07 ▕██▏ 100.0%
>> >
>> > /gnu/store/pkb6zd9xfmxx6rsh4p7w3glh7xqg5sqy-hg-commitsigs-0.1.0-0.b53eb68-checkout.drv
>> >
>> > and it is unexpected.
>>
>> That running ‘hg clone’ requires Mercurial isn’t totally unexpected to
>> me.  :-)
>
> There is a misunderstanding, I guess.
>
> Running 'hg clone' requires to have a local copy of Mercurial, yes for sure. 
> :-)
>
> However, just ask what it will run (please note the dash d in guix
> build -S -d hg-commitsigs) must not require to have a local copy of
> Mercurial (binary).  If you still think yes, why is it not the case
> for fixed-output derivations relying on the old Git builder?

Oh sorry, I had missed the ‘-d’ bit.

In this case, what’s happening is grafts: Guix downloads (or builds)
Mercurial so it can compute its grafted derivation.

>> Now, the ‘guix recover’ tool (or whatever you call it) you’re working on
>> could create a different fixed-output derivation producing the same
>> result but without using Mercurial; typically, the builder of that
>> derivation would download from SWH.
>>
>> Does that make sense?
>
> Yes, it makes sense; see my very first attempt in [1] :-).

[...]

> 1: https://gitlab.com/zimoun/guix-drv

Nice!

Thanks,
Ludo’.





bug#70339: Constructing hg-fetch fixed-output derivation requires Mercurial

2024-04-12 Thread Simon Tournier
Hi Ludo,

On Fri, 12 Apr 2024 at 11:30, Ludovic Courtès  wrote:

> > $ guix build -S -d hg-commitsigs
> > substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
> > 3,7 MB will be downloaded:
> >   /gnu/store/6fya762sz5hjdj04vdn5g3v6zii6f11d-mercurial-6.2.2
> > substituting /gnu/store/6fya762sz5hjdj04vdn5g3v6zii6f11d-mercurial-6.2.2...
> > downloading from 
> > https://ci.guix.gnu.org/nar/lzip/6fya762sz5hjdj04vdn5g3v6zii6f11d-mercurial-6.2.2
> >  ...
> >  mercurial-6.2.2  3.5MiB   
> > 529KiB/s 00:07 ▕██▏ 100.0%
> >
> > /gnu/store/pkb6zd9xfmxx6rsh4p7w3glh7xqg5sqy-hg-commitsigs-0.1.0-0.b53eb68-checkout.drv
> >
> > and it is unexpected.
>
> That running ‘hg clone’ requires Mercurial isn’t totally unexpected to
> me.  :-)

There is a misunderstanding, I guess.

Running 'hg clone' requires to have a local copy of Mercurial, yes for sure. :-)

However, just ask what it will run (please note the dash d in guix
build -S -d hg-commitsigs) must not require to have a local copy of
Mercurial (binary).  If you still think yes, why is it not the case
for fixed-output derivations relying on the old Git builder?

> > I think it comes from this part:
> >
> >  (hg-fetch '#$(hg-reference-url ref)
> >'#$(hg-reference-changeset ref)
> >#$output
> >#:hg-command (string-append #+hg "/bin/hg")))
> >
> > from ’hg-fetch’ in (guix hg-download).  Here the #+hg is not required
> > because just before there is:
[...]
> Maybe, but one way or another, Mercurial is necessary.

Again, I think it is a bug from #+hg instead of plain "hg".  Having a
local copy of Mercurial (binary) must not be required to just display
the fixed-output derivation.  For running this fixed-output
derivation, yes for sure.

> Now, the ‘guix recover’ tool (or whatever you call it) you’re working on
> could create a different fixed-output derivation producing the same
> result but without using Mercurial; typically, the builder of that
> derivation would download from SWH.
>
> Does that make sense?

Yes, it makes sense; see my very first attempt in [1] :-).

But you cannot apply this strategy for fixed-output derivations
relying on Mercurial.  You need first to build Mercurial (and thus all
the Python stack) just to display the fixed-output derivation.  Then,
yes once you have this fixed-output derivation, it is possible to
manipulate it for getting another one.

This report is about #+hg that needs to be fixed for the future.
And because of that, the strategy above for fixed-output derivations
relying on Mercurial is doomed for the past, IMHO.  Except if you have
an idea. ;-)

Cheers,
simon


1: https://gitlab.com/zimoun/guix-drv





bug#70258: FreeCAD dependency probably outdated

2024-04-12 Thread Ricardo Wurmus
I'm unable to build python-pivy with the suggested changes.  Here is the
actual diff I used:

diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 92566abfed..8c8b162b55 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -32389,43 +32389,42 @@ (define-public python-retry
 (define-public python-pivy
   (package
 (name "python-pivy")
-(version "0.6.5")
+(version "0.6.9.a0")
 (source
-  (origin
-(method git-fetch)
-(uri (git-reference
-   (url "https://github.com/coin3d/pivy;)
-   (commit version)))
-(file-name (git-file-name name version))
-(sha256
-  (base32 "0vids7sxk8w5vr73xdnf8xdci71a7syl6cd35aiisppbqyyfmykx"
+ (origin
+   (method git-fetch)
+   (uri (git-reference
+ (url "https://github.com/coin3d/pivy;)
+ (commit version)))
+   (file-name (git-file-name name version))
+   (sha256
+(base32 "13v9bfmipfhjbwnrl96d82fgb317j2sijgpzhhk02390649qbx6c"
 (build-system python-build-system)
 (arguments
-  `(;; The test suite fails due to an import cycle between 'pivy' and '_coin'
-#:tests? #f
-#:phases
-(modify-phases %standard-phases
-  (add-after 'unpack 'patch-cmake-include-dirs
+ `( ;; The test suite fails due to an import cycle between 'pivy' and '_coin'
+   #:tests? #f
+   #:phases
+   (modify-phases %standard-phases
+ (add-after 'unpack 'patch-cmake-include-dirs
(lambda _
- ;; Patch buildsystem to respect Coin3D include directory
- (substitute* "CMakeLists.txt"
-  (("\\$\\{SoQt_INCLUDE_DIRS}")
-   "${Coin_INCLUDE_DIR};${SoQt_INCLUDE_DIRS}"))
- #t)
+ ;; Patch build system to respect Coin3D include directory
+ (substitute* "interfaces/CMakeLists.txt"
+   (("\\$\\{SoQt_INCLUDE_DIRS\\}")
+"${Coin_INCLUDE_DIR};${SoQt_INCLUDE_DIRS}")))
 (native-inputs
-  (list cmake swig))
+ (list cmake swig))
 (inputs
-  (list python-wrapper
-qtbase-5
-libxi
-libice
-soqt
-glew
-coin3D))
+ (list python-wrapper
+   qtbase-5
+   libxi
+   libice
+   soqt
+   glew
+   coin3D))
 (home-page "https://github.com/coin3d/pivy;)
 (synopsis "Python bindings to Coin3D")
 (description
-  "Pivy provides python bindings for Coin, a 3D graphics library with an
+ "Pivy provides python bindings for Coin, a 3D graphics library with an
 Application Programming Interface based on the Open Inventor 2.1 API.")
 (license license:isc)))
 

I get lots of errors like these:

--8<---cut here---start->8---
interfaces/coin_header_includes.h:662: Error: Unable to find 
'Inventor/VRMLnodes/SoVRMLViewpoint.h'
interfaces/coin_header_includes.h:663: Error: Unable to find 
'Inventor/VRMLnodes/SoVRMLVisibilitySensor.h'
interfaces/coin_header_includes.h:664: Error: Unable to find 
'Inventor/VRMLnodes/SoVRMLWorldInfo.h'
/gnu/store/ivbbmgrvhdc46p2ywx1x2zsmal3x0z5n-soqt-1.6.0-1.fb8f655/include/Inventor/Qt/devices/SoQtDevice.h:66:
 Error: Unable to find 'Inventor/SbLinear.h'
/gnu/store/ivbbmgrvhdc46p2ywx1x2zsmal3x0z5n-soqt-1.6.0-1.fb8f655/include/Inventor/Qt/SoQtObject.h:40:
 Error: Unable to find 'Inventor/SbBasic.h'
--8<---cut here---end--->8---


-- 
Ricardo


bug#70349: Clang fails to communicate RUNPATH?

2024-04-12 Thread Liliana Marie Prikler
Hi Guix,

I've noticed a strange error when attempting to build my software
against clang-toolchain.  I've attached a minimally breaking example,
but the gist of it is that RUNPATH validation fails as shown below.

  starting phase `validate-runpath'
  validating RUNPATH of 1 binaries in
  "/gnu/store/sd1zjjf13mi448qbqaphhcvf9ap5jxji-why-hello-0/bin"...
  /gnu/store/sd1zjjf13mi448qbqaphhcvf9ap5jxji-why-hello-0/bin/hello:
  error: depends on 'libfmt.so.9', which cannot be found in RUNPATH
  ("/gnu/store/gsjczqir1wbz8p770zndrpw4rnppmxi3-glibc-2.35/lib")

Is this expected?  I know that the -for-system have historically
disregarded the existence of clang-toolchain and hence led to issues,
but I think this is something else…

Cheers
(use-modules (gnu packages pretty-print)
 (gnu packages pkg-config)
 (guix packages)
 (guix gexp)
 (guix transformations)
 (guix build-system meson)
 ((guix licenses) #:select (gpl3+))
 ((guix git-download) #:select (git-file-name))
 (srfi srfi-26))

(define why-hello
  (package
   (name "why-hello")
   (version "0")
   (source (file-union (git-file-name name version)
`(("hello.cpp" ,(plain-file "hello.cpp"
   "\
#include 

int
main()
{
  fmt::print (\"{}\\n\", \"Hello, world\");
  return 0;
}
"))
  ("meson.build" ,(plain-file "meson.build"
  "\
project('hello', 'cpp', default_options: ['cpp_std=c++20'])
executable('hello', files('hello.cpp'), install: true,
   dependencies: [dependency('fmt')])
")
   (build-system meson-build-system)
   (inputs (list fmt))
   (native-inputs (list pkg-config))
   (home-page (and=> (current-filename)
 (cute string-append "file://" <>)))
   (synopsis "Hello world")
   (description "This package provides a simple program that builds with
GCC/G++ normally, but fails miserably when the clang-toolchain is used.")
   (license gpl3+)))

(define why-hello-clang
  ((options->transformation
'((with-c-toolchain . "why-hello=clang-toolchain")))
   why-hello))

why-hello-clang


bug#59365: make-dynamic-linker-cache OOMs for LLVM 15 on i686-linux

2024-04-12 Thread Ludovic Courtès
Hello,

Ludovic Courtès  skribis:

>>   GC Warning: Failed to expand heap by 285216768 bytes
>>   GC Warning: Failed to expand heap by 268439552 bytes
>>   GC Warning: Out of Memory! Heap size: 3620 MiB. Returning NULL!
>>   Warning: Unwind-only out of memory exception; skipping pre-unwind handler.
>>   Warning: Unwind-only out of memory exception; skipping pre-unwind handler.
>>   Warning: Unwind-only out of memory exception; skipping pre-unwind handler.
>>
>> (excerpt from https://ci.guix.gnu.org/build/1702995/log/raw)
>>
>> Not sure why this phase uses so much memory.  Ideas?
>
> Yes: the gremlin.scm code uses ‘file-dynamic-info’, which loads the
> whole file in memory.  Ridiculous.
>
> We should instead mmap it (but there are no ‘mmap’ bindings in Guile,
> yet) or arrange to load just the relevant parts (we’ll have to check but
> maybe ‘file-dynamic-info’ can find everything it needs at the beginning
> of a file, the PT_DYNAMIC segment.)

Another instance of the problem that we just stumbled upon is ‘guix pack -RR’:
that too tries to load entire ELF files in memory, in
‘elf-loader-compile-flags’.

Mmap!

Ludo’.





bug#70339: Constructing hg-fetch fixed-output derivation requires Mercurial

2024-04-12 Thread Ludovic Courtès
Hello!

Simon Tournier  skribis:

> $ guix build -S -d hg-commitsigs
> substitute: updating substitutes from 'https://ci.guix.gnu.org'... 100.0%
> 3,7 MB will be downloaded:
>   /gnu/store/6fya762sz5hjdj04vdn5g3v6zii6f11d-mercurial-6.2.2
> substituting /gnu/store/6fya762sz5hjdj04vdn5g3v6zii6f11d-mercurial-6.2.2...
> downloading from 
> https://ci.guix.gnu.org/nar/lzip/6fya762sz5hjdj04vdn5g3v6zii6f11d-mercurial-6.2.2
>  ...
>  mercurial-6.2.2  3.5MiB   
> 529KiB/s 00:07 ▕██▏ 100.0%
>
> /gnu/store/pkb6zd9xfmxx6rsh4p7w3glh7xqg5sqy-hg-commitsigs-0.1.0-0.b53eb68-checkout.drv
>
>
> and it is unexpected.

That running ‘hg clone’ requires Mercurial isn’t totally unexpected to
me.  :-)

> I think it comes from this part:
>
>  (hg-fetch '#$(hg-reference-url ref)
>'#$(hg-reference-changeset ref)
>#$output
>#:hg-command (string-append #+hg "/bin/hg")))
>
> from ’hg-fetch’ in (guix hg-download).  Here the #+hg is not required
> because just before there is:
>
> (set-path-environment-variable "PATH" '("bin")
>(match '#+inputs
>  (((names dirs outputs ...) ...)
>   dirs)))

Maybe, but one way or another, Mercurial is necessary.

Now, the ‘guix recover’ tool (or whatever you call it) you’re working on
could create a different fixed-output derivation producing the same
result but without using Mercurial; typically, the builder of that
derivation would download from SWH.

Does that make sense?

HTH,
Ludo’.





bug#57836: fzf 0.33.0 release commit fails to build

2024-04-12 Thread Sharlatan Hellseher

Hi,

Thank you for reporting this, I thinks this issue is outdated as fzf is
on 0.41.0 since 767edbb6fe781d19c19971f2ccd3b0da8fd053fc in master
branch.

Current upstream version is 0.49.0 to wic we may bump it.

Closing as no more relevant.
--
Oleg


signature.asc
Description: PGP signature