Re: [Freedos-user] ISO repack reduces size by 10%

2021-11-15 Thread Eric Auer


Hi Darik and Jerome,

> * The 1.44 MB floppy set is reduced from eight to three diskettes.
> * The 1.20 MB floppy set is reduced from ten to four diskettes.
> * The 720 KB floppy set is reduced from fifteen to six diskettes.

That is a huge difference and RAR is not overly exotic. I also
would like to point out that infozip also comes with zipsplit,
so having archives spanning multiple disks is nothing strange
for the well-established packers, including ZIP.

> Creating 360 KB floppies or smaller would require a big extension of
> the installation program.

To be honest, people who have only 360k drives are unlikely to have
any harddisk where you could install to. The one workstation type
PC which had both (floppy limited to 360k and a harddisk) that I
know about was too luxurious to bother to be fully PC compatible,
so it would not run FreeDOS, although it could run some of our apps.

So for THAT tiny disk size of 360k, I would rather focus on having
a good way to work directly from floppy without installing.

Preferably optimized for having very little RAM. Probably something
MS DOS 3 style, with some of the modern features stripped away.

> 1a. Replace FREEDOS.SAF with a FREEDOS.TGZ tarball.
> 1b. Use coreutils to "SPLIT FREEDOS.TGZ" across floppy media.
> 1c. Unpack it with a "COPY /B PART1+PART2" method and some batch logic.

As mentioned, that would require extra temp space for the merged
tarball before you unpack it, as DOS has no in-memory pipelines,
but of course for our DISKETTE distro, the idea is to include
only a limited selection of apps, so the tarball size is limited
as well and could be okay. I myself once made a three floppy proof
of concept distro with all BASE packages pre-installed, which had
one archive file with various less important files on the third.

Regards, Eric



___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] ISO repack reduces size by 10%

2021-11-15 Thread Jerome Shidel
Hi Darik,

> On Nov 15, 2021, at 5:08 AM, Darik Horn  wrote:
> 
> Jerome,
> 
>> If you can figure out how to get it to work, then it will be worth 
>> considering.
> 
> It works.  Updated builds are posted here:
> 
> https://drive.google.com/drive/folders/1b7IE-EsK5R1ROmXTaEvYNi9-kfVvH5wi?usp=sharing

I’ll try to look at it later today.

> 
> * The 1.44 MB floppy set is reduced from eight to three diskettes.
> * The 1.20 MB floppy set is reduced from ten to four diskettes.
> * The 720 KB floppy set is reduced from fifteen to six diskettes.
> 
> Creating 360 KB floppies or smaller would require a big extension of
> the installation program.

Yes. The installer needs updated to support smaller disk sizes. Eventually, I 
will add it. It wont be difficult. But, 360s aren’t common compared to the 
larger capacities. Therefore, it isn’t a priority.

> 
> This update also includes forward error correction for bad media.
> 
> The nearby BOOT.diff file describes what changed to make the demo happen.
> 
> 
>> 1) Wether or not it’s License is using an acceptable open source license.
>> 2) Usage is approved. Not up to me. But if licenses are ok, it should not be 
>> a problem.
> 
> The encoder is non-free and zero-cost, but the demo otherwise
> implements all features.

Not being open source will probably be an issue.

> 
> 
>> 3) Can be told to create spans of a specific size (so can be used on all 
>> floppy variations, one size fits all).
> 
> Yes.
> 
> 
>> 4) Can replace SLICER with little to no overhead added to the installer 
>> and/or RBE (Release Build Environment)
>> ...
>> https://github.com/shidel/FDI-x86/tree/master/SETTINGS
> 
> Thanks for posting this Github link, which I will review later.  I
> looked for a FreeDOS build system earlier but didn't find it.

Your welcome. 

The RBE is at https://gitlab.com/FreeDOS/OS/builder

There are also mirrors for FDI & FDI-x86 there as well as some other stuff. 

If your interested in building a FreeDOS release using the RBE, it’s rather 
easy to setup and do. Just follow the wiki for it on GitLab. 

The RBE itself is rather complicated and is a work-in-progress. But it works. 
:-)

On a side note, here is just something to ponder… A typical end user is 
installing FreeDOS into VirtualBox on Windows… So… I sit here running a Mac. 
Using VirtualBox, to run a Linux VM for the RBE. The RBE downloads and 
processes the raw installers and packages. It then dynamically builds some 
custom boot images and runs QEMU instances with FreeDOS. Those instances run 
batch files generated by the RBE to create the different install media. That 
media then is loaded into a different machine by the end user. They then run 
another virtual machine and run the installer for FreeDOS. The installer then 
installed the OS and creates custom config files for that system.

