@@ -11,7 +11,7 @@ assignees: '' | |||||
A clear description of what the bug is. | A clear description of what the bug is. | ||||
**To Reproduce** | **To Reproduce** | ||||
Steps to reproduce the behaviour. | |||||
Steps to reproduce the behavior. | |||||
**Expected behaviour** | **Expected behaviour** | ||||
A clear description of what you expected to happen. | A clear description of what you expected to happen. | ||||
@@ -21,4 +21,3 @@ A link to the audio that caused the problem. | |||||
**Build information** | **Build information** | ||||
The commit of aptdec you are running (check with `git rev-parse HEAD`), make sure it's up to date before opening this issue. | The commit of aptdec you are running (check with `git rev-parse HEAD`), make sure it's up to date before opening this issue. | ||||
And whether you are using GNU automake or CMake. |
@@ -10,9 +10,6 @@ on: | |||||
paths-ignore: | paths-ignore: | ||||
- '**.md' | - '**.md' | ||||
env: | |||||
BUILD_TYPE: Release | |||||
jobs: | jobs: | ||||
build_linux: | build_linux: | ||||
runs-on: ubuntu-latest | runs-on: ubuntu-latest | ||||
@@ -23,35 +20,25 @@ jobs: | |||||
submodules: 'recursive' | submodules: 'recursive' | ||||
- name: Install dependencies | - name: Install dependencies | ||||
# The user does not run as root | |||||
run: sudo apt-get install cmake git gcc libsndfile-dev libpng-dev | run: sudo apt-get install cmake git gcc libsndfile-dev libpng-dev | ||||
- name: Create Build Environment | |||||
# Some projects don't allow in-source building, so create a separate build directory | |||||
# We'll use this as our working directory for all subsequent commands | |||||
run: cmake -E make_directory ${{runner.workspace}}/build | |||||
- name: Configure cmake | |||||
run: cmake -B build -DCMAKE_BUILD_TYPE=Release | |||||
- name: Configure CMake | |||||
# Use a bash shell so we can use the same syntax for environment variable | |||||
# access regardless of the host operating system | |||||
shell: bash | |||||
working-directory: ${{runner.workspace}}/build | |||||
# Note the current convention is to use the -S and -B options here to specify source | |||||
# and build directories, but this is only available with CMake 3.13 and higher. | |||||
# The CMake binaries on the Github Actions machines are (as of this writing) 3.12 | |||||
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE | |||||
- name: Build and package | |||||
run: cmake --build build -j$(nproc) && cmake --build build --target package | |||||
- name: Build | |||||
working-directory: ${{runner.workspace}}/build | |||||
shell: bash | |||||
# Execute the build. You can specify a specific target with "--target <NAME>" | |||||
run: cmake --build . --config $BUILD_TYPE | |||||
- name: Upload TGZ package | |||||
uses: actions/upload-artifact@v3 | |||||
with: | |||||
name: TGZ package | |||||
path: build/aptdec/aptdec_*.tar.gz | |||||
- name: Upload compilied binary | |||||
uses: actions/upload-artifact@v2 | |||||
- name: Upload DEB package | |||||
uses: actions/upload-artifact@v3 | |||||
with: | with: | ||||
name: aptdec_lin64 | |||||
path: ${{runner.workspace}}/build/aptdec | |||||
name: Debian package | |||||
path: build/aptdec/aptdec_*.deb | |||||
build_windows: | build_windows: | ||||
runs-on: ubuntu-latest | runs-on: ubuntu-latest | ||||
@@ -62,16 +49,13 @@ jobs: | |||||
submodules: 'recursive' | submodules: 'recursive' | ||||
- name: Install dependencies | - name: Install dependencies | ||||
# The user does not run as root | |||||
run: sudo apt install wget cmake make mingw-w64 git unzip libsndfile-dev | |||||
run: sudo apt install cmake git mingw-w64 unzip | |||||
- name: Run build script | - name: Run build script | ||||
shell: bash | |||||
working-directory: ${{runner.workspace}} | |||||
run: cd $GITHUB_WORKSPACE && ./build_windows.sh $BUILD_TYPE | |||||
run: ./build_windows.sh $BUILD_TYPE | |||||
- name: Upload compilied binary | |||||
uses: actions/upload-artifact@v2 | |||||
- name: Upload ZIP package | |||||
uses: actions/upload-artifact@v3 | |||||
with: | with: | ||||
name: aptdec-win64.zip | |||||
path: ${{runner.workspace}}/aptdec/winbuild/aptdec-1.7.0.zip | |||||
name: ZIP package | |||||
path: build/aptdec/aptdec_*.zip |
@@ -1,35 +1,44 @@ | |||||
name: Build | |||||
name: Build (release) | |||||
on: | on: | ||||
push: | push: | ||||
tags: | tags: | ||||
- 'v*' | - 'v*' | ||||
env: | |||||
BUILD_TYPE: Release | |||||
jobs: | jobs: | ||||
prepare_release: | |||||
create_release: | |||||
runs-on: ubuntu-latest | runs-on: ubuntu-latest | ||||
outputs: | |||||
upload_url: ${{ steps.create_release.outputs.upload_url }} | |||||
needs: [ build_linux, build_windows ] | |||||
steps: | steps: | ||||
- name: Download TGZ package | |||||
uses: actions/download-artifact@v3 | |||||
with: | |||||
name: TGZ package | |||||
- name: Download DEB package | |||||
uses: actions/download-artifact@v3 | |||||
with: | |||||
name: DEB package | |||||
- name: Download ZIP package | |||||
uses: actions/download-artifact@v3 | |||||
with: | |||||
name: ZIP package | |||||
- name: Test | |||||
run: ls -la | |||||
- name: Create Release | - name: Create Release | ||||
uses: actions/create-release@v1 | |||||
id: create_release | |||||
uses: softprops/action-gh-release@v1 | |||||
with: | with: | ||||
tag_name: ${{ github.ref }} | |||||
release_name: Release ${{ github.ref }} | |||||
body: A release wow | |||||
draft: false | |||||
prerelease: false | |||||
env: | |||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |||||
files: | | |||||
aptdec_$GITHUB_REF_NAME.x86_64.tar.gz | |||||
aptdec_$GITHUB_REF_NAME.x86_64.deb | |||||
aptdec_$GITHUB_REF_NAME.amd64.zip | |||||
build_linux: | build_linux: | ||||
runs-on: ubuntu-latest | runs-on: ubuntu-latest | ||||
needs: [prepare_release] | |||||
steps: | steps: | ||||
- uses: actions/checkout@v3 | - uses: actions/checkout@v3 | ||||
@@ -37,44 +46,28 @@ jobs: | |||||
submodules: 'recursive' | submodules: 'recursive' | ||||
- name: Install dependencies | - name: Install dependencies | ||||
# The user does not run as root | |||||
run: sudo apt-get install cmake git gcc libsndfile-dev libpng-dev | run: sudo apt-get install cmake git gcc libsndfile-dev libpng-dev | ||||
- name: Create Build Environment | |||||
# Some projects don't allow in-source building, so create a separate build directory | |||||
# We'll use this as our working directory for all subsequent commands | |||||
run: cmake -E make_directory ${{runner.workspace}}/build | |||||
- name: Configure CMake | |||||
# Use a bash shell so we can use the same syntax for environment variable | |||||
# access regardless of the host operating system | |||||
shell: bash | |||||
working-directory: ${{runner.workspace}}/build | |||||
# Note the current convention is to use the -S and -B options here to specify source | |||||
# and build directories, but this is only available with CMake 3.13 and higher. | |||||
# The CMake binaries on the Github Actions machines are (as of this writing) 3.12 | |||||
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE | |||||
- name: Build | |||||
working-directory: ${{runner.workspace}}/build | |||||
shell: bash | |||||
# Execute the build. You can specify a specific target with "--target <NAME>" | |||||
run: cmake --build . --config $BUILD_TYPE | |||||
- name: Upload binary | |||||
uses: actions/upload-release-asset@v1 | |||||
- name: Configure cmake | |||||
run: cmake -B build -DCMAKE_BUILD_TYPE=Release | |||||
- name: Build and package | |||||
run: cmake --build build -j$(nproc) && cmake --build build --target package | |||||
- name: Upload TGZ package | |||||
uses: actions/upload-artifact@v3 | |||||
with: | with: | ||||
upload_url: ${{ needs.prepare_release.outputs.upload_url }} | |||||
asset_path: ./${{runner.workspace}}/aptdec/build/aptdec | |||||
asset_name: aptdec_lin64 | |||||
asset_content_type: application/x-executable | |||||
env: | |||||
GITHUB_TOKEN: ${{ github.token }} | |||||
name: TGZ package | |||||
path: build/aptdec/aptdec_*.tar.gz | |||||
- name: Upload DEB package | |||||
uses: actions/upload-artifact@v3 | |||||
with: | |||||
name: Debian package | |||||
path: build/aptdec/aptdec_*.deb | |||||
build_windows: | build_windows: | ||||
runs-on: ubuntu-latest | runs-on: ubuntu-latest | ||||
needs: [prepare_release] | |||||
steps: | steps: | ||||
- uses: actions/checkout@v3 | - uses: actions/checkout@v3 | ||||
@@ -82,20 +75,13 @@ jobs: | |||||
submodules: 'recursive' | submodules: 'recursive' | ||||
- name: Install dependencies | - name: Install dependencies | ||||
# The user does not run as root | |||||
run: sudo apt install wget cmake make mingw-w64 git unzip libsndfile-dev | |||||
run: sudo apt install cmake git mingw-w64 unzip | |||||
- name: Run build script | - name: Run build script | ||||
shell: bash | |||||
working-directory: ${{runner.workspace}} | |||||
run: cd $GITHUB_WORKSPACE && ./build_windows.sh $BUILD_TYPE | |||||
run: ./build_windows.sh $BUILD_TYPE | |||||
- name: Upload zip | |||||
uses: actions/upload-release-asset@v1 | |||||
- name: Upload ZIP package | |||||
uses: actions/upload-artifact@v3 | |||||
with: | with: | ||||
upload_url: ${{ needs.prepare_release.outputs.upload_url }} | |||||
asset_path: ./${{runner.workspace}}/aptdec/winbuild/aptdec-1.7.0.zip | |||||
asset_name: aptdec_win64.zip | |||||
asset_content_type: application/zip | |||||
env: | |||||
GITHUB_TOKEN: ${{ github.token }} | |||||
name: ZIP package | |||||
path: build/aptdec/aptdec_*.zip |
@@ -18,7 +18,7 @@ include(GNUInstallDirs) | |||||
# aptdec-cli | # aptdec-cli | ||||
find_package(PNG) | find_package(PNG) | ||||
find_path(SNDFILE_INCLUDE_DIR sndfile.h) | find_path(SNDFILE_INCLUDE_DIR sndfile.h) | ||||
find_library(SNDFILE_LIBRARIES NAMES sndfile libsndfile PATH) | |||||
find_library(SNDFILE_LIBRARIES NAMES sndfile libsndfile) | |||||
if(PNG_FOUND AND SNDFILE_LIBRARIES AND SNDFILE_INCLUDE_DIR) | if(PNG_FOUND AND SNDFILE_LIBRARIES AND SNDFILE_INCLUDE_DIR) | ||||
set(APTDEC_CLI_SOURCE_FILES | set(APTDEC_CLI_SOURCE_FILES | ||||
@@ -43,6 +43,10 @@ if(PNG_FOUND AND SNDFILE_LIBRARIES AND SNDFILE_INCLUDE_DIR) | |||||
target_link_libraries(aptdec-cli PRIVATE m) | target_link_libraries(aptdec-cli PRIVATE m) | ||||
target_compile_options(aptdec-cli PRIVATE -Wall -Wextra -pedantic -Wno-missing-field-initializers) | target_compile_options(aptdec-cli PRIVATE -Wall -Wextra -pedantic -Wno-missing-field-initializers) | ||||
endif() | endif() | ||||
install(TARGETS aptdec-cli RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) | |||||
file(GLOB LUTS luts/*.png) | |||||
install(FILES ${LUTS} DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/aptdec/luts) | |||||
else() | else() | ||||
message(WARNING "Not building aptdec-cli as some/all required dependencies are missing, libaptdec will still be built") | message(WARNING "Not building aptdec-cli as some/all required dependencies are missing, libaptdec will still be built") | ||||
endif() | endif() | ||||
@@ -72,32 +76,24 @@ else() | |||||
target_compile_options(aptdec PRIVATE -Wall -Wextra -pedantic -Wno-missing-field-initializers) | target_compile_options(aptdec PRIVATE -Wall -Wextra -pedantic -Wno-missing-field-initializers) | ||||
endif() | endif() | ||||
install(TARGETS aptdec PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/aptdec LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) | |||||
# Packaging | # Packaging | ||||
set(CPACK_PACKAGE_VERSION "${VERSION}") | set(CPACK_PACKAGE_VERSION "${VERSION}") | ||||
set(CPACK_PACKAGE_NAME "aptdec") | set(CPACK_PACKAGE_NAME "aptdec") | ||||
set(CPACK_PACKAGE_CONTACT "Xerbo (xerbo@protonmail.com)") | set(CPACK_PACKAGE_CONTACT "Xerbo (xerbo@protonmail.com)") | ||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "NOAA APT satellite imagery decoder") | set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "NOAA APT satellite imagery decoder") | ||||
set(CPACK_PACKAGE_DESCRIPTION "Aptdec is a FOSS library/program that decodes images transmitted by the NOAA POES weather satellites. These satellites transmit constantly (among other things) medium resolution (4km/px) images of the earth over a analog mode called APT.") | set(CPACK_PACKAGE_DESCRIPTION "Aptdec is a FOSS library/program that decodes images transmitted by the NOAA POES weather satellites. These satellites transmit constantly (among other things) medium resolution (4km/px) images of the earth over a analog mode called APT.") | ||||
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}_${CPACK_PACKAGE_VERSION}.${CMAKE_SYSTEM_PROCESSOR}") | |||||
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) | set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) | ||||
if(NOT WIN32) | |||||
set(CPACK_GENERATOR "DEB;TGZ") | |||||
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}.${CMAKE_SYSTEM_PROCESSOR}") | |||||
else() | |||||
#set(CPACK_GENERATOR "ZIP;NSIS") | |||||
set(CPACK_GENERATOR "ZIP") | |||||
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}") | |||||
if (TARGET aptdec) | |||||
file(GLOB_RECURSE DLLS *.dll) | |||||
install(FILES ${DLLS} DESTINATION ${CMAKE_INSTALL_BINDIR}) | |||||
endif() | |||||
endif() | |||||
if(WIN32) | |||||
file(GLOB DLLS ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}/*.dll) | |||||
install(FILES ${DLLS} DESTINATION ${CMAKE_INSTALL_BINDIR}) | |||||
if(TARGET aptdec-cli) | |||||
install(TARGETS aptdec RUNTIME DESTINATION bin) | |||||
set(CPACK_GENERATOR "ZIP") | |||||
else() | |||||
set(CPACK_GENERATOR "DEB;TGZ") | |||||
endif() | endif() | ||||
install(TARGETS aptdec PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/aptdec LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) | |||||
include(CPack) | include(CPack) |
@@ -1,54 +1,42 @@ | |||||
#!/usr/bin/env bash | #!/usr/bin/env bash | ||||
# Cross compile for Windows from Linux | # Cross compile for Windows from Linux | ||||
TEMP_PATH="$(pwd)/winpath" | |||||
set -e | set -e | ||||
# Compile and build zlib | |||||
if [ -d "zlib" ]; then | |||||
cd zlib && git pull | |||||
else | |||||
git clone https://github.com/madler/zlib && cd zlib | |||||
TEMP_PATH="$(pwd)/winpath" | |||||
BUILD_DIR="winbuild" | |||||
# Build zlib from source | |||||
if [ ! -d "zlib" ]; then | |||||
git clone -b v1.2.13 https://github.com/madler/zlib && cd zlib | |||||
cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchain-mingw32.cmake -DCMAKE_INSTALL_PREFIX=$TEMP_PATH | |||||
cmake --build build -j$(nproc) | |||||
cmake --build build --target install | |||||
cd .. | |||||
fi | fi | ||||
mkdir -p build && cd build | |||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=../../cmake/toolchain-mingw32.cmake -DCMAKE_INSTALL_PREFIX=$TEMP_PATH .. | |||||
make -j4 | |||||
make install | |||||
cd ../.. | |||||
# Clone and build ligpng | |||||
if [ -d "libpng" ]; then | |||||
cd libpng && git pull | |||||
else | |||||
git clone https://github.com/glennrp/libpng && cd libpng | |||||
# Build libpng from source | |||||
if [ ! -d "libpng" ]; then | |||||
git clone -b v1.6.39 https://github.com/glennrp/libpng && cd libpng | |||||
cmake -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchain-mingw32.cmake -DCMAKE_INSTALL_PREFIX=$TEMP_PATH | |||||
cmake --build build -j$(nproc) | |||||
cmake --build build --target install | |||||
cd .. | |||||
fi | fi | ||||
mkdir -p build && cd build | |||||
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=../../cmake/toolchain-mingw32.cmake -DCMAKE_INSTALL_PREFIX=$TEMP_PATH .. | |||||
make -j4 | |||||
make install | |||||
cd ../.. | |||||
# Download libsndfile | # Download libsndfile | ||||
if [ ! -d "libsndfile-1.0.29-win64" ]; then | |||||
wget https://github.com/erikd/libsndfile/releases/download/v1.0.29/libsndfile-1.0.29-win64.zip | |||||
unzip libsndfile-1.0.29-win64.zip | |||||
if [ ! -d libsndfile-1.2.0-win64 ]; then | |||||
wget https://github.com/libsndfile/libsndfile/releases/download/1.2.0/libsndfile-1.2.0-win64.zip | |||||
unzip libsndfile-1.2.0-win64.zip | |||||
cp "libsndfile-1.2.0-win64/bin/sndfile.dll" $TEMP_PATH/bin | |||||
cp "libsndfile-1.2.0-win64/include/sndfile.h" $TEMP_PATH/include | |||||
cp "libsndfile-1.2.0-win64/lib/sndfile.lib" $TEMP_PATH/lib | |||||
fi | fi | ||||
cp "libsndfile-1.0.29-win64/bin/sndfile.dll" $TEMP_PATH/bin/sndfile.dll | |||||
cp "libsndfile-1.0.29-win64/include/sndfile.h" $TEMP_PATH/include/sndfile.h | |||||
cp "libsndfile-1.0.29-win64/lib/sndfile.lib" $TEMP_PATH/lib/sndfile.lib | |||||
# Copy DLL's into root for CPack | |||||
cp $TEMP_PATH/bin/*.dll ../ | |||||
buildtype="Debug" | |||||
if [[ "$1" == "Release" ]]; then | |||||
buildtype="Release" | |||||
fi | |||||
# Copy required GCC libs | |||||
cp /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libgcc_s_seh-1.dll $TEMP_PATH/bin | |||||
cp /usr/x86_64-w64-mingw32/sys-root/mingw/bin/libwinpthread-1.dll $TEMP_PATH/bin | |||||
# Build aptdec | # Build aptdec | ||||
mkdir -p winbuild && cd winbuild | |||||
cmake -DCMAKE_BUILD_TYPE=$buildtype -DCMAKE_TOOLCHAIN_FILE=../cmake/toolchain-mingw32.cmake -DCMAKE_INSTALL_PREFIX=$TEMP_PATH .. | |||||
make -j 4 | |||||
make package | |||||
cmake -B $BUILD_DIR -DCMAKE_BUILD_TYPE=$1 -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain-mingw32.cmake -DCMAKE_INSTALL_PREFIX=$TEMP_PATH | |||||
cmake --build $BUILD_DIR -j$(nproc) | |||||
cmake --build $BUILD_DIR --target package |
@@ -1,5 +1,6 @@ | |||||
# the name of the target operating system | # the name of the target operating system | ||||
SET(CMAKE_SYSTEM_NAME Windows) | SET(CMAKE_SYSTEM_NAME Windows) | ||||
SET(CMAKE_SYSTEM_PROCESSOR amd64) | |||||
# which compilers to use for C and C++ | # which compilers to use for C and C++ | ||||
SET(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc) | SET(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc) | ||||