Skip to content

Commit

Permalink
feat!: Add run and dev libcmt packages
Browse files Browse the repository at this point in the history
  • Loading branch information
mpolitzer committed Jun 4, 2024
1 parent 194a7df commit 3b19b6c
Show file tree
Hide file tree
Showing 8 changed files with 80 additions and 51 deletions.
16 changes: 7 additions & 9 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ jobs:
- name: Build rootfs
run: make fs

- name: Build [${{ env.TOOLS_LIBCMT }}]
- name: Build libcmt
id: docker_build_libcmt
uses: docker/build-push-action@v5
with:
Expand All @@ -86,13 +86,11 @@ jobs:
push: false
load: true
target: libcmt-debian-packager
build-args: |
TOOLS_LIBCMT=${{ env.TOOLS_LIBCMT }}
cache-from: type=gha,scope=regular,mode=max
cache-to: type=gha,scope=regular

- name: Retrieve artifacts
run: make copy-libcmt
- name: Retrieve libcmt debian files
run: make copy-libcmt-deb DESTDIR=libcmt-deb

- name: Upload artifacts
uses: actions/upload-artifact@v4
Expand All @@ -101,14 +99,14 @@ jobs:
path: |
${{ env.TOOLS_DEB }}
${{ env.TOOLS_ROOTFS }}
${{ env.TOOLS_LIBCMT }}
libcmt-deb/*
- name: Checksum artifacts
if: startsWith(github.ref, 'refs/tags/v')
run: |
sha512sum ${{ env.TOOLS_DEB }} > ${{ env.TOOLS_DEB }}.sha512
sha512sum ${{ env.TOOLS_ROOTFS }} > ${{ env.TOOLS_ROOTFS }}.sha512
sha512sum ${{ env.TOOLS_LIBCMT }} > ${{ env.TOOLS_LIBCMT }}.sha512
sha512sum libcmt-deb/* > libcmt-deb.sha512
- uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/v')
Expand All @@ -119,8 +117,8 @@ jobs:
${{ env.TOOLS_DEB }}.sha512
${{ env.TOOLS_ROOTFS }}
${{ env.TOOLS_ROOTFS }}.sha512
${{ env.TOOLS_LIBCMT }}
${{ env.TOOLS_LIBCMT }}.sha512
libcmt-deb/*
libcmt-deb.sha512
test:
runs-on: ubuntu-latest-8-cores
Expand Down
43 changes: 37 additions & 6 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -76,20 +76,51 @@ ARG BUILD_BASE=/opt/cartesi
USER developer
RUN make -C ${CMT_BASE} -j$(nproc) libcmt
USER root
RUN make -C ${BUILD_BASE}/tools/sys-utils/libcmt/ -j$(nproc) install TARGET_PREFIX=/usr/riscv64-linux-gnu
RUN make -C ${BUILD_BASE}/tools/sys-utils/libcmt/ -j$(nproc) install-dev TARGET_PREFIX=/usr/riscv64-linux-gnu
USER developer
RUN make -C ${BUILD_BASE}/tools/sys-utils/ -j$(nproc) all

# build libcmt debian package
# build libcmt and libcmt-dev debian packages
# ------------------------------------------------------------------------------
FROM c-builder as libcmt-debian-packager
ARG CMT_BASE=${BUILD_BASE}/tools/sys-utils/libcmt
ARG TOOLS_LIBCMT=libcmt.deb
USER root
RUN make -C ${CMT_BASE} debian-package \
TARGET_DESTDIR=${BUILD_BASE}/_install \

# cross,dev
RUN make -C ${CMT_BASE} install-dev debian-package \
TARGET_DESTDIR=${BUILD_BASE}/_install/cross.dev \
TARGET_PREFIX=/usr/riscv64-linux-gnu \
LIBCMT_DEB_FILENAME=${BUILD_BASE}/${TOOLS_LIBCMT}
LIBCMT_DEB_FILENAME=${BUILD_BASE}/libcmt/deb/libcmt-dev-riscv64-cross.deb \
ARG_PACKAGE=libcmt-dev-riscv64-cross \
ARG_VERSION=0.1.0 \
ARG_ARCHITECTURE=all \
ARG_SECTION=devel \
ARG_PROVIDES=libcmt-dev-riscv64-cross \
ARG_DESCRIPTION="Libcmt cross development headers and libraries"

# native,dev
RUN make -C ${CMT_BASE} install-dev debian-package \
TARGET_DESTDIR=${BUILD_BASE}/_install/native.dev \
TARGET_PREFIX=/usr \
LIBCMT_DEB_FILENAME=${BUILD_BASE}/libcmt/deb/libcmt-dev.deb \
ARG_PACKAGE=libcmt-dev \
ARG_VERSION=0.1.0 \
ARG_ARCHITECTURE=riscv64 \
ARG_SECTION=devel \
ARG_PROVIDES=libcmt-dev \
ARG_DESCRIPTION="Libcmt development headers and libraries"

# native,run
RUN make -C ${CMT_BASE} install-dev debian-package \
TARGET_DESTDIR=${BUILD_BASE}/_install/native.run \
TARGET_PREFIX=/usr \
LIBCMT_DEB_FILENAME=${BUILD_BASE}/libcmt/deb/libcmt.deb \
ARG_PACKAGE=libcmt \
ARG_VERSION=0.1.0 \
ARG_ARCHITECTURE=riscv64 \
ARG_SECTION=libs \
ARG_PROVIDES=libcmt \
ARG_DESCRIPTION="Libcmt runtime libraries"

# build rust tools
# ------------------------------------------------------------------------------
Expand Down
17 changes: 7 additions & 10 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,9 @@ PATCH := 0
LABEL :=
VERSION := $(MAJOR).$(MINOR).$(PATCH)$(LABEL)

TOOLS_DEB := machine-emulator-tools-v$(VERSION).deb
TOOLS_IMAGE := cartesi/machine-emulator-tools:$(VERSION)
TOOLS_ROOTFS := rootfs-tools-v$(VERSION).ext2
TOOLS_LIBCMT := libcmt-v$(VERSION)-dev.deb
TOOLS_DEB := machine-emulator-tools-v$(VERSION).deb
TOOLS_IMAGE := cartesi/machine-emulator-tools:$(VERSION)
TOOLS_ROOTFS := rootfs-tools-v$(VERSION).ext2

IMAGE_KERNEL_VERSION ?= v0.20.0
LINUX_VERSION ?= 6.5.13-ctsi-1
Expand Down Expand Up @@ -63,25 +62,23 @@ $(TOOLS_ROOTFS) fs: $(TOOLS_DEB)
xgenext2fs -fzB 4096 -b 25600 -i 4096 -a rootfs.tar -L rootfs $(TOOLS_ROOTFS) && \
rm -f rootfs.tar

$(TOOLS_LIBCMT) libcmt:
libcmt:
@docker buildx build --load \
--target libcmt-debian-packager \
--build-arg TOOLS_LIBCMT=$(TOOLS_LIBCMT) \
-t $(TOOLS_IMAGE)-libcmt \
-f Dockerfile \
.
$(MAKE) copy-libcmt
$(MAKE) copy-libcmt-deb

copy-libcmt:
copy-libcmt-deb:
@ID=`docker create $(TOOLS_IMAGE)-libcmt` && \
docker cp $$ID:/opt/cartesi/$(TOOLS_LIBCMT) . && \
docker cp $$ID:/opt/cartesi/libcmt/deb $(DESTDIR) && \
docker rm $$ID

env:
@echo TOOLS_DEB=$(TOOLS_DEB)
@echo TOOLS_ROOTFS=$(TOOLS_ROOTFS)
@echo TOOLS_IMAGE=$(TOOLS_IMAGE)
@echo TOOLS_LIBCMT=$(TOOLS_LIBCMT)
@echo IMAGE_KERNEL_VERSION=$(IMAGE_KERNEL_VERSION)
@echo LINUX_VERSION=$(LINUX_VERSION)
@echo LINUX_HEADERS_URLPATH=$(LINUX_HEADERS_URLPATH)
Expand Down
27 changes: 20 additions & 7 deletions sys-utils/libcmt/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -81,18 +81,31 @@ $(libcmt_SO): $(libcmt_OBJ)
$(TARGET_CC) -shared -o $@ $^

libcmt: $(libcmt_LIB) $(libcmt_SO)
install: $(libcmt_LIB) $(libcmt_SO) build/ffi.h
install: $(libcmt_SO)
mkdir -p $(TARGET_DESTDIR)$(TARGET_PREFIX)/lib
cp -f $(libcmt_LIB) $(libcmt_SO) $(TARGET_DESTDIR)$(TARGET_PREFIX)/lib
cp -f $(libcmt_SO) $(TARGET_DESTDIR)$(TARGET_PREFIX)/lib

install-dev: install $(libcmt_LIB) $(libcmt_SO) build/ffi.h
mkdir -p $(TARGET_DESTDIR)$(TARGET_PREFIX)/lib
cp -f $(libcmt_SO) $(libcmt_LIB) $(TARGET_DESTDIR)$(TARGET_PREFIX)/lib
mkdir -p $(TARGET_DESTDIR)$(TARGET_PREFIX)/include/libcmt/
cp -f include/libcmt/*.h $(TARGET_DESTDIR)$(TARGET_PREFIX)/include/libcmt/
cp -f build/ffi.h $(TARGET_DESTDIR)$(TARGET_PREFIX)/include/libcmt/
mkdir -p $(TARGET_DESTDIR)$(TARGET_PREFIX)/lib/pkgconfig
sed -e 's|@ARG_PREFIX@|$(TARGET_PREFIX)|g' src/libcmt.pc > $(TARGET_DESTDIR)$(TARGET_PREFIX)/lib/pkgconfig/libcmt.pc

debian-package: install
mkdir -p $(TARGET_DESTDIR)/DEBIAN
sed 's|ARG_VERSION|$(LIBCMT_VERSION)|g;' tools/template/cross-control.template > $(TARGET_DESTDIR)/DEBIAN/control
sed -e 's|@PREFIX@|$(TARGET_PREFIX)|g' \
src/libcmt.pc > $(TARGET_DESTDIR)$(TARGET_PREFIX)/lib/pkgconfig/libcmt.pc

$(TARGET_DESTDIR)/DEBIAN/%: tools/control.in
mkdir -p $(@D)
sed -e 's|@PACKAGE@|$(ARG_PACKAGE)|' \
-e 's|@VERSION@|$(ARG_VERSION)|' \
-e 's|@ARCHITECTURE@|$(ARG_ARCHITECTURE)|' \
-e 's|@PROVIDES@|$(ARG_PROVIDES)|' \
-e 's|@DESCRIPTION@|$(ARG_DESCRIPTION)|' \
$< > $@

debian-package: $(TARGET_DESTDIR)/DEBIAN/control
mkdir -p $(dir $(LIBCMT_DEB_FILENAME))
dpkg-deb -Zxz --root-owner-group --build $(TARGET_DESTDIR) $(LIBCMT_DEB_FILENAME)

#-------------------------------------------------------------------------------
Expand Down
2 changes: 1 addition & 1 deletion sys-utils/libcmt/src/libcmt.pc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
prefix=@ARG_PREFIX@
prefix=@PREFIX@
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${exec_prefix}/lib
Expand Down
10 changes: 0 additions & 10 deletions sys-utils/libcmt/src/libcmt_mock.pc

This file was deleted.

8 changes: 8 additions & 0 deletions sys-utils/libcmt/tools/control.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
Package: @PACKAGE@
Version: @VERSION@
Architecture: @ARCHITECTURE@
Priority: optional
Section: libs
Maintainer: Machine Reference Unit <https://discord.com/channels/600597137524391947/1107965671976992878>
Provides: @PROVIDES@
Description: @DESCRIPTION@
8 changes: 0 additions & 8 deletions sys-utils/libcmt/tools/template/cross-control.template

This file was deleted.

0 comments on commit 3b19b6c

Please sign in to comment.