Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 12 additions & 9 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
MANSECTION ?= 1
SHELL=/bin/bash
# Sanitize VERSION for use in filenames and tar transform expressions
# Replace forward slashes with dashes to avoid issues with tar --transform
VERSION_SAFE = $(subst /,-,$(VERSION))
.PHONY: clean snap rpm rpm-setup rpm-local rpm-clean ci-sim-ubuntu ci-sim-fedora ci-sim
default: linux
all: linux windows darwin freebsd
Expand All @@ -20,7 +23,7 @@ deb/linux-amd64: bin/linux-amd64/mdview
cp -r bin/linux-amd64/mdview package/usr/bin/mdview
cp mdview.1 package/usr/share/man/man1/
dpkg-deb --build package
mv package.deb mdview_$(VERSION)_amd64.deb
mv package.deb mdview_$(VERSION_SAFE)_amd64.deb

deb/linux-arm64: bin/linux-arm64/mdview
mkdir -p package/DEBIAN
Expand All @@ -31,44 +34,44 @@ deb/linux-arm64: bin/linux-arm64/mdview
cp -r bin/linux-arm64/mdview package/usr/bin/mdview
cp mdview.1 package/usr/share/man/man1/
dpkg-deb --build package
mv package.deb mdview_$(VERSION)_arm64.deb
mv package.deb mdview_$(VERSION_SAFE)_arm64.deb

snap:
snapcraft pack

bin/linux-amd64/mdview: manpage
env GOOS=linux GOARCH=amd64 go build -buildvcs=false -ldflags "-X main.appVersion=$(VERSION)" -o ./bin/linux-amd64/mdview
cp mdview.1 bin/linux-amd64/
tar czvf mdview-$(VERSION)-linux-amd64.tar.gz --transform s/linux-amd64/mdview-$(VERSION)/ -C bin linux-amd64
tar czvf mdview-$(VERSION_SAFE)-linux-amd64.tar.gz --transform s/linux-amd64/mdview-$(VERSION_SAFE)/ -C bin linux-amd64

bin/linux-i386/mdview:
env GOOS=linux GOARCH=386 go build -buildvcs=false -ldflags "-X main.appVersion=$(VERSION)" -o ./bin/linux-i386/mdview
cp mdview.1 bin/linux-i386/
tar czvf mdview-$(VERSION)-linux-i386.tar.gz --transform s/linux-i386/mdview-$(VERSION)/ -C bin linux-i386
tar czvf mdview-$(VERSION_SAFE)-linux-i386.tar.gz --transform s/linux-i386/mdview-$(VERSION_SAFE)/ -C bin linux-i386

bin/linux-arm64/mdview:
env GOOS=linux GOARCH=arm64 go build -buildvcs=false -ldflags "-X main.appVersion=$(VERSION)" -o ./bin/linux-arm64/mdview
cp mdview.1 bin/linux-arm64/
tar czvf mdview-$(VERSION)-linux-arm64.tar.gz --transform s/linux-arm64/mdview-$(VERSION)/ -C bin linux-arm64
tar czvf mdview-$(VERSION_SAFE)-linux-arm64.tar.gz --transform s/linux-arm64/mdview-$(VERSION_SAFE)/ -C bin linux-arm64

bin/windows-amd64/mdview.exe:
env GOOS=windows GOARCH=amd64 go build -buildvcs=false -ldflags "-X main.appVersion=$(VERSION)" -o ./bin/windows-amd64/mdview.exe
zip -j mdview-$(VERSION)-windows-amd64.zip bin/windows-amd64/mdview.exe
zip -j mdview-$(VERSION_SAFE)-windows-amd64.zip bin/windows-amd64/mdview.exe

bin/darwin-amd64/mdview:
env GOOS=darwin GOARCH=amd64 go build -buildvcs=false -ldflags "-X main.appVersion=$(VERSION)" -o ./bin/darwin-amd64/mdview
cp mdview.1 bin/darwin-amd64/
tar czvf mdview-$(VERSION)-darwin-amd64.tar.gz --transform s/darwin-amd64/mdview-$(VERSION)/ -C bin darwin-amd64
tar czvf mdview-$(VERSION_SAFE)-darwin-amd64.tar.gz --transform s/darwin-amd64/mdview-$(VERSION_SAFE)/ -C bin darwin-amd64

bin/darwin-arm64/mdview:
env GOOS=darwin GOARCH=arm64 go build -buildvcs=false -ldflags "-X main.appVersion=$(VERSION)" -o ./bin/darwin-arm64/mdview
cp mdview.1 bin/darwin-arm64/
tar czvf mdview-$(VERSION)-darwin-arm64.tar.gz --transform s/darwin-arm64/mdview-$(VERSION)/ -C bin darwin-arm64
tar czvf mdview-$(VERSION_SAFE)-darwin-arm64.tar.gz --transform s/darwin-arm64/mdview-$(VERSION_SAFE)/ -C bin darwin-arm64

bin/freebsd-amd64/mdview:
env GOOS=freebsd GOARCH=amd64 go build -buildvcs=false -ldflags "-X main.appVersion=$(VERSION)" -o ./bin/freebsd-amd64/mdview
cp mdview.1 bin/freebsd-amd64/mdview
tar czvf mdview-$(VERSION)-freebsd-amd64.tar.gz --transform s/freebsd-amd64/mdview-$(VERSION)/ -C bin freebsd-amd64
tar czvf mdview-$(VERSION_SAFE)-freebsd-amd64.tar.gz --transform s/freebsd-amd64/mdview-$(VERSION_SAFE)/ -C bin freebsd-amd64

clean:
rm -rf bin
Expand Down
34 changes: 24 additions & 10 deletions build-rpm.sh
Original file line number Diff line number Diff line change
Expand Up @@ -36,19 +36,33 @@ EOF
}

check_dependencies() {
local deps=("rpm-build" "go" "pandoc" "make" "git")
local missing=()

for dep in "${deps[@]}"; do
if ! command -v "$dep" &> /dev/null; then
missing+=("$dep")
# Command name -> Package name mapping for Fedora
declare -A deps=(
["rpmbuild"]="rpm-build"
["go"]="golang"
["pandoc"]="pandoc"
["make"]="make"
["git"]="git"
)
local missing_cmds=()
local missing_pkgs=()

for cmd in "${!deps[@]}"; do
if ! command -v "$cmd" &> /dev/null; then
missing_cmds+=("$cmd")
missing_pkgs+=("${deps[$cmd]}")
fi
done

if [ ${#missing[@]} -ne 0 ]; then
echo -e "${RED}Error: Missing dependencies: ${missing[*]}${NC}"
echo -e "${YELLOW}Install on Fedora:${NC}"
echo " sudo dnf install -y rpm-build golang pandoc make git"
if [ ${#missing_cmds[@]} -ne 0 ]; then
echo -e "${RED}Error: Missing required commands: ${missing_cmds[*]}${NC}"
echo
echo -e "${YELLOW}These commands are required but not found in your PATH.${NC}"
echo
echo -e "${YELLOW}To install on Fedora:${NC}"
echo " sudo dnf install -y ${missing_pkgs[*]}"
echo
echo -e "${YELLOW}If packages are already installed, ensure the commands are in your PATH.${NC}"
exit 1
fi
}
Expand Down