secondlife / viewer

🖥️ Second Life's official client
GNU Lesser General Public License v2.1
213 stars 53 forks source link

Include build instructions with the repository #714

Open Geenz opened 10 months ago

Geenz commented 10 months ago

Including build instructions with the repository helps to reduce friction for open source contributors, and anyone just generally wanting to get started with viewer development of any kind. This also helps to maintain a "source of truth" for all Linden viewer builds. These instructions should go in the docs sub directory.

Test Plan

Follow the provided build instructions on a "clean" system with no pre-requisite software installed.

larsnaesbye commented 10 months ago

Very appreciated! I made a simple PR fixing a path - hope it's OK.

One question: when building on macOS, as a non-Linden person, I run into problems with the prebuilt packages. I can skip FMOD etc. with

autobuild configure -c RelWithDebInfo -- -DUSE_FMODSTUDIO:BOOL=FALSE -DUSE_CONAN:BOOL=FALSE -DUSE_KDU:BOOL=FALSE but Havok seems to block me from building and I can't find the parameter to pass...

akleshchev commented 10 months ago

use RelWithDebInfoOS as 'non-Linden'

larsnaesbye commented 10 months ago

That doesn't seem to change anything - while it allows me to skip the others, Havok is still expected to be present.

(base) lanch@M1 viewer % autobuild configure -c RelWithDebInfoOS
Warning: no --id argument or AUTOBUILD_BUILD_ID environment variable specified;
    using a value from the UTC date and time (240361740), which may not be unique
 '/Applications/CMake.app/Contents/bin/cmake' '-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo' '-DADDRESS_SIZE:STRING=64' '-DROOT_PROJECT_NAME:STRING=SecondLife' '-DINSTALL_PROPRIETARY=FALSE' '-G' 'Xcode' '../indra'
-- CMAKE_OSX_DEPLOYMENT_TARGET = ''
-- CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY = ''
-- CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT = ''
-- CMAKE_XCODE_ATTRIBUTE_GCC_OPTIMIZATION_LEVEL = ''
CMake Error at cmake/Variables.cmake:185 (list):
  list index: 2 out of range (-2, 1)
Call Stack (most recent call first):
  CMakeLists.txt:32 (include)

-- CMAKE_OSX_SYSROOT = '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk'
-- Revision (from autobuild environment): 240361740
-- Building 'Second Life Test' Version 7.1.3.240361740
Package havok-source is set to use 'github' credentials type but no AUTOBUILD_GITHUB_TOKEN environment variable is set
ERROR: Failed to download package 'havok-source' from 'https://api.github.com/repos/secondlife/3p-havok-source/releases/assets/108912596'
For more information: try re-running your command with --verbose or --debug
CMake Error at cmake/Prebuilt.cmake:54 (message):
  Failed to download or unpack prebuilt 'havok-source'.  Process returned 1.
Call Stack (most recent call first):
  cmake/Havok.cmake:5 (use_prebuilt_binary)
  cmake/LLPhysicsExtensions.cmake:22 (include)
  llprimitive/CMakeLists.txt:8 (include)

-- Configuring incomplete, errors occurred!
ERROR: default configuration returned 1
For more information: try re-running your command with --verbose or --debug
akleshchev commented 10 months ago

Suggestion: Remove the build folder (build-darwin*) from the repo's folder and try again with RelWithDebInfoOS or ReleaseOS, it likely hasn't cleaned 'havok' from previous cache. RelWithDebInfoOS specificaly disables all propriatary pacakges like KDU, havok and fmod.

Geenz commented 10 months ago

Yeah - remove the build-darwin* folder, and reattempt with the RelWithDebInfoOS flag or ReleaseOS flags from the start.

larsnaesbye commented 10 months ago

Yeah, no it still demands the proprietary libs. I think the trouble is in the Out of Range error with Variables.cmake - bailing before setting the right parameters. This is checked out from the current 'main' branch.

lanch@M1 viewer % autobuild configure -c RelWithDebInfoOS
Warning: no --id argument or AUTOBUILD_BUILD_ID environment variable specified;
    using a value from the UTC date and time (240361838), which may not be unique
 '/Applications/CMake.app/Contents/bin/cmake' '-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo' '-DADDRESS_SIZE:STRING=64' '-DROOT_PROJECT_NAME:STRING=SecondLife' '-DINSTALL_PROPRIETARY=FALSE' '-G' 'Xcode' '../indra'
