--- /dev/null
+name: Code Testing
+
+on:
+ push:
+ pull_request:
+ schedule:
+ - cron: '42 1 * * *'
+
+jobs:
+ codecheck:
+ runs-on: ubuntu-latest
+ name: Run codecheck
+
+ steps:
+ - name: Checkout source
+ uses: actions/checkout@v2
+
+ - name: pip install wheel (to make install black work)
+ run: pip3 install wheel
+
+ - name: pip install flake8, isort + black, vulture
+ run: pip3 install flake8 isort black vulture
+
+ - name: Codecheck execution
+ run: make codecheck
+
+ unittests:
+ runs-on: ubuntu-latest
+ name: Run unit tests
+
+ steps:
+ - name: Checkout source
+ uses: actions/checkout@v2
+
+ - name: Install pytest
+ run: pip3 install pytest
+
+ - name: Run Pytest
+ run: pytest
flake8 grml2usb
isort --check-only grml2usb
black --check grml2usb
+ vulture grml2usb test/grml2usb_test.py
+
+test:
+ pytest
# graph:
# sudo pycallgraph grml2usb /grml/isos/grml-small_2008.11.iso /dev/sdb1
+grml2usb (0.19.2) unstable; urgency=medium
+
+ * [2955aaf] codecheck: reformat with black, version 23.1.0
+ (Closes: #1031466)
+
+ -- Michael Prokop <mika@grml.org> Mon, 20 Feb 2023 11:33:34 +0100
+
+grml2usb (0.19.1) unstable; urgency=medium
+
+ * [27eba4a] Replace egrep usage with grep -E
+ * [ec28a50] Bump Standards-Version to 4.6.2
+
+ -- Michael Prokop <mika@grml.org> Wed, 08 Feb 2023 08:27:50 +0100
+
+grml2usb (0.19.0) unstable; urgency=medium
+
+ [ Manuel Rom ]
+ * [40221eb] Add Github action workflows for CI/CD
+
+ [ Michael Prokop ]
+ * [3f77679] Fix vulture usage and add vulture to Build-Depends
+ * [a6cce22] Github action: do not install virtualenv +
+ python3-setuptools. Thanks to Chris Hofstaedtler
+ * [78ae858] grml2iso: support parallel execution
+ * [8126bbf] grml2iso: execute under pipefail
+
+ -- Michael Prokop <mika@grml.org> Mon, 21 Mar 2022 16:19:54 +0100
+
+grml2usb (0.18.5) unstable; urgency=medium
+
+ * [01ed11d] Fix --grub and --syslinux handling. Thanks to Ralf Moll for
+ the bugreport
+
+ -- Michael Prokop <mika@grml.org> Fri, 22 Jan 2021 10:32:43 +0100
+
+grml2usb (0.18.4) unstable; urgency=medium
+
+ [ Michael Prokop ]
+ * [3664e4a] Code cleanups. Thanks to Chris Hofstaedtler for review +
+ feedback
+ * [1dfee7d] Use "GRML" as FAT label when creating the file system
+ * [272b66e] Fix race condition with blockdev/BLKRRPART due to lack of
+ fsync. Thanks to dann frazier <dannf@dannf.org> for bug report and
+ patch (Closes: #975015)
+ * [100a957] Bump Standards-Version to 4.5.1
+
+ [ Darshaka Pathirana ]
+ * [7656c18] Use consistent case of 'USB' and 'Grml'
+
+ [ Manuel Rom ]
+ * [6f3eb52] Add unit testing capabilities and basic tests for
+ check_for_usbdevice
+
+ -- Michael Prokop <mika@grml.org> Fri, 27 Nov 2020 17:56:02 +0100
+
grml2usb (0.18.3) unstable; urgency=medium
* [9e7dd96] codecheck: fix flake8 issues with versions >=3.8.3. Thanks
docbook-xsl,
flake8,
isort,
+ vulture,
xsltproc,
-Standards-Version: 4.5.0
+Standards-Version: 4.6.2
Homepage: https://grml.org/grml2usb/
Vcs-git: git://git.grml.org/grml2usb.git
Vcs-Browser: https://git.grml.org/?p=grml2usb.git
override_dh_auto_build:
dh_testdir
- egrep -q '^PROG_VERSION = "\*\*\*UNKNOWN\*\*\*"' grml2usb || (echo "PROG_VERSION in grml2usb wrong." && exit 2)
+ grep -qE '^PROG_VERSION = "\*\*\*UNKNOWN\*\*\*"' grml2usb || (echo "PROG_VERSION in grml2usb wrong." && exit 2)
$(MAKE) -C mbr
$(MAKE)
# License: This file is licensed under the GPL v2 or any later version.
################################################################################
+set -e -o pipefail
+
# make sure we have the sbin directories in our PATH to find grml2usb ootb
PATH="${PATH}:/sbin:/usr/local/sbin:/usr/sbin"
# adjust variables if necessary through environment {{{
# path to the grml2usb script you'd like to use
- [ -n "$GRML2USB" ] || GRML2USB='grml2usb'
-# work directory for creating the filesystem
- [ -n "$TMPDIR" ] && WRKDIR="${TMPDIR}/grml2iso.tmp"
- [ -n "$WRKDIR" ] || WRKDIR='/tmp/grml2iso.tmp'
+[ -n "$GRML2USB" ] || GRML2USB='grml2usb'
+
# support mkisofs as well as genisoimage
if which xorriso >/dev/null 2>&1 ; then
MKISOFS='xorriso -as mkisofs'
# }}}
# helper stuff {{{
- set -e
-
usage() {
echo >&2 "Usage: $0 [OPTIONS] -o target.iso source1.iso [source2.iso ...]"
echo >&2 "
restrictions in the bootprocess only IPs are allowed.
Supported protocols are: http and ftp
-t Directory Directory that should be used for temporary files
- during build. Defaults to /tmp/grml2iso.tmp if unset.
+ during build, instead of using a temporary directory
+ created by mktemp(1).
Examples:
- $0 -s http://192.168.23.42:8000/grml/ -o small.iso grml64-small_2018.12.iso
+ $0 -s http://192.168.23.42:8000/grml/ -o small.iso grml64-small_2021.07.iso
Will generate a file small.iso which tries to download the squashfs file from
http://192.168.23.42:8000/grml/ - the squashfs file is placed in the same
GRML2USB_OPTS+=(--bootoptions="fetch=$URI")
fi
- if [ -n "$WRKDIR" ] ; then
- GRML2USB_OPTS+=(--tmpdir="$WRKDIR")
- fi
-
# make sure -o is specified
[ -n "$ISOFILE" ] || usage 1
esac
# }}}
-# create necessary stuff under WRKDIR {{{
- [ -d "$WRKDIR" ] && WRKDIR_EXISTED='true' || WRKDIR_EXISTED='false'
+# ensure to properly set up working directory {{{
+ WRKDIR_EXISTED='false'
+ if [ -z "$WRKDIR" ] ; then
+ WRKDIR="$(mktemp -d)"
+ else
+ [ -d "$WRKDIR" ] && WRKDIR_EXISTED='true'
+ fi
+
+ GRML2USB_OPTS+=(--tmpdir="$WRKDIR")
+
rm -rf "$WRKDIR/cddir" "$WRKDIR/grub_tmp"
mkdir -p "$WRKDIR/cddir"
# }}}}
RE_LOOP_DEVICE = re.compile(r"/dev/loop\d+$")
-def syslinux_warning(option, opt, opt_parser):
- """A helper function for printing a warning about deprecated option
- """
+def syslinux_warning(option, opt, _value, opt_parser):
+ """A helper function for printing a warning about deprecated option"""
# pylint: disable-msg=W0613
sys.stderr.write(
"Note: the --syslinux option is deprecated as syslinux "
# if grub option is set, unset syslinux option
-def grub_option(option, opt, opt_parser):
- """A helper function adjusting other option values
- """
+def grub_option(option, opt, _value, opt_parser):
+ """A helper function adjusting other option values"""
# pylint: disable-msg=W0613
setattr(opt_parser.values, option.dest, True)
setattr(opt_parser.values, "syslinux", False)
def cleanup():
- """Cleanup function to make sure there aren't any mounted devices left behind.
- """
+ """Cleanup function to make sure there aren't any mounted devices left behind."""
def del_failed(_fn, path, _exc):
logging.warning("Deletion of %s failed in temporary folder", path)
def get_defaults_file(iso_mount, flavour, name):
- """get the default file for syslinux
- """
+ """get the default file for syslinux"""
bootloader_dirs = ["/boot/isolinux/", "/boot/syslinux/"]
for directory in bootloader_dirs:
for name in name, "%s_%s" % (get_flavour_filename(flavour), name):
logging.info("Formating partition with fat16 filesystem")
logging.debug("mkfs.vfat -F 16 %s", device)
- proc = subprocess.Popen(["mkfs.vfat", "-F", "16", device])
+ proc = subprocess.Popen(["mkfs.vfat", "-n", "GRML", "-F", "16", device])
proc.wait()
if proc.returncode != 0:
raise CriticalException("error executing mkfs.vfat")
set_rw(device)
logging.debug(
- "executing: dd if='%s' of='%s' bs=512 count=1 conv=notrunc", tmpf.name, device
+ "executing: dd if='%s' of='%s' bs=512 count=1 conv=notrunc,fsync",
+ tmpf.name,
+ device,
)
proc = subprocess.Popen(
[
"of=%s" % device,
"bs=512",
"count=1",
- "conv=notrunc",
+ "conv=notrunc,fsync",
],
stderr=open(os.devnull, "r+"),
)
raise Exception("error executing dd (third run)")
del tmpf
- # make sure we sync filesystems before returning
- logging.debug("executing: sync")
- proc = subprocess.Popen(["sync"])
- proc.wait()
-
logging.debug("Probing device via 'blockdev --rereadpt %s'", device)
proc = subprocess.Popen(["blockdev", "--rereadpt", device])
proc.wait()
def get_flavour(flavour_str):
- """Returns the flavour of a grml version string
- """
+ """Returns the flavour of a grml version string"""
return re.match(r"[\w-]*", flavour_str).group()
new_grml_cfg = "%s/%s_grml.cfg" % (syslinux_target, flavour_filename)
if os.path.isfile(defaults_file):
-
# remove default menu entry in menu
remove_default_entry(new_default_with_path)
def remove_mountpoint(mountpoint):
- """remove a registered mountpoint
- """
+ """remove a registered mountpoint"""
try:
unmount(mountpoint, "")
| |-- grml64
| | |-- linux26 [Kernel]
| | |-- initrd.gz [initramfs]
- | |-- grml-medium
- | | |-- linux26 [...]
- | | |-- initrd.gz
- | |-- grml64-medium
- | | |-- linux26
- | | |-- initrd.gz
| |-- grml-small
| | |-- linux26
| | |-- initrd.gz
|-- grml/
| |-- filesystem.module [module specifying which squashfs should be used for grml]
| `-- grml.squashfs [squashfs file for grml]
- |-- grml-medium/
- | |-- filesystem.module [module specifying which squashfs should be used for grml-medium]
- | `-- grml-medium.squashfs [squashfs file for grml-medium]
|-- grml-small/
- | |-- filesystem.module [module specifying which squashfs should be used for grml-medium]
+ | |-- filesystem.module [module specifying which squashfs should be used for grml-small]
| `-- grml-small.squashfs [squashfs file for grml-small]
`-- ...