And that was an over-simplification of a release build to install chain. Trying 
to do it by hand would be crazy making and prone to mistakes. 

> 
> 
>> 5) Can provide the same level of flexibility without the need to manually 
>> modify code when there are package/tag changes.
> 
> In the updated demo, a @LISTFILE substitutes each possible "SLICER /G
> %TPU%" invocation.
> 
> 
>> Can it display general text during the install process?
> 
> Yes, this can be scripted through the IDOS.SFX module.  The given demo
> displays progress per-file, which is the default.
> 
> 
>> Does it support NLS and provide text in the users language for prompts?
> 
> Dunno about NLS, but it can do ANSI.SYS style text in if/then/else blocks.
> 
> 
>> On systems that support change-line, can it auto-resume without being told 
>> to continue?
> 
> Dunno what change-line support is...
> 
> But the extractor won't prompt for a media change if it can already
> see the next volume, so floppy contents can be copied to a ZipDrive or
> HDD and the installer will behave properly.
> 
> 
>> After completion, can it just return an errorlevel to the installer and not 
>> stop with an “I’m done, Press OK” message?
> 
> The available %ERRORLEVEL% returns are sensible and actionable.
> 
> 
>> Those and other settings are available in the projects SETTINGS directory. 
>> Specifically, the X86_ALL.LST defines what gets what slicer tags for 
>> assembling the archive.
> 
> This RAR demo is somewhat an accident and I appreciate how licensing
> matters.  Two alternatives to using RAR or finishing SLICER come to
> mind now that I better understand the solution:
> 
> 1a. Replace FREEDOS.SAF with a FREEDOS.TGZ tarball.
> 1b. Use coreutils to "SPLIT FREEDOS.TGZ" across floppy media.
> 1c. Unpack it with a "COPY /B PART1+PART2" method and some batch logic.
> 
> This is how Linux distributions did installation before CD-R media was
> invented.  Zero new compiled code is required to implement it for
> FreeDOS, and it will cost 10 MB of temporary hard disk space at
> install time.
> 
> 2. Use the GPL licensing option in unrarlib to create a RAR2 encoder.
> Make a "grar" u

Re: [Freedos-user] ISO repack reduces size by 10%

2021-11-15 Thread Jerome Shidel
Hi Darik,

I appreciate the effort you put into creating a PowerShell script to repack the 
repository. However, I do not know if we are going to do that. 

First, the new versions would need to be checked to ensure compatibility. They 
would probably be fine. But, testing would still need done. I honestly just 
done have the time for that at present.

Second, there is no way you could’ve known this. But, none of the machines 
(virtual or real) run Windows. Mostly Linux, some DOS and macOS (unix/BSD). 

There are numerous utilities and scripts we use that operate on all packages in 
the repo and elsewhere. So, whipping up something to run through them and 
recompress, is not too difficult.

But, I think it is to late to consider such a large unplanned change this close 
to the release 1.3-RC5. 

Once RC5 is released, I will look into it some and possibly add some 
recompression into the tool chain. 

:-)

Jerome


___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] ISO repack reduces size by 10%

2021-11-15 Thread Darik Horn
Jerome,

> If you can figure out how to get it to work, then it will be worth 
> considering.

It works.  Updated builds are posted here:

https://drive.google.com/drive/folders/1b7IE-EsK5R1ROmXTaEvYNi9-kfVvH5wi?usp=sharing

* The 1.44 MB floppy set is reduced from eight to three diskettes.
* The 1.20 MB floppy set is reduced from ten to four diskettes.
* The 720 KB floppy set is reduced from fifteen to six diskettes.

Creating 360 KB floppies or smaller would require a big extension of
the installation program.

This update also includes forward error correction for bad media.

The nearby BOOT.diff file describes what changed to make the demo happen.


> 1) Wether or not it’s License is using an acceptable open source license.
> 2) Usage is approved. Not up to me. But if licenses are ok, it should not be 
> a problem.

The encoder is non-free and zero-cost, but the demo otherwise
implements all features.


> 3) Can be told to create spans of a specific size (so can be used on all 
> floppy variations, one size fits all).

Yes.


> 4) Can replace SLICER with little to no overhead added to the installer 
> and/or RBE (Release Build Environment)
> ...
>  https://github.com/shidel/FDI-x86/tree/master/SETTINGS

