Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Build failure on Debian sid #3177

Closed
xet7 opened this issue Dec 21, 2019 · 19 comments
Closed

Build failure on Debian sid #3177

xet7 opened this issue Dec 21, 2019 · 19 comments
Labels
sandstorm-dev Issues hacking on Sandstorm

Comments

@xet7
Copy link
Contributor

xet7 commented Dec 21, 2019

Hi,
how can I get Sandstorm to build? With make command I get this:

  link: sandstorm/util-test.o
  link: sandstorm/update-tool.o
✔ test: sandstorm/util-test
✔ test: capnp/fuzz-test
✘ compile: sandstorm/web-session-bridge.c++
    /ekam-provider/canonical/sandstorm/web-session-bridge.c++:143:35: warning: lambda capture 'method' is not used [-Wunused-lambda-capture]
          auto doNonStreaming = [this,method,path,&headers,&requestBody,&response]() {
                                     ~^~~~~~
    /ekam-provider/canonical/sandstorm/web-session-bridge.c++:173:24: warning: lambda capture 'headers' is not used [-Wunused-lambda-capture]
              .then([this,&headers,&requestBody,&response,KJ_MVCAP(streamer)]
                         ~~^~~~~~~
    /ekam-provider/canonical/sandstorm/web-session-bridge.c++:177:11: warning: lambda capture 'this' is not used [-Wunused-lambda-capture]
          }, [this,KJ_MVCAP(doNonStreaming)](kj::Exception&& e) -> kj::Promise<void> {
              ^~~~~
    /ekam-provider/canonical/sandstorm/web-session-bridge.c++:192:35: warning: lambda capture 'method' is not used [-Wunused-lambda-capture]
          auto doNonStreaming = [this,method,path,&headers,&requestBody,&response]() {
                                     ~^~~~~~
    /ekam-provider/canonical/sandstorm/web-session-bridge.c++:222:24: warning: lambda capture 'headers' is not used [-Wunused-lambda-capture]
              .then([this,&headers,&requestBody,&response,KJ_MVCAP(streamer)]
                         ~~^~~~~~~
    /ekam-provider/canonical/sandstorm/web-session-bridge.c++:226:11: warning: lambda capture 'this' is not used [-Wunused-lambda-capture]
          }, [this,KJ_MVCAP(doNonStreaming)](kj::Exception&& e) -> kj::Promise<void> {
              ^~~~~
    In file included from /ekam-provider/canonical/sandstorm/web-session-bridge.c++:17:
    In file included from /ekam-provider/canonical/sandstorm/web-session-bridge.h:22:
    In file included from /ekam-provider/canonical/sandstorm/util.h:35:
    In file included from /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/set:61:
    /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_set.h:193:9: error: no matching member function for call to '_M_insert_range_unique'
            { _M_t._M_insert_range_unique(__first, __last); }
              ~~~~~^~~~~~~~~~~~~~~~~~~~~~
    /ekam-provider/canonical/sandstorm/util.h:244:30: note: in instantiation of function template specialization 'std::set<kj::StringPtr, std::less<kj::StringPtr>, std::allocator<kj::
      StringPtr> >::set<capnp::_::IndexingIterator<const capnp::List<capnp::Text, capnp::Kind::BLOB>::Reader, capnp::Text::Reader> >' requested here
      HeaderWhitelist(T&& list): patterns(list.begin(), list.end()) {}
                                 ^
    /ekam-provider/canonical/sandstorm/web-session-bridge.c++:98:7: note: in instantiation of function template specialization 'sandstorm::HeaderWhitelist::HeaderWhitelist<capnp::List<capnp:
    ...(log truncated; use -l to increase log limit)...
✘ link: sandstorm/run-bundle.o
    /usr/bin/ld: tmp/kj/async-io-unix.o: in function `operator()':
    /ekam-provider/canonical/kj/async-io-unix.c++:995: warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used 
      for linking
✘ install: sandstorm/sandstorm.ekam-manifest
    sandstorm/run-bundle: not found
✘ compile: sandstorm/sandstorm-http-bridge.c++
    /ekam-provider/canonical/sandstorm/sandstorm-http-bridge.c++:1520:10: warning: lambda capture 'this' is not used [-Wunused-lambda-capture]
            [this, KJ_MVCAP(httpRequest), KJ_MVCAP(clientStream), responseStream, context]
             ^~~~~
    /ekam-provider/canonical/sandstorm/sandstorm-http-bridge.c++:2468:37: warning: lambda capture 'this' is not used [-Wunused-lambda-capture]
        return address->connect().then([this, loggedSlowStartupMessage](auto x) -> void {
                                        ^~~~~
    In file included from /ekam-provider/canonical/sandstorm/sandstorm-http-bridge.c++:59:
    In file included from /ekam-provider/canonical/sandstorm/util.h:35:
    In file included from /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/set:61:
    /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_set.h:193:9: error: no matching member function for call to '_M_insert_range_unique'
            { _M_t._M_insert_range_unique(__first, __last); }
              ~~~~~^~~~~~~~~~~~~~~~~~~~~~
    /ekam-provider/canonical/sandstorm/util.h:244:30: note: in instantiation of function template specialization 'std::set<kj::StringPtr, std::less<kj::StringPtr>, std::allocator<kj::
      StringPtr> >::set<capnp::_::IndexingIterator<const capnp::List<capnp::Text, capnp::Kind::BLOB>::Reader, capnp::Text::Reader> >' requested here
      HeaderWhitelist(T&& list): patterns(list.begin(), list.end()) {}
                                 ^
    /ekam-provider/canonical/sandstorm/sandstorm-http-bridge.c++:154:23: note: in instantiation of function template specialization 'sandstorm::HeaderWhitelist::HeaderWhitelist<capnp::List<
      capnp::Text, capnp::Kind::BLOB>::Reader>' requested here
    const HeaderWhitelist REQUEST_HEADER_WHITELIST(*WebSession::Context::HEADER_WHITELIST);
                          ^
    /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_tree.h:1109:2: note: candidate template ignored: substitution failure [with _InputIterator = capnp::_::IndexingIterator
      <const capnp::List<capnp::Text, capnp::Kind::BLOB>::Reader, capnp::Text::Reader>]: no type named 'value_type' in 'std::iterator_traits<capnp::_::IndexingIterator<const capnp::List<
      capnp::Text, capnp::Kind::BLOB>::Reader, capnp::Text::Reader> >'
            _M_insert_range_unique(_InputIterator __first, _InputIterator __last)
            ^
    /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_tree.h:1118:2: note: candidate template ignored: substitution failure [with _InputIterator = capnp::_::IndexingIterator
      <const capnp::List<capnp::Text, capnp::Kind::BLOB>::Reader, capnp::Text::Reader>]: no type named 'value_type' in 'std::iterator_traits<capnp::_::IndexingIterator<const capnp::List<
      capnp::Text, capnp::Kind::BLOB>::Reader, capnp::Text::Reader> >'
            _M_insert_range_unique(_InputIterator __first, _InputIterator __last)
            ^
    ...(log truncated; use -l to increase log limit)...
make: *** [Makefile:256: tmp/.ekam-run] Error 1
@zenhack
Copy link
Collaborator

zenhack commented Dec 22, 2019

This looks the same problem I hit with #3171. try make CFLAGS+=-DKJ_STD_COMPAT?

@xet7
Copy link
Contributor Author

xet7 commented Jan 12, 2020

@zenhack

Thanks, it works!

Moved to #3171

@xet7
Copy link
Contributor Author

xet7 commented Feb 6, 2020

@zenhack

How do you compile Sandstorm?

  • Distro version?
  • Node version?
  • Commands to compile?

I'm getting some errors.

@xet7 xet7 reopened this Feb 6, 2020
@ocdtrekkie
Copy link
Collaborator

What errors are you seeing currently? (I do believe @zenhack has "making it easier for people that aren't @zenhack to build Sandstorm" as one of his priorities right now.)

@zenhack
Copy link
Collaborator

zenhack commented Feb 6, 2020 via email

@xet7
Copy link
Contributor Author

xet7 commented Feb 6, 2020

$ cat tmp/node-capnp/capnp-test.js.log 
/home/user/repos/sandstorm-io/sandstorm/node-capnp/capnp.js:42
    throw new Error(
    ^

Error: `capnp.node` is missing. Try reinstalling `node-capnp`?
    at Object.<anonymous> (/home/user/repos/sandstorm-io/sandstorm/node-capnp/capnp.js:42:11)
    at Module._compile (module.js:653:30)
    at Object.Module._extensions..js (module.js:664:10)
    at Module.load (module.js:566:32)
    at tryModuleLoad (module.js:506:12)
    at Function.Module._load (module.js:498:3)
    at Module.require (module.js:597:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/home/user/repos/sandstorm-io/sandstorm/node-capnp/capnp-test.js:23:13)
    at Module._compile (module.js:653:30)

@ocdtrekkie ocdtrekkie added the sandstorm-dev Issues hacking on Sandstorm label Feb 6, 2020
@zenhack
Copy link
Collaborator

zenhack commented Feb 6, 2020

Could you give us the output of:

find tmp -type f -name capnp.node

?

@xet7
Copy link
Contributor Author

xet7 commented Feb 6, 2020

It does not find anything.

If I search whole harddisk, I only find it here:

$ locate capnp.node
/opt/sandstorm/sandstorm-257/node_modules/capnp.node

@xet7
Copy link
Contributor Author

xet7 commented Feb 6, 2020

user@x:~/repos/sandstorm-io/sandstorm/deps/node-capnp$ ./build.js 
Build failed

@xet7
Copy link
Contributor Author

xet7 commented Feb 6, 2020

I did clone sandstorm repo directly before trying to build.

@xet7
Copy link
Contributor Author

xet7 commented Feb 6, 2020

When I read about node-capnp deps and try to install them:

$ sudo apt-get install nodejs-dev nodejs-legacy capnproto-dev g++
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package nodejs-legacy is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
However the following packages replace it:
  nodejs:i386 libnode64:i386 nodejs libnode64

Package nodejs-dev is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source
However the following packages replace it:
  libnode-dev:i386 libnode-dev

E: Package 'nodejs-dev' has no installation candidate
E: Package 'nodejs-legacy' has no installation candidate
E: Unable to locate package capnproto-dev

@xet7
Copy link
Contributor Author

xet7 commented Feb 6, 2020

Hmm, it seems I'm missing capnproto:

$ sudo apt install capnproto
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  golang-1.13 golang-1.13-doc golang-doc python-asn1crypto python3-asn1crypto
Use 'sudo apt autoremove' to remove them.
The following additional packages will be installed:
  libcapnp-0.7.0
The following NEW packages will be installed:
  capnproto libcapnp-0.7.0
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 1284 kB of archives.
After this operation, 5754 kB of additional disk space will be used.
Do you want to continue? [Y/n] 
Get:1 http://www.nic.funet.fi/debian sid/main amd64 libcapnp-0.7.0 amd64 0.7.0-5 [1047 kB]
Get:2 http://www.nic.funet.fi/debian sid/main amd64 capnproto amd64 0.7.0-5 [237 kB]
Fetched 1284 kB in 0s (5329 kB/s)
Selecting previously unselected package libcapnp-0.7.0:amd64.
(Reading database ... 470845 files and directories currently installed.)
Preparing to unpack .../libcapnp-0.7.0_0.7.0-5_amd64.deb ...
Unpacking libcapnp-0.7.0:amd64 (0.7.0-5) ...
Selecting previously unselected package capnproto.
Preparing to unpack .../capnproto_0.7.0-5_amd64.deb ...
Unpacking capnproto (0.7.0-5) ...
Setting up libcapnp-0.7.0:amd64 (0.7.0-5) ...
Setting up capnproto (0.7.0-5) ...
Processing triggers for man-db (2.9.0-2) ...
Processing triggers for libc-bin (2.29-9) ...

I'll try again.

@zenhack
Copy link
Collaborator

zenhack commented Feb 6, 2020 via email

@zenhack
Copy link
Collaborator

zenhack commented Feb 6, 2020

Does running ./build.js really just print Build failed, or is there other output?

@xet7
Copy link
Contributor Author

xet7 commented Feb 7, 2020

No.

Current build log is here:

$ ../build-sandstorm.sh 
==== building sandstorm with ekam ====
  learn: ekam-rules/install.ekam-rule
  learn: ekam-rules/include.ekam-rule
  learn: ekam-rules/proto.ekam-rule
  learn: ekam-rules/compile.ekam-rule
  learn: ekam-rules/test.ekam-rule
  compile: ekam-rules/intercept.c
  learn: ekam-rules/intercept.ekam-rule
  compile: kj/array.c++
  learn: capnp/capnpc.ekam-rule
  capnpc: capnp/c++.capnp
  capnpc: capnp/stream.capnp
  capnpc: capnp/compat/json.capnp
  capnpc: capnp/compiler/lexer.capnp
  capnpc: capnp/compiler/grammar.capnp
  compile: kj/filesystem-disk-unix.c++
  capnpc: capnp/rpc-twoparty.capnp
  capnpc: capnp/schema.capnp
  capnpc: capnp/rpc.capnp
  capnpc: capnp/persistent.capnp
  compile: capnp/blob.c++
  compile: kj/async-test.c++
  learn: sandstorm/ip_tables.ekam-rule
  learn: sandstorm/jstest.ekam-rule
  learn: sandstorm/js.ekam-rule
  compile: kj/async-win32-xthread-test.c++
  compile: kj/refcount-test.c++
  compile: kj/thread.c++
  compile: kj/compat/url.c++
  compile: kj/compat/url-test.c++
  compile: kj/units-test.c++
  compile: kj/compat/readiness-io.c++
  compile: kj/compat/readiness-io-test.c++
  compile: kj/compat/gzip-test.c++
  compile: kj/compat/tls-test.c++
  compile: kj/compat/gzip.c++
  compile: kj/compat/tls.c++
  compile: kj/mutex.c++
  compile: kj/std/iostream-test.c++
  compile: kj/refcount.c++
  compile: kj/string-tree-test.c++
  compile: kj/compat/http-socketpair-test.c++
  compile: kj/thread-test.c++
  compile: kj/string-test.c++
  compile: kj/test-helpers.c++
  compile: kj/arena.c++
  compile: kj/memory.c++
  compile: kj/io-test.c++
  compile: kj/one-of-test.c++
  compile: kj/async-win32-test.c++
  compile: kj/debug.c++
  compile: kj/string.c++
  compile: kj/table.c++
  compile: kj/async-unix-xthread-test.c++
  compile: kj/common-test.c++
  compile: kj/compat/http-test.c++
  compile: kj/compat/http.c++
  compile: kj/units.c++
  compile: kj/debug-test.c++
  compile: kj/mutex-test.c++
  compile: kj/filesystem-disk-old-kernel-test.c++
  compile: kj/common.c++
  compile: kj/test-test.c++
  compile: kj/filesystem.c++
  compile: kj/async-unix.c++
  compile: kj/filesystem-disk-test.c++
  compile: kj/array-test.c++
  compile: kj/parse/char-test.c++
  compile: kj/filesystem-disk-win32.c++
  compile: kj/parse/char.c++
  compile: kj/table-test.c++
  compile: kj/hash.c++
  compile: kj/string-tree.c++
  compile: kj/parse/common-test.c++
  compile: kj/io.c++
  compile: joyent-http/http_parser.c++
  compile: kj/encoding.c++
  compile: kj/test.c++
  compile: kj/timer.c++
  compile: kj/async-unix-test.c++
  compile: kj/arena-test.c++
  compile: kj/time-test.c++
  compile: kj/filesystem-disk-generic-test.c++
  compile: kj/async.c++
  compile: kj/encoding-test.c++
  compile: kj/async-win32.c++
  compile: kj/time.c++
  compile: kj/exception-test.c++
  compile: kj/threadlocal-test.c++
  compile: kj/async-xthread-test.c++
  compile: kj/map-test.c++
  compile: kj/main.c++
  compile: kj/async-io-win32.c++
  compile: kj/memory-test.c++
  compile: kj/threadlocal-pthread-test.c++
  compile: kj/async-io-test.c++
  compile: kj/filesystem-test.c++
  compile: kj/exception.c++
    /ekam-provider/canonical/kj/exception.c++:882:14: warning: 'uncaught_exception' is deprecated [-Wdeprecated-declarations]
        if (std::uncaught_exception()) {
                 ^
    /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/exception:101:3: note: 'uncaught_exception' has been explicitly marked deprecated here
      _GLIBCXX17_DEPRECATED
      ^
    /usr/lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h:92:34: note: expanded from macro '_GLIBCXX17_DEPRECATED'
    # define _GLIBCXX17_DEPRECATED [[__deprecated__]]
                                     ^
    1 warning generated.
  compile: kj/function-test.c++
  link: kj/function-test.o
✔ test: kj/function-test
  compile: kj/tuple-test.c++
  compile: kj/async-io.c++
  link: kj/tuple-test.o
✔ test: kj/tuple-test
  compile: capnp/compat/json.capnp.c++
  compile: kj/async-io-unix.c++
  compile: capnp/compiler/type-id.c++
  compile: capnp/compiler/module-loader.c++
  compile: capnp/compat/json.c++
  compile: node-capnp/capnp.cc
    /ekam-provider/canonical/node-capnp/capnp.cc:1100:49: warning: 'parseDiskFile' is deprecated: Use parseFromDirectory() instead. [-Wdeprecated-declarations]
        capnp::ParsedSchema schema = context.parser.parseDiskFile(
                                                    ^
    /ekam-provider/c++header/capnp/schema-parser.h:103:7: note: 'parseDiskFile' has been explicitly marked deprecated here
          CAPNP_DEPRECATED("Use parseFromDirectory() instead.");
          ^
    /ekam-provider/c++header/capnp/common.h:63:26: note: expanded from macro 'CAPNP_DEPRECATED'
    #define CAPNP_DEPRECATED KJ_DEPRECATED
                             ^
    /ekam-provider/c++header/kj/common.h:207:20: note: expanded from macro 'KJ_DEPRECATED'
        __attribute__((deprecated(reason)))
                       ^
    /ekam-provider/canonical/node-capnp/capnp.cc:1971:22: warning: 'restore' is deprecated: Please transition to using a bootstrap interface instead. [-Wdeprecated-declarations]
        return rpcSystem.restore(hostId, objectId);
                         ^
    /ekam-provider/c++header/capnp/rpc.h:101:7: note: 'restore' has been explicitly marked deprecated here
          CAPNP_DEPRECATED("Please transition to using a bootstrap interface instead.");
          ^
    /ekam-provider/c++header/capnp/common.h:63:26: note: expanded from macro 'CAPNP_DEPRECATED'
    #define CAPNP_DEPRECATED KJ_DEPRECATED
                             ^
    /ekam-provider/c++header/kj/common.h:207:20: note: expanded from macro 'KJ_DEPRECATED'
        __attribute__((deprecated(reason)))
                       ^
    /ekam-provider/canonical/node-capnp/capnp.cc:2348:13: warning: lambda capture 'context' is not used [-Wunused-lambda-capture]
              [&context](OwnHandle<v8::Function>&& errorCallback,
               ~^~~~~~~
    3 warnings generated.
  compile: capnp/compiler/lexer.c++
  compile: capnp/compiler/compiler.c++
  compile: capnp/compiler/grammar.capnp.c++
  compile: capnp/compiler/capnp.c++
  compile: capnp/compiler/capnpc-c++.c++
  compile: capnp/compiler/evolution-test.c++
  compile: capnp/compiler/lexer.capnp.c++
  compile: capnp/compiler/error-reporter.c++
  compile: capnp/compiler/type-id-test.c++
  link: capnp/compiler/type-id-test.o
✔ test: capnp/compiler/type-id-test
  compile: capnp/compiler/lexer-test.c++
  compile: capnp/compiler/capnpc-capnp.c++
  compile: capnp/persistent.capnp.c++
  compile: capnp/rpc.capnp.c++
  compile: capnp/serialize-async.c++
  compile: capnp/compiler/parser.c++
  compile: capnp/compiler/node-translator.c++
  compile: capnp/membrane.c++
  compile: capnp/message.c++
  compile: capnp/endian-reverse-test.c++
  link: capnp/endian-reverse-test.o
✔ test: capnp/endian-reverse-test
  compile: capnp/serialize.c++
  compile: capnp/ez-rpc.c++
  compile: capnp/serialize-packed.c++
  compile: capnp/serialize-text.c++
  compile: capnp/endian-test.c++
  link: capnp/endian-test.o
✔ test: capnp/endian-test
  compile: capnp/layout.c++
  compile: capnp/rpc-twoparty.c++
  compile: capnp/arena.c++
  compile: capnp/stream.capnp.c++
  compile: capnp/c++.capnp.c++
  compile: capnp/rpc.c++
  compile: capnp/schema.c++
  compile: capnp/list.c++
  compile: capnp/schema-loader.c++
  compile: capnp/schema.capnp.c++
  compile: capnp/capability.c++
  compile: capnp/layout-test.c++
  compile: capnp/rpc-twoparty.capnp.c++
  link: capnp/layout-test.o
✔ test: capnp/layout-test
  compile: capnp/schema-parser.c++
  compile: capnp/stringify.c++
  compile: capnp/endian-fallback-test.c++
  link: capnp/endian-fallback-test.o
✔ test: capnp/endian-fallback-test
  compile: capnp/any.c++
  compile: libseccomp/arch-arm-syscalls.c
  compile: libseccomp/arch-s390-syscalls.c
  compile: libseccomp/arch-mips64n32-syscalls.c
  compile: libseccomp/arch-aarch64-syscalls.c
  compile: libseccomp/arch-x86-syscalls.c
  compile: libseccomp/arch-mips64n32.c
  compile: capnp/dynamic-capability.c++
  compile: libseccomp/hash.c
  compile: capnp/dynamic.c++
  compile: libseccomp/arch-s390x.c
  compile: libseccomp/arch-x32.c
  compile: libseccomp/arch-x86_64.c
  compile: libseccomp/arch-s390.c
  compile: libseccomp/gen_pfc.c
  compile: libseccomp/arch-ppc.c
  compile: libseccomp/arch-x86.c
  compile: libseccomp/arch-arm.c
  compile: libseccomp/arch-ppc64-syscalls.c
  compile: libseccomp/arch-mips.c
  compile: libseccomp/arch-x86_64-syscalls.c
  compile: libseccomp/api.c
  compile: libseccomp/db.c
  compile: libseccomp/helper.c
  compile: libseccomp/arch-x32-syscalls.c
  compile: libseccomp/arch-ppc-syscalls.c
  compile: libseccomp/arch-mips64.c
  compile: libseccomp/gen_bpf.c
  compile: libseccomp/arch-ppc64.c
  compile: libseccomp/arch-parisc64.c
  compile: libseccomp/system.c
  compile: libseccomp/arch-parisc-syscalls.c
  compile: libseccomp/arch-syscall-dump.c
  compile: libseccomp/arch.c
  compile: libseccomp/arch-syscall-check.c
  compile: libseccomp/arch-parisc.c
  compile: libseccomp/arch-aarch64.c
  compile: libseccomp/arch-mips64-syscalls.c
  compile: libseccomp/arch-mips-syscalls.c
  compile: libseccomp/arch-s390x-syscalls.c
  compile: sandstorm/send-fd.c++
  compile: sandstorm/fuse-test-bind.c++
  link: kj/parse/common-test.o
✔ test: kj/parse/common-test
  link: kj/table-test.o
  link: kj/parse/char-test.o
✔ test: kj/parse/char-test
  link: kj/array-test.o
✔ test: kj/array-test
  link: kj/test-test.o
✔ test: kj/test-test
  link: kj/filesystem-disk-test.o
✔ test: kj/filesystem-disk-test
  link: kj/filesystem-disk-old-kernel-test.o
✔ test: kj/filesystem-disk-old-kernel-test
  link: kj/mutex-test.o
✔ test: kj/table-test
  link: kj/debug-test.o
✔ test: kj/debug-test
  link: kj/common-test.o
✔ test: kj/common-test
  link: kj/async-unix-xthread-test.o
✔ test: kj/mutex-test
  link: kj/one-of-test.o
✔ test: kj/async-unix-xthread-test
✔ test: kj/one-of-test
  link: kj/compat/http-test.o
  link: kj/io-test.o
  link: kj/thread-test.o
  link: kj/string-test.o
✔ test: kj/string-test
✔ test: kj/thread-test
✔ test: kj/io-test
  link: kj/std/iostream-test.o
  link: kj/string-tree-test.o
✔ test: kj/std/iostream-test
✔ test: kj/string-tree-test
✔ test: kj/compat/http-test
  link: kj/compat/gzip-test.o
  link: kj/compat/http-socketpair-test.o
  link: kj/compat/readiness-io-test.o
✔ test: kj/compat/gzip-test
  link: kj/compat/tls-test.o
  link: kj/units-test.o
✔ test: kj/units-test
✔ test: kj/compat/readiness-io-test
✔ test: kj/compat/http-socketpair-test
  link: kj/refcount-test.o
  link: kj/compat/url-test.o
✔ test: kj/refcount-test
✔ test: kj/compat/url-test
  link: kj/async-test.o
✔ test: kj/async-test
  link: kj/time-test.o
  link: kj/async-unix-test.o
  link: kj/encoding-test.o
✔ test: kj/compat/tls-test
✔ test: kj/encoding-test
✔ test: kj/time-test
  link: kj/arena-test.o
  link: kj/test.o
✔ test: kj/arena-test
  link: kj/filesystem-disk-generic-test.o
✔ test: kj/async-unix-test
✔ test: kj/filesystem-disk-generic-test
  link: kj/map-test.o
✔ test: kj/map-test
  link: kj/async-xthread-test.o
  link: kj/threadlocal-test.o
  link: kj/exception-test.o
✔ test: kj/threadlocal-test
✔ test: kj/async-xthread-test
✔ test: kj/exception-test
  link: kj/filesystem-test.o
✔ test: kj/filesystem-test
  link: kj/threadlocal-pthread-test.o
✔ test: kj/threadlocal-pthread-test
  link: kj/memory-test.o
✔ test: kj/memory-test
  link: kj/async-io-test.o
  link: capnp/compiler/capnpc-capnp.o
  link: capnp/compiler/evolution-test.o
✔ test: kj/async-io-test
  link: capnp/compiler/capnp.o
  link: capnp/compiler/capnpc-c++.o
  link: libseccomp/arch-syscall-dump.o
  link: capnp/compiler/lexer-test.o
  link: libseccomp/arch-syscall-check.o
  install: capnp/compiler/capnp.ekam-manifest
✔ test: capnp/compiler/lexer-test
  capnpc: capnp/compat/json-rpc.capnp
  capnpc: capnp/compat/json-test.capnp
  capnpc: capnp/compat/byte-stream.capnp
  capnpc: capnp/compat/http-over-capnp.capnp
  capnpc: capnp/test-import.capnp
✔ test: capnp/compiler/evolution-test
  capnpc: capnp/test-import2.capnp
  capnpc: capnp/test.capnp
  capnpc: node-capnp/test.capnp
  compile: capnp/compat/byte-stream.capnp.c++
  compile: capnp/compat/http-over-capnp.capnp.c++
  capnpc: sandstorm/web-publishing.capnp
  capnpc: sandstorm/hack-session.capnp
  capnpc: sandstorm/web-session.capnp
  capnpc: sandstorm/test-app/test-app.capnp
  capnpc: sandstorm/mime.capnp
  capnpc: sandstorm/sandstorm-http-bridge-internal.capnp
  capnpc: sandstorm/ip.capnp
  capnpc: sandstorm/api-session-impl.capnp
  capnpc: sandstorm/package.capnp
  capnpc: sandstorm/payments.capnp
  capnpc: sandstorm/email-impl.capnp
  capnpc: sandstorm/persistentuiview.capnp
  capnpc: sandstorm/util.capnp
  capnpc: sandstorm/powerbox.capnp
  capnpc: sandstorm/appid-replacements.capnp
  capnpc: sandstorm/appid-replacements-test.capnp
  compile: node-capnp/test.capnp.c++
  capnpc: sandstorm/sandstorm-http-bridge.capnp
  capnpc: sandstorm/update-tool.capnp
  capnpc: sandstorm/supervisor.capnp
  capnpc: sandstorm/api-session.capnp
  capnpc: sandstorm/bridge-proxy.capnp
  capnpc: sandstorm/activity.capnp
  compile: sandstorm/powerbox.capnp.c++
  capnpc: sandstorm/app-index/submit.capnp
  capnpc: sandstorm/email.capnp
  capnpc: sandstorm/identity.capnp
  capnpc: sandstorm/app-index/app-index.capnp
  capnpc: sandstorm/identity-impl.capnp
  capnpc: sandstorm/grain.capnp
  capnpc: sandstorm/backend.capnp
✔ learn: capnp/bootstrap-test.ekam-rule
  compile: sandstorm/identity.capnp.c++
  compile: capnp/compat/json-rpc.capnp.c++
  compile: sandstorm/identity-impl.capnp.c++
  compile: capnp/compat/json-test.capnp.c++
  compile: capnp/compat/json-rpc.c++
✔ learn: capnp/compiler/capnp-test.ekam-rule
  compile: capnp/compat/http-over-capnp-test.c++
  compile: capnp/compat/http-over-capnp.c++
  compile: capnp/compat/byte-stream-test.c++
  compile: capnp/compat/json-test.c++
  compile: capnp/test-import.capnp.c++
  compile: capnp/compat/byte-stream.c++
    /ekam-provider/canonical/capnp/compat/byte-stream.c++:951:84: warning: missing field 'capCount' initializer [-Wmissing-field-initializers]
            auto req = capnpStream->writeRequest(MessageSize { 8 + size / sizeof(word) });
                                                                                       ^
    1 warning generated.
  compile: capnp/fuzz-test.c++
  compile: capnp/test-import2.capnp.c++
  compile: capnp/test.capnp.c++
  compile: capnp/serialize-text-test.c++
  compile: capnp/encoding-test.c++
  compile: capnp/blob-test.c++
  link: capnp/blob-test.o
✔ test: capnp/blob-test
  compile: capnp/any-test.c++
  compile: capnp/message-test.c++
  compile: capnp/serialize-packed-test.c++
  compile: capnp/test-util.c++
  compile: capnp/schema-loader-test.c++
  link: capnp/schema-loader-test.o
  compile: capnp/orphan-test.c++
✔ test: capnp/schema-loader-test
  link: capnp/orphan-test.o
✔ test: capnp/orphan-test
  compile: capnp/rpc-test.c++
  compile: capnp/afl-testcase.c++
  link: capnp/rpc-test.o
✔ test: capnp/rpc-test
  link: capnp/afl-testcase.o
  compile: capnp/canonicalize-test.c++
  link: capnp/canonicalize-test.o
✔ test: capnp/canonicalize-test
  compile: capnp/schema-test.c++
  link: capnp/schema-test.o
✔ test: capnp/schema-test
  compile: capnp/common-test.c++
  link: capnp/common-test.o
✔ test: capnp/common-test
  compile: capnp/serialize-async-test.c++
  link: capnp/serialize-async-test.o
✔ test: capnp/serialize-async-test
  compile: capnp/dynamic-test.c++
  link: capnp/dynamic-test.o
✔ test: capnp/dynamic-test
  compile: capnp/membrane-test.c++
  link: capnp/membrane-test.o
✔ test: capnp/membrane-test
  compile: capnp/capability-test.c++
  link: capnp/capability-test.o
✔ test: capnp/capability-test
  compile: capnp/stringify-test.c++
  compile: capnp/rpc-twoparty-test.c++
  link: capnp/stringify-test.o
✔ test: capnp/stringify-test
  link: capnp/rpc-twoparty-test.o
  compile: capnp/schema-parser-test.c++
✔ test: capnp/rpc-twoparty-test
  link: capnp/schema-parser-test.o
✔ test: capnp/schema-parser-test
  compile: capnp/serialize-test.c++
  link: capnp/serialize-test.o
✔ test: capnp/serialize-test
  compile: capnp/compat/json-rpc-test.c++
  compile: capnp/ez-rpc-test.c++
  link: capnp/compat/json-rpc-test.o
✔ test: capnp/compat/json-rpc-test
  link: capnp/ez-rpc-test.o
✔ test: capnp/ez-rpc-test
  compile: sandstorm/web-publishing.capnp.c++
  compile: sandstorm/test-app/test-app.c++
  compile: sandstorm/web-session.capnp.c++
  compile: sandstorm/app-index/app-index.c++
    /ekam-provider/canonical/sandstorm/app-index/app-index.c++:239:54: warning: lambda capture 'this' is not used [-Wunused-lambda-capture]
            return inner.getResultRequest().send().then([this,context](auto&&) mutable {
                                                         ^~~~~
    1 warning generated.
  compile: sandstorm/sandstorm-http-bridge.c++
    /ekam-provider/canonical/sandstorm/sandstorm-http-bridge.c++:1520:10: warning: lambda capture 'this' is not used [-Wunused-lambda-capture]
            [this, KJ_MVCAP(httpRequest), KJ_MVCAP(clientStream), responseStream, context]
             ^~~~~
    /ekam-provider/canonical/sandstorm/sandstorm-http-bridge.c++:2468:37: warning: lambda capture 'this' is not used [-Wunused-lambda-capture]
        return address->connect().then([this, loggedSlowStartupMessage](auto x) -> void {
                                        ^~~~~
    In file included from /ekam-provider/canonical/sandstorm/sandstorm-http-bridge.c++:23:
    In file included from /ekam-provider/c++header/kj/main.h:24:
    In file included from /ekam-provider/c++header/kj/array.h:24:
    /ekam-provider/c++header/kj/memory.h:403:60: warning: delete called on non-final 'sandstorm::HttpParser' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-
      virtual-dtor]
      virtual void disposeImpl(void* pointer) const override { delete reinterpret_cast<T*>(pointer); }
                                                               ^
    /ekam-provider/c++header/kj/memory.h:409:51: note: in instantiation of member function 'kj::_::HeapDisposer<sandstorm::HttpParser>::disposeImpl' requested here
    const HeapDisposer<T> HeapDisposer<T>::instance = HeapDisposer<T>();
                                                      ^
    /ekam-provider/c++header/kj/memory.h:420:72: note: in instantiation of static data member 'kj::_::HeapDisposer<sandstorm::HttpParser>::instance' requested here
      return Own<T>(new T(kj::fwd<Params>(params)...), _::HeapDisposer<T>::instance);
                                                                           ^
    /ekam-provider/canonical/sandstorm/sandstorm-http-bridge.c++:949:23: note: in instantiation of function template specialization 'kj::heap<sandstorm::HttpParser, sandstorm::ByteStream::
      Client &>' requested here
        auto parser = kj::heap<HttpParser>(responseStream);
                          ^
    In file included from /ekam-provider/canonical/sandstorm/sandstorm-http-bridge.c++:23:
    In file included from /ekam-provider/c++header/kj/main.h:24:
    In file included from /ekam-provider/c++header/kj/array.h:24:
    /ekam-provider/c++header/kj/memory.h:403:60: warning: delete called on non-final 'sandstorm::WebSessionImpl::IgnoreStream' that has virtual functions but non-virtual destructor [-Wdelete
      -non-abstract-non-virtual-dtor]
      virtual void disposeImpl(void* pointer) const override { delete reinterpret_cast<T*>(pointer); }
                                                               ^
    ...(log truncated; use -l to increase log limit)...
  compile: sandstorm/bridge-proxy.c++
  compile: sandstorm/run-bundle.c++
    In file included from /ekam-provider/canonical/sandstorm/run-bundle.c++:17:
    In file included from /ekam-provider/c++header/kj/main.h:24:
    In file included from /ekam-provider/c++header/kj/parse/../array.h:24:
    /ekam-provider/c++header/kj/memory.h:403:60: warning: delete called on non-final 'sandstorm::SupervisorMain' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-
      non-virtual-dtor]
      virtual void disposeImpl(void* pointer) const override { delete reinterpret_cast<T*>(pointer); }
                                                               ^
    /ekam-provider/c++header/kj/memory.h:409:51: note: in instantiation of member function 'kj::_::HeapDisposer<sandstorm::SupervisorMain>::disposeImpl' requested here
    const HeapDisposer<T> HeapDisposer<T>::instance = HeapDisposer<T>();
                                                      ^
    /ekam-provider/c++header/kj/memory.h:420:72: note: in instantiation of static data member 'kj::_::HeapDisposer<sandstorm::SupervisorMain>::instance' requested here
      return Own<T>(new T(kj::fwd<Params>(params)...), _::HeapDisposer<T>::instance);
                                                                           ^
    /ekam-provider/canonical/sandstorm/run-bundle.c++:499:29: note: in instantiation of function template specialization 'kj::heap<sandstorm::SupervisorMain, kj::ProcessContext &>' requested
      here
            alternateMain = kj::heap<SupervisorMain>(context);
                                ^
    In file included from /ekam-provider/canonical/sandstorm/run-bundle.c++:17:
    In file included from /ekam-provider/c++header/kj/main.h:24:
    In file included from /ekam-provider/c++header/kj/parse/../array.h:24:
    /ekam-provider/c++header/kj/memory.h:403:60: warning: delete called on non-final 'sandstorm::BackupMain' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-
      virtual-dtor]
      virtual void disposeImpl(void* pointer) const override { delete reinterpret_cast<T*>(pointer); }
                                                               ^
    /ekam-provider/c++header/kj/memory.h:409:51: note: in instantiation of member function 'kj::_::HeapDisposer<sandstorm::BackupMain>::disposeImpl' requested here
    const HeapDisposer<T> HeapDisposer<T>::instance = HeapDisposer<T>();
                                                      ^
    /ekam-provider/c++header/kj/memory.h:420:72: note: in instantiation of static data member 'kj::_::HeapDisposer<sandstorm::BackupMain>::instance' requested here
      return Own<T>(new T(kj::fwd<Params>(params)...), _::HeapDisposer<T>::instance);
                                                                           ^
    ...(log truncated; use -l to increase log limit)...
  compile: sandstorm/test-app/test-app.capnp.c++
  compile: sandstorm/web-session-bridge.c++
    /ekam-provider/canonical/sandstorm/web-session-bridge.c++:143:35: warning: lambda capture 'method' is not used [-Wunused-lambda-capture]
          auto doNonStreaming = [this,method,path,&headers,&requestBody,&response]() {
                                     ~^~~~~~
    /ekam-provider/canonical/sandstorm/web-session-bridge.c++:173:24: warning: lambda capture 'headers' is not used [-Wunused-lambda-capture]
              .then([this,&headers,&requestBody,&response,KJ_MVCAP(streamer)]
                         ~~^~~~~~~
    /ekam-provider/canonical/sandstorm/web-session-bridge.c++:177:11: warning: lambda capture 'this' is not used [-Wunused-lambda-capture]
          }, [this,KJ_MVCAP(doNonStreaming)](kj::Exception&& e) -> kj::Promise<void> {
              ^~~~~
    /ekam-provider/canonical/sandstorm/web-session-bridge.c++:192:35: warning: lambda capture 'method' is not used [-Wunused-lambda-capture]
          auto doNonStreaming = [this,method,path,&headers,&requestBody,&response]() {
                                     ~^~~~~~
    /ekam-provider/canonical/sandstorm/web-session-bridge.c++:222:24: warning: lambda capture 'headers' is not used [-Wunused-lambda-capture]
              .then([this,&headers,&requestBody,&response,KJ_MVCAP(streamer)]
                         ~~^~~~~~~
    /ekam-provider/canonical/sandstorm/web-session-bridge.c++:226:11: warning: lambda capture 'this' is not used [-Wunused-lambda-capture]
          }, [this,KJ_MVCAP(doNonStreaming)](kj::Exception&& e) -> kj::Promise<void> {
              ^~~~~
    In file included from /ekam-provider/canonical/sandstorm/web-session-bridge.c++:17:
    In file included from /ekam-provider/canonical/sandstorm/web-session-bridge.h:20:
    In file included from /ekam-provider/c++header/kj/compat/http.h:37:
    In file included from /ekam-provider/c++header/kj/string.h:25:
    In file included from /ekam-provider/c++header/kj/array.h:24:
    /ekam-provider/c++header/kj/memory.h:403:60: warning: delete called on non-final 'sandstorm::(anonymous namespace)::NoStreamingByteStream' that has virtual functions but non-virtual 
      destructor [-Wdelete-non-abstract-non-virtual-dtor]
      virtual void disposeImpl(void* pointer) const override { delete reinterpret_cast<T*>(pointer); }
                                                               ^
    /ekam-provider/c++header/kj/memory.h:409:51: note: in instantiation of member function 'kj::_::HeapDisposer<sandstorm::(anonymous namespace)::NoStreamingByteStream>::disposeImpl' 
      requested here
    const HeapDisposer<T> HeapDisposer<T>::instance = HeapDisposer<T>();
    ...(log truncated; use -l to increase log limit)...
  compile: sandstorm/mime.capnp.c++
  compile: sandstorm/ip.capnp.c++
  compile: sandstorm/gateway.c++
    /ekam-provider/canonical/sandstorm/gateway.c++:648:14: warning: local variable 'result' will be copied despite being returned by name [-Wreturn-std-move]
          return result;
                 ^~~~~~
    /ekam-provider/canonical/sandstorm/gateway.c++:648:14: note: call 'std::move' explicitly to avoid copying
          return result;
                 ^~~~~~
                 std::move(result)
    /ekam-provider/canonical/sandstorm/gateway.c++:1028:20: warning: lambda capture 'this' is not used [-Wunused-lambda-capture]
                .then([this,&tlsRef,encrypted=kj::mv(encrypted)]
                       ^~~~~
    /ekam-provider/canonical/sandstorm/gateway.c++:1028:26: warning: lambda capture 'tlsRef' is not used [-Wunused-lambda-capture]
                .then([this,&tlsRef,encrypted=kj::mv(encrypted)]
                            ~^~~~~~~
    In file included from /ekam-provider/canonical/sandstorm/gateway.c++:17:
    In file included from /ekam-provider/canonical/sandstorm/gateway.h:20:
    In file included from /ekam-provider/c++header/kj/compat/http.h:37:
    In file included from /ekam-provider/c++header/kj/string.h:25:
    In file included from /ekam-provider/c++header/kj/array.h:24:
    /ekam-provider/c++header/kj/memory.h:403:60: warning: delete called on non-final 'sandstorm::GatewayTlsManager::TlsKeyCallbackImpl' that has virtual functions but non-virtual destructor 
      [-Wdelete-non-abstract-non-virtual-dtor]
      virtual void disposeImpl(void* pointer) const override { delete reinterpret_cast<T*>(pointer); }
                                                               ^
    /ekam-provider/c++header/kj/memory.h:409:51: note: in instantiation of member function 'kj::_::HeapDisposer<sandstorm::GatewayTlsManager::TlsKeyCallbackImpl>::disposeImpl' requested here
    const HeapDisposer<T> HeapDisposer<T>::instance = HeapDisposer<T>();
                                                      ^
    /ekam-provider/c++header/kj/memory.h:420:72: note: in instantiation of static data member 'kj::_::HeapDisposer<sandstorm::GatewayTlsManager::TlsKeyCallbackImpl>::instance' requested here
      return Own<T>(new T(kj::fwd<Params>(params)...), _::HeapDisposer<T>::instance);
                                                                           ^
    /ekam-provider/canonical/sandstorm/gateway.c++:976:23: note: in instantiation of function template specialization 'kj::heap<sandstorm::GatewayTlsManager::TlsKeyCallbackImpl, sandstorm::
      GatewayTlsManager &>' requested here
    ...(log truncated; use -l to increase log limit)...
  compile: sandstorm/package.capnp.c++
  compile: sandstorm/spk-standalone.c++
  compile: sandstorm/id-to-text.c++
  compile: sandstorm/spk.c++
    /ekam-provider/canonical/sandstorm/spk.c++:296:28: warning: 'parseDiskFile' is deprecated: Use parseFromDirectory() instead. [-Wdeprecated-declarations]
          auto schema = parser.parseDiskFile(filename, filename, importPathPtrs);
                               ^
    /ekam-provider/c++header/capnp/schema-parser.h:103:7: note: 'parseDiskFile' has been explicitly marked deprecated here
          CAPNP_DEPRECATED("Use parseFromDirectory() instead.");
          ^
    /ekam-provider/c++header/capnp/common.h:63:26: note: expanded from macro 'CAPNP_DEPRECATED'
    #define CAPNP_DEPRECATED KJ_DEPRECATED
                             ^
    /ekam-provider/c++header/kj/common.h:207:20: note: expanded from macro 'KJ_DEPRECATED'
        __attribute__((deprecated(reason)))
                       ^
    In file included from /ekam-provider/canonical/sandstorm/spk.c++:19:
    In file included from /ekam-provider/canonical/sandstorm/spk.h:20:
    In file included from /ekam-provider/canonical/sandstorm/abstract-main.h:20:
    In file included from /ekam-provider/c++header/kj/main.h:24:
    In file included from /ekam-provider/c++header/kj/array.h:24:
    /ekam-provider/c++header/kj/memory.h:403:60: warning: delete called on non-final 'sandstorm::SpkTool' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-
      virtual-dtor]
      virtual void disposeImpl(void* pointer) const override { delete reinterpret_cast<T*>(pointer); }
                                                               ^
    /ekam-provider/c++header/kj/memory.h:409:51: note: in instantiation of member function 'kj::_::HeapDisposer<sandstorm::SpkTool>::disposeImpl' requested here
    const HeapDisposer<T> HeapDisposer<T>::instance = HeapDisposer<T>();
                                                      ^
    /ekam-provider/c++header/kj/memory.h:420:72: note: in instantiation of static data member 'kj::_::HeapDisposer<sandstorm::SpkTool>::instance' requested here
      return Own<T>(new T(kj::fwd<Params>(params)...), _::HeapDisposer<T>::instance);
                                                                           ^
    /ekam-provider/canonical/sandstorm/spk.c++:2434:14: note: in instantiation of function template specialization 'kj::heap<sandstorm::SpkTool, kj::ProcessContext &>' requested here
      return kj::heap<SpkTool>(context);
                 ^
    ...(log truncated; use -l to increase log limit)...
  compile: sandstorm/backend.c++
    /ekam-provider/canonical/sandstorm/backend.c++:166:14: warning: lambda capture 'this' is not used [-Wunused-lambda-capture]
          .then([this,KJ_MVCAP(addressPromise)](size_t n) mutable {
                 ^~~~~
    /ekam-provider/canonical/sandstorm/backend.c++:284:16: warning: lambda capture 'context' is not used [-Wunused-lambda-capture]
            .then([context](Supervisor::Client client) mutable {
                   ^~~~~~~
    /ekam-provider/canonical/sandstorm/backend.c++:356:41: warning: lambda capture 'context' is not used [-Wunused-lambda-capture]
        auto forked = writeQueue.then([this,context]() mutable {
                                           ~^~~~~~~
    In file included from /ekam-provider/canonical/sandstorm/backend.c++:17:
    In file included from /ekam-provider/canonical/sandstorm/backend.h:20:
    In file included from /ekam-provider/c++header/sandstorm/backend.capnp.h:6:
    In file included from /ekam-provider/c++header/capnp/generated-header-support.h:26:
    In file included from /ekam-provider/c++header/capnp/raw-schema.h:24:
    In file included from /ekam-provider/c++header/capnp/common.h:29:
    In file included from /ekam-provider/c++header/kj/string.h:25:
    In file included from /ekam-provider/c++header/kj/array.h:24:
    /ekam-provider/c++header/kj/memory.h:403:60: warning: delete called on non-final 'sandstorm::BackendImpl::PackageUploadStreamImpl' that has virtual functions but non-virtual destructor [
      -Wdelete-non-abstract-non-virtual-dtor]
      virtual void disposeImpl(void* pointer) const override { delete reinterpret_cast<T*>(pointer); }
                                                               ^
    /ekam-provider/c++header/kj/memory.h:409:51: note: in instantiation of member function 'kj::_::HeapDisposer<sandstorm::BackendImpl::PackageUploadStreamImpl>::disposeImpl' requested here
    const HeapDisposer<T> HeapDisposer<T>::instance = HeapDisposer<T>();
                                                      ^
    /ekam-provider/c++header/kj/memory.h:420:72: note: in instantiation of static data member 'kj::_::HeapDisposer<sandstorm::BackendImpl::PackageUploadStreamImpl>::instance' requested here
      return Own<T>(new T(kj::fwd<Params>(params)...), _::HeapDisposer<T>::instance);
                                                                           ^
    /ekam-provider/canonical/sandstorm/backend.c++:440:38: note: in instantiation of function template specialization 'kj::heap<sandstorm::BackendImpl::PackageUploadStreamImpl, sandstorm::
      BackendImpl &>' requested here
      context.getResults().setStream(kj::heap<PackageUploadStreamImpl>(*this));
    ...(log truncated; use -l to increase log limit)...
  compile: sandstorm/appid-replacements-test.c++
  compile: sandstorm/union-fs.c++
  compile: sandstorm/id-to-text-test.c++
  compile: sandstorm/appid-replacements.c++
  link: sandstorm/id-to-text-test.o
✔ test: sandstorm/id-to-text-test
  compile: sandstorm/payments.capnp.c++
  compile: sandstorm/util.capnp.c++
  compile: sandstorm/email-impl.capnp.c++
  compile: sandstorm/app-index/indexer.c++
    In file included from /ekam-provider/canonical/sandstorm/app-index/indexer.c++:17:
    In file included from /ekam-provider/canonical/sandstorm/app-index/indexer.h:21:
    In file included from /ekam-provider/c++header/sandstorm/util.capnp.h:6:
    In file included from /ekam-provider/c++header/capnp/generated-header-support.h:26:
    In file included from /ekam-provider/c++header/capnp/raw-schema.h:24:
    In file included from /ekam-provider/c++header/capnp/common.h:29:
    In file included from /ekam-provider/c++header/kj/string.h:25:
    In file included from /ekam-provider/c++header/kj/array.h:24:
    /ekam-provider/c++header/kj/memory.h:403:60: warning: delete called on non-final 'sandstorm::appindex::Indexer::UploadStreamImpl' that has virtual functions but non-virtual destructor [-
      Wdelete-non-abstract-non-virtual-dtor]
      virtual void disposeImpl(void* pointer) const override { delete reinterpret_cast<T*>(pointer); }
                                                               ^
    /ekam-provider/c++header/kj/memory.h:409:51: note: in instantiation of member function 'kj::_::HeapDisposer<sandstorm::appindex::Indexer::UploadStreamImpl>::disposeImpl' requested here
    const HeapDisposer<T> HeapDisposer<T>::instance = HeapDisposer<T>();
                                                      ^
    /ekam-provider/c++header/kj/memory.h:420:72: note: in instantiation of static data member 'kj::_::HeapDisposer<sandstorm::appindex::Indexer::UploadStreamImpl>::instance' requested here
      return Own<T>(new T(kj::fwd<Params>(params)...), _::HeapDisposer<T>::instance);
                                                                           ^
    /ekam-provider/canonical/sandstorm/app-index/indexer.c++:614:14: note: in instantiation of function template specialization 'kj::heap<sandstorm::appindex::Indexer::UploadStreamImpl>' 
      requested here
      return kj::heap<UploadStreamImpl>();
                 ^
    1 warning generated.
  compile: sandstorm/sandstorm-http-bridge-internal.capnp.c++
  compile: sandstorm/hack-session.capnp.c++
  compile: sandstorm/update-tool.c++
  compile: sandstorm/fuse.c++
  compile: sandstorm/util-test.c++
  compile: sandstorm/backup.c++
  compile: sandstorm/smtp-proxy.c++
    In file included from /ekam-provider/canonical/sandstorm/smtp-proxy.c++:17:
    In file included from /ekam-provider/canonical/sandstorm/smtp-proxy.h:19:
    In file included from /ekam-provider/canonical/sandstorm/util.h:23:
    In file included from /ekam-provider/c++header/kj/io.h:26:
    In file included from /ekam-provider/c++header/kj/array.h:24:
    /ekam-provider/c++header/kj/memory.h:403:60: warning: delete called on non-final 'sandstorm::(anonymous namespace)::AsyncLineReader' that has virtual functions but non-virtual destructor
      [-Wdelete-non-abstract-non-virtual-dtor]
      virtual void disposeImpl(void* pointer) const override { delete reinterpret_cast<T*>(pointer); }
                                                               ^
    /ekam-provider/c++header/kj/memory.h:409:51: note: in instantiation of member function 'kj::_::HeapDisposer<sandstorm::(anonymous namespace)::AsyncLineReader>::disposeImpl' requested 
      here
    const HeapDisposer<T> HeapDisposer<T>::instance = HeapDisposer<T>();
                                                      ^
    /ekam-provider/c++header/kj/memory.h:420:72: note: in instantiation of static data member 'kj::_::HeapDisposer<sandstorm::(anonymous namespace)::AsyncLineReader>::instance' requested 
      here
      return Own<T>(new T(kj::fwd<Params>(params)...), _::HeapDisposer<T>::instance);
                                                                           ^
    /ekam-provider/canonical/sandstorm/smtp-proxy.c++:135:20: note: in instantiation of function template specialization 'kj::heap<sandstorm::(anonymous namespace)::AsyncLineReader, kj::Own<
      kj::AsyncIoStream> >' requested here
            client(kj::heap<AsyncLineReader>(kj::mv(client))),
                       ^
    1 warning generated.
  compile: sandstorm/appid-replacements.capnp.c++
  compile: sandstorm/appid-replacements-test.capnp.c++
  compile: sandstorm/update-tool.capnp.c++
  compile: sandstorm/sandstorm-http-bridge.capnp.c++
  compile: sandstorm/util.c++
  compile: sandstorm/supervisor.c++
    /ekam-provider/canonical/sandstorm/supervisor.c++:791:19: warning: 'readdir_r' is deprecated [-Wdeprecated-declarations]
          int error = readdir_r(dir, &entry, &eptr);
                      ^
    /usr/include/dirent.h:186:28: note: 'readdir_r' has been explicitly marked deprecated here
         __nonnull ((1, 2, 3)) __attribute_deprecated__;
                               ^
    /usr/include/x86_64-linux-gnu/sys/cdefs.h:251:51: note: expanded from macro '__attribute_deprecated__'
    # define __attribute_deprecated__ __attribute__ ((__deprecated__))
                                                      ^
    /ekam-provider/canonical/sandstorm/supervisor.c++:1903:29: warning: lambda capture 'this' is not used [-Wunused-lambda-capture]
        return req.send().then([this, context](auto args) mutable -> void {
                                ^~~~~
    In file included from /ekam-provider/canonical/sandstorm/supervisor.c++:17:
    In file included from /ekam-provider/canonical/sandstorm/supervisor.h:20:
    In file included from /ekam-provider/canonical/sandstorm/abstract-main.h:20:
    In file included from /ekam-provider/c++header/kj/main.h:24:
    In file included from /ekam-provider/c++header/kj/array.h:24:
    /ekam-provider/c++header/kj/memory.h:403:60: warning: delete called on non-final 'sandstorm::SupervisorMain::SupervisorImpl::LogWatcher' that has virtual functions but non-virtual 
      destructor [-Wdelete-non-abstract-non-virtual-dtor]
      virtual void disposeImpl(void* pointer) const override { delete reinterpret_cast<T*>(pointer); }
                                                               ^
    /ekam-provider/c++header/kj/memory.h:409:51: note: in instantiation of member function 'kj::_::HeapDisposer<sandstorm::SupervisorMain::SupervisorImpl::LogWatcher>::disposeImpl' requested
      here
    const HeapDisposer<T> HeapDisposer<T>::instance = HeapDisposer<T>();
                                                      ^
    /ekam-provider/c++header/kj/memory.h:420:72: note: in instantiation of static data member 'kj::_::HeapDisposer<sandstorm::SupervisorMain::SupervisorImpl::LogWatcher>::instance' requested
      here
      return Own<T>(new T(kj::fwd<Params>(params)...), _::HeapDisposer<T>::instance);
                                                                           ^
    /ekam-provider/canonical/sandstorm/supervisor.c++:2125:24: note: in instantiation of function template specialization 'kj::heap<sandstorm::SupervisorMain::SupervisorImpl::LogWatcher, kj:
    ...(log truncated; use -l to increase log limit)...
  compile: sandstorm/bridge-proxy.capnp.c++
  compile: sandstorm/activity.capnp.c++
  compile: sandstorm/api-session-impl.capnp.c++
  compile: sandstorm/api-session.capnp.c++
  compile: sandstorm/persistentuiview.capnp.c++
  compile: sandstorm/email.capnp.c++
  compile: sandstorm/app-index/submit.capnp.c++
  compile: sandstorm/grain.capnp.c++
  compile: sandstorm/app-index/app-index.capnp.c++
  compile: sandstorm/supervisor.capnp.c++
  link: capnp/compat/byte-stream-test.o
  link: capnp/compat/http-over-capnp-test.o
✔ test: capnp/compat/byte-stream-test
✔ test: capnp/compat/http-over-capnp-test
  link: capnp/compat/json-test.o
✔ test: capnp/compat/json-test
  link: capnp/serialize-packed-test.o
  link: capnp/message-test.o
✔ test: capnp/serialize-packed-test
  link: capnp/any-test.o
✔ test: capnp/message-test
✔ test: capnp/any-test
  compile: sandstorm/backend.capnp.c++
  link: capnp/encoding-test.o
  link: capnp/fuzz-test.o
✔ test: capnp/encoding-test
  link: capnp/serialize-text-test.o
✔ test: capnp/serialize-text-test
  link: sandstorm/test-app/test-app.o
    /usr/bin/ld: tmp/kj/async-io-unix.o: in function `kj::(anonymous namespace)::SocketAddress::lookupHost(kj::LowLevelAsyncIoProvider&, kj::String, kj::String, unsigned int, kj::_::
      NetworkFilter&)::$_3::operator()(kj::(anonymous namespace)::SocketAddress::LookupParams&&) const':
    async-io-unix.c++:(.text+0x5393): warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
  link: sandstorm/sandstorm-http-bridge.o
    /usr/bin/ld: tmp/kj/async-io-unix.o: in function `kj::(anonymous namespace)::SocketAddress::lookupHost(kj::LowLevelAsyncIoProvider&, kj::String, kj::String, unsigned int, kj::_::
      NetworkFilter&)::$_3::operator()(kj::(anonymous namespace)::SocketAddress::LookupParams&&) const':
    async-io-unix.c++:(.text+0x5393): warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
  link: sandstorm/app-index/app-index.o
  link: sandstorm/run-bundle.o
    /usr/bin/ld: tmp/kj/async-io-unix.o: in function `kj::(anonymous namespace)::SocketAddress::lookupHost(kj::LowLevelAsyncIoProvider&, kj::String, kj::String, unsigned int, kj::_::
      NetworkFilter&)::$_3::operator()(kj::(anonymous namespace)::SocketAddress::LookupParams&&) const':
    async-io-unix.c++:(.text+0x5393): warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
  link: sandstorm/appid-replacements-test.o
  link: sandstorm/spk-standalone.o
  link: sandstorm/fuse-test-bind.o
✔ test: sandstorm/appid-replacements-test
  install: sandstorm/sandstorm.ekam-manifest
  link: sandstorm/update-tool.o
  link: sandstorm/util-test.o
✔ test: sandstorm/util-test
✔ test: capnp/fuzz-test
✘ jstest: node-capnp/capnp-test.js
    full log: tmp/node-capnp/capnp-test.js.log
✘ install: node-capnp/node-capnp.ekam-manifest
    node-capnp/capnp.node: not found
✘ link: node-capnp/capnp.o
    /usr/bin/ld: deps/libsodium/build/src/libsodium/.libs/libsodium.a(libsodium_la-stream_chacha20.o): relocation R_X86_64_32S against `.data' can not be used when making a shared object; 
      recompile with -fPIC
    /usr/bin/ld: deps/libsodium/build/src/libsodium/.libs/libsodium.a(libsodium_la-randombytes.o): relocation R_X86_64_32S against `.bss' can not be used when making a shared object; 
      recompile with -fPIC
    /usr/bin/ld: deps/libsodium/build/src/libsodium/.libs/libsodium.a(libsodium_la-core.o): relocation R_X86_64_32S against `.bss' can not be used when making a shared object; recompile with
      -fPIC
    /usr/bin/ld: deps/libsodium/build/src/libsodium/.libs/libsodium.a(libsodium_la-runtime.o): relocation R_X86_64_32S against `.bss' can not be used when making a shared object; recompile 
      with -fPIC
    /usr/bin/ld: deps/libsodium/build/src/libsodium/.libs/libsodium.a(libsodium_la-utils.o): relocation R_X86_64_32S against `.data' can not be used when making a shared object; recompile 
      with -fPIC
    /usr/bin/ld: deps/libsodium/build/src/libsodium/.libs/libsodium.a(libsodium_la-randombytes_sysrandom.o): relocation R_X86_64_32S against `.data' can not be used when making a shared 
      object; recompile with -fPIC
    /usr/bin/ld: deps/libsodium/build/src/libsodium/.libs/libsodium.a(libsodium_la-onetimeauth_poly1305.o): relocation R_X86_64_32S against `.data' can not be used when making a shared 
      object; recompile with -fPIC
    /usr/bin/ld: deps/libsodium/build/src/libsodium/.libs/libsodium.a(libsodium_la-argon2-core.o): relocation R_X86_64_32S against `.data' can not be used when making a shared object; 
      recompile with -fPIC
    /usr/bin/ld: deps/libsodium/build/src/libsodium/.libs/libsodium.a(libsodium_la-scalarmult_curve25519.o): relocation R_X86_64_32S against `.data' can not be used when making a shared 
      object; recompile with -fPIC
    /usr/bin/ld: deps/libsodium/build/src/libsodium/.libs/libsodium.a(libsodium_la-stream_salsa20.o): relocation R_X86_64_32S against `.data' can not be used when making a shared object; 
      recompile with -fPIC
    /usr/bin/ld: deps/libsodium/build/src/libsodium/.libs/libsodium.a(libavx2_la-salsa20_xmm6int-avx2.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared 
      object; recompile with -fPIC
    /usr/bin/ld: deps/libsodium/build/src/libsodium/.libs/libsodium.a(libsodium_la-blake2b-ref.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; 
      recompile with -fPIC
    /usr/bin/ld: deps/libsodium/build/src/libsodium/.libs/libsodium.a(libssse3_la-blake2b-compress-ssse3.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared 
      object; recompile with -fPIC
    /usr/bin/ld: deps/libsodium/build/src/libsodium/.libs/libsodium.a(libavx2_la-blake2b-compress-avx2.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared 
      object; recompile with -fPIC
    /usr/bin/ld: deps/libsodium/build/src/libsodium/.libs/libsodium.a(libsodium_la-ed25519_ref10.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; 
      recompile with -fPIC
    ...(log truncated; use -l to increase log limit)...
make: *** [Makefile:261: tmp/.ekam-run] Error 1

@xet7
Copy link
Contributor Author

xet7 commented Feb 7, 2020

$ cat ../build-sandstorm.sh 
cd ~/repos/sandstorm-io/sandstorm
export LANG=C
make CFLAGS+=-DKJ_STD_COMPAT

@zenhack
Copy link
Collaborator

zenhack commented Feb 7, 2020

fwiw, it should no longer be necessary to specify KJ_STD_COMPAT explicitly, as it's been added to the Makefile (though it shouldn't break anything).

It looks like somehow libsodium got compiled without -fPIC. I think I hit this once too. (Maybe at some point you accidentally set CFLAGS= instead of CFLAGS+= or something actually I don't think that would cause this as we set -fPIC in C(XX)FLAGS2, but maybe it was something else). Try doing make clean and then trying again.

(It would be nice if we had a build system that actually treated changes in flags as invalidating build artifacts, but we currently do not. It is probably generally wise to do a clean build if you modify CFLAGS).

@xet7
Copy link
Contributor Author

xet7 commented Feb 7, 2020

Yippee, now building works !!! Thanks @zenhack !!!

$ cat ../build-sandstorm.sh 
cd ~/repos/sandstorm-io/sandstorm
export LANG=C
make clean
make
#make CFLAGS+=-DKJ_STD_COMPAT

@xet7 xet7 closed this as completed Feb 7, 2020
@zenhack
Copy link
Collaborator

zenhack commented Feb 7, 2020

You're welcome!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
sandstorm-dev Issues hacking on Sandstorm
Projects
None yet
Development

No branches or pull requests

3 participants