Comments (9)
It's currently (6a8cedf) possible to build without Tk by passing TCLEXES=bluetcl BLUEWISH_TOOLS=
to make
.
from bsc.
The only tool that really needs libX11
etc is bluewish
, and I think it's entirely reasonable to have a compile option that avoids building that and therefore avoids the need for X11 etc. I believe, though, that currently bluetcl
unnecessarily has the same requirements as bluewish
, probably because they share the same compile flags (perhaps in an effort to avoid recompilation of the Haskell modules when the the flags change).
from bsc.
Yeah, this makes sense to me. If you want to use bluesim, tcl is currently required, but Tk should be a (build time) option.
I suspect the best way to do this would be to split the entire bluespec codebase up into several Haskell modules that can be compiled independently, and only have tk deps for bluewish, and tcl deps for bluetcl.
from bsc.
As a related question, are there plans for releasing the workstation (BDW) as open source? I was curious as to whether bluewish is used outside of BDW. Do you have any customers who wrote in-house tools using Tk?
from bsc.
I've created a version of the Makefile that removes the Tcl/Tk/X11 dependencies from BSC and the TK/X11 dependencies from Bluetcl. It's attached to PR #144 and just waiting for @bpfoley to review.
I don't know if anyone is using Bluewish aside from the Workstation GUI. But hopefully that's moot with the above Makefile fix.
We do plan to release the GUI as open source, but I'm not sure when. Issue #69 is open for that.
from bsc.
PR #144 has been merged, so now only the bluewish
binary should require tk or X11 to run. The user of a release now won't need tk/X11 for anything else in the release. However, the builder of the release will still need tk/X11 to build bluewish
. The Makefile also requires wish
and xvfb-run
just to construct variables (even if it doesn't build the bluewish
target), but these are for itk and that might go away when issue #149 is resolved.
@thoughtpolice, I assume that you would still want a way to build without tk/X11/etc available? For that, I think it would be reasonable to add a variable which disables the building of bluewish
(and the construction of any itk variables, if they exist) when provided. For example, make NO_TK=1
or NOWISH
or NOX11
or something. Does that work? Any naming preferences?
Another option would be to create a variable for specifying a type of build. For example, maybe BSC_BUILD_TYPE
could be assigned all
to turn on build/install of the developer tools (which are not currently built by default), or it could be set to no_wish
or other values to specify different subsets of tools to build. Or we could even allow defining BSC_BUILD_TARGETS
with the explicit list of targets.
I'm fine with NO_TK=1
but I'm flexible.
from bsc.
Maybe we don't even need to produce a bluewish
executable, now that we're not statically linking tcl/tk/itcl/itk. The only difference in bluewish
is that it is pre-linked with the tk
library (and may possibly have pre-loaded the Tk
package?), but bluetcl
can dynamically load that from the user's system:
$ bluetcl
% package require Tk
8.5.9
% package ifneeded Tk 8.5.9
load /System/Library/Frameworks/Tk.framework/Resources/Scripts/../../Tk Tk
from bsc.
bluetcl
can dynamically load that from the user's system
Very well noticed! One build dependency less and one 26MB binary less installed in the system 😊
from bsc.
Maybe we don't even need to produce a
bluewish
executable, now that we're not statically linking tcl/tk/itcl/itk. The only difference inbluewish
is that it is pre-linked with thetk
library
Yes! Especially since bluewish.hs
is literally a copy of bluetcl.hs
. Let's just remove that target and binary entirely! As you pointed out to me, it'll also allow us to remove the build rules removed in #158
from bsc.
Related Issues (20)
- `-dparsed` output produces invalid register updates with BSV HOT 2
- `-dparsed` produces invalid BSV module function that takes another module as an argument HOT 2
- Missing `Ord Bool` instance HOT 7
- Static check of file descriptor argument to tasks like $fgetc HOT 3
- Testsuite reports an error getting BSC version HOT 2
- Internal Compiler Error when quoting a character value. HOT 4
- Bluesim's symbol-probing interface has wrong values for FIFO
- Unresolved numeric contexts that should be resolvable HOT 6
- Verilog import fails in macro substitution HOT 2
- Unexpected syntax error HOT 1
- expandPorts.tcl has hardcoded paths which do not exist. HOT 1
- Unexpected behavior in Stmt sequence when using par HOT 2
- Bluesim divide-by-zero behavior is inconsistent on arm64 HOT 2
- Type synonyms with phantom parameters can lead to strange behaviors (E.g., compiler hang) HOT 4
- doc example for mkUniqueWrapper2 HOT 7
- -remove-unused-modules flag doesn't work with mkProbe module provided in std library HOT 2
- Failures with compilation on raspberry-pi 5 HOT 4
- GCC 14 emits extra warnings HOT 1
- Github's macos-11 runner is going away HOT 1
- [Bluesim] Simulation executable fails with `undefined symbol: _Z21vcd_write_scope_startP9tSimStatePKc` HOT 9
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 bsc.