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
|
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)"
|
|
||||||
```
|
```
|
||||||
|
|||||||
@ -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([
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user