forked from mikael-lovqvist/fa2json
Compare commits
1 Commits
main
...
add/makefi
| Author | SHA1 | Date | |
|---|---|---|---|
| b4b0b0cb4d |
56
Makefile
Normal file
56
Makefile
Normal file
@@ -0,0 +1,56 @@
|
||||
SHELL := /bin/bash
|
||||
CC := cc
|
||||
CFLAGS := -Wall -O2
|
||||
TARGET := fa2json
|
||||
SRCS := fs-watcher.c json-writer.c
|
||||
|
||||
.PHONY: all test clean
|
||||
|
||||
all: $(TARGET)
|
||||
|
||||
$(TARGET): $(SRCS)
|
||||
$(CC) $(CFLAGS) -o $@ $^
|
||||
|
||||
# Requires root (fanotify FID + mount needs CAP_SYS_ADMIN).
|
||||
# Loop device and mount are cleaned up automatically on exit.
|
||||
# If the test aborts unexpectedly, check: losetup -l and /proc/mounts
|
||||
test: $(TARGET)
|
||||
@set -euo pipefail; \
|
||||
IMG=""; MNTDIR=""; LOOPDEV=""; FA2JSON_PID=""; \
|
||||
cleanup() { \
|
||||
[ -n "$$FA2JSON_PID" ] && { kill "$$FA2JSON_PID" 2>/dev/null; wait "$$FA2JSON_PID" 2>/dev/null || true; }; \
|
||||
[ -n "$$MNTDIR" ] && umount "$$MNTDIR" 2>/dev/null || true; \
|
||||
[ -n "$$LOOPDEV" ] && losetup -d "$$LOOPDEV" 2>/dev/null || true; \
|
||||
[ -n "$$IMG" ] && rm -f "$$IMG"; \
|
||||
[ -n "$$MNTDIR" ] && rmdir "$$MNTDIR" 2>/dev/null || true; \
|
||||
}; \
|
||||
trap cleanup EXIT; \
|
||||
IMG=$$(mktemp /tmp/fa2json-test-XXXXXX.img); \
|
||||
MNTDIR=$$(mktemp -d /tmp/fa2json-mnt-XXXXXX); \
|
||||
echo "--- Creating 10M ext4 image ---"; \
|
||||
dd if=/dev/zero of="$$IMG" bs=1M count=10 status=none; \
|
||||
mkfs.ext4 -q "$$IMG"; \
|
||||
LOOPDEV=$$(losetup --find --show "$$IMG"); \
|
||||
mount "$$LOOPDEV" "$$MNTDIR"; \
|
||||
echo "--- Starting fa2json on $$MNTDIR ---"; \
|
||||
./$(TARGET) "$$MNTDIR" & FA2JSON_PID=$$!; \
|
||||
sleep 0.3; \
|
||||
echo "--- Filesystem operations ---"; \
|
||||
mkdir "$$MNTDIR/dir_a"; \
|
||||
touch "$$MNTDIR/file_a.txt"; \
|
||||
echo "content" >> "$$MNTDIR/file_a.txt"; \
|
||||
mkdir "$$MNTDIR/dir_b"; \
|
||||
touch "$$MNTDIR/dir_b/nested.txt"; \
|
||||
mv "$$MNTDIR/file_a.txt" "$$MNTDIR/file_b.txt"; \
|
||||
mv "$$MNTDIR/dir_b" "$$MNTDIR/dir_a/dir_b_moved"; \
|
||||
chmod 600 "$$MNTDIR/file_b.txt"; \
|
||||
touch -m "$$MNTDIR/file_b.txt"; \
|
||||
chmod 755 "$$MNTDIR/dir_a"; \
|
||||
rm "$$MNTDIR/file_b.txt"; \
|
||||
rm "$$MNTDIR/dir_a/dir_b_moved/nested.txt"; \
|
||||
rm -rf "$$MNTDIR/dir_a"; \
|
||||
sleep 0.3; \
|
||||
echo "--- Done ---"
|
||||
|
||||
clean:
|
||||
rm -f $(TARGET)
|
||||
Reference in New Issue
Block a user