I've been doing a review of mrvn's branch of the build directory. This included reading every line of code or at least diffs from TRUNK, builds, comparison of what was put on the images, booting the images, etc. So far I have looked only at the floppy images, on i386, and not cdroms or other media types.
What is broken: - images I build a bootfloppy, and the floppy *image* has a "diskusage.txt" file in the top level of the initrd. No, I don't know why.. The bootfloppy has space wasted in etc with a etc/terminfo. Apparently this is because the new tree does away with the config/type directories, which included NO_TERMINFO=1 for this image type. Comparing the second floppy images, the one build by mrvn's tree is missing lib/libnss_dns.so.2, libresolv.so.2. Not sure why, I assume this will make it hard to do a network install with that floppy though. These also have the diskusage.txt in toplevel. Pcmcia config reduction is broken in mrvn's tree, the generated etc/pcmcia/config has no entries for pcmcia devices. Probably pcmcia-config-reduce.pl is run against the wrong directory, or it is not being told about kernel modules in the drivers floppys, or something. - Makefile The sources.list.* generation will break if /etc/apt/sources.list contains an entry for security.debian.org. I fixed this in TRUNK a few days ago. - build/apt-get: Lists all the libraries that are also in the build-depends, in some kind of apt hack-around. This will be painful to maintain in two places. There is no indication of why this is necessary, and I do not belive it should be necessary. The old tree gets apt to work without this gross hack. Though there are now two sources.lists (.deb, .udeb), sources.list.local is still used as the sole override for both. I don't see how that can possibly work. I have a full set of linux-kernel-di udebs in localudebs, but it insists in trying to download old versions of these from the mirror. TRUNk does not do this, it skips downloading udebs that have a version present in localudebs. - dest/ The names used for images in dest/ are repetative and/or make no real sense. Eg, "floppy-boot-bootfloppy.img", "floppy-root-root.img". These names need to be cleaned up to something human-readable. Useless initrds are included in dest (example: initrd-bootfloppy.img). Initrds in dest are .gz files, but their extension does not end in .gz, but in ".img". This will be confusing. - build/tmp/ After a "make TYPE=floppy", I have directories like tmp/tree-floppy-boot-boot, but the actual tree has apparently been removed from these directories after the initrd was made. Those trees are very useful for debugging and should be retained until make clean. "tmp/tree-floppy-boot-boot" is a stupid name, and should match whatever image is produced in dest/, once the names in dest/ are cleaned up. - pkg/lists bootfloppy/ and initrd-bootfloppy/ both exist, with identical contents Nitpicks: - build/apt-get is a confusing name. It even makes the program hard to refer to (see above). If someone's path unwisely had "." at the front of it, or does not have an apt-get in PATH, this script would call itself instead of the real apt. Should be renamed, perhaps to get_packages. - arch/linux-m68k contains the comment "Still using the old -udeb.udebs for now", but the next line uses the -di version. - arch/linux has the commented out INITRD_FS=ext2 which I removed from build/ last week. Probably symptomatic of an incomplete merge to trunk. - arch/linux-alpha is missing the "Still using the old -udeb.udeb's, for now.." comment that I added last week. - Creates files named sources.list.deb and sources.list.udeb. Both of these file extensions have special meansings, and this can lead to confusing/annoying behavior. - The makefile has a target in it named mirror-check-foo, with no documentation. This target needs a better name, documentation, etc. Nothing seems to depend on this target. Remove? - The Makefile has a empty "guess-local" target, with the comment "Guessing of local config". I have no idea what the point is, this target seems to be unreferenced. Remove? - The README refers to "make listtypes", but that target does not exist. - The README refers to "make sources.list", when that has been renamed to "sources.list.udeb". However, I think this step should be removed from the makefile entirely, as it happens automatically now. - The README goes on to refer to sources.list some more, and sources.list.local. - pcmcia-cs-udeb needs to be moved to net_drivers (more missing merging from HEAD). - apt-style "I:", "E:", etc messages are Evil, and I hate to see more code outputting them in here, but this is just my opinion. - The Makefile uses a variable named "FOOBAR" that is set by a $(shell) that makes some directories. What an obfuscated way to do that; a proper way to do it would be to have a target that made directories, and make targets that need the dirs depend on it. - EXTRAFILES is not "Old cruft" (Makefile comment) - The README refers to "per-arch and per-image fragments" in the config dir; only per-arch fragments remain in this tree (where did the per-image config go?) - The README refers to pkg-lists/TYPE/ and to TYPE=, which is the wrong terminology in this new tree. - If a TYPE is given that it does not know about, it silently decides to build all possible image types instead, which is a bit confusing. config/targets needs an else block that error out if TYPE is set to something unnown. - TYPE=hd-media does not work. - make/arch/linux-i386 ends in a line ending in a "\" continuation character, which seems weird. What worked: - "make TYPE=floppy", even in offline mode with a populated apt cache. - Booting the 2 floppy set from bochs, (mostly) loading modules from driver floppies. What's better than the old tree: - udeb_include lists on the driver floppies get the wrong names for kernel udebs (missing "-di") in the old tree. This turns out the be fixed in mrvn's tree. - Breaking out standalone programs, eg build/initrd_install made the Makefile much easier to follow. <rant> However, in these new standalone programs, once again someone has taken sanely indented code[1] that I wrote for d-i, and wrecked the indentation with their own idea of what's "right". You're welcome to use any indentation you like in your own code, but I consider reindenting someone else's code behind their back to be quite rude, especially if they're still actively maintaining it. Frankly, this reindentation nonsense has been one of the more annoying things for me as I have came back to working on d-i, and while it was excusable to eg, reindent main-menu and anna when I was not working on them anymore, that excuse does not apply here. Revert pls. While I'm ranting, I want to mention that some people's idea of proper indentation in shell scripts does not compress as well as it could. 2720 hw-detect.sh.current-(random)-indent.gz 2676 hw-detect.sh.tabs-for-indentation-spaces-for-formatting.gz Those bytes will add up, it's something to keep in mind. [1] Code that looks properly indented at any tab setting, in any text editor/viewer that uses a fixed width font. </rant> TODO: look at hd-media, and cdrom images. Try to boot hd-media. Compare them with images from HEAD. -- see shy jo
signature.asc
Description: Digital signature