-
Notifications
You must be signed in to change notification settings - Fork 161
issues with build (reproducability, architecture) #73
Comments
For the second problem the makers already had the same thoughts and ideas as it seems: We should probably only upgrade and things get better... |
Current build error for latest codebase:
|
Good point. Node modules flattening was optimized in newer releases of node.js, so it would be nice to upgrade here (why not directly to versions above 4.0 - after merge with socket.io). However flattening algorithm seems to be useful only in case when all the dependencies from all libraries are somehow aligned (same versions of dependencies used where possible). If not, the problem might still occur depending on Windows environment setup or the base path where the developer cloned the repository. Even after applying the upgrade, we need to be aware that Window paths are limited and can cause problems. I would recommend to experiment with all known workarounds such as using symbolic links or switching to UNICODE paths (http://stackoverflow.com/questions/1880321/why-does-the-260-character-path-length-limit-exist-in-windows). When I faced this issue in the past I managed to overcome it with symbolic links approach, but maybe it would be nice to check UNICODE path possibilities like mentioned here: "The Windows API has many functions that also have Unicode versions to permit an extended-length path for a maximum total path length of 32,767 characters. This type of path is composed of components separated by backslashes, each up to the value returned in the lpMaximumComponentLength parameter of the GetVolumeInformation function (this value is commonly 255 characters). To specify an extended-length path, use the "?" prefix. For example, "?\D:\very long path". For sure topic needs some further investigation and a stable solution. Cheers, |
Regarding problem1: I fixed the latest build issues in PR #79. I tried to fix the dynamic dependencies as far as possible. To not start with overwhelming initial effort, I would rely on the currently fixed versions as far as we do not observe dynamic build issues in future. However, if there are build issues in future, we should identify the causing (transitive) component and fix its version in addition if not already done before. Regarding problem2: |
See: |
I actually updated node to 5.0.0 and npm to 3.4.1. I went trough npm/npm#3697 again and read the entire thread. They only discussed about a nice solution but never implemented it. The whole issue is not fixed but there is a stupid workaround for a windows problem. The entire point is not only that the Windows filesystem sucks (what is for sure) but also that the entire |
I also found this one: I tested it and ... it does not work. I created a fresh
And I have about 70 such sub-modules on my entire disc. A total count is over 50.000 node_modules on my entire disc. And I thought I just started with this modernized Angular and JS based stuff. Where will this end? |
So what I did now is spend another lot of time to delete millions of |
So symlink is also not working properly:
npm is so much insane that it gets inconsistent within the same project. |
See also npm/npm#8681 |
For deleting node_modules directory i recommend rimraf tool. It can be
|
To avoid this extreme redundancies and waste of diskspace I also tried to convert my package.json to a list of global installs like:
Even after having that installed globally a local install again downloads this to the local |
Shall we close this issue as wontfix? |
Each time I call
Maybe I am too stupid or too smart for this tool - who knows. I still would expect a build tool to be reproducible. |
Also nice:
|
current state:
I will close this issue for now. If there are further issues. Please consider stating a new issue if needed. |
First Problem: build is not reproducable
node.js and gulp cause a lot of headaches and irreproducible builds.
People that come new into OASP check out the code and something that used to work then simply does not work anymore. The same code-base is leading to different build results for different moments in time. From an software-configuration-point of view this is more or less a catastrophy.
This is really an extremely painful situation that we ran into many many times now and that we should get rid off entirely.
Second Problem: organisation of artifact repositories
IMHO the entire architecture of how node_modules folders are organized and module-versioning is happening is a complete design flaw:
Maybe you can already say that maven is sick such that in order to start a small build for the first run you have to download half the internet to your local repo. However maven is putting each artifact version once onto your disk while node.js I have the same artifact version N*M times on the disc.
Is there any chance that this architecture will change in the future? Are we in discussion with the makers?
I see a lot of pain-points in this area.
The text was updated successfully, but these errors were encountered: