diff --git a/CHANGELOG.md b/CHANGELOG.md index 1cd9002..4d9b8ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,158 +10,154 @@ 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?: +hmm nao esta a pegar a versao, e o .gitigore tb tem que ser ajustado: ``` -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. -# =========================== -# 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" +Drive current: -outdev 'stdio:/home/neo/Público/nfdos/dist/nfdos-NEO_VERSION.iso' +Media current: stdio file, overwriteable +Media status : is blank +Media summary: 0 sessions, 0 data blocks, 0 data, 216g free +Added to ISO image: directory '/'='/tmp/grub.XoeA7X' +xorriso : UPDATE : 602 files added in 1 seconds +Added to ISO image: directory '/'='/home/neo/Público/nfdos/dist/iso' +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. -# =========================== -# 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)" +[✔] ISO criada em /home/neo/Público/nfdos/dist/nfdos-NEO_VERSION.iso +[TAR] Empacotando código-fonte... +mkdir -p /home/neo/Público/nfdos/dist +cd . && tar \ + --exclude="nfdos-NEO_VERSION-src.tar.gz" \ + --exclude="/home/neo/Público/nfdos/dist" \ + --exclude="/home/neo/Público/nfdos/build" \ + --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 /home/neo/Público/nfdos/dist/nfdos-NEO_VERSION-src.tar.gz . +[✔] 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: +dist +hint: Use -f if you really want to add them. +hint: Turn this message off by running +hint: "git config advice.addIgnoredFile false" +make: *** [Makefile:874: release] Erro 1 +``` +nfdos/configure.ac +``` +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]) + +# Diretórios base (para substituição automática) +AC_SUBST([BUILD_DIR], [$PWD/build]) +AC_SUBST([DIST_DIR], [$PWD/dist]) +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]) + +# =========================== +# Versão dinâmica (Git) +# =========================== +m4_define([NEO_VERSION], + m4_esyscmd_s([git describe --tags --always --dirty 2>/dev/null || echo "0.1-dev"])) +AC_SUBST([NEO_VERSION]) + +AC_CONFIG_FILES([ + Makefile + src/Makefile +]) + +AC_OUTPUT +``` +nfdos/.gitignore +``` +# === Autotools build artefacts === +Makefile +Makefile.in +aclocal.m4 +autom4te.cache/ +config.log +config.status +configure +depcomp +install-sh +missing +py-compile +stamp-h1 + +# === Build & dist directories === +/build/ +/dist/ +!/dist/releases/ +!/dist/releases/* +cpython/ +busybox/ +linux/ +x-tools/ +*.tar.gz +*.tar.bz2 +*.zip +*.iso +*.img +*.cpio.gz + +# === 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 ``` diff --git a/configure.ac b/configure.ac index 7dc1b7b..67ab48a 100644 --- a/configure.ac +++ b/configure.ac @@ -13,7 +13,7 @@ AC_SUBST([SRC_TAR], [$PWD/dist/nfdos-${PACKAGE_VERSION}-src.tar.gz]) # Versão dinâmica (Git) # =========================== 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_CONFIG_FILES([