This commit is contained in:
parent
f4f41e5d03
commit
316939064d
298
CHANGELOG.md
298
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
|
||||
```
|
||||
|
||||
@ -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([
|
||||
|
||||
Loading…
Reference in New Issue
Block a user