"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,158 +10,154 @@ 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 --exclude='*/__pycache__' \
--exclude='*/.venv' \
KERNEL = $(top_builddir)/src/_nfdos/kernel/linux/arch/x86/boot/bzImage --exclude='*/venv' \
INITRAMFS = $(top_builddir)/src/_nfdos/initramfs.cpio.gz --exclude='*.pyc' \
--exclude='*.pyo' \
.PHONY: iso qemu tarball git release clean-local check-remote --exclude='*.o' \
--exclude='*.a' \
# =========================== --exclude='*.so' \
# Criação da ISO --exclude='*.iso' \
# =========================== --exclude='*.img' \
iso: $(ISO_FILE) --exclude='*.cpio*' \
--exclude='*/linux' \
$(ISO_FILE): --exclude='*/busybox' \
@echo "[ISO] Criando estrutura de diretórios..." --exclude='*/cpython' \
mkdir -p $(DIST_DIR)/iso/boot -czf /home/neo/Público/nfdos/dist/nfdos-NEO_VERSION-src.tar.gz .
mkdir -p $(ISO_DIR) [✔] Tarball gerado em /home/neo/Público/nfdos/dist/nfdos-NEO_VERSION-src.tar.gz
🚀 Publicando build em dist/releases (versão: f4f41e5)
@echo "[ISO] Copiando Kernel e Initramfs..." Os caminhos a seguir são ignorados por um dos seus arquivos .gitignore:
cp $(KERNEL) $(DIST_DIR)/iso/boot/ dist
cp $(INITRAMFS) $(DIST_DIR)/iso/boot/ hint: Use -f if you really want to add them.
hint: Turn this message off by running
@echo "[ISO] Gerando grub.cfg..." hint: "git config advice.addIgnoredFile false"
@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 make: *** [Makefile:874: release] Erro 1
```
@echo "[ISO] Gerando imagem ISO..." nfdos/configure.ac
grub-mkrescue -o $(ISO_FILE) $(DIST_DIR)/iso --compress=xz -V NFDOS ```
@echo "[✔] ISO criada em $(ISO_FILE)" AC_INIT([NFDOS], [NEO_VERSION], [https://gitea.neoricalex.com/neo/nfdos.git])
AM_INIT_AUTOMAKE([foreign dist-bzip2 no-dist-gzip])
# =========================== AM_PATH_PYTHON([2.5])
# Teste no QEMU
# =========================== # Diretórios base (para substituição automática)
qemu: $(ISO_FILE) AC_SUBST([BUILD_DIR], [$PWD/build])
@echo "[QEMU] Iniciando NFDOS ISO..." AC_SUBST([DIST_DIR], [$PWD/dist])
qemu-system-x86_64 -cdrom $(ISO_FILE) -m 1024 -nographic -serial mon:stdio -no-reboot AC_SUBST([ISO_DIR], [$PWD/dist/iso/boot/grub])
AC_SUBST([ISO_FILE], [$PWD/dist/nfdos-${PACKAGE_VERSION}.iso])
# =========================== AC_SUBST([SRC_TAR], [$PWD/dist/nfdos-${PACKAGE_VERSION}-src.tar.gz])
# Empacotamento do código-fonte
# =========================== # ===========================
tarball: $(SRC_TAR) # Versão dinâmica (Git)
# ===========================
$(SRC_TAR): m4_define([NEO_VERSION],
@echo "[TAR] Empacotando código-fonte..." m4_esyscmd_s([git describe --tags --always --dirty 2>/dev/null || echo "0.1-dev"]))
mkdir -p $(DIST_DIR) AC_SUBST([NEO_VERSION])
cd $(top_srcdir) && tar \
--exclude="$(notdir $(SRC_TAR))" \ AC_CONFIG_FILES([
--exclude="$(DIST_DIR)" \ Makefile
--exclude="$(BUILD_DIR)" \ src/Makefile
--exclude='*/__pycache__' \ ])
--exclude='*/.venv' \
--exclude='*/venv' \ AC_OUTPUT
--exclude='*.pyc' \ ```
--exclude='*.pyo' \ nfdos/.gitignore
--exclude='*.o' \ ```
--exclude='*.a' \ # === Autotools build artefacts ===
--exclude='*.so' \ Makefile
--exclude='*.iso' \ Makefile.in
--exclude='*.img' \ aclocal.m4
--exclude='*.cpio*' \ autom4te.cache/
--exclude='*/linux' \ config.log
--exclude='*/busybox' \ config.status
--exclude='*/cpython' \ configure
-czf $(SRC_TAR) . depcomp
@echo "[✔] Tarball gerado em $(SRC_TAR)" install-sh
missing
# =========================== py-compile
# Git (commit + push) stamp-h1
# ===========================
git: check-remote # === Build & dist directories ===
@echo "📦 Commit automático → Gitea" /build/
@git config user.name $(GIT_USER) /dist/
@git config user.email $(GIT_EMAIL) !/dist/releases/
@git rev-parse --abbrev-ref HEAD >/dev/null 2>&1 || true !/dist/releases/*
@git add -A cpython/
@git commit -m "$$(echo '$(COMMIT_MSG)')" || echo "Nenhuma modificação para commitar." busybox/
@git push $(GIT_REMOTE) $(GIT_BRANCH) linux/
x-tools/
# =========================== *.tar.gz
# Git Remote (HTTPS → SSH Auto-Fix) *.tar.bz2
# =========================== *.zip
check-remote: *.iso
@REMOTE_URL=$$(git remote get-url $(GIT_REMOTE)); \ *.img
if echo $$REMOTE_URL | grep -q '^https://gitea\.neoricalex\.com'; then \ *.cpio.gz
echo "⚠️ Repositório configurado com HTTPS:"; \
echo " $$REMOTE_URL"; \ # === Python cache & venv ===
echo "🔄 Convertendo para SSH (porta 2222)..."; \ __pycache__/
SSH_URL=$$(echo $$REMOTE_URL | sed -E 's|https://gitea\.neoricalex\.com[:/]+|ssh://git@gitea.neoricalex.com:2222/|'); \ *.pyc
git remote set-url $(GIT_REMOTE) $$SSH_URL; \ *.pyo
echo "✅ Remote atualizado para:"; \ *.pyd
git remote -v; \ *.egg-info/
else \ .eggs/
echo "✅ Remote SSH já configurado:"; \ venv/
git remote -v | grep $(GIT_REMOTE); \ .env/
fi; \ .venv/
echo "🔍 Testando conectividade SSH com Gitea..."; \
if ssh -T git@gitea.neoricalex.com -p 2222 2>&1 | grep -q "successfully authenticated"; then \ # === Editor / OS junk ===
echo "✅ Conexão SSH funcional com Gitea."; \ *.swp
else \ *.swo
echo "❌ Falha na autenticação SSH com Gitea."; \ *.bak
echo " Verifique a chave em ~/.ssh/id_ed25519.pub e nas SSH Keys do Gitea."; \ *.tmp
exit 1; \ *~
fi .DS_Store
Thumbs.db
# ===========================
# Release (ISO + Tarball) # === Logs ===
# =========================== *.log
release: iso tarball nohup.out
@echo "🚀 Publicando build em dist/releases"
@mkdir -p $(DIST_DIR)/releases # === IDE / workspace ===
@if ls $(DIST_DIR)/nfdos-*.iso >/dev/null 2>&1; then \ .vscode/
cp $(DIST_DIR)/nfdos-*.iso $(DIST_DIR)/releases/; \ .idea/
else \ *.iml
echo "⚠️ Nenhuma ISO encontrada. Execute 'make iso' primeiro."; \
fi # === Backup copies ===
@if ls $(DIST_DIR)/nfdos-*.tar.gz >/dev/null 2>&1; then \ *.old
cp $(DIST_DIR)/nfdos-*.tar.gz $(DIST_DIR)/releases/; \ *.orig
else \ *.rej
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)"
``` ```

View File

@ -13,7 +13,7 @@ AC_SUBST([SRC_TAR], [$PWD/dist/nfdos-${PACKAGE_VERSION}-src.tar.gz])
# Versão dinâmica (Git) # Versão dinâmica (Git)
# =========================== # ===========================
m4_define([NEO_VERSION], m4_define([NEO_VERSION],
m4_esyscmd_s([git describe --tags --always --dirty 2>/dev/null || echo "0.1-dev"])) m4_esyscmd_s([git describe --tags --always --dirty 2>/dev/null || echo "0.1-dev"]))
AC_SUBST([NEO_VERSION]) AC_SUBST([NEO_VERSION])
AC_CONFIG_FILES([ AC_CONFIG_FILES([