The sound distributed version control system

#273 1.0.0-alpha fails to build from source on Fedora 33 (1.0.0-alpha.35 is fine)

Closed on March 2, 2021
edwintorok on January 17, 2021

cargo install pijul fails due to missing dependency (it tries to install 0.12.2). https://pijul.org/downloads/ says to use cargo install pijul --version 1.0.0-alpha, but that fails (it tries to install 1.0.0-alpha.36)

Workaround: cargo install pijul --version 1.0.0-alpha.35

As you approach 1.0 I’d suggest you set up a CI, so that the alpha (and final) versions are always buildable.

cargo install pijul --version 1.0.0-alpha
  Downloaded pijul v1.0.0-alpha
  Downloaded 1 crate (53.8 KB) in 1.35s
    Updating crates.io index
  Installing pijul v1.0.0-alpha
  Downloaded foreign-types v0.3.2
  Downloaded filetime v0.2.13
  Downloaded memmap v0.7.0
  Downloaded aho-corasick v0.7.15
  Downloaded globset v0.4.6
  Downloaded byteorder v1.4.2
  Downloaded canonical-path v2.0.2
  Downloaded rand_chacha v0.3.0
  Downloaded parking_lot v0.11.1
  Downloaded native-tls v0.2.7
  Downloaded parking_lot_core v0.8.2
  Downloaded serde_urlencoded v0.7.0
  Downloaded tempfile v3.2.0
  Downloaded ignore v0.4.17
  Downloaded getrandom v0.2.1
  Downloaded whoami v0.9.0
  Downloaded yasna v0.3.2
  Downloaded pkg-config v0.3.19
  Downloaded pin-project-internal v1.0.4
  Downloaded num-bigint v0.2.6
  Downloaded http v0.2.3
  Downloaded openssl-sys v0.9.60
  Downloaded thread_local v1.1.0
  Downloaded encoding_rs v0.8.26
  Downloaded addr2line v0.14.1
  Downloaded env_logger v0.8.2
  Downloaded clap v3.0.0-beta.2
  Downloaded bstr v0.2.14
  Downloaded constant_time_eq v0.1.5
  Downloaded mio-uds v0.6.8
  Downloaded base64 v0.13.0
  Downloaded instant v0.1.9
  Downloaded lock_api v0.4.2
  Downloaded humantime v2.1.0
  Downloaded arrayref v0.3.6
  Downloaded itoa v0.4.7
  Downloaded libc v0.2.82
  Downloaded linked-hash-map v0.5.4
  Downloaded remove_dir_all v0.5.3
  Downloaded strsim v0.10.0
  Downloaded bit-vec v0.6.3
  Downloaded uuid v0.8.2
  Downloaded tinyvec_macros v0.1.0
  Downloaded threadpool v1.8.1
  Downloaded bincode v1.3.1
  Downloaded data-encoding v2.3.1
  Downloaded arrayvec v0.5.2
  Downloaded adler v0.2.3
  Downloaded mime v0.3.16
  Downloaded cc v1.0.66
  Downloaded bytes v1.0.1
  Downloaded anyhow v1.0.38
  Downloaded dirs v2.0.2
  Downloaded dirs-sys v0.3.5
  Downloaded bitflags v1.2.1
  Downloaded pin-project v1.0.4
  Downloaded dirs v3.0.1
  Downloaded vcpkg v0.2.11
  Downloaded tar v0.4.30
  Downloaded digest v0.9.0
  Downloaded autocfg v1.0.1
  Downloaded url v2.2.0
  Downloaded fnv v1.0.7
  Downloaded flate2 v1.0.19
  Downloaded atty v0.2.14
  Downloaded ppv-lite86 v0.2.10
  Downloaded walkdir v2.3.1
  Downloaded futures-sink v0.3.12
  Downloaded unicase v2.6.0
  Downloaded log v0.4.13
  Downloaded futures-util v0.3.12
  Downloaded futures-task v0.3.12
  Downloaded heck v0.3.2
  Downloaded fs2 v0.4.3
  Downloaded openssl v0.10.32
  Downloaded futures v0.3.12
  Downloaded hashbrown v0.9.1
  Downloaded getrandom v0.1.16
  Downloaded http-body v0.3.1
  Downloaded futures-macro v0.3.12
  Downloaded generic-array v0.14.4
  Downloaded matches v0.1.8
  Downloaded blake3 v0.3.7
  Downloaded which v3.1.1
  Downloaded hyper v0.13.9
  Downloaded ipnet v2.3.0
  Downloaded net2 v0.2.37
  Downloaded regex v1.4.3
  Downloaded lazy_static v1.4.0
  Downloaded cfg-if v1.0.0
  Downloaded smallvec v1.6.1
  Downloaded os_str_bytes v2.4.0
  Downloaded serde_json v1.0.61
  Downloaded tokio-macros v0.2.6
  Downloaded hyper-tls v0.4.3
  Downloaded rand_chacha v0.2.2
  Downloaded rand v0.7.3
  Downloaded percent-encoding v2.1.0
  Downloaded syn v1.0.58
  Downloaded tokio v0.2.24
  Downloaded xattr v0.2.2
  Downloaded rand v0.8.2
  Downloaded miniz_oxide v0.4.3
  Downloaded mio v0.6.23
  Downloaded tinyvec v1.1.0
  Downloaded ryu v1.0.5
  Downloaded unicode-bidi v0.3.4
  Downloaded typenum v1.12.0
  Downloaded time v0.1.43
  Downloaded tokio v1.0.2
  Downloaded zeroize v1.2.0
  Downloaded pin-project-lite v0.1.11
  Downloaded termcolor v1.1.2
  Downloaded try-lock v0.2.3
  Downloaded winapi v0.3.9
  Downloaded unicode-segmentation v1.7.1
  Downloaded version_check v0.9.2
  Downloaded tracing-futures v0.2.4
  Downloaded unicode-normalization v0.1.16
  Downloaded unicode-xid v0.2.1
  Downloaded unicode-width v0.1.8
  Downloaded proc-macro-hack v0.5.19
  Downloaded object v0.22.0
  Downloaded idna v0.2.0
  Downloaded vec_map v0.8.2
  Downloaded crc32fast v1.2.1
  Downloaded proc-macro-error-attr v1.0.4
  Downloaded pin-project-internal v0.4.27
  Downloaded tracing-core v0.1.17
  Downloaded h2 v0.2.7
  Downloaded gimli v0.23.0
  Downloaded textwrap v0.12.1
  Downloaded curve25519-dalek v3.0.2
  Downloaded proc-macro2 v1.0.24
  Downloaded proc-macro-nested v0.1.7
  Downloaded tracing v0.1.22
  Downloaded tower-service v0.3.0
  Downloaded toml v0.5.8
  Downloaded tokio-util v0.3.1
  Downloaded tokio-tls v0.3.1
  Downloaded proc-macro-error v1.0.4
  Downloaded lru-cache v0.1.2
  Downloaded crossbeam-utils v0.8.1
  Downloaded slab v0.4.2
  Downloaded scopeguard v1.1.0
  Downloaded rustc-demangle v0.1.18
  Downloaded pin-utils v0.1.0
  Downloaded pin-project-lite v0.2.4
  Downloaded pin-project v0.4.27
  Downloaded num-integer v0.1.44
  Downloaded chrono v0.4.19
  Downloaded crypto-mac v0.8.0
  Downloaded winapi-build v0.1.1
  Downloaded subtle v2.4.0
  Downloaded rpassword v5.0.0
  Downloaded rand_core v0.5.1
  Downloaded openssl-probe v0.1.2
  Downloaded kernel32-sys v0.2.2
  Downloaded httparse v1.3.4
  Downloaded bytes v0.5.6
  Downloaded winapi v0.2.8
  Downloaded human-panic v1.0.3
  Downloaded thiserror-impl v1.0.23
  Downloaded thiserror v1.0.23
  Downloaded futures-io v0.3.12
  Downloaded socket2 v0.3.19
  Downloaded serde_derive v1.0.119
  Downloaded serde v1.0.119
  Downloaded quote v1.0.8
  Downloaded futures-executor v0.3.12
  Downloaded cfg-if v0.1.10
  Downloaded num-traits v0.2.14
  Downloaded rand_core v0.6.1
  Downloaded once_cell v1.5.2
  Downloaded num_cpus v1.13.0
  Downloaded mime_guess v2.0.3
  Downloaded memchr v2.3.4
  Downloaded iovec v0.1.4
  Downloaded same-file v1.0.6
  Downloaded reqwest v0.10.10
  Downloaded futures-core v0.3.12
  Downloaded futures-channel v0.3.12
  Downloaded regex-syntax v0.6.22
  Downloaded indexmap v1.6.1
  Downloaded libsodium-sys v0.2.6
  Downloaded edit v0.1.2
  Downloaded httpdate v0.3.2
  Downloaded want v0.3.0
  Downloaded form_urlencoded v1.0.0
  Downloaded clap_derive v3.0.0-beta.2
  Downloaded foreign-types-shared v0.1.1
  Downloaded backtrace v0.3.55
  Downloaded cryptovec v0.6.1
  Downloaded cryptovec v0.5.5
  Downloaded os_type v2.2.0
  Downloaded pijul-macros v0.3.0
  Downloaded thrussh-libsodium v0.2.1
  Downloaded diffs v0.4.0
  Downloaded sanakirja v0.13.1
  Downloaded sanakirja v0.15.8
  Downloaded thrussh-keys v0.18.12
  Downloaded zstd-seekable v0.1.7
  Downloaded thrussh v0.29.16
  Downloaded libpijul v1.0.0-alpha.31
  Downloaded 204 crates (17.9 MB) in 1.54s (largest was `libsodium-sys` at 4.6 MB)
   Compiling libc v0.2.82
   Compiling autocfg v1.0.1
   Compiling proc-macro2 v1.0.24
   Compiling unicode-xid v0.2.1
   Compiling syn v1.0.58
   Compiling cfg-if v1.0.0
   Compiling memchr v2.3.4
   Compiling version_check v0.9.2
   Compiling lazy_static v1.4.0
   Compiling cfg-if v0.1.10
   Compiling log v0.4.13
   Compiling cc v1.0.66
   Compiling pkg-config v0.3.19
   Compiling slab v0.4.2
   Compiling serde_derive v1.0.119
   Compiling fnv v1.0.7
   Compiling pin-project-lite v0.2.4
   Compiling serde v1.0.119
   Compiling futures-core v0.3.12
   Compiling proc-macro-hack v0.5.19
   Compiling bitflags v1.2.1
   Compiling proc-macro-nested v0.1.7
   Compiling futures-sink v0.3.12
   Compiling getrandom v0.2.1
   Compiling once_cell v1.5.2
   Compiling bytes v0.5.6
   Compiling pin-project-lite v0.1.11
   Compiling pin-utils v0.1.0
   Compiling ppv-lite86 v0.2.10
   Compiling futures-io v0.3.12
   Compiling getrandom v0.1.16
   Compiling itoa v0.4.7
   Compiling foreign-types-shared v0.1.1
   Compiling pin-project-internal v0.4.27
   Compiling typenum v1.12.0
   Compiling openssl v0.10.32
   Compiling bytes v1.0.1
   Compiling regex-syntax v0.6.22
   Compiling matches v0.1.8
   Compiling winapi v0.3.9
   Compiling crc32fast v1.2.1
   Compiling hashbrown v0.9.1
   Compiling adler v0.2.3
   Compiling ryu v1.0.5
   Compiling smallvec v1.6.1
   Compiling native-tls v0.2.7
   Compiling tinyvec_macros v0.1.0
   Compiling scopeguard v1.1.0
   Compiling byteorder v1.4.2
   Compiling httparse v1.3.4
   Compiling percent-encoding v2.1.0
   Compiling openssl-probe v0.1.2
   Compiling subtle v2.4.0
   Compiling anyhow v1.0.38
   Compiling winapi-build v0.1.1
   Compiling try-lock v0.2.3
   Compiling tower-service v0.3.0
   Compiling bit-vec v0.6.3
   Compiling unicode-segmentation v1.7.1
   Compiling gimli v0.23.0
   Compiling termcolor v1.1.2
   Compiling remove_dir_all v0.5.3
   Compiling data-encoding v2.3.1
   Compiling encoding_rs v0.8.26
   Compiling same-file v1.0.6
   Compiling httpdate v0.3.2
   Compiling rustc-demangle v0.1.18
   Compiling serde_json v1.0.61
   Compiling unicode-width v0.1.8
   Compiling mime v0.3.16
   Compiling arrayref v0.3.6
   Compiling arrayvec v0.5.2
   Compiling linked-hash-map v0.5.4
   Compiling constant_time_eq v0.1.5
   Compiling object v0.22.0
   Compiling zeroize v1.2.0
   Compiling winapi v0.2.8
   Compiling ipnet v2.3.0
   Compiling diffs v0.4.0
   Compiling base64 v0.13.0
   Compiling vec_map v0.8.2
   Compiling os_str_bytes v2.4.0
   Compiling strsim v0.10.0
   Compiling canonical-path v2.0.2
   Compiling humantime v2.1.0
   Compiling whoami v0.9.0
   Compiling instant v0.1.9
   Compiling futures-channel v0.3.12
   Compiling thread_local v1.1.0
   Compiling tracing-core v0.1.17
   Compiling foreign-types v0.3.2
   Compiling futures-task v0.3.12
   Compiling unicode-bidi v0.3.4
   Compiling tinyvec v1.1.0
   Compiling lock_api v0.4.2
   Compiling form_urlencoded v1.0.0
   Compiling unicase v2.6.0
   Compiling generic-array v0.14.4
   Compiling proc-macro-error-attr v1.0.4
   Compiling proc-macro-error v1.0.4
   Compiling kernel32-sys v0.2.2
   Compiling num-traits v0.2.14
   Compiling num-integer v0.1.44
   Compiling miniz_oxide v0.4.3
   Compiling indexmap v1.6.1
   Compiling num-bigint v0.2.6
   Compiling crossbeam-utils v0.8.1
   Compiling tokio v1.0.2
   Compiling walkdir v2.3.1
   Compiling http v0.2.3
   Compiling textwrap v0.12.1
   Compiling lru-cache v0.1.2
   Compiling heck v0.3.2
   Compiling openssl-sys v0.9.60
   Compiling blake3 v0.3.7
   Compiling zstd-seekable v0.1.7
   Compiling tracing v0.1.22
   Compiling want v0.3.0
   Compiling aho-corasick v0.7.15
   Compiling bstr v0.2.14
   Compiling unicode-normalization v0.1.16
   Compiling quote v1.0.8
   Compiling num_cpus v1.13.0
   Compiling iovec v0.1.4
   Compiling net2 v0.2.37
   Compiling parking_lot_core v0.8.2
   Compiling dirs-sys v0.3.5
   Compiling socket2 v0.3.19
   Compiling fs2 v0.4.3
   Compiling memmap v0.7.0
   Compiling xattr v0.2.2
   Compiling cryptovec v0.6.1
   Compiling atty v0.2.14
   Compiling time v0.1.43
   Compiling filetime v0.2.13
   Compiling which v3.1.1
   Compiling rpassword v5.0.0
   Compiling libsodium-sys v0.2.6
   Compiling cryptovec v0.5.5
   Compiling mime_guess v2.0.3
   Compiling addr2line v0.14.1
   Compiling threadpool v1.8.1
   Compiling flate2 v1.0.19
   Compiling mio v0.6.23
   Compiling http-body v0.3.1
   Compiling rand_core v0.5.1
   Compiling rand_core v0.6.1
   Compiling uuid v0.8.2
   Compiling dirs v2.0.2
   Compiling dirs v3.0.1
   Compiling parking_lot v0.11.1
   Compiling regex v1.4.3
   Compiling idna v0.2.0
   Compiling tar v0.4.30
   Compiling backtrace v0.3.55
   Compiling digest v0.9.0
   Compiling crypto-mac v0.8.0
   Compiling rand_chacha v0.2.2
   Compiling rand_chacha v0.3.0
   Compiling mio-uds v0.6.8
   Compiling url v2.2.0
   Compiling rand v0.7.3
   Compiling rand v0.8.2
   Compiling globset v0.4.6
   Compiling os_type v2.2.0
   Compiling env_logger v0.8.2
   Compiling yasna v0.3.2
   Compiling ignore v0.4.17
   Compiling tempfile v3.2.0
   Compiling sanakirja v0.13.1
   Compiling edit v0.1.2
   Compiling tokio-macros v0.2.6
   Compiling futures-macro v0.3.12
   Compiling thiserror-impl v1.0.23
   Compiling pin-project-internal v1.0.4
   Compiling clap_derive v3.0.0-beta.2
   Compiling pijul-macros v0.3.0
   Compiling tokio v0.2.24
   Compiling futures-util v0.3.12
   Compiling thiserror v1.0.23
   Compiling sanakirja v0.15.8
   Compiling pin-project v1.0.4
   Compiling pin-project v0.4.27
   Compiling clap v3.0.0-beta.2
   Compiling tracing-futures v0.2.4
   Compiling tokio-util v0.3.1
   Compiling tokio-tls v0.3.1
   Compiling futures-executor v0.3.12
   Compiling h2 v0.2.7
   Compiling futures v0.3.12
   Compiling toml v0.5.8
   Compiling chrono v0.4.19
   Compiling curve25519-dalek v3.0.2
   Compiling serde_urlencoded v0.7.0
   Compiling bincode v1.3.1
   Compiling hyper v0.13.9
   Compiling human-panic v1.0.3
   Compiling libpijul v1.0.0-alpha.31
   Compiling thrussh-libsodium v0.2.1
   Compiling thrussh-keys v0.18.12
   Compiling thrussh v0.29.16
   Compiling hyper-tls v0.4.3
   Compiling reqwest v0.10.10
   Compiling pijul v1.0.0-alpha
