GithubHelp home page GithubHelp logo

Support read-only source about zstd HOT 2 OPEN

solskogen avatar solskogen commented on May 5, 2024 1
Support read-only source

from zstd.

Comments (2)

Cyan4973 avatar Cyan4973 commented on May 5, 2024

Any default Makefile, using only make default options, would likely fail at the same scenario, since it would generate the *.o object files in the same directories as the source files.

Since this scenario is beyond default, I'm looking for some "industry standard practices" to support read-only source repositories with make, if that ever exists.

In the specific case of the zstd make build script, we have some custom control over where the *.o object files are generated, using the variable BUILD_DIR.
However, it only controls the destination of *.o object files, and there are many other files that can be generated, starting with the final binaries themselves, or their symlinks.

That's where the build script fails in your example.
These target binaries are still generated in their default directory (lib/ in this case), which are read-only.

A relatively common way to control the destination of generated binaries with Makefile is to employ the variable DESTDIR.
However, it still wouldn't work because DESTDIR is for staged installs, meaning that while it controls the final destination of the binaries, there's nothing that states that no other intermediate storage shall ever be used for these binaries. Which is what happens : during the "build" stage, the binaries are generated in their default directories, and in the second "install" stage, they are transferred to their final destination. It mirrors the example provided in the GNU documentation.

Therefore, in order to be able to build from a read-only directory, this intermediate generation stage should be either skipped, or redirected.

That's a non-trivial change, because it's distributed among all targets instead of being concentrated in a single paragraph. Hence it comes with risks, and heavier maintenance.

So, before moving in a direction which would make the project more difficult to maintain, I would like to get an idea of "industry standard practices" if they exist, or consider if other solutions (such as copying the source tree into a writable location) would ultimately prove easier to live with.

from zstd.

solskogen avatar solskogen commented on May 5, 2024

The Makefile for the Linux kernel supports this

from zstd.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.