I’ve made some changes to Batsh (fork is here) so it currently builds on my system (4.08.1) (via dune build @all), along with pinning of the updated Dlist (fork is here).
Added a rough opam file to Dlist so it pins successfully via opam.
Noticeable changes to Batsh are:
Migration to dune
Switched to use of ppx for sexp related functions
Switching from presumably ocamlyacc to menhir for parser_yacc.mly (modified file a bit to fit menhir’s syntax)
I have not run either of Dlist or Batsh through any of their test suites, however, so not sure if the modifications were made correctly.
Amazing, please send pull requests to the original project. You did good job. Please update the README and opam files - feel free to take them from my fork/branch.
@Akito Haha all good! I was looking at Batsh some time ago actually, but never got too many incentives to migrate it to more recent OCaml versions. So your request/asking for help gave me an excuse.
@XVilka Haha thanks! I’ll send a PR shortly adding your opam files.
But I can’t tell how receptive the author would be toward the PR, seeing there are two PRs sitting around, so I’ll also add static builds (have some Travis CI files already made for Alpine docker static builds for another project) on top of PR.
@Akito Static builds are available via GitHub releases, you can download the static binary at releases page.
Note that the version text is literally “dummy text” as the project previously relied on ocp-build (I think?) to generate version related code/info, and I haven’t figured out a proper replacement yet. Let me know if this breaks your workflow etc.
@XVilka PR has been filed as PR #75 at the master repo. But I don’t anticipate any response, so I’m not going to polish the PR any further unless the author chimes in.
EDIT: I’m doing some more housekeeping right now, and will update this comment when that’s done, so above info may not be the most up to date.
EDIT2: I’ve overhauled the project structure so tests code files can be built in dune. I am having a failing test case, however, which I don’t know what the resolution should be. Essentially !! in batch (the delayed expansion operators) don’t seem to work when it’s used in the command position.
Relevant code section of test_scripts/batch/command.bat
echo Println Called
set cmd=echo
!cmd! Echo Called
for /f "delims=" %%i in ('echo Value 100%%') do set retval=%%i
echo !retval!
So !cmd! Echo Called results in Can't recognize 'echo Echo Called' as an internal or external command, or batch script.
when run in wine via wine cmd /c test_scripts/batch/command.bat
Would you send a direct email to the authors of the software? This can often be more effective than a pull request on a repository they are not actively maintaining.
I’ve received a reply from Carbo, author of Batsh, stating due to myriad reasons he has been unable to actively maintain Batsh. (I’m leaving out the details here based on my personal judgement.)
He also stated he’s happy to let someone/some group to take over the maintenance of Batsh as well.
I’m not personally interested in doing so due to time requirements, but I’m happy to assist with the initial transition should anyone/any group want to take the mantle so to speak.
Out of curousity I tried to compile your version of Batsh with your version of Dlist inside Docker and I ended up with the following:
File "lib/winbat_format.ml", line 44, characters 16-36:
44 | if bare || ((String.get ident 0) = '%') then
^^^^^^^^^^^^^^^^^^^^
Error: This expression has type char but an expression was expected of type
Core_kernel.Int.t = int
However your released binary works as expected. Great job.
Which version of OCaml are you on? The Docker image used by Travis CI is running 4.09, the version on my computer is 4.08.1, so it should build on either of the two versions. But I’m not sure about older versions otherwise.
No clue then, but doesn’t matter too much since you’ve got a static binary copy anyway. Also just heads up, there’s a v0.0.7 release with version string patched in, but otherwise not much is changed.
Maybe it would make sense to move the repo somewhere (GitHub creates redirects for that) or give some people access to maintain it. That way it is somewhat more “legitimate” than just any fork.
On the other hand, if the fork is “approved” and just plain better, plain improved, it will quickly be a valid and legitimate replacement. Happened to a LOT of open source projects, before.
Sure, but by not moving it, you will need to add a note anyway that development is moved somewhere else, and instead of things redirecting transparently you need to have manual intervention of determining that URLs need to be adjusted and figuring out which URL that is. As with Tim Berners-Lee: Cool URIs don’t change.
OTOH If such a note is not added, how would you prove that the original author approves the new repository.