Some checks are pending
Build NFDOS ISO / build (push) Waiting to run
5.5 KiB
5.5 KiB
grep -n "^[ ]+" /home/neo/Público/nfdos/src/Makefile.am grep -n "^[ ]+" /home/neo/Público/nfdos/configure.ac file Makefile.am file src/Makefile.am file configure.ac cat -A Makefile.am | grep '^I' cat -A src/Makefile.am | grep '^I' cat -A configure.ac | grep '^I' nl -ba Makefile | sed -n '770,790p' grep -n "^[ ]" Makefile | head
"Só deixo duas sugestões cosméticas/futuras: Substituir $(shell date +%F_%H-%M) por $(GIT_VER) (tal como no neoricalex), quando o campo de versão dinâmica estiver ativo. Adicionar uma verificação simples no início de make release para abortar se git status tiver ficheiros não commitados (só para evitar builds “dirty”)."
boa. como sugeres o ajuste?:
SUBDIRS = src
# ===========================
# Configurações de Git
# ===========================
GIT_USER ?= "neo.webmaster.2@gmail.com"
GIT_EMAIL ?= "neo.webmaster.2@gmail.com"
GIT_REMOTE ?= "origin"
GIT_BRANCH ?= "main"
COMMIT_MSG ?= "Auto-commit via make git"
# ===========================
# Caminhos e artefactos
# ===========================
DIST_DIR ?= $(top_builddir)/dist
BUILD_DIR ?= $(top_builddir)/build
ISO_DIR ?= $(DIST_DIR)/iso/boot/grub
ISO_FILE ?= $(DIST_DIR)/nfdos-0.1.iso
SRC_TAR ?= $(DIST_DIR)/nfdos-0.1-src.tar.gz
KERNEL = $(top_builddir)/src/_nfdos/kernel/linux/arch/x86/boot/bzImage
INITRAMFS = $(top_builddir)/src/_nfdos/initramfs.cpio.gz
.PHONY: iso qemu tarball git release clean-local check-remote
# ===========================
# Criação da ISO
# ===========================
iso: $(ISO_FILE)
$(ISO_FILE):
@echo "[ISO] Criando estrutura de diretórios..."
mkdir -p $(DIST_DIR)/iso/boot
mkdir -p $(ISO_DIR)
@echo "[ISO] Copiando Kernel e Initramfs..."
cp $(KERNEL) $(DIST_DIR)/iso/boot/
cp $(INITRAMFS) $(DIST_DIR)/iso/boot/
@echo "[ISO] Gerando grub.cfg..."
@printf "set timeout=3\nset default=0\n\nmenuentry 'NFDOS Linux' {\n\tlinux /boot/bzImage console=ttyS0 root=/dev/ram0 loglevel=8\n\tinitrd /boot/initramfs.cpio.gz\n}\n" > $(ISO_DIR)/grub.cfg
@echo "[ISO] Gerando imagem ISO..."
grub-mkrescue -o $(ISO_FILE) $(DIST_DIR)/iso --compress=xz -V NFDOS
@echo "[✔] ISO criada em $(ISO_FILE)"
# ===========================
# Teste no QEMU
# ===========================
qemu: $(ISO_FILE)
@echo "[QEMU] Iniciando NFDOS ISO..."
qemu-system-x86_64 -cdrom $(ISO_FILE) -m 1024 -nographic -serial mon:stdio -no-reboot
# ===========================
# Empacotamento do código-fonte
# ===========================
tarball: $(SRC_TAR)
$(SRC_TAR):
@echo "[TAR] Empacotando código-fonte..."
mkdir -p $(DIST_DIR)
cd $(top_srcdir) && tar \
--exclude="$(notdir $(SRC_TAR))" \
--exclude="$(DIST_DIR)" \
--exclude="$(BUILD_DIR)" \
--exclude='*/__pycache__' \
--exclude='*/.venv' \
--exclude='*/venv' \
--exclude='*.pyc' \
--exclude='*.pyo' \
--exclude='*.o' \
--exclude='*.a' \
--exclude='*.so' \
--exclude='*.iso' \
--exclude='*.img' \
--exclude='*.cpio*' \
--exclude='*/linux' \
--exclude='*/busybox' \
--exclude='*/cpython' \
-czf $(SRC_TAR) .
@echo "[✔] Tarball gerado em $(SRC_TAR)"
# ===========================
# Git (commit + push)
# ===========================
git: check-remote
@echo "📦 Commit automático → Gitea"
@git config user.name $(GIT_USER)
@git config user.email $(GIT_EMAIL)
@git rev-parse --abbrev-ref HEAD >/dev/null 2>&1 || true
@git add -A
@git commit -m "$$(echo '$(COMMIT_MSG)')" || echo "Nenhuma modificação para commitar."
@git push $(GIT_REMOTE) $(GIT_BRANCH)
# ===========================
# Git Remote (HTTPS → SSH Auto-Fix)
# ===========================
check-remote:
@REMOTE_URL=$$(git remote get-url $(GIT_REMOTE)); \
if echo $$REMOTE_URL | grep -q '^https://gitea\.neoricalex\.com'; then \
echo "⚠️ Repositório configurado com HTTPS:"; \
echo " $$REMOTE_URL"; \
echo "🔄 Convertendo para SSH (porta 2222)..."; \
SSH_URL=$$(echo $$REMOTE_URL | sed -E 's|https://gitea\.neoricalex\.com[:/]+|ssh://git@gitea.neoricalex.com:2222/|'); \
git remote set-url $(GIT_REMOTE) $$SSH_URL; \
echo "✅ Remote atualizado para:"; \
git remote -v; \
else \
echo "✅ Remote SSH já configurado:"; \
git remote -v | grep $(GIT_REMOTE); \
fi; \
echo "🔍 Testando conectividade SSH com Gitea..."; \
if ssh -T git@gitea.neoricalex.com -p 2222 2>&1 | grep -q "successfully authenticated"; then \
echo "✅ Conexão SSH funcional com Gitea."; \
else \
echo "❌ Falha na autenticação SSH com Gitea."; \
echo " Verifique a chave em ~/.ssh/id_ed25519.pub e nas SSH Keys do Gitea."; \
exit 1; \
fi
# ===========================
# Release (ISO + Tarball)
# ===========================
release: iso tarball
@echo "🚀 Publicando build em dist/releases"
@mkdir -p $(DIST_DIR)/releases
@if ls $(DIST_DIR)/nfdos-*.iso >/dev/null 2>&1; then \
cp $(DIST_DIR)/nfdos-*.iso $(DIST_DIR)/releases/; \
else \
echo "⚠️ Nenhuma ISO encontrada. Execute 'make iso' primeiro."; \
fi
@if ls $(DIST_DIR)/nfdos-*.tar.gz >/dev/null 2>&1; then \
cp $(DIST_DIR)/nfdos-*.tar.gz $(DIST_DIR)/releases/; \
else \
echo "⚠️ Nenhum tarball encontrado. Execute 'make tarball' primeiro."; \
fi
@git add $(DIST_DIR)/releases/
@git commit -m "Build automático: release $(shell date +%F_%H-%M)" || echo "Nenhum ficheiro novo para commitar."
@git push origin main
# ===========================
# Limpeza
# ===========================
clean-local:
@echo "[CLEAN] Removendo diretórios temporários..."
rm -rf $(BUILD_DIR)
find $(DIST_DIR) -type f ! -path "$(DIST_DIR)/releases/*" -delete
@echo "[✔] Limpeza concluída (releases preservadas)"