Merge branch '86Box:master' into master

This commit is contained in:
Laci bá
2021-11-19 21:33:43 +01:00
committed by GitHub
5 changed files with 92 additions and 56 deletions

72
.ci/Jenkinsfile vendored
View File

@@ -78,13 +78,26 @@ def presetFlags = [
def anyFailure = false def anyFailure = false
def gitClone() { def gitClone() {
/* Read git tag from environment or set the default one. */
if (env.GIT_COMMIT == null) if (env.GIT_COMMIT == null)
env.GIT_COMMIT = 'master' env.GIT_COMMIT = 'master'
println "[-] Using git tag [${env.GIT_COMMIT}]" println "[-] Using git tag [${env.GIT_COMMIT}]"
/* Use stashes to avoid performing multiple clones. */
if (env.GIT_STASHED != 'true') {
/* Perform clone/checkout. */
def scmVars = checkout scm: [$class: 'GitSCM', def scmVars = checkout scm: [$class: 'GitSCM',
branches: [[name: env.GIT_COMMIT]], branches: [[name: env.GIT_COMMIT]],
userRemoteConfigs: [[url: 'https://github.com/86Box/86Box.git']]] userRemoteConfigs: [[url: 'https://github.com/86Box/86Box.git']]]
env.GIT_COMMIT = scmVars.GIT_COMMIT env.GIT_COMMIT = scmVars.GIT_COMMIT
/* Stash data and mark it as stashed. */
stash name: 'git'
env.GIT_STASHED = 'true'
} else {
/* Unstash data. */
unstash name: 'git'
}
} }
def removeDir(dir) { def removeDir(dir) {
@@ -98,35 +111,60 @@ def runBuild(args) {
if (isUnix()) if (isUnix())
sh "chmod u+x \"$WORKSPACE/.ci/build.sh\" && exec \"$WORKSPACE/.ci/build.sh\" $args" sh "chmod u+x \"$WORKSPACE/.ci/build.sh\" && exec \"$WORKSPACE/.ci/build.sh\" $args"
else else
bat "C:\\msys64\\msys2_shell.cmd -msys2 -defterm -here -no-start -c 'exec \"\$(cygpath -u \\'%WORKSPACE%\\')\"/.ci/build.sh $args'" bat "C:\\msys64\\msys2_shell.cmd -msys2 -defterm -here -no-start -c 'exec \"\$(cygpath -u \\'%WORKSPACE%\\')/.ci/build.sh\" $args'"
} }
pipeline { pipeline {
agent none agent none
environment {
DISCORD_WEBHOOK_URL = credentials('discord-webhook-url')
}
options {
disableConcurrentBuilds()
quietPeriod(0)
}
parameters { parameters {
string(name: 'BUILD_TYPE', string(name: 'BUILD_TYPE',
defaultValue: 'beta', /* !!! CHANGE HERE !!! for build type */ defaultValue: 'beta', /* !!! CHANGE HERE !!! for build type */
description: "Build type to pass on to CMake. Don't change this, you should instead change the default value on .ci/Jenkinsfile") description: "Build type to pass on to CMake. Don't change this, you should instead change the default value on .ci/Jenkinsfile")
} }
environment {
DISCORD_WEBHOOK_URL = credentials('discord-webhook-url')
}
stages { stages {
stage('Source Tarball') { stage('Source Tarball') {
agent none agent none
steps { steps {
script { script {
/* Run a dummy git clone on any node to try and save the latest commit regardless of executor status. /* Hack to extract the current HEAD commit from this build's git polling
This avoids a timing issue where HEAD changes between polling and the nodes being available below. log. This avoids a race condition where HEAD changes in the time period
I talked to a few people, and we reached the conclusion that reading the polled commit from within between Jenkins polling the git repository and the first build node
the pipeline is not really possible (maybe short of switching to a multi-branch pipeline), so we performing the first git clone once ready. (See issue JENKINS-20518) */
have to live with this hack, which shortens but doesn't fully eliminate the timing issue's window. */ if (env.GIT_COMMIT == null) {
node { /* This must run on the master node to read the polling log. */
node('master') {
/* Ignore exceptions as this is not really critical. */ /* Ignore exceptions as this is not really critical. */
try {
/* Switch to this build's directory. */
dir("${env.JENKINS_HOME}/jobs/${env.JOB_NAME}/builds/${env.BUILD_NUMBER}") {
/* Parse polling log. */
def pollingLog = readFile file: 'polling.log'
def match = pollingLog =~ /Latest remote head revision on [^ ]+ is: ([a-zA-Z0-9]+)/
if (match && match[0]) {
env.GIT_COMMIT = match[0][1]
println "[-] Read git tag [${env.GIT_COMMIT}] from polling log"
}
}
} catch (e) {}
}
/* If the polling log parsing fails, perform a dummy git clone on any node.
Not quite as fast as reading the polling log, but it works as a backup. */
if (env.GIT_COMMIT == null) {
node {
/* Ignore exceptions again as this is not really critical. */
try { try {
gitClone() gitClone()
} catch (e) {} } catch (e) {}
@@ -134,6 +172,8 @@ pipeline {
cleanWs() cleanWs()
} catch (e) {} } catch (e) {}
} }
}
}
/* Create source tarball. */ /* Create source tarball. */
node('Linux') { node('Linux') {
@@ -188,13 +228,11 @@ pipeline {
/* Switch to output directory. */ /* Switch to output directory. */
dir('output') { dir('output') {
def packageName = "${env.JOB_BASE_NAME}${dynarecSlugs[dynarec]}${presetSlugs[preset]}-$os-$arch-b${env.BUILD_NUMBER}"
dir(dynarecNames[dynarec]) {
dir("$os - ${archNames[arch]}") {
/* Run build process. */ /* Run build process. */
def packageName = "${env.JOB_BASE_NAME}${dynarecSlugs[dynarec]}${presetSlugs[preset]}-$os-$arch-b${env.BUILD_NUMBER}"
dir("${dynarecNames[dynarec]}/$os - ${archNames[arch]}") {
runBuild("-b \"$packageName\" \"$arch\" ${presetFlags[preset]} ${dynarecFlags[dynarec]} -D \"BUILD_TYPE=$BUILD_TYPE\" -D \"EMU_BUILD=build ${env.BUILD_NUMBER}\" -D \"EMU_BUILD_NUM=${env.BUILD_NUMBER}\"") runBuild("-b \"$packageName\" \"$arch\" ${presetFlags[preset]} ${dynarecFlags[dynarec]} -D \"BUILD_TYPE=$BUILD_TYPE\" -D \"EMU_BUILD=build ${env.BUILD_NUMBER}\" -D \"EMU_BUILD_NUM=${env.BUILD_NUMBER}\"")
} }
}
/* Archive resulting artifacts. */ /* Archive resulting artifacts. */
archiveArtifacts artifacts: "**/**/$packageName*" archiveArtifacts artifacts: "**/**/$packageName*"
@@ -223,12 +261,14 @@ pipeline {
post { post {
always { always {
script { script {
/* Mark build as failed if any step has failed. */
if (anyFailure) { if (anyFailure) {
println "[!] Failing build because a build stage failed" println "[!] Failing build because a build stage failed"
currentBuild.result = 'FAILURE' currentBuild.result = 'FAILURE'
} }
if (!env.JOB_BASE_NAME.contains("TestBuildPleaseIgnore")) { /* Send out build notifications. */
if (!env.JOB_BASE_NAME.contains('TestBuildPleaseIgnore')) {
try { try {
/* Notify Discord. */ /* Notify Discord. */
def result = currentBuild.currentResult.toLowerCase() def result = currentBuild.currentResult.toLowerCase()

View File

@@ -18,6 +18,7 @@
* Copyright 2016-2020 Miran Grca. * Copyright 2016-2020 Miran Grca.
* Copyright 2017-2020 Fred N. van Kempen. * Copyright 2017-2020 Fred N. van Kempen.
* Copyright 2021 Laci bá' * Copyright 2021 Laci bá'
* Copyright 2021 dob205
*/ */
#include <inttypes.h> #include <inttypes.h>
#include <stdarg.h> #include <stdarg.h>
@@ -394,7 +395,9 @@ pc_init(int argc, char *argv[])
{ {
char path[2048], path2[2048]; char path[2048], path2[2048];
char *cfg = NULL, *p; char *cfg = NULL, *p;
#ifdef __APPLE__
char mac_rom_path[2048]; char mac_rom_path[2048];
#endif
char temp[128]; char temp[128];
struct tm *info; struct tm *info;
time_t now; time_t now;
@@ -419,9 +422,6 @@ pc_init(int argc, char *argv[])
plat_getcwd(usr_path, sizeof(usr_path) - 1); plat_getcwd(usr_path, sizeof(usr_path) - 1);
plat_getcwd(rom_path, sizeof(rom_path) - 1); plat_getcwd(rom_path, sizeof(rom_path) - 1);
printf("JV:usr_path %s\n",usr_path);
printf("JV:rom_path %s\n",usr_path);
memset(path, 0x00, sizeof(path)); memset(path, 0x00, sizeof(path));
memset(path2, 0x00, sizeof(path)); memset(path2, 0x00, sizeof(path));

View File

@@ -32,17 +32,11 @@ set_source_files_properties(${APP_ICON_MACOSX} PROPERTIES
MACOSX_PACKAGE_LOCATION "Resources") MACOSX_PACKAGE_LOCATION "Resources")
endif() endif()
#Adding the macOS glue for ROM paths
set(MAC_GLUE)
if (APPLE)
set(MAC_GLUE ${CMAKE_CURRENT_SOURCE_DIR}/mac/macOSXGlue.m)
endif()
# WIN32 marks us as a GUI app on Windows # WIN32 marks us as a GUI app on Windows
# MACOSX_BUNDLE prepares a macOS application bundle including with the app icon # MACOSX_BUNDLE prepares a macOS application bundle including with the app icon
add_executable(86Box WIN32 MACOSX_BUNDLE 86box.c config.c log.c random.c timer.c io.c acpi.c apm.c add_executable(86Box WIN32 MACOSX_BUNDLE 86box.c config.c log.c random.c timer.c io.c acpi.c apm.c
dma.c ddma.c nmi.c pic.c pit.c port_6x.c port_92.c ppi.c pci.c mca.c usb.c dma.c ddma.c nmi.c pic.c pit.c port_6x.c port_92.c ppi.c pci.c mca.c usb.c
device.c nvr.c nvr_at.c nvr_ps2.c ${APP_ICON_MACOSX} ${MAC_GLUE}) device.c nvr.c nvr_at.c nvr_ps2.c ${APP_ICON_MACOSX})
if(APPLE) if(APPLE)
target_link_libraries(86Box "-framework AppKit") target_link_libraries(86Box "-framework AppKit")
@@ -93,10 +87,19 @@ if(MINGW)
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a" ".dll.a") set(CMAKE_FIND_LIBRARY_SUFFIXES ".a" ".dll.a")
endif() endif()
# Variables introduced by richardg867 for versioning stuff
if(NOT CMAKE_PROJECT_VERSION_PATCH)
set(CMAKE_PROJECT_VERSION_PATCH 0)
endif()
if(NOT EMU_BUILD_NUM)
set(EMU_BUILD_NUM 0)
endif()
if(NOT EMU_COPYRIGHT_YEAR)
set(EMU_COPYRIGHT_YEAR 2021)
endif()
#some macOS specific configuration steps #some macOS specific configuration steps
if(APPLE) if(APPLE)
find_library(COCOA_LIBRARY Cocoa)
target_link_libraries (86Box ${COCOA_LIBRARY} )
# Force using the newest library if it's installed by homebrew # Force using the newest library if it's installed by homebrew
set(CMAKE_FIND_FRAMEWORK LAST) set(CMAKE_FIND_FRAMEWORK LAST)
@@ -104,19 +107,19 @@ if(APPLE)
# prepare stuff for macOS app bundles # prepare stuff for macOS app bundles
set(CMAKE_MACOSX_BUNDLE 1) set(CMAKE_MACOSX_BUNDLE 1)
# setting our compilation target to macOS Mojave (macOS version 10.14), can be eventually changed to macOS 10.13 High Sierra # setting our compilation target to macOS 10.13 High Sierra
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.13") set(CMAKE_OSX_DEPLOYMENT_TARGET "10.13")
# set the Info.plist properly # set the Info.plist properly
set_target_properties(86Box PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/mac/Info.plist.in) set_target_properties(86Box PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/mac/Info.plist.in)
set(MACOSX_BUNDLE_GUI_IDENTIFIER net.86Box.86Box) set(MACOSX_BUNDLE_GUI_IDENTIFIER net.86Box.86Box)
set(MACOSX_BUNDLE_BUNDLE_NAME 86Box) set(MACOSX_BUNDLE_BUNDLE_NAME 86Box)
set(MACOSX_BUNDLE_BUNDLE_VERSION 3.0) set(MACOSX_BUNDLE_BUNDLE_VERSION 3.0.${EMU_BUILD_NUM})
set(MACOSX_BUNDLE_SHORT_VERSION_STRING "3.0") set(MACOSX_BUNDLE_SHORT_VERSION_STRING "3.0.${EMU_BUILD_NUM}")
set(MACOSX_BUNDLE_LONG_VERSION_STRING "3.0.0") set(MACOSX_BUNDLE_LONG_VERSION_STRING "3.0.${EMU_BUILD_NUM}")
set(MACOSX_BUNDLE_ICON_FILE 86Box.icns) set(MACOSX_BUNDLE_ICON_FILE 86Box.icns)
set(MACOSX_BUNDLE_INFO_STRING "A emulator of old computers") set(MACOSX_BUNDLE_INFO_STRING "A emulator of old computers")
set(MACOSX_BUNDLE_COPYRIGHT "© 2007-2021 Sarah Walker, Miran Grča, Fred N. van Kempen (waltje), SA1988, MoochMcGee, reenigne, leilei, JohnElliott, greatpsycho, and others") set(MACOSX_BUNDLE_COPYRIGHT "© 2007-${EMU_COPYRIGHT_YEAR} 86Box contributors")
# preparing the code signing for easier distribution, Apple dev certificate needed at one point # preparing the code signing for easier distribution, Apple dev certificate needed at one point
@@ -154,15 +157,6 @@ find_package(PNG REQUIRED)
include_directories(${PNG_INCLUDE_DIRS}) include_directories(${PNG_INCLUDE_DIRS})
target_link_libraries(86Box PNG::PNG) target_link_libraries(86Box PNG::PNG)
if(NOT CMAKE_PROJECT_VERSION_PATCH)
set(CMAKE_PROJECT_VERSION_PATCH 0)
endif()
if(NOT EMU_BUILD_NUM)
set(EMU_BUILD_NUM 0)
endif()
if(NOT EMU_COPYRIGHT_YEAR)
set(EMU_COPYRIGHT_YEAR 2021)
endif()
configure_file(include/86box/version.h.in include/86box/version.h @ONLY) configure_file(include/86box/version.h.in include/86box/version.h @ONLY)
include_directories(${CMAKE_CURRENT_BINARY_DIR}/include) include_directories(${CMAKE_CURRENT_BINARY_DIR}/include)

View File

@@ -542,7 +542,7 @@ ac97_codec_init(const device_t *info)
/* Associate this codec to the current controller. */ /* Associate this codec to the current controller. */
if (!ac97_codec || (ac97_codec_count <= 0)) { if (!ac97_codec || (ac97_codec_count <= 0)) {
fatal("AC97 Codec %d: No controller to associate codec\n", ac97_codec_id); pclog("AC97 Codec %d: No controller to associate codec\n", ac97_codec_id);
return NULL; return NULL;
} }
*ac97_codec = dev; *ac97_codec = dev;
@@ -583,6 +583,8 @@ static void
ac97_codec_close(void *priv) ac97_codec_close(void *priv)
{ {
ac97_codec_t *dev = (ac97_codec_t *) priv; ac97_codec_t *dev = (ac97_codec_t *) priv;
if (!dev)
return;
ac97_codec_log("AC97 Codec %d: close()\n", dev->codec_id); ac97_codec_log("AC97 Codec %d: close()\n", dev->codec_id);

View File

@@ -74,7 +74,7 @@ dynld_module(const char *name, dllimp_t *table)
} }
/* All good. */ /* All good. */
pclog("loaded %s\n", name); dynld_log("loaded %s\n", name);
return((void *)h); return((void *)h);
} }