error[E0433]: failed to resolve: use of undeclared type `LocalChange3`
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/record.rs:168:13
    |
168 |             LocalChange3::make_change(txn, channel, actions, rec.contents, header, Vec::new());
    |             ^^^^^^^^^^^^ use of undeclared type `LocalChange3`

error[E0433]: failed to resolve: use of undeclared type `Change3`
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/record.rs:182:26
    |
182 |             let change = Change3::read(&mut change, &mut rec.updatables)?;
    |                          ^^^^^^^ use of undeclared type `Change3`

error[E0433]: failed to resolve: use of undeclared type `LocalChange3`
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/diff.rs:45:26
   |
45 |         let mut change = LocalChange3::make_change(
   |                          ^^^^^^^^^^^^ use of undeclared type `LocalChange3`

error[E0433]: failed to resolve: use of undeclared type `Record`
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/diff.rs:67:25
   |
67 |                         Record::FileMove { .. } => "file move",
   |                         ^^^^^^ use of undeclared type `Record`

error[E0433]: failed to resolve: use of undeclared type `Record`
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/diff.rs:68:25
   |
68 |                         Record::FileDel { .. } => "file del",
   |                         ^^^^^^ use of undeclared type `Record`

error[E0433]: failed to resolve: use of undeclared type `Record`
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/diff.rs:69:25
   |
69 |                         Record::FileUndel { .. } => "file undel",
   |                         ^^^^^^ use of undeclared type `Record`

error[E0433]: failed to resolve: use of undeclared type `Record`
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/diff.rs:70:25
   |
70 |                         Record::SolveNameConflict { .. } => "solve name conflict",
   |                         ^^^^^^ use of undeclared type `Record`

error[E0433]: failed to resolve: use of undeclared type `Record`
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/diff.rs:71:25
   |
71 |                         Record::UnsolveNameConflict { .. } => "unsolve name conflict",
   |                         ^^^^^^ use of undeclared type `Record`

error[E0433]: failed to resolve: use of undeclared type `Record`
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/diff.rs:72:25
   |
72 |                         Record::FileAdd { .. } => "file add",
   |                         ^^^^^^ use of undeclared type `Record`

error[E0433]: failed to resolve: use of undeclared type `Record`
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/diff.rs:73:25
   |
73 |                         Record::Edit { .. } => "edit",
   |                         ^^^^^^ use of undeclared type `Record`

error[E0433]: failed to resolve: use of undeclared type `Record`
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/diff.rs:74:25
   |
74 |                         Record::Replacement { .. } => "replacement",
   |                         ^^^^^^ use of undeclared type `Record`

error[E0433]: failed to resolve: use of undeclared type `Record`
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/diff.rs:75:25
   |
75 |                         Record::SolveOrderConflict { .. } => "solve order conflict",
   |                         ^^^^^^ use of undeclared type `Record`

error[E0433]: failed to resolve: use of undeclared type `Record`
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/diff.rs:76:25
   |
76 |                         Record::UnsolveOrderConflict { .. } => "unsolve order conflict",
   |                         ^^^^^^ use of undeclared type `Record`

error[E0433]: failed to resolve: use of undeclared type `Record`
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/diff.rs:77:25
   |
77 |                         Record::ResurrectZombies { .. } => "resurrect zombies",
   |                         ^^^^^^ use of undeclared type `Record`

error[E0433]: failed to resolve: could not find `Change3` in `change`
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/protocol.rs:140:39
    |
140 |                     libpijul::change::Change3::size_no_contents(&mut f)?
    |                                       ^^^^^^^ could not find `Change3` in `change`

error[E0433]: failed to resolve: could not find `Change3` in `change`
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/protocol.rs:172:35
    |
172 |                 libpijul::change::Change3::deserialize(&path.to_string_lossy(), Some(&h))?;
    |                                   ^^^^^^^ could not find `Change3` in `change`

error[E0433]: failed to resolve: could not find `Change3` in `change`
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/apply.rs:40:48
   |
40 |                 let change = libpijul::change::Change3::deserialize(&ch, None)?;
   |                                                ^^^^^^^ could not find `Change3` in `change`

error[E0433]: failed to resolve: could not find `Change3` in `change`
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/apply.rs:45:44
   |
45 |             let change = libpijul::change::Change3::read(&mut change, &mut HashMap::new())?;
   |                                            ^^^^^^^ could not find `Change3` in `change`

error[E0412]: cannot find type `Change3` in this scope
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/record.rs:131:13
    |
131 |             Change3,
    |             ^^^^^^^
    | 
   ::: /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/libpijul-1.0.0-alpha.31/src/change.rs:190:1
    |
190 | pub type Change = LocalChange<Local>;
    | ------------------------------------- similarly named type alias `Change` defined here
    |
help: a type alias with a similar name exists
    |
131 |             Change,
    |             ^^^^^^
help: you might be missing a type parameter
    |
37  | impl<Change3> Record {
    |     ^^^^^^^^^

error[E0061]: this function takes 7 arguments but 5 arguments were supplied
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/clone.rs:72:13
   |
72 |         txn.output_repository_no_pending(
   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected 7 arguments
73 |             &mut repo.working_copy,
   |             ----------------------
74 |             &repo.changes,
   |             -------------
75 |             &mut channel,
   |             ------------
76 |             "",
   |             --
77 |             true,
   |             ---- supplied 5 arguments

error[E0308]: mismatched types
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/pushpull.rs:145:13
    |
145 |         for (_, (h, m)) in txn.reverse_log(&channel.borrow(), None) {
    |             ^^^^^^^^^^^    ---------------------------------------- this expression has type `RevLog<'_, GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>>`
    |             |
    |             expected struct `RevLog`, found tuple
    |
    = note: expected struct `RevLog<'_, GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>>`
                found tuple `(_, _)`

error[E0308]: mismatched types
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/pushpull.rs:146:16
    |
146 |             if txn.remote_has_state(&remote_changes, m) {
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected `bool`, found enum `std::result::Result`
    |
    = note: expected type `bool`
               found enum `std::result::Result<bool, TxnErr<SanakirjaError>>`

error[E0599]: no method named `get_internal` found for struct `GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>` in the current scope
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/pushpull.rs:149:29
    |
149 |             let h_int = txn.get_internal(h).unwrap();
    |                             ^^^^^^^^^^^^ method not found in `GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>`
    |
    = help: items from traits can only be used if the trait is in scope
    = note: the following trait is implemented but not in scope; perhaps add a `use` for it:
            `use libpijul::GraphTxnT;`

error[E0600]: cannot apply unary operator `!` to type `std::result::Result<bool, TxnErr<SanakirjaError>>`
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/pushpull.rs:150:16
    |
150 |             if !txn.remote_has_change(&remote_changes, h) {
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot apply unary operator `!`

error[E0599]: no method named `get_touched_files` found for struct `GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>` in the current scope
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/pushpull.rs:152:28
    |
152 |                     if txn.get_touched_files(*p, Some(h_int)).is_some() {
    |                            ^^^^^^^^^^^^^^^^^ method not found in `GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>`
    |
    = help: items from traits can only be used if the trait is in scope
    = note: the following trait is implemented but not in scope; perhaps add a `use` for it:
            `use libpijul::DepsTxnT;`

error[E0308]: mismatched types
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/pushpull.rs:215:17
    |
215 |             for (_, (h, m)) in txn.iter_remote(&remote_changes.borrow().remote, 0) {
    |                 ^^^^^^^^^^^    --------------------------------------------------- this expression has type `libpijul::pristine::Cursor<GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>, &GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>, sanakirja::Cursor, u64, (libpijul::Hash, Merkle)>`
    |                 |
    |                 expected struct `libpijul::pristine::Cursor`, found tuple
    |
    = note: expected struct `libpijul::pristine::Cursor<GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>, &GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>, sanakirja::Cursor, u64, (libpijul::Hash, Merkle)>`
                found tuple `(_, _)`

error[E0599]: no method named `channel_has_state` found for struct `GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>` in the current scope
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/pushpull.rs:216:24
    |
216 |                 if txn.channel_has_state(&channel, m) {
    |                        ^^^^^^^^^^^^^^^^^ method not found in `GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>`
    |
    = help: items from traits can only be used if the trait is in scope
    = note: the following trait is implemented but not in scope; perhaps add a `use` for it:
            `use libpijul::ChannelTxnT;`

error[E0599]: no method named `is_none` found for enum `std::result::Result<std::option::Option<u64>, SanakirjaError>` in the current scope
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/pushpull.rs:218:59
    |
218 |                 } else if txn.get_revchanges(&channel, h).is_none() {
    |                                                           ^^^^^^^ method not found in `std::result::Result<std::option::Option<u64>, SanakirjaError>`

error[E0061]: this function takes 7 arguments but 5 arguments were supplied
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/pushpull.rs:273:13
    |
273 |         txn.output_repository_no_pending(
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected 7 arguments
274 |             &mut repo.working_copy,
    |             ----------------------
275 |             &repo.changes,
    |             -------------
276 |             &mut channel,
    |             ------------
277 |             "",
    |             --
278 |             true,
    |             ---- supplied 5 arguments

error[E0308]: mismatched types
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/archive.rs:71:21
   |
71 |                     &mut channel,
   |                     ^^^^^^^^^^^^ expected struct `ChannelRef`, found enum `std::option::Option`
   |
   = note: expected mutable reference `&mut ChannelRef<GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>>`
              found mutable reference `&mut std::option::Option<ChannelRef<GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>>>`

error[E0308]: mismatched types
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/archive.rs:79:44
   |
79 |                 txn.archive(&repo.changes, &channel, &mut tarball)?
   |                                            ^^^^^^^^ expected struct `ChannelRef`, found enum `std::option::Option`
   |
   = note: expected reference `&ChannelRef<GenericTxn<sanakirja::transaction::Txn<sanakirja::transaction::Exclusive, Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>>>>`
              found reference `&std::option::Option<ChannelRef<GenericTxn<sanakirja::transaction::Txn<sanakirja::transaction::Exclusive, Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>>>>>`

error[E0599]: no method named `filter_map` found for enum `std::result::Result<libpijul::pristine::Cursor<T, &T, <T as libpijul::TxnT>::RemoteCursor, u64, (libpijul::Hash, Merkle)>, TxnErr<<T as GraphTxnT>::GraphError>>` in the current scope
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/remote/mod.rs:135:14
    |
135 |               .filter_map(|(k, _)| if k >= n { Some(k) } else { None })
    |                ^^^^^^^^^^ method not found in `std::result::Result<libpijul::pristine::Cursor<T, &T, <T as libpijul::TxnT>::RemoteCursor, u64, (libpijul::Hash, Merkle)>, TxnErr<<T as GraphTxnT>::GraphError>>`
    |
    = note: the method `filter_map` exists but the following trait bounds were not satisfied:
            `std::result::Result<libpijul::pristine::Cursor<T, &T, <T as libpijul::TxnT>::RemoteCursor, u64, (libpijul::Hash, Merkle)>, TxnErr<<T as GraphTxnT>::GraphError>>: Iterator`
            which is required by `&mut std::result::Result<libpijul::pristine::Cursor<T, &T, <T as libpijul::TxnT>::RemoteCursor, u64, (libpijul::Hash, Merkle)>, TxnErr<<T as GraphTxnT>::GraphError>>: Iterator`

error[E0308]: mismatched types
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/remote/mod.rs:151:42
    |
151 |         let (mut b, (_, state)) = if let Some(last) = txn.last_remote(remote) {
    |                                          ^^^^^^^^^^   ----------------------- this expression has type `std::result::Result<std::option::Option<(u64, (libpijul::Hash, Merkle))>, TxnErr<<T as GraphTxnT>::GraphError>>`
    |                                          |
    |                                          expected enum `std::result::Result`, found enum `std::option::Option`
    |
    = note: expected enum `std::result::Result<std::option::Option<(u64, (libpijul::Hash, Merkle))>, TxnErr<<T as GraphTxnT>::GraphError>>`
               found enum `std::option::Option<_>`

error[E0308]: mismatched types
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/remote/mod.rs:168:17
    |
168 |             let (mid, (_, state)) = txn.get_remote_state(remote, mid).unwrap();
    |                 ^^^^^^^^^^^^^^^^^   ------------------------------------------ this expression has type `std::option::Option<(u64, (libpijul::Hash, Merkle))>`
    |                 |
    |                 expected enum `std::option::Option`, found tuple
    |
    = note: expected enum `std::option::Option<(u64, (libpijul::Hash, Merkle))>`
              found tuple `(_, _)`

error[E0308]: mismatched types
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/remote/mod.rs:242:54
    |
242 |                     txn.archive_with_state(&changes, &mut channel, state, extra, &mut tarball)?
    |                                                      ^^^^^^^^^^^^ expected struct `ChannelRef`, found enum `std::option::Option`
    |
    = note: expected mutable reference `&mut ChannelRef<GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>>`
               found mutable reference `&mut std::option::Option<ChannelRef<GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>>>`

error[E0308]: mismatched types
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/remote/mod.rs:246:43
    |
246 |                     txn.archive(&changes, &channel, &mut tarball)?
    |                                           ^^^^^^^^ expected struct `ChannelRef`, found enum `std::option::Option`
    |
    = note: expected reference `&ChannelRef<GenericTxn<sanakirja::transaction::Txn<sanakirja::transaction::Exclusive, Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>>>>`
               found reference `&std::option::Option<ChannelRef<GenericTxn<sanakirja::transaction::Txn<sanakirja::transaction::Exclusive, Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>>>>>`

error[E0698]: type inside `async fn` body must be known in this context
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/remote/mod.rs:275:21
    |
275 |                 let mut n = 0;
    |                     ^^^^^ cannot infer type for type `{integer}`
    |
note: the type is part of the `async fn` body because of this `await`
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/remote/mod.rs:276:40
    |
276 |                 while let Some(item) = stream.next().await {
    |                                        ^^^^^^^^^^^^^^^^^^^

error[E0308]: mismatched types
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/remote/mod.rs:552:17
    |
552 |             for (n, (h, s)) in txn.iter_rev_remote(&remote.borrow().remote, None) {
    |                 ^^^^^^^^^^^    -------------------------------------------------- this expression has type `RevCursor<T, &T, <T as libpijul::TxnT>::RemoteCursor, u64, (libpijul::Hash, Merkle)>`
    |                 |
    |                 expected struct `RevCursor`, found tuple
    |
    = note: expected struct `RevCursor<T, &T, <T as libpijul::TxnT>::RemoteCursor, u64, (libpijul::Hash, Merkle)>`
                found tuple `(_, _)`

error[E0308]: mismatched types
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/remote/mod.rs:573:13
    |
573 |         for (n, (h, s)) in txn.iter_remote(&remote.borrow().remote, 0) {
    |             ^^^^^^^^^^^    ------------------------------------------- this expression has type `libpijul::pristine::Cursor<T, &T, <T as libpijul::TxnT>::RemoteCursor, u64, (libpijul::Hash, Merkle)>`
    |             |
    |             expected struct `libpijul::pristine::Cursor`, found tuple
    |
    = note: expected struct `libpijul::pristine::Cursor<T, &T, <T as libpijul::TxnT>::RemoteCursor, u64, (libpijul::Hash, Merkle)>`
                found tuple `(_, _)`

error[E0308]: mismatched types
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/remote/mod.rs:623:46
    |
623 |             if repo.changes.has_contents(*c, txn.get_internal(*c)) {
    |                                              ^^^^^^^^^^^^^^^^^^^^ expected enum `std::option::Option`, found enum `std::result::Result`
    |
    = note: expected enum `std::option::Option<_>`
               found enum `std::result::Result<std::option::Option<_>, TxnErr<<T as GraphTxnT>::GraphError>>`

error[E0308]: mismatched types
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/remote/mod.rs:633:33
    |
633 |             let change = if let Some(i) = txn.get_internal(*c) {
    |                                 ^^^^^^^   -------------------- this expression has type `std::result::Result<std::option::Option<ChangeId>, TxnErr<<T as GraphTxnT>::GraphError>>`
    |                                 |
    |                                 expected enum `std::result::Result`, found enum `std::option::Option`
    |
    = note: expected enum `std::result::Result<std::option::Option<ChangeId>, TxnErr<<T as GraphTxnT>::GraphError>>`
               found enum `std::option::Option<_>`

error[E0599]: no method named `iter_graph` found for reference `&T` in the current scope
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/remote/mod.rs:645:32
    |
645 |             for (v_, e) in txn.iter_graph(&channel.graph, v, None) {
    |                                ^^^^^^^^^^
    |
    = help: items from traits can only be used if the type parameter is bounded by the trait
help: the following trait defines an item `iter_graph`, perhaps you need to restrict type parameter `T` with it:
    |
588 |     pub async fn complete_changes<T: GraphIter + MutTxnTExt + TxnTExt>(
    |                                   ^^^^^^^^^^^^^^
help: there is an associated function with a similar name
    |
645 |             for (v_, e) in txn.del_graph(&channel.graph, v, None) {
    |                                ^^^^^^^^^

error[E0609]: no field `graph` on type `std::cell::Ref<'_, <T as libpijul::ChannelTxnT>::Channel>`
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/remote/mod.rs:645:52
    |
645 |             for (v_, e) in txn.iter_graph(&channel.graph, v, None) {
    |                                                    ^^^^^ unknown field

error[E0308]: mismatched types
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/remote/mod.rs:687:13
    |
687 |         for (_, (h, _)) in txn.iter_remote(&remote_changes.borrow().remote, 0) {
    |             ^^^^^^^^^^^    --------------------------------------------------- this expression has type `libpijul::pristine::Cursor<T, &T, <T as libpijul::TxnT>::RemoteCursor, u64, (libpijul::Hash, Merkle)>`
    |             |
    |             expected struct `libpijul::pristine::Cursor`, found tuple
    |
    = note: expected struct `libpijul::pristine::Cursor<T, &T, <T as libpijul::TxnT>::RemoteCursor, u64, (libpijul::Hash, Merkle)>`
                found tuple `(_, _)`

error[E0599]: no method named `to_base32` found for enum `std::option::Option<libpijul::Hash>` in the current scope
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/remote/ssh.rs:725:52
    |
725 |                     .data(format!("change {}\n", h.to_base32()).as_bytes())
    |                                                    ^^^^^^^^^ method not found in `std::option::Option<libpijul::Hash>`

error[E0599]: no method named `changeid_log` found for mutable reference `&mut T` in the current scope
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/remote/ssh.rs:730:37
    |
730 |             for (_, (ch, _)) in txn.changeid_log(&channel_, 0) {
    |                                     ^^^^^^^^^^^^ method not found in `&mut T`

error[E0599]: no method named `to_base32` found for enum `std::option::Option<libpijul::Hash>` in the current scope
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/remote/ssh.rs:733:52
    |
733 |                     .data(format!("change {}\n", h.to_base32()).as_bytes())
    |                                                    ^^^^^^^^^ method not found in `std::option::Option<libpijul::Hash>`

error[E0308]: mismatched types
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/remote/ssh.rs:741:48
    |
741 |         self.wait_downloads(&repo.changes_dir, &hashes, &mut send)
    |                                                ^^^^^^^ expected slice, found struct `Vec`
    |
    = note: expected reference `&[libpijul::Hash]`
               found reference `&Vec<std::option::Option<libpijul::Hash>>`

error[E0061]: this function takes 7 arguments but 5 arguments were supplied
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/remote/ssh.rs:743:13
    |
743 |         txn.output_repository_no_pending(&mut repo.working_copy, &repo.changes, channel, "", true)?;
    |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ----------------------  -------------  -------  --  ---- supplied 5 arguments
    |             |
    |             expected 7 arguments

error[E0698]: type inside `async fn` body must be known in this context
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/remote/ssh.rs:730:61
    |
730 |             for (_, (ch, _)) in txn.changeid_log(&channel_, 0) {
    |                                                             ^ cannot infer type for type `{integer}`
    |
note: the type is part of the `async fn` body because of this `await`
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/remote/ssh.rs:732:17
    |
732 | /                 self.c
733 | |                     .data(format!("change {}\n", h.to_base32()).as_bytes())
734 | |                     .await?;
    | |__________________________^

error[E0599]: no method named `name` found for struct `RemotesIterator<'_, GenericTxn<sanakirja::transaction::Txn<sanakirja::transaction::Exclusive, Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>>>>` in the current scope
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/pushpull.rs:33:40
   |
33 |                     println!("  {}", r.name());
   |                                        ^^^^ method not found in `RemotesIterator<'_, GenericTxn<sanakirja::transaction::Txn<sanakirja::transaction::Exclusive, Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>>>>`

error[E0308]: mismatched types
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/log.rs:26:30
   |
26 |         let channel = if let Some(channel) = txn.load_channel(channel_name) {
   |                              ^^^^^^^^^^^^^   ------------------------------ this expression has type `std::result::Result<std::option::Option<ChannelRef<GenericTxn<sanakirja::transaction::Txn<sanakirja::transaction::Exclusive, Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>>>>>, TxnErr<SanakirjaError>>`
   |                              |
   |                              expected enum `std::result::Result`, found enum `std::option::Option`
   |
   = note: expected enum `std::result::Result<std::option::Option<ChannelRef<GenericTxn<sanakirja::transaction::Txn<sanakirja::transaction::Exclusive, Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>>>>>, TxnErr<SanakirjaError>>`
              found enum `std::option::Option<_>`

error[E0609]: no field `0` on type `std::result::Result<(Vec<libpijul::Hash>, Vec<libpijul::Hash>), TxnErr<SanakirjaError>>`
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/log.rs:36:74
   |
36 |             for h in libpijul::change::full_dependencies(&txn, &channel).0 {
   |                                                                          ^

error[E0308]: mismatched types
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/log.rs:48:17
   |
48 |             for (_, (h, mrk)) in txn.reverse_log(&channel.borrow(), None) {
   |                 ^^^^^^^^^^^^^    ---------------------------------------- this expression has type `RevLog<'_, GenericTxn<sanakirja::transaction::Txn<sanakirja::transaction::Exclusive, Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>>>>`
   |                 |
   |                 expected struct `RevLog`, found tuple
   |
   = note: expected struct `RevLog<'_, GenericTxn<sanakirja::transaction::Txn<sanakirja::transaction::Exclusive, Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>>>>`
               found tuple `(_, _)`

error[E0061]: this function takes 7 arguments but 6 arguments were supplied
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/record.rs:149:26
    |
149 |             working_copy.record_prefixes(
    |                          ^^^^^^^^^^^^^^^ expected 7 arguments
150 |                 txn,
    |                 ---
151 |                 channel,
    |                 -------
152 |                 changes,
    |                 -------
153 |                 &mut state,
    |                 ----------
154 |                 repo_path,
    |                 ---------
155 |                 &self.prefixes,
    |                 -------------- supplied 6 arguments

error[E0308]: mismatched types
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/record.rs:195:31
    |
195 |             dependencies(txn, channel, change.changes.iter())
    |                               ^^^^^^^ expected associated type, found struct `ChannelRef`
    |
    = note:      expected reference `&<T as libpijul::ChannelTxnT>::Channel`
            found mutable reference `&mut ChannelRef<T>`
    = help: consider constraining the associated type `<T as libpijul::ChannelTxnT>::Channel` to `ChannelRef<T>` or calling a method that returns `<T as libpijul::ChannelTxnT>::Channel`
    = note: for more information, visit https://doc.rust-lang.org/book/ch19-03-advanced-traits.html

error[E0061]: this function takes 7 arguments but 6 arguments were supplied
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/diff.rs:28:27
   |
28 |         repo.working_copy.record_prefixes(
   |                           ^^^^^^^^^^^^^^^ expected 7 arguments
29 |             &mut txn,
   |             --------
30 |             &mut channel,
   |             ------------
31 |             &repo.changes,
   |             -------------
32 |             &mut state,
   |             ----------
33 |             &repo.path,
   |             ----------
34 |             &self.prefixes,
   |             -------------- supplied 6 arguments

error[E0308]: mismatched types
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/diff.rs:57:32
   |
57 |             dependencies(&txn, &channel, change.changes.iter())
   |                                ^^^^^^^^ expected struct `libpijul::pristine::sanakirja::Channel`, found struct `ChannelRef`
   |
   = note: expected reference `&libpijul::pristine::sanakirja::Channel`
              found reference `&ChannelRef<GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>>`

error[E0308]: mismatched types
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/change.rs:27:35
   |
27 |             if txn.get_revchanges(&channel, hash).is_some() {
   |                                   ^^^^^^^^ expected struct `ChannelRef`, found enum `std::option::Option`
   |
   = note: expected reference `&ChannelRef<GenericTxn<sanakirja::transaction::Txn<sanakirja::transaction::Exclusive, Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>>>>`
              found reference `&std::option::Option<ChannelRef<GenericTxn<sanakirja::transaction::Txn<sanakirja::transaction::Exclusive, Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>>>>>`

error[E0599]: no method named `is_some` found for enum `std::result::Result<std::option::Option<u64>, SanakirjaError>` in the current scope
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/change.rs:27:51
   |
27 |             if txn.get_revchanges(&channel, hash).is_some() {
   |                                                   ^^^^^^^ method not found in `std::result::Result<std::option::Option<u64>, SanakirjaError>`

error[E0308]: mismatched types
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/change.rs:34:54
   |
34 |                     txn.find_youngest_path(&changes, &channel, inode).unwrap().0,
   |                                                      ^^^^^^^^ expected struct `ChannelRef`, found enum `std::option::Option`
   |
   = note: expected reference `&ChannelRef<GenericTxn<sanakirja::transaction::Txn<sanakirja::transaction::Exclusive, Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>>>>`
              found reference `&std::option::Option<ChannelRef<GenericTxn<sanakirja::transaction::Txn<sanakirja::transaction::Exclusive, Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>>>>>`

error[E0277]: the trait bound `&mut StdoutLock<'_>: WriteChangeLine` is not satisfied
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/change.rs:43:61
   |
43 |         change.write(&changes, Some(hash), file_name, true, &mut o)?;
   |                                                             ^^^^^^ the trait `WriteChangeLine` is not implemented for `&mut StdoutLock<'_>`

error[E0308]: mismatched types
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/protocol.rs:32:12
   |
32 |     if let Some(c) = txn.load_channel(name) {
   |            ^^^^^^^   ---------------------- this expression has type `std::result::Result<std::option::Option<ChannelRef<T>>, TxnErr<<T as GraphTxnT>::GraphError>>`
   |            |
   |            expected enum `std::result::Result`, found enum `std::option::Option`
   |
   = note: expected enum `std::result::Result<std::option::Option<ChannelRef<T>>, TxnErr<<T as GraphTxnT>::GraphError>>`
              found enum `std::option::Option<_>`

error[E0308]: mismatched types
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/protocol.rs:69:25
   |
69 |                     for (n, (_, m)) in txn.log(&channel.borrow(), pos) {
   |                         ^^^^^^^^^^^    ------------------------------- this expression has type `libpijul::Log<'_, GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>>`
   |                         |
   |                         expected struct `libpijul::Log`, found tuple
   |
   = note: expected struct `libpijul::Log<'_, GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>>`
               found tuple `(_, _)`

error[E0599]: no method named `next` found for enum `std::result::Result<RevLog<'_, GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>>, SanakirjaError>` in the current scope
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/protocol.rs:81:89
   |
81 |                     if let Some((n, (_, m))) = txn.reverse_log(&channel.borrow(), None).next() {
   |                                                                                         ^^^^ method not found in `std::result::Result<RevLog<'_, GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>>, SanakirjaError>`

error[E0308]: mismatched types
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/protocol.rs:111:21
    |
111 |                 for (n, (h, m)) in txn.log(&channel.borrow(), from) {
    |                     ^^^^^^^^^^^    -------------------------------- this expression has type `libpijul::Log<'_, GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>>`
    |                     |
    |                     expected struct `libpijul::Log`, found tuple
    |
    = note: expected struct `libpijul::Log<'_, GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>>`
                found tuple `(_, _)`

error[E0599]: no method named `get_internal` found for struct `GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>` in the current scope
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/protocol.rs:112:37
    |
112 |                     let h_int = txn.get_internal(h).unwrap();
    |                                     ^^^^^^^^^^^^ method not found in `GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>`
    |
    = help: items from traits can only be used if the trait is in scope
    = note: the following trait is implemented but not in scope; perhaps add a `use` for it:
            `use libpijul::GraphTxnT;`

error[E0599]: no method named `get_touched_files` found for struct `GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>` in the current scope
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/protocol.rs:116:42
    |
116 | ...                   .any(|x| txn.get_touched_files(*x, Some(h_int)).is_some())
    |                                    ^^^^^^^^^^^^^^^^^ method not found in `GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>`
    |
    = help: items from traits can only be used if the trait is in scope
    = note: the following trait is implemented but not in scope; perhaps add a `use` for it:
            `use libpijul::DepsTxnT;`

error[E0308]: mismatched types
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/protocol.rs:180:33
    |
180 |                     o.write_all(&d)?;
    |                                 ^^ expected slice `[u8]`, found struct `DumpChannel`
    |
    = note: expected reference `&[u8]`
               found reference `&DumpChannel<GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>, &GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>, std::cell::Ref<'_, libpijul::pristine::sanakirja::Channel>>`

error[E0369]: binary operation `==` cannot be applied to type `std::result::Result<Merkle, SanakirjaError>`
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/protocol.rs:197:61
    |
197 |                     if txn.current_state(&channel.borrow()) == Some(state) && extra.is_empty() {
    |                        ------------------------------------ ^^ ----------- std::option::Option<Merkle>
    |                        |
    |                        std::result::Result<Merkle, SanakirjaError>

error[E0061]: this function takes 7 arguments but 5 arguments were supplied
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/protocol.rs:232:17
    |
232 |             txn.output_repository_no_pending(
    |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected 7 arguments
233 |                 &mut repo.working_copy,
    |                 ----------------------
234 |                 &repo.changes,
    |                 -------------
235 |                 &mut channel,
    |                 ------------
236 |                 "",
    |                 --
237 |                 true,
    |                 ---- supplied 5 arguments

error[E0599]: no method named `borrow` found for struct `ChannelIterator<'_, GenericTxn<sanakirja::transaction::Txn<sanakirja::transaction::Exclusive, Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>>>>` in the current scope
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/channel.rs:28:39
    |
28  |                 let channel = channel.borrow();
    |                                       ^^^^^^ method not found in `ChannelIterator<'_, GenericTxn<sanakirja::transaction::Txn<sanakirja::transaction::Exclusive, Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>>>>`
    |
    = help: items from traits can only be used if the trait is in scope
    = note: the following trait is implemented but not in scope; perhaps add a `use` for it:
            `use std::borrow::Borrow;`

error[E0308]: mismatched types
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/reset.rs:27:34
   |
27 |         let mut channel = if let Some(channel) = txn.load_channel(&channel_name) {
   |                                  ^^^^^^^^^^^^^   ------------------------------- this expression has type `std::result::Result<std::option::Option<ChannelRef<GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>>>, TxnErr<SanakirjaError>>`
   |                                  |
   |                                  expected enum `std::result::Result`, found enum `std::option::Option`
   |
   = note: expected enum `std::result::Result<std::option::Option<ChannelRef<GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>>>, TxnErr<SanakirjaError>>`
              found enum `std::option::Option<_>`

error[E0061]: this function takes 7 arguments but 5 arguments were supplied
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/reset.rs:65:21
   |
65 |                 txn.output_repository_no_pending(
   |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected 7 arguments
66 |                     &mut repo.working_copy,
   |                     ----------------------
67 |                     &repo.changes,
   |                     -------------
68 |                     &mut channel,
   |                     ------------
69 |                     "",
   |                     --
70 |                     true,
   |                     ---- supplied 5 arguments

error[E0061]: this function takes 7 arguments but 5 arguments were supplied
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/reset.rs:76:25
   |
76 |                     txn.output_repository_no_pending(
   |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected 7 arguments
77 |                         &mut repo.working_copy,
   |                         ----------------------
78 |                         &repo.changes,
   |                         -------------
79 |                         &mut channel,
   |                         ------------
80 |                         &path,
   |                         -----
81 |                         true,
   |                         ---- supplied 5 arguments

error[E0308]: mismatched types
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/fork.rs:24:20
   |
24 |             if let Some(channel) = txn.load_channel(channel_name) {
   |                    ^^^^^^^^^^^^^   ------------------------------ this expression has type `std::result::Result<std::option::Option<ChannelRef<GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>>>, TxnErr<SanakirjaError>>`
   |                    |
   |                    expected enum `std::result::Result`, found enum `std::option::Option`
   |
   = note: expected enum `std::result::Result<std::option::Option<ChannelRef<GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>>>, TxnErr<SanakirjaError>>`
              found enum `std::option::Option<_>`

error[E0308]: mismatched types
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/unrecord.rs:27:20
   |
27 |             if let Some(mut channel) = txn.load_channel(channel_name) {
   |                    ^^^^^^^^^^^^^^^^^   ------------------------------ this expression has type `std::result::Result<std::option::Option<ChannelRef<GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>>>, TxnErr<SanakirjaError>>`
   |                    |
   |                    expected enum `std::result::Result`, found enum `std::option::Option`
   |
   = note: expected enum `std::result::Result<std::option::Option<ChannelRef<GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>>>, TxnErr<SanakirjaError>>`
              found enum `std::option::Option<_>`

error[E0599]: no method named `iter_revdep` found for struct `GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>` in the current scope
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/unrecord.rs:30:35
   |
30 |                 for (p, d) in txn.iter_revdep(change_id) {
   |                                   ^^^^^^^^^^^ method not found in `GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>`
   |
   = help: items from traits can only be used if the trait is in scope
   = note: the following trait is implemented but not in scope; perhaps add a `use` for it:
           `use libpijul::DepsTxnT;`

error[E0599]: no method named `get_changeset` found for struct `GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>` in the current scope
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/unrecord.rs:36:28
   |
36 |                     if txn.get_changeset(&channel_.changes, d, None).is_some() {
   |                            ^^^^^^^^^^^^^ method not found in `GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>`
   |
   = help: items from traits can only be used if the trait is in scope
   = note: the following trait is implemented but not in scope; perhaps add a `use` for it:
           `use libpijul::ChannelTxnT;`

error[E0599]: no method named `get_external` found for struct `GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>` in the current scope
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/unrecord.rs:41:47
   |
41 |                         eprintln!("  {}", txn.get_external(d).unwrap().to_base32())
   |                                               ^^^^^^^^^^^^ method not found in `GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>`
   |
   = help: items from traits can only be used if the trait is in scope
   = note: the following trait is implemented but not in scope; perhaps add a `use` for it:
           `use libpijul::GraphTxnT;`

error[E0308]: mismatched types
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/file_operations.rs:68:13
   |
68 |         for (_, p) in txn.iter_working_copy() {
   |             ^^^^^^    ----------------------- this expression has type `std::result::Result<(Inode, std::string::String), SanakirjaError>`
   |             |
   |             expected enum `std::result::Result`, found tuple
   |
   = note: expected enum `std::result::Result<(Inode, std::string::String), SanakirjaError>`
             found tuple `(_, _)`

error[E0600]: cannot apply unary operator `!` to type `std::result::Result<bool, SanakirjaError>`
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/file_operations.rs:105:16
    |
105 |             if !txn.is_tracked(&path_str) {
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot apply unary operator `!`

error[E0308]: mismatched types
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/apply.rs:26:34
   |
26 |         let mut channel = if let Some(channel) = txn.load_channel(&channel_name) {
   |                                  ^^^^^^^^^^^^^   ------------------------------- this expression has type `std::result::Result<std::option::Option<ChannelRef<GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>>>, TxnErr<SanakirjaError>>`
   |                                  |
   |                                  expected enum `std::result::Result`, found enum `std::option::Option`
   |
   = note: expected enum `std::result::Result<std::option::Option<ChannelRef<GenericTxn<sanakirja::transaction::MutTxn<Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>, ()>>>>, TxnErr<SanakirjaError>>`
              found enum `std::option::Option<_>`

error[E0061]: this function takes 7 arguments but 5 arguments were supplied
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/commands/apply.rs:53:13
   |
53 |         txn.output_repository_no_pending(
   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected 7 arguments
54 |             &mut repo.working_copy,
   |             ----------------------
55 |             &repo.changes,
   |             -------------
56 |             &mut channel,
   |             ------------
57 |             "",
   |             --
58 |             true,
   |             ---- supplied 5 arguments

error[E0308]: mismatched types
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/remote/local.rs:19:32
   |
19 |             Ok(txn.get_changes(&channel, mid).map(|(_, m)| (mid, m)))
   |                                ^^^^^^^^ expected struct `ChannelRef`, found enum `std::option::Option`
   |
   = note: expected reference `&ChannelRef<GenericTxn<sanakirja::transaction::Txn<sanakirja::transaction::Exclusive, Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>>>>`
              found reference `&std::option::Option<ChannelRef<GenericTxn<sanakirja::transaction::Txn<sanakirja::transaction::Exclusive, Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>>>>>`

error[E0308]: mismatched types
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/remote/local.rs:19:52
   |
19 |             Ok(txn.get_changes(&channel, mid).map(|(_, m)| (mid, m)))
   |                                                    ^^^^^-
   |                                                    |    |
   |                                                    |    expected due to this
   |                                                    expected enum `std::option::Option`, found tuple
   |
   = note: expected enum `std::option::Option<(libpijul::Hash, Merkle)>`
             found tuple `(_, _)`

error[E0599]: no method named `borrow` found for enum `std::option::Option<ChannelRef<GenericTxn<sanakirja::transaction::Txn<sanakirja::transaction::Exclusive, Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>>>>>` in the current scope
   --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/remote/local.rs:22:39
    |
22  |                 .reverse_log(&channel.borrow(), None)
    |                                       ^^^^^^ method not found in `std::option::Option<ChannelRef<GenericTxn<sanakirja::transaction::Txn<sanakirja::transaction::Exclusive, Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>>>>>`
    |
    = help: items from traits can only be used if the trait is in scope
    = note: the following trait is implemented but not in scope; perhaps add a `use` for it:
            `use std::borrow::Borrow;`

error[E0599]: no method named `next` found for enum `std::result::Result<RevLog<'_, GenericTxn<sanakirja::transaction::Txn<sanakirja::transaction::Exclusive, Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>>>>, SanakirjaError>` in the current scope
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/remote/local.rs:23:18
   |
23 |                 .next()
   |                  ^^^^ method not found in `std::result::Result<RevLog<'_, GenericTxn<sanakirja::transaction::Txn<sanakirja::transaction::Exclusive, Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>>>>, SanakirjaError>`

error[E0308]: mismatched types
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/remote/local.rs:37:37
   |
37 |         let remote_channel = if let Some(channel) = remote_txn.load_channel(&self.channel) {
   |                                     ^^^^^^^^^^^^^   -------------------------------------- this expression has type `std::result::Result<std::option::Option<ChannelRef<GenericTxn<sanakirja::transaction::Txn<sanakirja::transaction::Exclusive, Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>>>>>, TxnErr<SanakirjaError>>`
   |                                     |
   |                                     expected enum `std::result::Result`, found enum `std::option::Option`
   |
   = note: expected enum `std::result::Result<std::option::Option<ChannelRef<GenericTxn<sanakirja::transaction::Txn<sanakirja::transaction::Exclusive, Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>>>>>, TxnErr<SanakirjaError>>`
              found enum `std::option::Option<_>`

error[E0308]: mismatched types
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/remote/local.rs:49:13
   |
49 |         for (n, (h, m)) in remote_txn.log(&remote_channel.borrow(), from) {
   |             ^^^^^^^^^^^    ---------------------------------------------- this expression has type `libpijul::Log<'_, GenericTxn<sanakirja::transaction::Txn<sanakirja::transaction::Exclusive, Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>>>>`
   |             |
   |             expected struct `libpijul::Log`, found tuple
   |
   = note: expected struct `libpijul::Log<'_, GenericTxn<sanakirja::transaction::Txn<sanakirja::transaction::Exclusive, Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>>>>`
               found tuple `(_, _)`

error[E0599]: no method named `get_internal` found for struct `GenericTxn<sanakirja::transaction::Txn<sanakirja::transaction::Exclusive, Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>>>` in the current scope
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/remote/local.rs:57:40
   |
57 |                 let h_int = remote_txn.get_internal(h).unwrap();
   |                                        ^^^^^^^^^^^^ method not found in `GenericTxn<sanakirja::transaction::Txn<sanakirja::transaction::Exclusive, Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>>>`
   |
   = help: items from traits can only be used if the trait is in scope
   = note: the following trait is implemented but not in scope; perhaps add a `use` for it:
           `use libpijul::GraphTxnT;`

error[E0599]: no method named `get_touched_files` found for struct `GenericTxn<sanakirja::transaction::Txn<sanakirja::transaction::Exclusive, Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>>>` in the current scope
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/remote/local.rs:61:45
   |
61 |                         .any(|x| remote_txn.get_touched_files(*x, Some(h_int)).is_some())
   |                                             ^^^^^^^^^^^^^^^^^ method not found in `GenericTxn<sanakirja::transaction::Txn<sanakirja::transaction::Exclusive, Arc<sanakirja::transaction::Env<sanakirja::transaction::Exclusive>>>>`
   |
   = help: items from traits can only be used if the trait is in scope
   = note: the following trait is implemented but not in scope; perhaps add a `use` for it:
           `use libpijul::DepsTxnT;`

error[E0061]: this function takes 7 arguments but 5 arguments were supplied
  --> /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha/src/remote/local.rs:92:13
   |
92 |         txn.output_repository_no_pending(&mut repo, &store, &mut channel, "", true)?;
   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ---------  ------  ------------  --  ---- supplied 5 arguments
   |             |
   |             expected 7 arguments

error: aborting due to 93 previous errors

Some errors have detailed explanations: E0061, E0277, E0308, E0369, E0412, E0433, E0599, E0600, E0609...
For more information about an error, try `rustc --explain E0061`.
error: failed to compile `pijul v1.0.0-alpha`, intermediate artifacts can be found at `/tmp/cargo-installVGlE0G`

Caused by:
  could not compile `pijul`

To learn more, run the command again with --verbose.
edwintorok on January 17, 2021

Fedora 33 (which is the latest version of Fedora) has this Rust version:

rustc --version
rustc 1.49.0
pmeunier on January 17, 2021

Thanks! This seems to come from another bad practice than not having “standard” CIs:

  • I worked so hard on the 1.0 version, rewriting everything from scratch, that I couldn’t call it anything other than 1.0. In hindsight, this wasn’t quite reasonable. Would I do it again? Maybe: calling it 1.0-alpha attracted a lot more feedback than I hoped, and a lot more than I ever got on all previous versions. Also, I released that version immediately after “almost” stabilising all the formats, meaning immediately after Pijul was bootstrapped again.
  • The Semver specification, which Cargo is following, mandates that all versions named 1.0.0-alpha.xx be compatible.
  • Unfortunately, because Libpijul and Pijul moved a lot in the last two months, none of them are compatible, and only the last one of each is guaranteed to work with the other.

In your case, the path /home/edwin/.cargo/registry/src/github.com-1ecc6299db9ec823/pijul-1.0.0-alpha seems to be from an old version of Pijul, and doing cargo install --version 1.0.0-alpha.36 would probably work better.

As for the CI, I’m not super happy with the current CI on the Nest:

  • We don’t have tags yet (this is currently my main mission in Pijul)
  • It is based on Nix, which means that it’s really fast and doesn’t have to recompile stuff all the time. But it also means that the build process isn’t completely “natural”, in the sense that it doesn’t follow what Cargo does.
pmeunier on January 17, 2021

If the command I suggested doesn’t work, I’m super interested in your report!

edwintorok on January 17, 2021

Thanks, explicitly running cargo install pijul --version 1.0.0-alpha.36 worked. Although cargo install pijul --version 1.0.0-alpha still fails (even after wiping ~/.cargo), I think it is installing something very old: https://crates.io/crates/pijul/1.0.0-alpha

Could you update the instructions on https://pijul.org/downloads/ to say to install 1.0.0-alpha.36?

I would’ve assumed that when you ask it to install 1.0.0-alpha it’ll install 1.0.0-alpha.36, but they are in fact separate versions.

edwintorok on January 17, 2021

I’ve read https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html Here is another possibility (that doesn’t require updating the docs every time you release a new alpha):

cargo install pijul --version '~1.0.0-alpha'

If you change https://pijul.org/downloads/ to suggest that then it wouldn’ try to install an outdated 1.0.0-alpha but go straight to trying to install the latest, which is 1.0.0-alpha.36 at the moment.

tankf33der on January 17, 2021

Also failed to use cargo instal ....alpha command without alpha number.

tankf33der on January 17, 2021

No problem upgrade from crates from alpha.31 to latest alpha.36 on Fedora Rawhide.

tankf33der on January 17, 2021

@edwintorok

pkgs.org site shows Fedora33 has rust 1.46.

I dont know how you got 1.49 :)

edwintorok on January 17, 2021

@tankf33der see ‘Fedora Updates’ on Fedora 33, it has rustc 1.49.

pmeunier closed this discussion on March 2, 2021