add target to build deb and create repo

This commit is contained in:
gandc 2025-03-16 00:03:54 +03:00
parent bb0c66c70b
commit 27b09ad75d
Signed by: gandc
GPG Key ID: 9F77B03D43C42CB4

View File

@ -17,37 +17,82 @@ LIB_SRC = libmysyslog/libmysyslog.c
LIB_OBJ = $(BUILD_DIR)/libmysyslog.o
LIB_A = $(BUILD_DIR)/libmysyslog.a
.PHONY: all clean deb
# Переменные для deb-пакетов
version = 1.0
revision = 0
architecture = all
.PHONY: all clean deb repo
all: $(BUILD_DIR) $(LIB_A) $(TARGET_CLIENT) $(TARGET_SERVER)
$(BUILD_DIR):
mkdir -p $(BUILD_DIR)
# Компиляция объектного файла для myRPC-client
$(BUILD_DIR)/myRPC-client.o: myRPC-client.c | $(BUILD_DIR)
$(CC) $(CFLAGS) -c $< -o $@
# Компиляция объектного файла для myRPC-server
$(BUILD_DIR)/myRPC-server.o: myRPC-server.c | $(BUILD_DIR)
$(CC) $(CFLAGS) -c $< -o $@
# Компиляция объекта для libmysyslog
$(BUILD_DIR)/libmysyslog.o: $(LIB_SRC) | $(BUILD_DIR)
$(CC) $(CFLAGS) -fPIC -c $< -o $@
# Создание статической библиотеки libmysyslog.a
$(LIB_A): $(BUILD_DIR)/libmysyslog.o
ar rcs $@ $^
# Линковка myRPC-client
$(TARGET_CLIENT): $(OBJS_CLIENT)
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
# Линковка myRPC-server
$(TARGET_SERVER): $(OBJS_SERVER)
$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS)
###############################################################################
# Создание deb-пакетов
###############################################################################
# Цель deb собирает deb-пакеты для клиента и сервера, а затем очищает временные директории
deb: deb_client deb_server
@rm -rf MyRPC_client_$(version)-$(revision)_$(architecture)
@rm -rf MyRPC_server_$(version)-$(revision)_$(architecture)
# Создание deb-пакета для myRPC-client
deb_client:
@mkdir -p MyRPC_client_$(version)-$(revision)_$(architecture)/DEBIAN
@echo "Package: myrpc-client" > MyRPC_client_$(version)-$(revision)_$(architecture)/DEBIAN/control
@echo "Version: $(version)" >> MyRPC_client_$(version)-$(revision)_$(architecture)/DEBIAN/control
@echo "Architecture: $(architecture)" >> MyRPC_client_$(version)-$(revision)_$(architecture)/DEBIAN/control
@echo "Maintainer: gandc <admin@gandc.ru>" >> MyRPC_client_$(version)-$(revision)_$(architecture)/DEBIAN/control
@echo "Description: Client for remote command execution via myRPC" >> MyRPC_client_$(version)-$(revision)_$(architecture)/DEBIAN/control
@mkdir -p MyRPC_client_$(version)-$(revision)_$(architecture)/usr/local/bin
@cp $(TARGET_CLIENT) MyRPC_client_$(version)-$(revision)_$(architecture)/usr/local/bin
@dpkg-deb --root-owner-group --build MyRPC_client_$(version)-$(revision)_$(architecture)
# Создание deb-пакета для myRPC-server
deb_server:
@mkdir -p MyRPC_server_$(version)-$(revision)_$(architecture)/DEBIAN
@echo "Package: myrpc-server" > MyRPC_server_$(version)-$(revision)_$(architecture)/DEBIAN/control
@echo "Version: $(version)" >> MyRPC_server_$(version)-$(revision)_$(architecture)/DEBIAN/control
@echo "Architecture: $(architecture)" >> MyRPC_server_$(version)-$(revision)_$(architecture)/DEBIAN/control
@echo "Maintainer: gandc <admin@gandc.ru>" >> MyRPC_server_$(version)-$(revision)_$(architecture)/DEBIAN/control
@echo "Description: Server for remote command execution via myRPC" >> MyRPC_server_$(version)-$(revision)_$(architecture)/DEBIAN/control
@mkdir -p MyRPC_server_$(version)-$(revision)_$(architecture)/usr/local/bin
@cp $(TARGET_SERVER) MyRPC_server_$(version)-$(revision)_$(architecture)/usr/local/bin
@dpkg-deb --root-owner-group --build MyRPC_server_$(version)-$(revision)_$(architecture)
###############################################################################
# Создание локального репозитория APT
###############################################################################
repo:
@mkdir -p /usr/local/repos
@cp *.deb /usr/local/repos
@cd /usr/local/repos && dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
@echo "deb [trusted=yes] file:/usr/local/repos ./" | sudo tee /etc/apt/sources.list.d/myrpc.list
@sudo apt-get update
###############################################################################
# Очистка временных файлов
###############################################################################
clean:
rm -rf $(BUILD_DIR)
rm -f *.deb