Comments (8)
As far as timeline, I can't say -- the pandemic has put a lot more constraints on my time & focus.
My involvement in this codebase is first and foremost to take it into the "GitHub age" so it doesn't rot: setting up continuous integration testing (of pull requests), trimming out platforms that can't be tested in that way, and cleaning up the very artisanal system of Makefile
s. As you noticed, entirely copying the codebase between Basilisk and SheepShaver is part of that... and something I would like to see less of.
As far as "what would be needed for a contribution to be accepted", I would prefer that we make steps toward CMake
as a build system. Make an idiosyncratic Makefile
into an idiomatic CMakeLists.txt
, if you will. This is because I want to ensure that the cross-platform nature of this codebase is preserved, to the extent possible.
Is this along the lines of the answer you were looking for?
from macemu.
Sums it up perfectly. Sounds like code consolidation is a low priority at the moment.
from macemu.
I'm not sure what you're hearing me say. Do you feel that code consolidation will be easier (with respect to existing Makefile
structure) than I am making it out to be?
from macemu.
I have no idea how much effort would be involved in setting up continuous integration testing. I agree that it's likely moving to CMake will be a less time consuming endeavor than code consolidation. My understanding is that CMake is really most useful when you are creating your multi-platform configuration / make build process for the first time. The artisinal work has already been done, so to speak, unless you are considering support for additional platforms or there are problems on the existing platforms. I'm not very opinionated on this matter.
More relevant (and perhaps where there's some misunderstanding) is that I'm not in a position to help with either continuous integration testing or CMake (which I'm guessing would require compilation on all the supported platforms). I feel like code consolidation, while tedious, is work that could be more easily distributable (and something I could assist with). Thorough consolidation is going to be a lengthy process, but starting with a semi-consolidated codebase that removes the exact duplicates shouldn't be too hard and would provide a foundation for further consolidation efforts even while the continuous integration and CMake build process are being completed.
My original question was related more to the logistics of how one would go about combining the two codebases in a way that meaningfully preserves the commit history for both Basilisk II and SheepShaver (versus starting clean with a new combined codebase or basing the consolidated codebase commit history on the history of SheepShaver).
from macemu.
One of my first attempts to bring some order to this repo involved doing what you are describing -- I wrote a script that pulled out all of the commits to both the BasiliskII and SheepShaver folders into their own standalone repos. The problem there was immediate: code is shared between the repos and some of the Makefiles were manually copying between directories. So my assessment is that any refactoring work will lean at least somewhat on refactoring the build system itself.
You're talking about doing the reverse: somehow consolidating the directories such that the code duplication goes away.
No matter how we slice that, the end result would be a codebase that avoids the copy step and uses CMake. So if consolidation happens first, the amount of CMake work is reduced anyway. TL;DR I think I've been agreeing with you the whole time -- if we can get the same compiled binaries while cleaning up the repo, that's a win. I was just curious how you were planning to approach it.
from macemu.
What were your thoughts on this?
from macemu.
In re-reviewing the repository this was derived from, I discovered duplicate source files are aliased across the two codebases, not literally duplicated. Not exactly sure what I had envisioned, but aliasing IS one approach to centralizing the shared codebase. It might be possible to centralize a few more files with some relatively minor code changes, but not to the extent I had originally imagined. Unless you (or someone else) has closing remarks, I think it'd be safe to close this issue. Thanks for the follow-up!
from macemu.
Sounds like you and I arrived at the same conclusion -- the creation of aliases should probably be replaced with a build setup that's smart enough to just include files from the proper directories.
from macemu.
Related Issues (20)
- Emulator snapshot - save the current emulator state (memory + registers) to a file for fast startup next time.
- Allow running multiple emulators
- Real addressing mode for the emulator HOT 2
- Improve Objective-C object allocation
- Add JIT options to preferences
- Use internal windows to display Help docs
- Provide feedback during external commands
- Enable widescreen window layout
- Recover or re-create `ppc-testresults.dat.bz2` HOT 2
- libsdl2 not recognized with Debian10 HOT 6
- `SDL_VERSION_ATLEAST` outside of USE_SDL case HOT 4
- Document kernel settings to run SheepShaver in Linux somewhere obvious HOT 15
- Add test-powerpc to CI HOT 1
- SheepShaver x86_64 no jit: crash on boot
- Add CI tests that open an emulator and verify boot
- Add "Team Discussions" HOT 2
- Basilisk II doesn't build on Windows x64 HOT 2
- Merge with cebix? HOT 7
- Feat. req. Upload latest Win build
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 macemu.