"Auto-commit via make git"
Some checks are pending
Build NFDOS ISO / build (push) Waiting to run

This commit is contained in:
neo.webmaster.2@gmail.com 2025-11-11 05:35:04 +01:00
parent f4f41e5d03
commit 316939064d
2 changed files with 148 additions and 152 deletions

View File

@ -10,77 +10,40 @@ nl -ba Makefile | sed -n '770,790p'
grep -n "^[ ]" Makefile | head grep -n "^[ ]" Makefile | head
"Só deixo duas sugestões cosméticas/futuras: hmm nao esta a pegar a versao, e o .gitigore tb tem que ser ajustado:
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 make release
[ISO] Criando estrutura de diretórios...
mkdir -p /home/neo/Público/nfdos/dist/iso/boot
mkdir -p /home/neo/Público/nfdos/dist/iso/boot/grub
[ISO] Copiando Kernel e Initramfs...
cp ./src/_nfdos/kernel/linux/arch/x86/boot/bzImage /home/neo/Público/nfdos/dist/iso/boot/
cp ./src/_nfdos/initramfs.cpio.gz /home/neo/Público/nfdos/dist/iso/boot/
[ISO] Gerando grub.cfg...
[ISO] Gerando imagem ISO...
grub-mkrescue -o /home/neo/Público/nfdos/dist/nfdos-NEO_VERSION.iso /home/neo/Público/nfdos/dist/iso --compress=xz -V NFDOS
xorriso 1.5.6 : RockRidge filesystem manipulator, libburnia project.
# =========================== Drive current: -outdev 'stdio:/home/neo/Público/nfdos/dist/nfdos-NEO_VERSION.iso'
# Configurações de Git Media current: stdio file, overwriteable
# =========================== Media status : is blank
GIT_USER ?= "neo.webmaster.2@gmail.com" Media summary: 0 sessions, 0 data blocks, 0 data, 216g free
GIT_EMAIL ?= "neo.webmaster.2@gmail.com" Added to ISO image: directory '/'='/tmp/grub.XoeA7X'
GIT_REMOTE ?= "origin" xorriso : UPDATE : 602 files added in 1 seconds
GIT_BRANCH ?= "main" Added to ISO image: directory '/'='/home/neo/Público/nfdos/dist/iso'
COMMIT_MSG ?= "Auto-commit via make git" xorriso : UPDATE : 607 files added in 1 seconds
xorriso : NOTE : Copying to System Area: 512 bytes from file '/usr/lib/grub/i386-pc/boot_hybrid.img'
ISO image produced: 15592 sectors
Written to medium : 15592 sectors at LBA 0
Writing to 'stdio:/home/neo/Público/nfdos/dist/nfdos-NEO_VERSION.iso' completed successfully.
# =========================== [✔] ISO criada em /home/neo/Público/nfdos/dist/nfdos-NEO_VERSION.iso
# Caminhos e artefactos [TAR] Empacotando código-fonte...
# =========================== mkdir -p /home/neo/Público/nfdos/dist
DIST_DIR ?= $(top_builddir)/dist cd . && tar \
BUILD_DIR ?= $(top_builddir)/build --exclude="nfdos-NEO_VERSION-src.tar.gz" \
ISO_DIR ?= $(DIST_DIR)/iso/boot/grub --exclude="/home/neo/Público/nfdos/dist" \
ISO_FILE ?= $(DIST_DIR)/nfdos-0.1.iso --exclude="/home/neo/Público/nfdos/build" \
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='*/__pycache__' \
--exclude='*/.venv' \ --exclude='*/.venv' \
--exclude='*/venv' \ --exclude='*/venv' \
@ -95,73 +58,106 @@ $(SRC_TAR):
--exclude='*/linux' \ --exclude='*/linux' \
--exclude='*/busybox' \ --exclude='*/busybox' \
--exclude='*/cpython' \ --exclude='*/cpython' \
-czf $(SRC_TAR) . -czf /home/neo/Público/nfdos/dist/nfdos-NEO_VERSION-src.tar.gz .
@echo "[✔] Tarball gerado em $(SRC_TAR)" [✔] Tarball gerado em /home/neo/Público/nfdos/dist/nfdos-NEO_VERSION-src.tar.gz
🚀 Publicando build em dist/releases (versão: f4f41e5)
# =========================== Os caminhos a seguir são ignorados por um dos seus arquivos .gitignore:
# Git (commit + push) dist
# =========================== hint: Use -f if you really want to add them.
git: check-remote hint: Turn this message off by running
@echo "📦 Commit automático → Gitea" hint: "git config advice.addIgnoredFile false"
@git config user.name $(GIT_USER) make: *** [Makefile:874: release] Erro 1
@git config user.email $(GIT_EMAIL) ```
@git rev-parse --abbrev-ref HEAD >/dev/null 2>&1 || true nfdos/configure.ac
@git add -A ```
@git commit -m "$$(echo '$(COMMIT_MSG)')" || echo "Nenhuma modificação para commitar." AC_INIT([NFDOS], [NEO_VERSION], [https://gitea.neoricalex.com/neo/nfdos.git])
@git push $(GIT_REMOTE) $(GIT_BRANCH) AM_INIT_AUTOMAKE([foreign dist-bzip2 no-dist-gzip])
AM_PATH_PYTHON([2.5])
# ===========================
# Git Remote (HTTPS → SSH Auto-Fix) # Diretórios base (para substituição automática)
# =========================== AC_SUBST([BUILD_DIR], [$PWD/build])
check-remote: AC_SUBST([DIST_DIR], [$PWD/dist])
@REMOTE_URL=$$(git remote get-url $(GIT_REMOTE)); \ AC_SUBST([ISO_DIR], [$PWD/dist/iso/boot/grub])
if echo $$REMOTE_URL | grep -q '^https://gitea\.neoricalex\.com'; then \ AC_SUBST([ISO_FILE], [$PWD/dist/nfdos-${PACKAGE_VERSION}.iso])
echo "⚠️ Repositório configurado com HTTPS:"; \ AC_SUBST([SRC_TAR], [$PWD/dist/nfdos-${PACKAGE_VERSION}-src.tar.gz])
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/|'); \ # Versão dinâmica (Git)
git remote set-url $(GIT_REMOTE) $$SSH_URL; \ # ===========================
echo "✅ Remote atualizado para:"; \ m4_define([NEO_VERSION],
git remote -v; \ m4_esyscmd_s([git describe --tags --always --dirty 2>/dev/null || echo "0.1-dev"]))
else \ AC_SUBST([NEO_VERSION])
echo "✅ Remote SSH já configurado:"; \
git remote -v | grep $(GIT_REMOTE); \ AC_CONFIG_FILES([
fi; \ Makefile
echo "🔍 Testando conectividade SSH com Gitea..."; \ src/Makefile
if ssh -T git@gitea.neoricalex.com -p 2222 2>&1 | grep -q "successfully authenticated"; then \ ])
echo "✅ Conexão SSH funcional com Gitea."; \
else \ AC_OUTPUT
echo "❌ Falha na autenticação SSH com Gitea."; \ ```
echo " Verifique a chave em ~/.ssh/id_ed25519.pub e nas SSH Keys do Gitea."; \ nfdos/.gitignore
exit 1; \ ```
fi # === Autotools build artefacts ===
Makefile
# =========================== Makefile.in
# Release (ISO + Tarball) aclocal.m4
# =========================== autom4te.cache/
release: iso tarball config.log
@echo "🚀 Publicando build em dist/releases" config.status
@mkdir -p $(DIST_DIR)/releases configure
@if ls $(DIST_DIR)/nfdos-*.iso >/dev/null 2>&1; then \ depcomp
cp $(DIST_DIR)/nfdos-*.iso $(DIST_DIR)/releases/; \ install-sh
else \ missing
echo "⚠️ Nenhuma ISO encontrada. Execute 'make iso' primeiro."; \ py-compile
fi stamp-h1
@if ls $(DIST_DIR)/nfdos-*.tar.gz >/dev/null 2>&1; then \
cp $(DIST_DIR)/nfdos-*.tar.gz $(DIST_DIR)/releases/; \ # === Build & dist directories ===
else \ /build/
echo "⚠️ Nenhum tarball encontrado. Execute 'make tarball' primeiro."; \ /dist/
fi !/dist/releases/
@git add $(DIST_DIR)/releases/ !/dist/releases/*
@git commit -m "Build automático: release $(shell date +%F_%H-%M)" || echo "Nenhum ficheiro novo para commitar." cpython/
@git push origin main busybox/
linux/
# =========================== x-tools/
# Limpeza *.tar.gz
# =========================== *.tar.bz2
clean-local: *.zip
@echo "[CLEAN] Removendo diretórios temporários..." *.iso
rm -rf $(BUILD_DIR) *.img
find $(DIST_DIR) -type f ! -path "$(DIST_DIR)/releases/*" -delete *.cpio.gz
@echo "[✔] Limpeza concluída (releases preservadas)"
# === Python cache & venv ===
__pycache__/
*.pyc
*.pyo
*.pyd
*.egg-info/
.eggs/
venv/
.env/
.venv/
# === Editor / OS junk ===
*.swp
*.swo
*.bak
*.tmp
*~
.DS_Store
Thumbs.db
# === Logs ===
*.log
nohup.out
# === IDE / workspace ===
.vscode/
.idea/
*.iml
# === Backup copies ===
*.old
*.orig
*.rej
``` ```