commit WoeUSB for openSUSE:Factory
Hello community, here is the log from the commit of package WoeUSB for openSUSE:Factory checked in at 2018-05-10 15:50:52 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/WoeUSB (Old) and /work/SRC/openSUSE:Factory/.WoeUSB.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "WoeUSB" Thu May 10 15:50:52 2018 rev:5 rq:605712 version:3.2.1 Changes: -------- --- /work/SRC/openSUSE:Factory/WoeUSB/WoeUSB.changes 2018-03-30 12:07:54.580677657 +0200 +++ /work/SRC/openSUSE:Factory/.WoeUSB.new/WoeUSB.changes 2018-05-10 15:50:52.334026106 +0200 @@ -1,0 +2,19 @@ +Wed May 9 08:28:30 UTC 2018 - guoyunhebrave@gmail.com + +- Version 3.2.1 + * This patch release fixes the fatal error slipped into last minute patch in v3.2.0. + +------------------------------------------------------------------- +Tue May 8 11:32:57 UTC 2018 - guoyunhebrave@gmail.com + +- Version 3.2.0 + * A check for "FAT32 Filesystem 4GiB Single File Size Limitation" has been + implemented thanks to Jakub Szymański + * A fix to comply with the recent changes of UEFI:NTFS has been implemented + thanks to Felipe Magno de Almeida + * PNG images distributed in WoeUSB has been optimized to smaller size thanks + to Peter Dave Hello + * A typo has been picked out in woeusb(1) manpage thanks to Anthony Fok + * Detailed changes see https://github.com/slacka/WoeUSB/releases/tag/v3.2.0 + +------------------------------------------------------------------- Old: ---- WoeUSB-3.1.5.tar.gz New: ---- WoeUSB-3.2.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ WoeUSB.spec ++++++ --- /var/tmp/diff_new_pack.SZAyI5/_old 2018-05-10 15:50:53.209994000 +0200 +++ /var/tmp/diff_new_pack.SZAyI5/_new 2018-05-10 15:50:53.213993854 +0200 @@ -17,7 +17,7 @@ Name: WoeUSB -Version: 3.1.5 +Version: 3.2.1 Release: 0 Summary: Windows USB installation media creator License: GPL-3.0-or-later ++++++ WoeUSB-3.1.5.tar.gz -> WoeUSB-3.2.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/WoeUSB-3.1.5/setup-development-environment.bash new/WoeUSB-3.2.1/setup-development-environment.bash --- old/WoeUSB-3.1.5/setup-development-environment.bash 2018-03-19 22:28:23.000000000 +0100 +++ new/WoeUSB-3.2.1/setup-development-environment.bash 2018-05-08 18:21:26.000000000 +0200 @@ -8,7 +8,7 @@ set -o nounset set -o pipefail -for required_command in\ +for required_command in \ realpath\ basename\ dirname\ @@ -17,7 +17,8 @@ do if ! command -v "${required_command}" >/dev/null; then printf\ - "Error: This program requires \"${required_command}\" command in your \$PATH.\n"\ + "Error: This program requires \"%s\" command in your \$PATH.\n"\ + "${required_command}"\ 1>&2 exit 1 fi @@ -61,11 +62,22 @@ git config include.path ../.gitconfig\ && printf "done\n" - printf "Activate Git smudge filter...\n" - git stash save &>/dev/null || true + printf "Activating Git smudge filter...\n" + # git - How do I programmatically determine if there are uncommitted changes? - Stack Overflow + # https://stackoverflow.com/questions/3878624/how-do-i-programmatically-determ... + # DOC: git-diff-index(1) manpage: OPTIONS: --quiet, --exit-code + local stash_is_needed=false + if ! git diff-index --quiet HEAD --; then + stash_is_needed=true + fi + if test "${stash_is_needed}" = 'true'; then + git stash save &>/dev/null + fi rm .git/index git checkout HEAD -- "$(git rev-parse --show-toplevel)" >/dev/null - git stash pop &>/dev/null || true + if test "${stash_is_needed}" = 'true'; then + git stash pop &>/dev/null + fi; unset stash_is_needed printf "done.\n" exit 0 Binary files old/WoeUSB-3.1.5/src/data/c501-logo.png and new/WoeUSB-3.2.1/src/data/c501-logo.png differ Binary files old/WoeUSB-3.1.5/src/data/icon.png and new/WoeUSB-3.2.1/src/data/icon.png differ Binary files old/WoeUSB-3.1.5/src/data/woeusb-logo.png and new/WoeUSB-3.2.1/src/data/woeusb-logo.png differ Binary files old/WoeUSB-3.1.5/src/linux-menu/woeusbgui-icon.png and new/WoeUSB-3.2.1/src/linux-menu/woeusbgui-icon.png differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/WoeUSB-3.1.5/src/woeusb new/WoeUSB-3.2.1/src/woeusb --- old/WoeUSB-3.1.5/src/woeusb 2018-03-19 22:28:23.000000000 +0100 +++ new/WoeUSB-3.2.1/src/woeusb 2018-05-08 18:21:26.000000000 +0200 @@ -176,7 +176,7 @@ new_file_system_label\ workaround_bios_boot_flag\ target_filesystem_type\ - only_for_gui_ref; then + global_only_for_gui; then print_help\ "${application_name}"\ "${application_version}"\ @@ -233,6 +233,22 @@ "${target_device}"\ "${target_partition}" + current_state=mount-source-filesystem + + if ! mount_source_filesystem\ + "${source_media}"\ + "${source_fs_mountpoint}"; then + echo_with_color red 'Error: Unable to mount source filesystem' + exit 1 + fi + + if [ "${target_filesystem_type}" == 'FAT' ]; then + if ! check_fat32_filesize_limitation\ + "${source_fs_mountpoint}"; then + exit 1 + fi + fi + if [ "${install_mode}" = 'device' ]; then wipe_existing_partition_table_and_filesystem_signatures\ "${target_device}" @@ -263,19 +279,12 @@ "${target_device}" fi - current_state='start-mounting' - - if ! mount_source_filesystem\ - "${source_media}"\ - "${source_fs_mountpoint}"; then - echo_with_color red 'Error: Unable to mount source filesystem' - exit 1 - fi + current_state=mount-target-filesystem if ! mount_target_filesystem\ "${target_partition}"\ - "${target_fs_mountpoint}"\ - vfat; then + "${target_fs_mountpoint}" \ + "${target_filesystem_type}"; then echo_with_color red 'Error: Unable to mount target filesystem' exit 1 fi @@ -879,7 +888,7 @@ else return 0 fi -}; declare check_if_the_drive_is_really_wiped +}; declare -fr check_if_the_drive_is_really_wiped create_target_partition_table(){ util_check_function_parameters_quantity 2 $# @@ -965,7 +974,7 @@ # Create target partition # We start at 4MiB for grub (it needs a post-mbr gap for its code) and alignment of flash memery block erase segment in general, for details see http://www.gnu.org/software/grub/manual/grub.html#BIOS-installation and http://lwn.net/Articles/428584/ - # If NTFS filesystem is used we leave a 256KiB partition at the end for installing UEFI:NTFS partition for NTFS support + # If NTFS filesystem is used we leave a 512KiB partition at the end for installing UEFI:NTFS partition for NTFS support case "${parted_mkpart_fs_type}" in fat32) parted --script\ @@ -985,8 +994,8 @@ primary\ "${parted_mkpart_fs_type}"\ 4MiB\ - -- -513s # Leave 256KiB==512sector in traditional 512bytes/sector disk, disks with sector with more than 512bytes only result in partition size greater than 256KiB and is intentionally let-it-be. - # FIXME: Leave exact 256KiB in all circumstances is better, but the algorithm to do so is quite brainkilling. + -- -1025s # Leave 512KiB==1024sector in traditional 512bytes/sector disk, disks with sector with more than 512bytes only result in partition size greater than 512KiB and is intentionally let-it-be. + # FIXME: Leave exact 512KiB in all circumstances is better, but the algorithm to do so is quite brainkilling. ;; *) printf_with_color\ @@ -1023,7 +1032,7 @@ ## Create UEFI:NTFS partition to support booting UEFI bootloader in NTFS filesystem where some UEFI firmwares are not able to do so ## https://github.com/pbatard/uefi-ntfs -## This routine assumes that there's only one partition on the disk, and the trailing 256KiB space is not partitioned +## This routine assumes that there's only one partition on the disk, and the trailing 512KiB space is not partitioned ## This routine should be run after create_target_partition and only on target partition's filesystem is NTFS ## target_device: The target device's entire deice file create_uefi_ntfs_support_partition(){ @@ -1041,7 +1050,7 @@ primary\ fat16\ -- \ - -512s\ + -1024s\ -1s return "$?" @@ -1049,7 +1058,7 @@ ## Install UEFI:NTFS partition by writing the partition image into the created partition ## FIXME: Currently this requires internet access to download the image from GitHub directly, it should be replaced by including the image in our datadir -## uefi_ntfs_partition: The previously allocated partition for installing UEFI:NTFS, requires at least 256KiB +## uefi_ntfs_partition: The previously allocated partition for installing UEFI:NTFS, requires at least 512KiB ## download_directory: The temporary directory for downloading UEFI:NTFS image from GitHub ## target_device: For workaround_make_system_realize_partition_table_changed install_uefi_ntfs_support_partition(){ @@ -1093,6 +1102,26 @@ return $? }; declare -fr workaround_buggy_motherboards_that_ignore_disks_without_boot_flag_toggled +## Check every file in source directory for files bigger than max fat32 file size (~4GB) +check_fat32_filesize_limitation(){ + util_check_function_parameters_quantity 1 $# + local -r source_fs_mountpoint="${1}" + + while IFS= read -r -d '' file; do + if (( "$(stat -c '%s' "${file}")" > 4294967295 )); then # Max fat32 file size is 2^32 - 1 bytes + printf_with_color\ + red\ + 'Error: File "%s" in source image has exceed the FAT32 Filesystem 4GiB Single File Size Limitation and cannot be installed. You must specify a different --target-filesystem.\n'\ + "${file}" + prntf_with_color\ + red\ + 'Refer: https://github.com/slacka/WoeUSB/wiki/Limitations#fat32-filesystem-4gib-sing... for more info.\n' + return 1 + fi + done < <(find "${source_fs_mountpoint}" -type f) + return 0 +}; declare -fr check_fat32_filesize_limitation + ## Check target partition for potential problems before mounting them for --partition creation mode as we don't know about the existing partition ## target_partition: The target partition to check ## install_mode: The usb storage creation method to be used @@ -1196,7 +1225,7 @@ # Mount target filesystem to existing path as mountpoint # target_partition: The partition device file target filesystem resides, for example /dev/sdX1 # target_fs_mountpoint: The existing directory used as the target filesystem's mountpoint, for example /mnt/target_filesystem -# target_fs_type: The filesystem of the target filesystem, this is same as the --types argument of mount(8), currently supports: vfat +# target_fs_type: The filesystem of the target filesystem currently supports: FAT, NTFS mount_target_filesystem(){ util_check_function_parameters_quantity 3 $# local target_partition="$1"; shift @@ -1217,9 +1246,12 @@ # Determine proper mount options according to filesystem type case "${target_fs_type}" in - vfat) + FAT) mount_options='utf8=1' ;; + NTFS) + : + ;; *) printf_with_color\ red\ @@ -1597,61 +1629,43 @@ } > "${grub_cfg}"; unset target_fs_uuid }; declare -fr install_legacy_pc_bootloader_grub_config -## Unmount mounted filesystems and clean-up mountpoints before exiting program -## exit status: -## unclean(2): Not fully clean, target device can be safely detach from host -## unsafe(3): Target device cannot be safely detach from host -cleanup_mountpoints(){ - util_check_function_parameters_quantity 3 "${#}" - local -r source_fs_mountpoint="${1}"; shift - local -r target_fs_mountpoint="${1}"; shift - local -ir only_for_gui="${1}" - - local clean_result='unknown' - - # FIXME: Why `trigger_wxGenericProgressDialog_pulse off` here? - trigger_wxGenericProgressDialog_pulse\ - off\ - "${only_for_gui}" +## Unmount mounted filesystem and clean-up mountpoint before exiting program +## return_value: 1 - Failed to unmount / 2 - Failed to remove mountpoint +cleanup_mountpoint(){ + util_check_function_parameters_quantity 2 "${#}" + local -r fs_mountpoint="${1}"; shift + local -ir only_for_gui="${1}"; shift # In copy_filesystem_files, we use `pushd` to changed the working directory into source_fs_mountpoint in order to get proper source and target file path, proactively `popd` to ensure we are not in source_fs_mountpoint and preventing source filesystem to unmount popd &>/dev/null\ || true - if [ -e "${source_fs_mountpoint}" ]; then - echo_with_color green "Unmounting and removing '${source_fs_mountpoint}'..." - if umount "${source_fs_mountpoint}"; then - if ! rmdir "${source_fs_mountpoint}"; then - echo_with_color yellow "${FUNCNAME[0]}: Warning: Unable to remove source mountpoint" - clean_result='unclean' - fi - else - echo_with_color yellow "${FUNCNAME[0]}: Warning: Unable to unmount source filesystem." - clean_result='unclean' + if [ -e "${fs_mountpoint}" ]; then + printf_with_color \ + green \ + 'Unmounting and removing "%s"...\n' \ + "${fs_mountpoint}" + if ! umount "${fs_mountpoint}"; then + printf_with_color \ + yellow \ + '%s: Warning: Unable to unmount "%s".\n' \ + "${FUNCNAME[0]}" \ + "${fs_mountpoint}" + return 1 fi - fi - if [ -e "${target_fs_mountpoint}" ]; then - echo_with_color green "Unmounting and removing '${target_fs_mountpoint}'..." - if umount "${target_fs_mountpoint}"; then - if ! rmdir "${target_fs_mountpoint}"; then - echo_with_color yellow "${FUNCNAME[0]}: Warning: Unable to remove target mountpoint" - clean_result='unclean' - fi - else - echo_with_color yellow "${FUNCNAME[0]}: Warning: Unable to unmount target filesystem." - clean_result='unsafe' + if ! rmdir "${fs_mountpoint}"; then + printf_with_color \ + yellow \ + '%s: Warning: Unable to remove "%s".\n' \ + "${FUNCNAME[0]}" \ + "${fs_mountpoint}" + return 2 fi fi - if [ "${clean_result}" == 'unclean' ]; then - return 2 - elif [ "${clean_result}" == 'unsafe' ]; then - return 3 - else - return 0 - fi -}; declare -fr cleanup_mountpoints + return 0 +}; declare -fr cleanup_mountpoint ## This function continuously moves the GUI creation dialog's progressing bar bit by bit, by running `echo pulse` every 0.05 seconds until the next call chooses to turn off ## Refer src/MainPanel.cpp MainPanel::OnInstall(wxCommandEvent& event) method for more info @@ -1707,6 +1721,17 @@ }; declare -fr trap_errexit trap_exit(){ + # Mountpoints aren't successfully removed + local flag_unclean=false + + # Target filesystem failed to unmount + local flag_unsafe=false + + # FIXME: Why `trigger_wxGenericProgressDialog_pulse off` here? + trigger_wxGenericProgressDialog_pulse\ + off\ + "${global_only_for_gui}" + case "${current_state}" in copying-filesystem|finished) workaround_linux_make_writeback_buffering_not_suck\ @@ -1714,24 +1739,46 @@ ;; esac - if \ - util_is_parameter_set_and_not_empty\ - source_fs_mountpoint\ - && util_is_parameter_set_and_not_empty\ - target_fs_mountpoint; then - if cleanup_mountpoints\ - "${source_fs_mountpoint}"\ - "${target_fs_mountpoint}"\ + if util_is_parameter_set_and_not_empty\ + source_fs_mountpoint; then + if ! cleanup_mountpoint \ + "${source_fs_mountpoint}" \ "${global_only_for_gui}"; then - : - elif [ "${?}" == '2' ]; then - echo_with_color yellow 'Some mountpoints are not unmount/cleaned successfully and must be done manually' - else # $? == 3, target filesystem not unmounted - echo_with_color yellow 'We unable to unmount target filesystem for you, please make sure target filesystem is unmounted before detaching to prevent data corruption' - echo_with_color yellow 'Some mountpoints are not unmount/cleaned successfully and must be done manually' + flag_unclean=true fi fi + if util_is_parameter_set_and_not_empty\ + target_fs_mountpoint; then + if ! cleanup_mountpoint \ + "${target_fs_mountpoint}" \ + "${global_only_for_gui}"; then + local -i return_value="${?}" + + flag_unclean=true + + if [ "${return_value}" = 1 ]; then + flag_unsafe=true + fi + fi + fi + + if [ "${flag_unclean}" = true ]; then + echo_with_color \ + yellow \ + 'Some mountpoints are not unmount/cleaned successfully and must be done manually' + fi + + if [ "${flag_unsafe}" = true ]; then + echo_with_color \ + yellow \ + 'We unable to unmount target filesystem for you, please make sure target filesystem is unmounted before detaching to prevent data corruption' + fi + + unset \ + flag_unclean \ + flag_unsafe + if \ util_is_parameter_set_and_not_empty\ target_device; then diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/WoeUSB-3.1.5/src/woeusb.1 new/WoeUSB-3.2.1/src/woeusb.1 --- old/WoeUSB-3.1.5/src/woeusb.1 2018-03-19 22:28:23.000000000 +0100 +++ new/WoeUSB-3.2.1/src/woeusb.1 2018-05-08 18:21:26.000000000 +0200 @@ -9,7 +9,7 @@ .SH DESCRIPTION .B woeusb -is an command-line utility that enables you to create your own bootable Windows installation USB storage device from an existing Windows Installation DVD or its ISO image. +is a command-line utility that enables you to create your own bootable Windows installation USB storage device from an existing Windows Installation DVD or its ISO image. .PP It mainly extracts all files from @@ -98,11 +98,11 @@ 0 when success, 1 (and non-zero if there's any) when failure .SH BUGS -Refer our +Refer to our .UR https://github.com/slacka/WoeUSB/issues issue tracker .UE - for any known issues +for any known issues .br .SH SEE ALSO
participants (1)
-
root@hilbert.suse.de