help-guix
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: developing for guix with git


From: Nils Gillmann
Subject: Re: developing for guix with git
Date: Wed, 03 Feb 2016 01:46:25 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)

I hope I can turn my current confusion and the notes I am taking to
something productive to beginners documentation/guide at some point.

So what happened today was:
- I tried the build of the sourcetree described below in some
variations. Failed.
- I mounted an external disk with what used to be my working repo of the
source before I made the decision to not rely on external disks that
much. switched to some branch on this disk I was working on, excluding
problems with the file I was working on it did theoretically build.

Now I wonder what could be the difference? Why does my current checkout
fail, but the other one doesn't?

iirc the current one went:
git clone $url-on-sv-guix
git checkout -b wip-lispf4
emacs gnu/packages/lisp.scm and work on that file, save it but not
commit
guix environment guix (also tried adding git make)
make clean-recursive
./bootstrap
./configure --localstatedir=/var
make check

what would be a simple step by step command list to get to the point of
a working branch which can build?

I feel like I am asking weird questions and it might be that I just try
too much too hard to see where the problem is so that I lost track of
the actual problem.

Nils Gillmann <address@hidden> writes:

> Ricardo Wurmus <address@hidden> writes:
>
>> Nils Gillmann <address@hidden> writes:
>>
>>> Do you happen to know why guix in the situation I described,
>>> being on an up to date branch following master refuses to build,
>>> but once I switch to master branch, make clean, make clean-go (or
>>> go-clean?) and run make (and the other commands) again it builds
>>> successfully? This was my initial confusion.
>>
>> It’s hard to say without being able to take a look at the state of the
>> branch.  It is possible that a change you introduced in your branch
>> broke things.  Maybe you could share error messages?
>
> I'll inline all the things here now:
>
> Generation 29 Feb 02 2016 13:20:50    (current)
>   rxvt-unicode        9.21    out     
> /gnu/store/2wrafhvqzzqzsks3mxz1lkd37phdaq5p-rxvt-unicode-9.21
>   mc  4.8.11  out     /gnu/store/8263vk2gf013ryg4hgjwdpln6xfhyfwz-mc-4.8.11
>   getmail     4.48.0  out     
> /gnu/store/xay7x51ivl6dbk5gy2nd5xrxifwm4v4y-getmail-4.48.0
>   youtube-dl  2016.01.09      out     
> /gnu/store/w53rdk9hs4v4mm2lrdjj15p27fqfdf2m-youtube-dl-2016.01.09
>   setxkbmap   1.3.0   out     
> /gnu/store/cnq54ch7vhdm0cbgbgq85lbn7xsxm96i-setxkbmap-1.3.0
>   xrdb        1.1.0   out     
> /gnu/store/gfwx3ngj1kp349p62lrls5iismicp2v1-xrdb-1.1.0
>   tmux        2.1     out     
> /gnu/store/7a5brlhz30scv6hk9pj9nmyxvnjyv6qk-tmux-2.1
>   torsocks    2.0.0   out     
> /gnu/store/zmy09dkn8d9avv3f6626fw6ch4pp74v2-torsocks-2.0.0
>   tor 0.2.7.6 out     /gnu/store/rvzq8czssqzrfln7qis7ai734afl4qjp-tor-0.2.7.6
>   gnurl       7.45.0  out     
> /gnu/store/rdvcazdkm3lf0zzk4nrkmdz34h2nhyfl-gnurl-7.45.0
>   wget        1.17.1  out     
> /gnu/store/z1vby28dy003jyvidzbbz3n2749ajnp1-wget-1.17.1
>   icecat      38.5.2-gnu1     out     
> /gnu/store/626i6n86wv224cw5r3a5d81ylsxjwc2m-icecat-38.5.2-gnu1
>   alsa-utils  1.0.27.2        out     
> /gnu/store/kmr9vzpm2kbf27mjvamln2j4wzw37bpp-alsa-utils-1.0.27.2
>   openssh     7.1p2   out     
> /gnu/store/b5f6p26qc6wxik9xln1igzm3l583k7jf-openssh-7.1p2
>   git 2.6.3   out     /gnu/store/8rps27mcwn0shmbnlad92ss5xj67xq38-git-2.6.3
>   font-gnu-freefont-ttf       20100919        out     
> /gnu/store/d8ia7qyyb0s9vlh54ld5nch094ap5jjb-font-gnu-freefont-ttf-20100919
>   font-gnu-unifont    8.0.01  out     
> /gnu/store/2dqimxh602s0gpspki8gda5pqpfih0v4-font-gnu-unifont-8.0.01
>   font-dejavu 2.34    out     
> /gnu/store/7bwkylkasi9y8hgrvhab2vvcf0nkprfh-font-dejavu-2.34
>   font-liberation     2.00.1  out     
> /gnu/store/k2ip6g97clhwxqnjhmgxby0wsxx5fixf-font-liberation-2.00.1
>   w3m 0.5.3   out     /gnu/store/v211k3mj9anryn4c8ywyj63gwzbbr0wz-w3m-0.5.3
>   gnupg       2.1.10  out     
> /gnu/store/576kah5kcbrvzh8fpr3ngpjijb9fqpwc-gnupg-2.1.10
>   libreoffice 5.0.3.2 out     
> /gnu/store/dxiy3gbs63v7qp4nz0np1ih8dknjss4r-libreoffice-5.0.3.2
>   autoconf    2.69    out     
> /gnu/store/hnpdjr1m7xa86y2878ca238b10k5dg0s-autoconf-2.69
>   automake    1.15    out     
> /gnu/store/3ry089p6p36ng2l2i7gcdqq5hs8khafy-automake-1.15
>   gettext     0.19.7  out     
> /gnu/store/3iz6asihwkcxj1ldl4qgd57iwmwww9s0-gettext-0.19.7
>   texinfo     6.0     out     
> /gnu/store/m3zf2d3cla6jaj61l2c8nw9iljwl1qz8-texinfo-6.0
>   graphviz    2.38.0  out     
> /gnu/store/f2kvgjgdknwqchfvjq4jlff0jppj0ryq-graphviz-2.38.0
>   help2man    1.47.3  out     
> /gnu/store/pmvdfp0ql2nzjypiagy1qk9fwi7l2d60-help2man-1.47.3
>   pkg-config  0.29    out     
> /gnu/store/w7c0zs0qgzpnx5k6g19dja55yabk4350-pkg-config-0.29
>   libgcrypt   1.6.4   out     
> /gnu/store/v1yd1grpqy6ls6m29lvb8fy085cbajj7-libgcrypt-1.6.4
>   guile       2.0.11  out     
> /gnu/store/b44k6wx7nxn0kh2kchlazgas2ybc576v-guile-2.0.11
>   make        4.1     out     
> /gnu/store/vpy992qc1brf3av6ap7si4byq1w5mx2x-make-4.1
>   guile-json  0.4.0   out     
> /gnu/store/wy4wyxh1jfi0g8afc777p7zvqpwknbqm-guile-json-0.4.0
>   sqlite      3.10.0  out     
> /gnu/store/ks7v9hzvqkf7dnx0dwmlwa2zrdhdzcym-sqlite-3.10.0
>   bzip2       1.0.6   out     
> /gnu/store/pnw3jr91sas9w3w9f4vkfr5nn0g8fcr8-bzip2-1.0.6
>   gcc-toolchain       5.3.0   out     
> /gnu/store/p16a8dv54k35x4a8mqf5k9i1viwvxja7-gcc-toolchain-5.3.0
>   bind-utils  9.10.3-P3       out     
> /gnu/store/x7q7zx4vvsiasgify34ig0mdip0wrynl-bind-utils-9.10.3-P3
>   zathura     0.3.3   out     
> /gnu/store/vb87y4g5ciygjhl8jcmnkns6h06pv4ps-zathura-0.3.3
>   mpv 0.15.0  out     /gnu/store/aywf9b8cnsaqrsgb959v4mbhxiqmzifz-mpv-0.15.0
>   paredit     24      out     
> /gnu/store/8b4smgyq2v9bcvlymmj6v0pi0n6x62w4-paredit-24
>   notmuch     0.21    out     
> /gnu/store/z4xc7rlg3v4y8bayfk9xc3i92pnmfqdk-notmuch-0.21
>   gnunet      0.10.1  out     
> /gnu/store/mllvd1d2mj53x3hg7jhs5ffqhj3az6mg-gnunet-0.10.1
>   bbdb        3.1.2   out     
> /gnu/store/fm2gf61awrrn4hinpfz2gwgr633aq02g-bbdb-3.1.2
>   magit       2.4.0   out     
> /gnu/store/b8yvdq2ggbb350fgi6d4ivknkd3xq2ih-magit-2.4.0
>   emacs-w3m   1.4.538+0.20141022      out     
> /gnu/store/nxax4hgwbqazja34fd586vxn99d1yiw9-emacs-w3m-1.4.538+0.20141022
>   emacs       24.5    out     
> /gnu/store/bx4yz76ja498jkmk90dl8vivpnncnk69-emacs-24.5
>   geiser      0.8.1   out     
> /gnu/store/cr2265s6dahx5rdxvmhb4v3r3lhf8hzq-geiser-0.8.1
>   weechat     1.4     out     
> /gnu/store/694qv9c5yb16h5if4vjshnbkyv7pph1d-weechat-1.4
>   msmtp       1.6.3   out     
> /gnu/store/r1x2h94j0wb09ccvgp3psrccx476ms4l-msmtp-1.6.3
>
> in the environment (git checkout wip-lispf4; make clean; make clean-go;
> guix environment guix git; ./bootstrap; ./configure
> --localstatedir=/var) all the steps listed succeed, however make:
>
> address@hidden ~/projects/guix_project/guix [env]$ make
>   GEN      doc/os-config-bare-bones.texi
>   GEN      doc/os-config-desktop.texi
>   GEN      nix/libstore/schema.sql.hh
> make  all-recursive
> make[1]: Entering directory '/home/niasterisk/projects/guix_project/guix'
> Making all in po/guix
> make[2]: Entering directory 
> '/home/niasterisk/projects/guix_project/guix/po/guix'
> make[2]: Leaving directory 
> '/home/niasterisk/projects/guix_project/guix/po/guix'
> Making all in po/packages
> make[2]: Entering directory 
> '/home/niasterisk/projects/guix_project/guix/po/packages'
> make[2]: Leaving directory 
> '/home/niasterisk/projects/guix_project/guix/po/packages'
> make[2]: Entering directory '/home/niasterisk/projects/guix_project/guix'
>   CXX      nix/boost/format/libformat_a-free_funcs.o
>   CXX      nix/boost/format/libformat_a-parsing.o
>   CXX      nix/boost/format/libformat_a-format_implementation.o
>   AR       libformat.a
> ar: `u' modifier ignored since `D' is the default (see `U')
>   CXX      nix/libutil/libutil_a-archive.o
>   CXX      nix/libutil/libutil_a-affinity.o
>   CXX      nix/libutil/libutil_a-serialise.o
>   CXX      nix/libutil/libutil_a-util.o
>   CXX      nix/libutil/libutil_a-xml-writer.o
>   CXX      nix/libutil/libutil_a-hash.o
>   CXX      nix/libutil/libutil_a-gcrypt-hash.o
>   AR       libutil.a
> ar: `u' modifier ignored since `D' is the default (see `U')
>   CXX      nix/libstore/libstore_a-gc.o
>   CXX      nix/libstore/libstore_a-globals.o
>   CXX      nix/libstore/libstore_a-misc.o
>   CXX      nix/libstore/libstore_a-references.o
>   CXX      nix/libstore/libstore_a-store-api.o
>   CXX      nix/libstore/libstore_a-optimise-store.o
>   CXX      nix/libstore/libstore_a-local-store.o
>   CXX      nix/libstore/libstore_a-build.o
>   CXX      nix/libstore/libstore_a-pathlocks.o
>   CXX      nix/libstore/libstore_a-derivations.o
>   AR       libstore.a
> ar: `u' modifier ignored since `D' is the default (see `U')
>   CXX      nix/nix-daemon/guix_daemon-nix-daemon.o
>   CXX      nix/nix-daemon/guix_daemon-guix-daemon.o
>   CXXLD    guix-daemon
>   CXX      nix/guix-register/guix_register-guix-register.o
>   CXXLD    guix-register
> Compiling Scheme modules...
>   LOAD     (guix base32)
>   LOAD     (guix base64)
>   LOAD     (guix cpio)
>   LOAD     (guix records)
>   LOAD     (guix gcrypt)
>   LOAD     (guix hash)
>   LOAD     (guix pk-crypto)
>   LOAD     (guix pki)
>   LOAD     (guix utils)
>   LOAD     (guix sets)
>   LOAD     (guix download)
>   LOAD     (guix git-download)
>   LOAD     (guix monads)
>   LOAD     (guix monad-repl)
>   LOAD     (guix gexp)
>   LOAD     (guix profiles)
>   LOAD     (guix serialization)
>   LOAD     (guix nar)
>   LOAD     (guix derivations)
>   LOAD     (guix gnu-maintenance)
>   LOAD     (guix upstream)
>   LOAD     (guix licenses)
>   LOAD     (guix graph)
>   LOAD     (guix cve)
>   LOAD     (guix build-system)
>   LOAD     (guix build-system cmake)
>   LOAD     (guix build-system emacs)
>   LOAD     (guix build-system glib-or-gtk)
>   LOAD     (guix build-system gnu)
>   LOAD     (guix build-system haskell)
>   LOAD     (guix build-system perl)
>   LOAD     (guix build-system python)
>   LOAD     (guix build-system waf)
>   LOAD     (guix build-system r)
>   LOAD     (guix build-system ruby)
>   LOAD     (guix build-system trivial)
>   LOAD     (guix ftp-client)
>   LOAD     (guix http-client)
>   LOAD     (guix gnupg)
>   LOAD     (guix elf)
>   LOAD     (guix store)
>   LOAD     (guix cvs-download)
>   LOAD     (guix svn-download)
>   LOAD     (guix ui)
>   LOAD     (guix build download)
>   LOAD     (guix build cmake-build-system)
>   LOAD     (guix build emacs-build-system)
>   LOAD     (guix build git)
>   LOAD     (guix build glib-or-gtk-build-system)
>   LOAD     (guix build gnu-build-system)
>   LOAD     (guix build gnu-dist)
>   LOAD     (guix build perl-build-system)
>   LOAD     (guix build python-build-system)
>   LOAD     (guix build r-build-system)
>   LOAD     (guix build ruby-build-system)
>   LOAD     (guix build waf-build-system)
>   LOAD     (guix build haskell-build-system)
>   LOAD     (guix build store-copy)
>   LOAD     (guix build utils)
>   LOAD     (guix build union)
>   LOAD     (guix build profiles)
>   LOAD     (guix build pull)
>   LOAD     (guix build rpath)
>   LOAD     (guix build cvs)
>   LOAD     (guix build svn)
>   LOAD     (guix build gremlin)
>   LOAD     (guix build emacs-utils)
>   LOAD     (guix build graft)
>   LOAD     (guix search-paths)
>   LOAD     (guix packages)
>   LOAD     (guix import utils)
>   LOAD     (guix import gnu)
>   LOAD     (guix import snix)
>   LOAD     (guix import cabal)
>   LOAD     (guix import cran)
>   LOAD     (guix import hackage)
>   LOAD     (guix import elpa)
>   LOAD     (guix scripts)
>   LOAD     (guix scripts download)
>   LOAD     (guix scripts build)
>   LOAD     (guix scripts archive)
>   LOAD     (guix scripts import)
>   LOAD     (guix scripts package)
> ;;; Failed to autoload canonical-package in (gnu packages base):
> ;;; ERROR: Unbound variable: git-fetch
>   LOAD     (guix scripts gc)
>   LOAD     (guix scripts hash)
>   LOAD     (guix scripts pull)
>   LOAD     (guix scripts substitute)
>   LOAD     (guix scripts authenticate)
>   LOAD     (guix scripts refresh)
> Backtrace:
> In unknown file:
>    ?: 19 [primitive-load-path "guix/scripts/refresh" ...]
> In ice-9/eval.scm:
>  505: 18 [#<procedure 23e15c0 at ice-9/eval.scm:499:4 (exp)> (define-module # 
> # ...)]
> In ice-9/psyntax.scm:
> 1106: 17 [expand-top-sequence ((define-module # # # ...)) () ((top)) ...]
>  989: 16 [scan ((define-module (guix scripts refresh) #:use-module ...)) () 
> ...]
>  279: 15 [scan ((#(syntax-object let # ...) (#) (# #) ...)) () ...]
> In ice-9/eval.scm:
>  411: 14 [eval # ()]
> In ice-9/boot-9.scm:
> 2951: 13 [define-module* (guix scripts refresh) #:filename ...]
> 2926: 12 [resolve-imports (((guix ui)) ((guix hash)) ((guix scripts)) ...)]
> 2864: 11 [resolve-interface (gnu packages commencement) #:select ...]
> 2789: 10 [#<procedure 2495500 at ice-9/boot-9.scm:2777:4 (name #:optional 
> autoload version #:key ensure)> # ...]
> 3065: 9 [try-module-autoload (gnu packages commencement) #f]
> 2401: 8 [save-module-excursion #<procedure 34c91b0 at 
> ice-9/boot-9.scm:3066:17 ()>]
> 3085: 7 [#<procedure 34c91b0 at ice-9/boot-9.scm:3066:17 ()>]
> In unknown file:
>    ?: 6 [primitive-load-path "gnu/packages/commencement" ...]
> In ice-9/eval.scm:
>  453: 5 [eval # ()]
>  387: 4 [eval # ()]
>  387: 3 [eval # #]
>  387: 2 [eval # #]
>  393: 1 [eval # #]
> In unknown file:
>    ?: 0 [memoize-variable-access! #<memoized gnu-make> #<directory # 747aab0>]
>
> ERROR: In procedure memoize-variable-access!:
> ERROR: Unbound variable: gnu-make
> Makefile:4704: recipe for target 'make-go' failed
> make[2]: *** [make-go] Error 1
> make[2]: Leaving directory '/home/niasterisk/projects/guix_project/guix'
> Makefile:3856: recipe for target 'all-recursive' failed
> make[1]: *** [all-recursive] Error 1
> make[1]: Leaving directory '/home/niasterisk/projects/guix_project/guix'
> Makefile:2467: recipe for target 'all' failed
> make: *** [all] Error 2
>
> Those are issues which appear only on the new branch created with 'git
> checkout -b wip-lispf4' and started working on it to the point where the
> lispf4 should compile.
>
> --ng
>>
>>> I might have a thing or 2 to learn about rebasing and branching, but in
>>> theory from what I know it shouldn't really matter which branch I am
>>> on unless something's corrupted or broken.
>>
>> I think of a branch as a pointer to a some commit in the graph.
>> Rebasing takes a range of commits and applies the changes they introduce
>> on top of some other commit.
>>
>> When things suddenly break after rebasing the reason is usually in of
>> two categories:
>>
>> * one of your (now relocated) commits broke something
>>
>> * after rebasing, master commits that have been added since you first
>>   committed your changes are now part of the history of your commits —
>>   maybe these commits altered assumptions that were still valid when you
>>   first committed your changes.  An example for this is when a variable
>>   was renamed or moved in a master commit and your commits still use the
>>   old name.
>>
>> Sharing some error output with us might help us identify what’s going on
>> in your case.  In any case, you could try bisecting your changes (divide
>> the set of your commits in half, and see if things are broken at that
>> commit; then recurse until you find the commit that introduced the cause
>> for the failure).  This works best when you made many small commits.
>>
>> I’m using multiple branches for things that take me too long.  For most
>> developments, however, I’m working in a local “wip” branch, which is
>> regularly and in short intervals rebased onto master.
>>
>> ~~ Ricardo
>>

-- 
ng/ni*
vcard: http://krosos.sdf.org



reply via email to

[Prev in Thread] Current Thread [Next in Thread]