head 1.1; access; symbols netbsd-10-2-RELEASE:1.1.4.2 netbsd-11-0-RELEASE:1.1 netbsd-11-0-RC7:1.1 netbsd-11-0-RC6:1.1 netbsd-11-0-RC5:1.1 netbsd-11-0-RC4:1.1 netbsd-11-0-RC3:1.1 netbsd-11-0-RC2:1.1 netbsd-11-0-RC1:1.1 perseant-exfatfs-base-20250801:1.1 netbsd-11:1.1.0.6 netbsd-11-base:1.1 netbsd-10-1-RELEASE:1.1.4.2 netbsd-10:1.1.0.4 perseant-exfatfs-base-20240630:1.1 perseant-exfatfs:1.1.0.2 perseant-exfatfs-base:1.1; locks; strict; comment @# @; 1.1 date 2024.05.31.19.49.02; author tsutsui; state Exp; branches 1.1.4.1; next ; commitid woSxzLLKKep5KbcF; 1.1.4.1 date 2024.05.31.19.49.02; author martin; state dead; branches; next 1.1.4.2; commitid ukIKIblTxA6ajqgF; 1.1.4.2 date 2024.07.03.18.38.53; author martin; state Exp; branches; next ; commitid ukIKIblTxA6ajqgF; desc @@ 1.1 log @Import mkhybrid from OpenBSD 7.3 to create ISO9660/HFS hybrid ISO images. - files in libfile except proto.h prepared by OpenBSD are not imported due to non-standard license (newer BSD Licensed versions will be imported later) - unnecessary files for tools build are not imported - RCSId strings are trimmed to avoid unintended substitutions Proposed on tech-toolchain@@: https://mail-index.netbsd.org/tech-toolchain/2024/05/25/msg004355.html @ text @# Id: README.session,v 1.1 2000/10/10 20:40:11 beck Exp This release of mkisofs has basic support completed for multiple sessions. However, we still need some interaction between cdrecord and mkisofs for this to work correctly. This is needed as only cdrecord knows the different ways to gather these numbers for all different drives. It may be that future versions of mkisofs will include the needed support for MMC compliant drives. There are a few new options to mkisofs to allow for this. The first one is "-M /dev/scd0", and is used so that mkisofs can examine the entirety of the previous image so that it can figure out what additional files need to be written in the new session. Note that there are operating systems that don't allow to read from CD drives with a sector size of 2048 bytes per sector. To use mkisofs on such an operating system, you will need a version of mkisofs that includes the SCSI transport library from cdrecord. Simply use the dev= syntax from cdrecord with -M in such a case. It will tell mkisofs to use the SCSI transport library to read from the CD instead of using the standard read() OS interface. There is also a temporary hack in mkisofs in the form of a '-C' option. The -C option takes two numbers as input, which are delimited by commas. For example, you could specify "-C 1000,1020", but you should never just make up numbers to use here. These numbers are determined from cdrecord. Note that if you use -C and omit -M, it effectively means that you are writing a new session, starting at a non-zero block number, and you are effectively ignoring all of the previous session contents. When this session is sent to the writer, the new session effectively "erases" the previous session. In practice you should be able to do something like: mkisofs [other options] -C `cdrecord dev=b,t,l -msinfo` \ -M /dev/cdblkdev Replace 'b,t,l' by the aproriate numbers for SCSIbus, target and lun of your drive. Note: As of the 1.12b5 release, the multi-session technology has matured quite significantly. It is entirely possible that bugs exists, or that further tweaks will be required somewhere along the way to get things working correctly. The data gathering mode of cdrecord has been tested, and I believe it works correctly. Caveat Emptor. [Mar 1, 1999]. @ 1.1.4.1 log @file README.session was added on branch netbsd-10 on 2024-07-03 18:38:53 +0000 @ text @d1 48 @ 1.1.4.2 log @Pull up following revision(s) (requested by tsutsui in ticket #733): external/gpl2/mkhybrid/dist/mkisofs.h: revision 1.6 distrib/cdrom/Makefile: revision 1.55 distrib/cdrom/macppc_installboot/Makefile: revision 1.12 external/gpl2/mkhybrid/dist/getopt.c: revision 1.2 external/gpl2/mkhybrid/dist/libfile/LEGAL.NOTICE: revision 1.1 external/gpl2/mkhybrid/dist/write.c: revision 1.1 distrib/cdrom/Makefile: revision 1.56 distrib/cdrom/macppc_installboot/Makefile: revision 1.13 distrib/cdrom/macppc_installboot/installboot.c: revision 1.6 external/gpl2/mkhybrid/dist/getopt.c: revision 1.3 external/gpl2/mkhybrid/dist/write.c: revision 1.2 external/gpl2/mkhybrid/dist/libhfs_iso/data.h: revision 1.1 distrib/cdrom/Makefile: revision 1.57 distrib/cdrom/macppc_installboot/Makefile: revision 1.14 distrib/cdrom/macppc_installboot/installboot.c: revision 1.7 tools/Makefile: revision 1.221 tools/Makefile: revision 1.222 external/gpl2/mkhybrid/dist/libhfs_iso/file.h: revision 1.1 external/gpl2/mkhybrid/dist/libhfs_iso/README: revision 1.1 distrib/macppc/Makefile: revision 1.18 external/gpl2/mkhybrid/dist/TODO: revision 1.1 external/gpl2/mkhybrid/dist/libhfs_iso/block.h: revision 1.1 external/gpl2/mkhybrid/dist/libhfs_iso/record.c: revision 1.1 external/gpl2/mkhybrid/dist/libhfs_iso/hfs.c: revision 1.1 external/gpl2/mkhybrid/dist/match.c: revision 1.1 external/gpl2/mkhybrid/dist/libfile/softmagic.c: revision 1.1 external/gpl2/mkhybrid/dist/match.c: revision 1.2 external/gpl2/mkhybrid/dist/libfile/softmagic.c: revision 1.2 external/gpl2/mkhybrid/dist/volume.c: revision 1.1 external/gpl2/mkhybrid/dist/volume.c: revision 1.2 external/gpl2/mkhybrid/dist/libhfs_iso/internal.h: revision 1.1 external/gpl2/mkhybrid/dist/getopt1.c: revision 1.1 external/gpl2/mkhybrid/dist/getopt1.c: revision 1.2 external/gpl2/mkhybrid/dist/getopt1.c: revision 1.3 external/gpl2/mkhybrid/dist/README.mkisofs: revision 1.1 external/gpl2/mkhybrid/dist/libhfs_iso/hybrid.h: revision 1.1 tools/mkhybrid/Makefile: revision 1.1 external/gpl2/mkhybrid/dist/README.hfs_magic: revision 1.1 external/gpl2/mkhybrid/dist/apple.h: revision 1.1 external/gpl2/mkhybrid/dist/include/prototyp.h: revision 1.1 external/gpl2/mkhybrid/dist/libhfs_iso/volume.h: revision 1.1 external/gpl2/mkhybrid/dist/apple.h: revision 1.2 external/gpl2/mkhybrid/dist/mkisofs.c: revision 1.1 external/gpl2/mkhybrid/dist/desktop.c: revision 1.1 external/gpl2/mkhybrid/dist/mkisofs.c: revision 1.2 external/gpl2/mkhybrid/dist/desktop.c: revision 1.2 external/gpl2/mkhybrid/dist/mkisofs.c: revision 1.3 external/gpl2/mkhybrid/dist/mkisofs.c: revision 1.4 external/gpl2/mkhybrid/dist/libfile/file.h: revision 1.1 external/gpl2/mkhybrid/dist/mkisofs.c: revision 1.5 external/gpl2/mkhybrid/dist/libfile/file.h: revision 1.2 external/gpl2/mkhybrid/dist/mkisofs.c: revision 1.6 external/gpl2/mkhybrid/dist/libfile/file.h: revision 1.3 external/gpl2/mkhybrid/dist/mkisofs.c: revision 1.7 external/gpl2/mkhybrid/dist/getopt.h: revision 1.1 distrib/cdrom/macppc_installboot/installboot.h: revision 1.5 etc/etc.mac68k/Makefile.inc: revision 1.25 external/gpl2/mkhybrid/dist/getopt.h: revision 1.2 external/gpl2/mkhybrid/dist/write.h: revision 1.1 etc/etc.mac68k/Makefile.inc: revision 1.26 external/gpl2/mkhybrid/dist/rock.c: revision 1.1 external/gpl2/mkhybrid/dist/hash.c: revision 1.1 external/gpl2/mkhybrid/dist/hash.c: revision 1.2 external/gpl2/mkhybrid/dist/libhfs_iso/record.h: revision 1.1 external/gpl2/mkhybrid/dist/README.hfs_boot: revision 1.1 external/gpl2/mkhybrid/dist/README: revision 1.1 external/gpl2/mkhybrid/dist/README.win32: revision 1.1 external/gpl2/mkhybrid/dist/libhfs_iso/hfs.h: revision 1.1 external/gpl2/mkhybrid/dist/libhfs_iso/hfs.h: revision 1.2 external/gpl2/mkhybrid/dist/config.h.in: revision 1.1 external/gpl2/mkhybrid/dist/config.h.in: revision 1.2 distrib/cdrom/boothfs.uue: revision 1.2 external/gpl2/mkhybrid/dist/config.h.in: revision 1.3 external/gpl2/mkhybrid/dist/volume.h: revision 1.1 external/gpl2/mkhybrid/dist/volume.h: revision 1.2 external/gpl2/mkhybrid/dist/ChangeLog: revision 1.1 external/gpl2/mkhybrid/dist/libfile/apprentice.c: revision 1.1 external/gpl2/mkhybrid/dist/libfile/apprentice.c: revision 1.2 external/gpl2/mkhybrid/dist/mapping: revision 1.1 external/gpl2/mkhybrid/dist/libhfs_iso/btree.h: revision 1.1 external/gpl2/mkhybrid/bin/Makefile: revision 1.1 external/gpl2/mkhybrid/dist/include/statdefs.h: revision 1.1 external/gpl2/mkhybrid/dist/libhfs_iso/Makefile: revision 1.1 external/gpl2/mkhybrid/bin/Makefile: revision 1.2 external/gpl2/mkhybrid/dist/magic: revision 1.1 external/gpl2/mkhybrid/dist/libhfs_iso/node.h: revision 1.1 external/gpl2/mkhybrid/bin/Makefile: revision 1.3 external/gpl2/mkhybrid/dist/acconfig.h: revision 1.1 external/gpl2/mkhybrid/dist/eltorito.c: revision 1.1 external/gpl2/mkhybrid/dist/libfile/patchlevel.h: revision 1.1 share/mk/bsd.own.mk: revision 1.1375 share/mk/bsd.own.mk: revision 1.1376 external/gpl2/mkhybrid/dist/README.session: revision 1.1 external/gpl2/mkhybrid/dist/libfile/lfile.c: revision 1.1 external/gpl2/mkhybrid/dist/libfile/lfile.c: revision 1.2 tools/macppc_installboot/Makefile: revision 1.1 external/gpl2/mkhybrid/README.md: revision 1.1 etc/etc.macppc/Makefile.inc: revision 1.13 external/gpl2/mkhybrid/dist/defaults.h: revision 1.1 external/gpl2/mkhybrid/dist/mkisofs.spec: revision 1.1 external/gpl2/mkhybrid/dist/defaults.h: revision 1.2 external/gpl2/mkhybrid/dist/mac_label.h: revision 1.1 external/gpl2/mkhybrid/dist/defaults.h: revision 1.3 external/gpl2/mkhybrid/dist/include/mconfig.h: revision 1.1 external/gpl2/mkhybrid/dist/include/mconfig.h: revision 1.2 external/gpl2/mkhybrid/dist/libfile/proto.h: revision 1.1 external/gpl2/mkhybrid/dist/COPYING: revision 1.1 external/gpl2/mkhybrid/dist/name.c: revision 1.1 external/gpl2/mkhybrid/dist/configure.in: revision 1.1 external/gpl2/mkhybrid/dist/configure.in: revision 1.2 external/gpl2/mkhybrid/dist/mac_label_proto.h: revision 1.1 external/gpl2/mkhybrid/dist/configure.in: revision 1.3 external/gpl2/mkhybrid/dist/libhfs_iso/low.c: revision 1.1 distrib/cdrom/macppc_mkboothfs/mkboothfs.c: revision 1.4 external/gpl2/mkhybrid/dist/mkhybrid.8: revision 1.1 external/gpl2/mkhybrid/dist/libhfs_iso/btree.c: revision 1.1 distrib/cdrom/macppc_installboot/cd9660.c: revision 1.5 external/gpl2/mkhybrid/dist/config.h: revision 1.1 external/gpl2/mkhybrid/dist/mkhybrid.8: revision 1.2 distrib/cdrom/macppc_installboot/cd9660.c: revision 1.6 external/gpl2/mkhybrid/dist/config.h: revision 1.2 external/gpl2/mkhybrid/dist/libhfs_iso/node.c: revision 1.1 external/gpl2/mkhybrid/dist/libhfs_iso/data.c: revision 1.1 external/gpl2/mkhybrid/dist/libhfs_iso/file.c: revision 1.1 external/gpl2/mkhybrid/dist/README.eltorito: revision 1.1 external/gpl2/mkhybrid/dist/include/fctldefs.h: revision 1.1 external/gpl2/mkhybrid/dist/libfile/README: revision 1.1 external/gpl2/mkhybrid/dist/libhfs_iso/block.c: revision 1.1 external/gpl2/mkhybrid/dist/mactypes.h: revision 1.1 external/gpl2/mkhybrid/dist/apple_proto.h: revision 1.1 external/gpl2/mkhybrid/dist/apple_proto.h: revision 1.2 external/gpl2/mkhybrid/dist/multi.c: revision 1.1 external/gpl2/mkhybrid/dist/match.h: revision 1.1 external/gpl2/mkhybrid/dist/match.h: revision 1.2 external/gpl2/mkhybrid/dist/mac_label.c: revision 1.1 external/gpl2/mkhybrid/dist/Makefile.in: revision 1.1 external/gpl2/mkhybrid/dist/mac_label.c: revision 1.2 external/gpl2/mkhybrid/dist/libhfs_iso/lvolume.c: revision 1.1 external/gpl2/mkhybrid/dist/Makefile.in: revision 1.2 external/gpl2/mkhybrid/dist/configure: revision 1.1 external/gpl2/mkhybrid/dist/configure: revision 1.2 external/gpl2/mkhybrid/dist/install-sh: revision 1.1 external/gpl2/mkhybrid/dist/configure: revision 1.3 distrib/cdrom/macppc_installboot/cd9660.c: file removal external/gpl2/mkhybrid/dist/README.mkhybrid: revision 1.1 external/gpl2/mkhybrid/dist/ChangeLog.mkhybrid: revision 1.1 external/gpl2/mkhybrid/dist/iso9660.h: revision 1.1 external/gpl2/mkhybrid/dist/joliet.c: revision 1.1 external/gpl2/mkhybrid/dist/apple.c: revision 1.1 external/gpl2/mkhybrid/dist/apple.c: revision 1.2 external/gpl2/mkhybrid/dist/apple.c: revision 1.3 etc/Makefile: revision 1.471 external/gpl2/mkhybrid/dist/apple.c: revision 1.4 external/gpl2/mkhybrid/dist/tree.c: revision 1.1 etc/Makefile: revision 1.472 external/gpl2/mkhybrid/dist/tree.c: revision 1.2 external/gpl2/mkhybrid/dist/tree.c: revision 1.3 external/gpl2/mkhybrid/dist/libhfs_iso/low.h: revision 1.1 external/gpl2/mkhybrid/dist/mkisofs.h: revision 1.1 external/gpl2/mkhybrid/dist/mkisofs.8: revision 1.1 external/gpl2/mkhybrid/dist/mkisofs.h: revision 1.2 external/gpl2/mkhybrid/dist/mkisofs.h: revision 1.3 external/gpl2/mkhybrid/dist/mkisofs.h: revision 1.4 external/gpl2/mkhybrid/dist/mkisofs.h: revision 1.5 distrib/cdrom/Makefile: revision 1.54 external/gpl2/mkhybrid/dist/getopt.c: revision 1.1 Add -data-change-warn to MKISOFS_ARGS for macppc as done for mac68k: https://mail-index.netbsd.org/source-changes/2023/05/19/msg144826.html Creating Type&Creator mappings for .bin (macbinary encoded) files, mkisofs changes files, then turns around and complains they have been changed. This is a self-inflicted wound, so demote the error to a warning. This looks to make macppccd builds with cdrtools-3.02a10. Sync with src/usr.sbin/installboot/cd9660.c: - include now properly updated cd9660_extern.h for function prototypes and remove them from local installboot.h - use ISO_MAXNAMLEN rather than (BSD specific and incorrect) MAXNAMLEN - use proper names for the secondary boot file - appease several pointer signedness warnings (not fatal on HOST tools) Use native cd9660 blocksize to specify block numbers in cd9660.c. This reduces diffs from src/usr.sbin/installboot/cd9660.c. Also explicitly call cd9660_match() to get fstype->blocksize properly. Pull sharable src/usr.sbin/installboot/cd9660.c. Import mkhybrid from OpenBSD 7.3 to create ISO9660/HFS hybrid ISO images. - files in libfile except proto.h prepared by OpenBSD are not imported due to non-standard license (newer BSD Licensed versions will be imported later) - unnecessary files for tools build are not imported - RCSId strings are trimmed to avoid unintended substitutions Proposed on tech-toolchain@@: https://mail-index.netbsd.org/tech-toolchain/2024/05/25/msg004355.html Import BSD licensed libfile for mkhybrid builds from cdrtools-3.01. - unnecessary files for tools build are not imported - file.c is renamed to lfile.c to avoid conflict with libhfs_iso - RCSId strings are trimmed Remove dependencies on non-existent exclude.h. Pull changes from mkisofs-1.12.1 to avoid statvfs(2). Make newer BSD Licensed libfile sources build as tools. Update mkhybrid Makefile for NetBSD's tools builds. Suppress implicit declaration warnings. Appease discard-const warnings. Remove duplicated SYSTEM_ID_DEFAULT definitions. Don't redefine SYSTEM_ID_DEFAULT if it's specified in CPPFLAGS. Remove ancient rlimit hacks for NetBSD disabled in cdrtools-2.01. Always use local getopt.h as cdrtools-2.01 did. Tweak and regen configure using autoconf-2.13 to use pkgsrc tools. Check and in configure and regen config.h. Use HAVE_CONFIG_H to include and in getopt sources. Appease more warnings and remove unused getopt functions. Pull options -hide-joliet-trans-tbl and -hide-rr-moved from mkisofs-1.13. Pull -graft-points option from mkisofs-1.13 and cdrtools-2.01. Also remove #ifdef APPLE_HYB for NON-HFS changes to reduce diffs. Tweak OPTION_* definitions to reduce diffs from mkisofs-1.13. Pull malloc related fixes from cdrtools-2.01. This seems to fix SIGSEGV during free(3) in write.c:write_one_file(). Build mkhybrid as a build tool. Build mac68k and macppc iso images using tools/mkhybrid. Drop -data-change-warn from MKISOFS_FLAGS. It's available only on cdrtools-3.x and later. Use tools/mkhybrid as MKISOFS for mac68k and future macppc. Note about current status. Also pull man page description of options pulled from mkisofs-1.13. Don't print progress if -quiet is specfied as cdrtools-2.01 and later. Exclude debug.tgz and xdebug.tgz from mac68k ISO to save ~320MB. Drop -T (for non-Rock Ridge capable systems) from ${MKISOFS_FLAGS}. Even old mac68k and macppc don't require it, and somehow TRANS.TBL files are shown on NetBSD when the ISO images created with both -T and and -hide-joliet-trans-tbl are mounted by mount_cd9660(8). Note this also happens with mkisofs(8) from cdrtools-3.02, but I have not investigated if it's expected behavior. Build src/distrib/cdrom/macppc_installboot in src/tools as a tool. Also use the tools version ${TOOLS_MACPPC_INSTALLBOOT} to create bootable ISO9660/HFS hybrid installcd image for macppc. Make sure NetBSD_BootBlock partition has 32KB to avoid extra padding. It looks at least OpenFirmware 2.x fails to load the primary bootloader in the NetBSD_BootBlock partition if the partition size is too small, probably because OpenFirmware read() function implicitly uses 32KB blocks. Build macppc iso with TOOL_MKHYBRID via "iso-image" target in src/etc. No need to check and redefine C89 strerror(3) and strtoul(3). Fixes build error on MacOS 10.4 with Xcode 2.5. @ text @a0 48 # Id: README.session,v 1.1 2000/10/10 20:40:11 beck Exp This release of mkisofs has basic support completed for multiple sessions. However, we still need some interaction between cdrecord and mkisofs for this to work correctly. This is needed as only cdrecord knows the different ways to gather these numbers for all different drives. It may be that future versions of mkisofs will include the needed support for MMC compliant drives. There are a few new options to mkisofs to allow for this. The first one is "-M /dev/scd0", and is used so that mkisofs can examine the entirety of the previous image so that it can figure out what additional files need to be written in the new session. Note that there are operating systems that don't allow to read from CD drives with a sector size of 2048 bytes per sector. To use mkisofs on such an operating system, you will need a version of mkisofs that includes the SCSI transport library from cdrecord. Simply use the dev= syntax from cdrecord with -M in such a case. It will tell mkisofs to use the SCSI transport library to read from the CD instead of using the standard read() OS interface. There is also a temporary hack in mkisofs in the form of a '-C' option. The -C option takes two numbers as input, which are delimited by commas. For example, you could specify "-C 1000,1020", but you should never just make up numbers to use here. These numbers are determined from cdrecord. Note that if you use -C and omit -M, it effectively means that you are writing a new session, starting at a non-zero block number, and you are effectively ignoring all of the previous session contents. When this session is sent to the writer, the new session effectively "erases" the previous session. In practice you should be able to do something like: mkisofs [other options] -C `cdrecord dev=b,t,l -msinfo` \ -M /dev/cdblkdev Replace 'b,t,l' by the aproriate numbers for SCSIbus, target and lun of your drive. Note: As of the 1.12b5 release, the multi-session technology has matured quite significantly. It is entirely possible that bugs exists, or that further tweaks will be required somewhere along the way to get things working correctly. The data gathering mode of cdrecord has been tested, and I believe it works correctly. Caveat Emptor. [Mar 1, 1999]. @