[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