Thanks for posting this Github link, which I will review later.  I
looked for a FreeDOS build system earlier but didn't find it.


> 5) Can provide the same level of flexibility without the need to manually 
> modify code when there are package/tag changes.

In the updated demo, a @LISTFILE substitutes each possible "SLICER /G
%TPU%" invocation.


> Can it display general text during the install process?

Yes, this can be scripted through the IDOS.SFX module.  The given demo
displays progress per-file, which is the default.


> Does it support NLS and provide text in the users language for prompts?

Dunno about NLS, but it can do ANSI.SYS style text in if/then/else blocks.


> On systems that support change-line, can it auto-resume without being told to 
> continue?

Dunno what change-line support is...

But the extractor won't prompt for a media change if it can already
see the next volume, so floppy contents can be copied to a ZipDrive or
HDD and the installer will behave properly.


> After completion, can it just return an errorlevel to the installer and not 
> stop with an “I’m done, Press OK” message?

The available %ERRORLEVEL% returns are sensible and actionable.


> Those and other settings are available in the projects SETTINGS directory. 
> Specifically, the X86_ALL.LST defines what gets what slicer tags for 
> assembling the archive.

This RAR demo is somewhat an accident and I appreciate how licensing
matters.  Two alternatives to using RAR or finishing SLICER come to
mind now that I better understand the solution:

1a. Replace FREEDOS.SAF with a FREEDOS.TGZ tarball.
1b. Use coreutils to "SPLIT FREEDOS.TGZ" across floppy media.
1c. Unpack it with a "COPY /B PART1+PART2" method and some batch logic.

This is how Linux distributions did installation before CD-R media was
invented.  Zero new compiled code is required to implement it for
FreeDOS, and it will cost 10 MB of temporary hard disk space at
install time.

2. Use the GPL licensing option in unrarlib to create a RAR2 encoder.
Make a "grar" utility like there is "gzip", which would have general
application, especially in the retro computing.


___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user


Re: [Freedos-user] ISO repack reduces size by 10%

2021-11-15 Thread Darik Horn
Jerome,

This PowerShell script generates the optimization that I want as an
end-user on the 'freedos/files/repositories/latest' tree.  Only 7Z.exe
is used because 7-Zip 19.00 and AdvZip 2.1 generate outputs that are
nearly identical for a full repack.

# FDREPACK.PS1: FreeDOS repository repacking script.
$ZIPS = Get-ChildItem -Recurse -File -Filter *.ZIP

ForEach ($ZIP in $ZIPS) {
  $TMPDIR = Join-Path $ENV:TMP -ChildPath $('FDREPACK_' +
$ZIP.BaseName + '_' + $(New-GUID))
  $TMPDIR = New-Item -ItemType Directory -Path $TMPDIR
  Push-Location $TMPDIR
  7Z x $ZIP.FullName
  If (Test-Path -Path 'SOURCE' -PathType Container) {
Push-Location 'SOURCE'
ForEach ($II in @(Get-ChildItem -File -Filter '*.7Z';
Get-ChildItem -File -Filter '*.ZIP')) {
NewItem -ItemType Directory -Path $II.BaseName
Push-Location -Path $II.BaseName
7Z x $II.FullName
Pop-Location
Remove-Item $II.FullName
  }
  ForEach ($JJ in Get-ChildItem -Directory) {
Push-Location $JJ
If (Test-Path -Path 'SOURCES.7Z' -PathType Leaf) {
  7z x 'SOURCES.7Z'
  Remove-Item 'SOURCES.7Z'
}
If (Test-Path -Path 'SOURCES.ZIP' -PathType Leaf) {
  7z x 'SOURCES.ZIP'
  Remove-Item 'SOURCES.ZIP'
}
  ATTRIB -A /S
  # This makes upstream sources solid in the distro package.
  7Z a -tzip -mm=copy -mtc=off -stl $('..\' + $JJ + '.ZIP')
  Pop-Location
  Remove-Item -Recurse $JJ
}
Pop-Location # SOURCE
  }
  ATTRIB -A /S
  # These are the best zip format 2.0 parameters at the pkzip-2.0 level.
  7Z a -tzip -mm=deflate -mfb=258 -mpass=15 -mmt=on -mtc=off -stl
$($ZIP.FullName + '.repack')
  Move-Item -Force $($ZIP.FullName + '.repack') ($ZIP.FullName)
  Pop-Location # $TMPDIR
  Remove-Item -Force -Recurse $TMPDIR
}


___
Freedos-user mailing list
Freedos-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/freedos-user