Comments (3)
That error comes from make
, and it's basically telling you that yaws.hrl
is not found and make
has no rules for how to create it. Please make sure the file include/yaws.hrl
exists relative to the top of your Yaws source tree. If it doesn't, then something might be removing it.
Thanks for the logs, but can you also show the full command lines you're using for each step? Also, are the two environment variables you mention the only two you're setting that are Yaws-related? It would be nice to see if we can reproduce this issue with a setup that's as simple as possible, and to do that we need to know the environment and commands you're using.
from yaws.
Thanks for the reply.
Alright,
The file 'include/yaws.hrl' exists in the top Yaws source tree (with deterministic flags enabled):
root@c04e16613bbd:/build/tmp/work/core2-64-poky-linux/yaws/2.1.1+gitAUTOINC+4ef3fa2a1d-r0/git# ls include/yaws.hrl
include/yaws.hrl
root@c04e16613bbd:/build/tmp/work/core2-64-poky-linux/yaws/2.1.1+gitAUTOINC+4ef3fa2a1d-r0/git# mkdir /tmp/p
root@c04e16613bbd:/build/tmp/work/core2-64-poky-linux/yaws/2.1.1+gitAUTOINC+4ef3fa2a1d-r0/git# make install DESTDIR=/tmp/p
Making install in src
make[1]: Entering directory '/build/tmp/work/core2-64-poky-linux/yaws/2.1.1+gitAUTOINC+4ef3fa2a1d-r0/git/src'
make[1]: *** No rule to make target 'yaws.hrl', needed by '../ebin/yaws.beam'. Stop.
make[1]: Leaving directory '/build/tmp/work/core2-64-poky-linux/yaws/2.1.1+gitAUTOINC+4ef3fa2a1d-r0/git/src'
make: *** [Makefile:560: install-recursive] Error 1
So, for Yaws-related there is only variables to set deterministic build. Nothing else.
I'm attaching some shell scripts that the YP environment has created in order to execute all steps for configure, compile and install. They are pure shell script and have all environment variables used. It could looks too YP specific but they are just shell script (start reading from the end of the file which calls the respective function to do the action for instance do_compile).
- In additional to the previous output log, here is the shell script commands when building with deterministic flags:
run_do_configure.txt
run_do_compile.txt
run_do_install.txt
- Build using non-deterministic flags, shell script commands and output log
run_do_compile_non_deterministic.txt
run_do_configure_non_deterministic.txt
run_do_install_non_deterministic.txt
log_do_install_non_deterministic.txt
log_do_configure_non_deterministic.txt
log_do_compile_non_deterministic.txt
When running 'make install DESTDIR=/tmp/p' without deterministic build, the make works as expected.
from yaws.
The issue is that the dependency Makefiles generated by erlc -M -MF <file>.Pbeam
are different when using +deterministic
and not.
Without +deterministic
:
yaws/src$ erlc -M -MF .deps/yaws.Pbeam -MT ../ebin/yaws.beam -I ../.. yaws.erl
yaws/src$ cat .deps/yaws.Pbeam
../ebin/yaws.beam: yaws.erl ../include/yaws.hrl ../include/yaws_api.hrl \
yaws_appdeps.hrl yaws_debug.hrl \
/usr/lib/erlang/lib/kernel-8.5.3/include/file.hrl
With +deterministic
:
yaws/src$ erlc -M -MF .deps/yaws.Pbeam -MT ../ebin/yaws.beam -I ../.. +deterministic yaws.erl
yaws/src$ cat .deps/yaws.Pbeam
../ebin/yaws.beam: yaws.erl yaws.hrl yaws_api.hrl yaws_appdeps.hrl \
yaws_debug.hrl file.hrl
This can be solved somewhat ugly by adding phony targets to the depencency
Makefiles when building deterministically, i.e. adding the -MP
erlc option.
With -MP +deterministic
:
yaws/src$ erlc -M -MP -MF .deps/yaws.Pbeam -MT ../ebin/yaws.beam -I ../.. +deterministic yaws.erl
yaws/src$ cat .deps/yaws.Pbeam
../ebin/yaws.beam: yaws.erl yaws.hrl yaws_api.hrl yaws_appdeps.hrl \
yaws_debug.hrl file.hrl
yaws.hrl:
yaws_api.hrl:
yaws_appdeps.hrl:
yaws_debug.hrl:
file.hrl:
This could perhaps be regarded as a bug in OTP, but it is tricky with paths
when building deterministically. If the include path is absolute, then it
will be impossible to generate deterministic builds from two different
directories.
from yaws.
Related Issues (20)
- tlsv1.3 cipher selection HOT 3
- Yaws assumes `error_logger` process always exists and it is a gen_event HOT 7
- Support reproducible builds HOT 5
- JSON-RPC payloads don't need urldecode step HOT 1
- Failed to compile 2.1.1 with Erl22, but 2.1.0 worked HOT 1
- Error on launch application Yaws HOT 4
- Crash Yaws after running HOT 2
- when reconfiguring, no check for changed appmods is done HOT 3
- yaws in NixOS 22.05 for aarch64 gives error during system build HOT 2
- build breaks with OTP 27 HOT 2
- Error on building Yaws on Manjaro Linux on Erlang OTP-27 HOT 1
- failed to install qt5
- Do not make fatal inaccessible log file HOT 9
- Can't start Yaws web server on Ubuntu 22 HOT 2
- yaws_config.erl:3563:20: file:pid2name/1 is deprecated and will be removed in OTP 27 HOT 2
- Check that Basic authentication user doesn't contain control characters HOT 1
- Add CI tests for OTP master and maint branches
- yaws_compile_SUITE compile_www_scripts case fails on OTP 27.0-rc1
- Create GitHub pages site for e.g. docs
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from yaws.