-- The C compiler identification is AppleClang 15.0.0.15000100
-- The CXX compiler identification is AppleClang 15.0.0.15000100
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- CMAKE_OSX_DEPLOYMENT_TARGET = ''
-- CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY = ''
-- CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT = ''
-- CMAKE_XCODE_ATTRIBUTE_GCC_OPTIMIZATION_LEVEL = ''
CMake Error at cmake/Variables.cmake:185 (list):
  list index: 1 out of range (-1, 0)
Call Stack (most recent call first):
  CMakeLists.txt:32 (include)

-- CMAKE_OSX_SYSROOT = '/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk'
-- Revision (from autobuild environment): 240361838
-- Building 'Second Life Test' Version 7.1.3.240361838
-- Found OpenGL: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX14.2.sdk/System/Library/Frameworks/OpenGL.framework   
Package slvoice is set to use 'github' credentials type but no AUTOBUILD_GITHUB_TOKEN environment variable is set
ERROR: Failed to download package 'slvoice' from 'https://api.github.com/repos/secondlife/3p-slvoice/releases/assets/108299352'
For more information: try re-running your command with --verbose or --debug
CMake Error at cmake/Prebuilt.cmake:54 (message):
  Failed to download or unpack prebuilt 'slvoice'.  Process returned 1.
Call Stack (most recent call first):
  cmake/ViewerMiscLibs.cmake:19 (use_prebuilt_binary)
  llwindow/CMakeLists.txt:19 (include)

-- Configuring incomplete, errors occurred!
ERROR: default configuration returned 1
For more information: try re-running your command with --verbose or --debug
Geenz commented 10 months ago

What happens if you configure with ReleaseOS?

nat-goodspeed commented 10 months ago

Makes me wonder what your LL_BUILD value is.

larsnaesbye commented 10 months ago

The exact same happens as with RelWithDebInfoOS.

CMake Error at cmake/Variables.cmake:185 (list):
  list index: 1 out of range (-1, 0)

I think it has to do with the LL_BUILD variable, because the listed range changes if I change the number of parameters.

It is currently LL_BUILD=-iwithsysroot.

nat-goodspeed commented 10 months ago

That's the problem then. The CMake logic in Variables.cmake expects that -iwithsysroot will be followed by a valid CMAKE_OSX_SYSROOT path. Do you have a local clone of secondlife/build-variables?

larsnaesbye commented 10 months ago

Yes. I fact I have two :-D

nat-goodspeed commented 10 months ago

Do you have AUTOBUILD_VARIABLES_FILE set to the path of the variables file within one of those?

larsnaesbye commented 10 months ago

Ah, thank you. That helped with the CMake error - it is gone now. But still I get the demand for the proprietary libs when trying the ReleaseOS or RelWithDebInfoOS 🤔

akleshchev commented 10 months ago

ERROR: Failed to download package 'slvoice'

slvoice in particular is up in the air... I think the plan is to make it public.

Edit: here are the details: https://github.com/secondlife/viewer/pull/574 I assume that slvoice is needed for OS builds as well, so without it being public you might need to get one of the older pacakges untill it gets fixed. Or pull in that pull request.

nat-goodspeed commented 10 months ago

Lars, check your CMakeCache.txt file. Search for INSTALL_PROPRIETARY. If that's ON or TRUE or the like, please edit it and save it as the opposite.

larsnaesbye commented 10 months ago

It was UNINITIALIZED:FALSE , now BOOL:FALSE. No difference. And if I change all INSTALL_PROPRIETARY entries in autobuild.xml to FALSE, it still asks for slvoice.

I will now stop pestering you, since I'm trying to compile on an unsupported architecture (arm64/Apple Silicon), even if I'm compiling for x86_64 under emulation.

akleshchev commented 10 months ago

since I'm trying to compile on an unsupported architecture (arm64/Apple Silicon)

You aren't at a compilation stage yet, ufortunately SLVoice is an actual issue and pacakges should become downloadable at some point.

larsnaesbye commented 10 months ago

ERROR: Failed to download package 'slvoice'

slvoice in particular is up in the air... I think the plan is to make it public.

Edit: here are the details: #574 I assume that slvoice is needed for OS builds as well, so without it being public you might need to get one of the older pacakges untill it gets fixed. Or pull in that pull request.

That was the issue. Pulling in those changes made it work. Thank you so much :-)

nat-goodspeed commented 10 months ago

heh. I was going to point out that Andrey's and Geenz's suggestion to remove the build-darwin* folder did solve the general problem, in that your build stopped looking for Havok. As this discussion surfaces, we're still working on resolving GitHub limitations wrt slvoice in particular.

larsnaesbye commented 10 months ago

Yeah, it makes sense :)

Should we add a note to the docs introduced in this PR so others don't run into the same confusion I did?

AiraYumi commented 1 week ago

What's the status of this issue? If you need template documentation for building on Linux I can help.