Compare commits
6 Commits
3c100ccee8
...
v0.0.3
Author | SHA1 | Date | |
---|---|---|---|
a40b5dcd74 | |||
193b1926ff | |||
1c900c5a8c | |||
90fdcdd51a | |||
eb3f6823eb | |||
1534e10b75 |
@@ -32,7 +32,3 @@ repos:
|
|||||||
rev: 552baf822992936134cbd31a38f69c8cfe7c0f05 # frozen: 24.3.0
|
rev: 552baf822992936134cbd31a38f69c8cfe7c0f05 # frozen: 24.3.0
|
||||||
hooks:
|
hooks:
|
||||||
- id: black
|
- id: black
|
||||||
- repo: https://github.com/pre-commit/mirrors-prettier
|
|
||||||
rev: f12edd9c7be1c20cfa42420fd0e6df71e42b51ea # frozen: v4.0.0-alpha.8
|
|
||||||
hooks:
|
|
||||||
- id: prettier
|
|
||||||
|
@@ -8,6 +8,8 @@ project(
|
|||||||
LANGUAGES C CXX)
|
LANGUAGES C CXX)
|
||||||
set(CMAKE_CXX_STANDARD 20)
|
set(CMAKE_CXX_STANDARD 20)
|
||||||
|
|
||||||
|
file(WRITE ${CMAKE_BINARY_DIR}/version.txt ${PROJECT_VERSION})
|
||||||
|
|
||||||
include(CMakePushCheckState)
|
include(CMakePushCheckState)
|
||||||
include(CheckCXXCompilerFlag)
|
include(CheckCXXCompilerFlag)
|
||||||
include(CheckIncludeFileCXX)
|
include(CheckIncludeFileCXX)
|
||||||
@@ -128,7 +130,7 @@ endif()
|
|||||||
if(APPLE)
|
if(APPLE)
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
TARGET ${PROJECT_NAME}-static
|
TARGET ${PROJECT_NAME}-static
|
||||||
PRE_BUILD
|
PRE_LINK
|
||||||
COMMAND ${CMAKE_SOURCE_DIR}/privatize_symbols_macos.sh
|
COMMAND ${CMAKE_SOURCE_DIR}/privatize_symbols_macos.sh
|
||||||
$<TARGET_OBJECTS:${PROJECT_NAME}-object>)
|
$<TARGET_OBJECTS:${PROJECT_NAME}-object>)
|
||||||
else()
|
else()
|
||||||
@@ -333,6 +335,7 @@ endif()
|
|||||||
# packaging
|
# packaging
|
||||||
|
|
||||||
set(CPACK_PACKAGE_CONTACT andrew@weaselab.dev)
|
set(CPACK_PACKAGE_CONTACT andrew@weaselab.dev)
|
||||||
|
set(CMAKE_INSTALL_DEFAULT_COMPONENT_NAME all)
|
||||||
|
|
||||||
set(CPACK_PACKAGE_VENDOR "Weaselab")
|
set(CPACK_PACKAGE_VENDOR "Weaselab")
|
||||||
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
|
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
|
||||||
@@ -353,6 +356,19 @@ else()
|
|||||||
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.14)")
|
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.14)")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# macos
|
||||||
|
if(APPLE)
|
||||||
|
find_program(PANDOC_EXE pandoc)
|
||||||
|
if(PANDOC_EXE)
|
||||||
|
execute_process(COMMAND ${PANDOC_EXE} ${CMAKE_SOURCE_DIR}/README.md -o
|
||||||
|
${CMAKE_BINARY_DIR}/README.txt)
|
||||||
|
set(CPACK_RESOURCE_FILE_README ${CMAKE_BINARY_DIR}/README.txt)
|
||||||
|
endif()
|
||||||
|
configure_file(${CMAKE_SOURCE_DIR}/LICENSE ${CMAKE_BINARY_DIR}/LICENSE.txt
|
||||||
|
COPYONLY)
|
||||||
|
set(CPACK_RESOURCE_FILE_LICENSE ${CMAKE_BINARY_DIR}/LICENSE.txt)
|
||||||
|
endif()
|
||||||
|
|
||||||
include(CPack)
|
include(CPack)
|
||||||
|
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
@@ -377,8 +393,11 @@ install(
|
|||||||
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
|
|
||||||
install(DIRECTORY include/
|
install(DIRECTORY include/
|
||||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME})
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME})
|
||||||
|
|
||||||
install(EXPORT ${PROJECT_NAME}Config
|
install(EXPORT ${PROJECT_NAME}Config
|
||||||
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/cmake)
|
DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/${PROJECT_NAME}/cmake)
|
||||||
|
|
||||||
|
cpack_add_component(all)
|
||||||
|
@@ -2,10 +2,12 @@ import ctypes
|
|||||||
import enum
|
import enum
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
_lib = None
|
_lib = None
|
||||||
for f in (
|
for f in (
|
||||||
os.path.dirname(__file__) + "/build/radix_tree/libconflict-set.so.0",
|
os.path.dirname(__file__) + "/build/radix_tree/libconflict-set.so.0",
|
||||||
os.path.dirname(__file__) + "/build/radix_tree/libconflict-set.dylib.0",
|
os.path.dirname(__file__) + "/build/radix_tree/libconflict-set.0.dylib",
|
||||||
):
|
):
|
||||||
try:
|
try:
|
||||||
_lib = ctypes.cdll.LoadLibrary(f)
|
_lib = ctypes.cdll.LoadLibrary(f)
|
||||||
@@ -63,7 +65,7 @@ class Result(enum.Enum):
|
|||||||
TOO_OLD = 2
|
TOO_OLD = 2
|
||||||
|
|
||||||
|
|
||||||
def write(begin: bytes, end: bytes | None = None) -> WriteRange:
|
def write(begin: bytes, end: Optional[bytes] = None) -> WriteRange:
|
||||||
b = (ctypes.c_ubyte * len(begin))()
|
b = (ctypes.c_ubyte * len(begin))()
|
||||||
b.value = begin
|
b.value = begin
|
||||||
if end is None:
|
if end is None:
|
||||||
@@ -75,7 +77,7 @@ def write(begin: bytes, end: bytes | None = None) -> WriteRange:
|
|||||||
return WriteRange(_Key(b, len(b)), _Key(e, len(e)))
|
return WriteRange(_Key(b, len(b)), _Key(e, len(e)))
|
||||||
|
|
||||||
|
|
||||||
def read(version: int, begin: bytes, end: bytes = None) -> ReadRange:
|
def read(version: int, begin: bytes, end: Optional[bytes] = None) -> ReadRange:
|
||||||
b = (ctypes.c_ubyte * len(begin))()
|
b = (ctypes.c_ubyte * len(begin))()
|
||||||
b.value = begin
|
b.value = begin
|
||||||
if end is None:
|
if end is None:
|
||||||
|
33
package_macos.sh
Executable file
33
package_macos.sh
Executable file
@@ -0,0 +1,33 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -euxo pipefail
|
||||||
|
|
||||||
|
umask 022
|
||||||
|
|
||||||
|
SRC_DIR="${0%/*}"
|
||||||
|
BUILD_ARM="$(mktemp -d -t conflict-set-arm)"
|
||||||
|
BUILD_X86="$(mktemp -d -t conflict-set-x86)"
|
||||||
|
|
||||||
|
cmake_args=(-DCMAKE_CXX_FLAGS=-DNVALGRIND -DCPACK_PACKAGING_INSTALL_PREFIX=/usr/local)
|
||||||
|
|
||||||
|
cmake -S"$SRC_DIR" -B"$BUILD_ARM" -DCMAKE_OSX_ARCHITECTURES=arm64 "${cmake_args[@]}"
|
||||||
|
cmake --build "$BUILD_ARM" --target conflict-set --target conflict-set-static
|
||||||
|
|
||||||
|
cmake -S"$SRC_DIR" -B"$BUILD_X86" -DCMAKE_OSX_ARCHITECTURES=x86_64 "${cmake_args[@]}"
|
||||||
|
cmake --build "$BUILD_X86" --target conflict-set --target conflict-set-static
|
||||||
|
|
||||||
|
VERSION="$(cat "$BUILD_ARM/version.txt")"
|
||||||
|
|
||||||
|
lipo -create "$BUILD_ARM/radix_tree/libconflict-set.$VERSION.dylib" "$BUILD_X86/radix_tree/libconflict-set.$VERSION.dylib" -output "libconflict-set.$VERSION.dylib.tmp"
|
||||||
|
lipo -create "$BUILD_ARM"/libconflict-set-static.a "$BUILD_X86"/libconflict-set-static.a -output libconflict-set-static.a.tmp
|
||||||
|
|
||||||
|
mv "libconflict-set.$VERSION.dylib.tmp" "$BUILD_ARM/radix_tree/libconflict-set.$VERSION.dylib"
|
||||||
|
mv libconflict-set-static.a.tmp "$BUILD_ARM/libconflict-set-static.a"
|
||||||
|
|
||||||
|
pushd "$BUILD_ARM"
|
||||||
|
cpack -G productbuild
|
||||||
|
popd
|
||||||
|
|
||||||
|
mv "$BUILD_ARM/conflict-set-$VERSION-Darwin.pkg" .
|
||||||
|
|
||||||
|
rm -rf "$BUILD_ARM" "$BUILD_X86"
|
@@ -2,5 +2,7 @@
|
|||||||
|
|
||||||
# This has the effect of making visibility=hidden symbols private in object files
|
# This has the effect of making visibility=hidden symbols private in object files
|
||||||
for obj in "$@" ; do
|
for obj in "$@" ; do
|
||||||
ld -r "$obj" -o "$obj.tmp" && mv "$obj.tmp" "$obj"
|
ld -r "$obj" -o "$obj.tmp"
|
||||||
|
touch -r "$obj" "$obj.tmp"
|
||||||
|
mv "$obj.tmp" "$obj"
|
||||||
done
|
done
|
||||||
|
Reference in New Issue
Block a user