Giter Club home page Giter Club logo

rscons's People

Contributors

dependabot[bot] avatar holtrop avatar jlindgren90 avatar mikedlowis avatar

Watchers

 avatar  avatar

rscons's Issues

allow overriding dependency file suffix

To aid in compatibility with some toolsets which hard-code a dependency file name, add a construction variable (perhaps CCDEPGENSUFFIX) to allow overriding the dependency file suffix.

support single-file distribution like waf

waf can be distributed with a project by versioning a single python script with the project without needing the user to install anything other than python. Update rscons to support distribution similarly, as a single ruby script.

License missing from gemspec

RubyGems.org doesn't report a license for your gem. This is because it is not specified in the gemspec of your last release.

via e.g.

spec.license = 'MIT'
# or
spec.licenses = ['MIT', 'GPL-2']

Including a license in your gemspec is an easy way for rubygems.org and other tools to check how your gem is licensed. As you can image, scanning your repository for a LICENSE file or parsing the README, and then attempting to identify the license or licenses is much more difficult and more error prone. So, even for projects that already specify a license, including a license in your gemspec is a good practice. See, for example, how rubygems.org uses the gemspec to display the rails gem license.

There is even a License Finder gem to help companies/individuals ensure all gems they use meet their licensing needs. This tool depends on license information being available in the gemspec. This is an important enough issue that even Bundler now generates gems with a default 'MIT' license.

I hope you'll consider specifying a license in your gemspec. If not, please just close the issue with a nice message. In either case, I'll follow up. Thanks for your time!

Appendix:

If you need help choosing a license (sorry, I haven't checked your readme or looked for a license file), GitHub has created a license picker tool. Code without a license specified defaults to 'All rights reserved'-- denying others all rights to use of the code.
Here's a list of the license names I've found and their frequencies

p.s. In case you're wondering how I found you and why I made this issue, it's because I'm collecting stats on gems (I was originally looking for download data) and decided to collect license metadata,too, and make issues for gemspecs not specifying a license as a public service :). See the previous link or my blog post aobut this project for more information.

be more colorful

Colorize build messages and error messages. Perhaps include a job count to indicate some level of progress through the build.

(Auto) Configure

scons has a configure facility and while rake has some, it fails completely on C++ building for example the gem rwx attempts to configure stuff with C++ and has issues with rake.

improve debuggability of cache.up_to_date?

When authoring a builder it can sometimes be helpful to see why cache.up_to_date? is returning false. Add support to debug a builder to see why cache.up_to_date? is returning false.

support command-line variables

a command like 'rscons VAR=val' could be used to set a variable VAR in a global VarSet that could be used from within the Rsconsfile

barriers

A couple projects I've seen have registered a build target that must be built before all remaining build targets. Rather than requiring the user to add the first target as a user dependency for every remaining build target, the concept of a "barrier" could be added that separates build targets defined before the barrier from those defined afterwards. Rscons would then build everything before the barrier before building everything after the barrier. This would prevent rscons from parallelizing build tasks across the barrier.

The Program builder does not allow overriding the PROGSUFFIX

The Program builder does not currently allow overriding the PROGSUFFIX in the varset or using a different suffix variable in the target name.

Below are two examples of the issue for illustration. The target was intended to use the SOSUFFIX in order to produce a .so file on linux and a .dll on windows automatically. The following two examples should have worked but did not:

env["SOSUFFIX"] = ".dll"
env.Program("${artifacts_path}/coverage_dll${SOSUFFIX}", env["sources"])
# produces =>
LD Build/artifacts/coverage_dll_base/coverage_dll.dll.exe

env["SOSUFFIX"] = ".dll"
env.Program("${artifacts_path}/coverage_dll", env["sources"], {'PROGSUFFIX' => '${SOSUFFIX}'})
# produces =>
LD Build/artifacts/coverage_dll_base/coverage_dll.exe

We were able to work around the issue with the following two examples:

env["SOSUFFIX"] = ".dll"
env["PROGSUFFIX"] = '${SOSUFFIX}'
env.Program("${artifacts_path}/coverage_dll", env["sources"])
# produces =>
LD Build/artifacts/coverage_dll_base/coverage_dll.dll

env["SOSUFFIX"] = "dll"
env.Program("${artifacts_path}/coverage_dll.${SOSUFFIX}", env["sources"])
# produces =>
LD Build/artifacts/coverage_dll_base/coverage_dll.dll

add Rscons.glob

Dir[pattern] can return results in a different order based on platform or filesystem ordering. Add Rscons.glob to return a consistent listing and clean any paths.

Add a "rscons" binary

The binary would be an optional way to invoke rscons if one was not using rake. Perhaps simply executing a "Rsconsfile" with the "rscons" library already required.

Pre-build hooks do not respect modified key values for old-style builders

For "new" style builders, modifications made to the build operation within the hook will retain changes when the modification results in replacement of a key's values.

"Old" style builders will not respect such a change when the value is replaced, only if the value is modified in place. The old-style builders should act similarly to the new-style.

wait for in-progress subcommands to complete on build failure

Currently on a builder failure, rscons will immediately exit and will not wait for other already-started builders to complete. Change to print an error immediately on builder failure, but wait to terminate the Ruby process until other parallelized background subprocesses have returned.

Add ability to record side-effect file production

Using env.build_after can enforce multi-threaded build ordering, but multiple env.build_after calls might be needed if they use the same side-effect file produced by another builder. Instead, provide functionality to record that a build operation produces the side-effect file without needing to call env.build_after for other build operations that use that file as a source.

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.