wineskin icon indicating copy to clipboard operation
wineskin copied to clipboard

Release process documentation?

Open chrisballinger opened this issue 6 years ago • 15 comments

I've had trouble piecing together the various build products. Is this process documented anywhere? Ideally I want to automate nightly builds for Engines, Wrappers and Winery.

chrisballinger avatar May 23 '18 15:05 chrisballinger

@chrisballinger

"Wineskin Winery.app" runs just fine after being built, only needs to be compressed if it's to be added to the server for downloading directly from within the app and then update the {server}/Wrapper/NewestVersion.txt {server}/Wrapper/WineskinWinery.app.tar.7z The above is basically the same for everything else that needs to be hosted, engines text file just includes a list of available engines to download. Here I have a working WineskinServer, fork then swap out the masterwrapper and Winery files with your own to get started easily.

Wineskin.app needs to be placed inside.

wineskin-{version master wrapper version number}.app drive_c symlink to "Contents/Resources/drive_c" Contents

Contents Folder>

Frameworks MacOS Resources {included in the provided link) Info.plist {included in the provided link} (includes the entries from my changes)

Frameworks Contents>

Frameworks>{needed dylibs} (I included current ones in the link provided) Frameworks> {add ObjectiveC_Extension.framework} ~~Frameworks>WSX11Prefs.plist (included in the provided link) Frameworks>bin (included in the provided link)~~

MacOS Contents>

WineskinLancher {current version from project} ~~WineskinX11 (included in the provided link)~~

Wrapper Template

Gcenx avatar May 23 '18 18:05 Gcenx

Thanks! It would be great if we could figure out how to bundle the app in such a way where the "Wineskin Winery.app" bundle includes the latest "Wineskin.app" wrapper template, and at least one working Engine.

Also is there any way to run Wineskin.app or WineskinLauncher in the Xcode debugger? They normally want to live inside a wrapper.

chrisballinger avatar May 24 '18 02:05 chrisballinger

I don't know if including it inside "Wineskin Winery.app" is a good idea. That would mean needing to update "Wineskin Winery.app" a lot more to ensure future compatibility with macOS versions. But I can see the appeal "winebottler" did something along those lines.

Running "Wineskin.app" inside xcode debugger I have no clue how @vitor251093 might be better for answering that.

WineskinLauncher same thing, but I assume as long as you have the needed ObjectiveC extension I don't why it wouldn't be possible since you can pass commands directly to it. WSS- are the main functions.

Gcenx avatar May 24 '18 04:05 Gcenx

Thanks! It would be great if we could figure out how to bundle the app in such a way where the "Wineskin Winery.app" bundle includes the latest "Wineskin.app" wrapper template, and at least one working Engine.

I don't know if including it inside "Wineskin Winery.app" is a good idea. That would mean needing to update "Wineskin Winery.app" a lot more to ensure future compatibility with macOS versions. But I can see the appeal "winebottler" did something along those lines.

I agree with @Gcenx . Keeping them separated makes we capable of releasing updates separately, and that's an advantage. While it would be interesting to release a package once in a while with an stable version of all of them, once the three of them get stable versions, they shouldn't be bonded together.

Also is there any way to run Wineskin.app or WineskinLauncher in the Xcode debugger? They normally want to live inside a wrapper.

Running "Wineskin.app" inside xcode debugger I have no clue how @vitor251093 might be better for answering that.

I usually build them in Debug mode, move to the insides of a wrapper, and then, if I want logs, I run the binaries using the terminal. It certainly isn't the best method to do, but that's what I've done during my tests xD

Xcode can be configured to send the result of the build to a wrapper so you can run them, however it would require a wrapper with a specific name in a specific location. Since that changes from environment to environment, I decided to do this manual method instead of doing that.

Also, a reminder: while Wineskin.app can be build in Release mode, WineskinLauncher can't. The reason for that is simple: when an app is build for release today, it considers its Info.plist has unique, and gives the Info.plist an identifier of the binary. Summarising, if you run WineskinLauncher in Release mode, you can't change the Info.plist file of the wrapper, and that's a real problem for Wineskin wrappers.

vitor251093 avatar May 24 '18 21:05 vitor251093

We can likely set up an Xcode build target that moves everything into the right place.

Even if we don't ship production builds this way, it would be great to remove manual steps from the debugging workflow.

chrisballinger avatar May 25 '18 23:05 chrisballinger

Yeah, is the kind of thing that saves lots of time on term.

vitor251093 avatar May 26 '18 02:05 vitor251093

On the road toward automating the builds, I made a tool to automate the creation of Engines: https://github.com/WineskinCommunity/WineskinEngineBuilder

chrisballinger avatar May 30 '18 03:05 chrisballinger

Awesome! :D

vitor251093 avatar May 30 '18 03:05 vitor251093

Nice the updated EngineBuild bash scripts might be redundant now.

Are you later adding the ability to compile from source also? It's needed for making CX engines.

Gcenx avatar May 30 '18 14:05 Gcenx

@Gcenx Haven't added a compile from source option yet, but have some of the scaffolding for it in there. Would you mind adding any documentation you have on building engines from scratch to this issue? https://github.com/WineskinCommunity/WineskinEngineBuilder/issues/1

chrisballinger avatar May 30 '18 15:05 chrisballinger

@chrisballinger Sure I just need to dig it up from my backup, I could also 7zip the EngineBuild scripts I have along with everything for building Engines on 10.13.

Those are modified bash scripts based on what doh123 made but it works I built CX17.5.0 & CX17.5.0 64bit using them.

Gcenx avatar May 30 '18 15:05 Gcenx

@Gcenx can lend a hand here, if you restore Wineskin launcher template

niveuseverto avatar Nov 28 '18 16:11 niveuseverto

@Gcenx can lend a hand here, if you restore Wineskin launcher template

@niveuseverto if I have time tonight I can replace that with a newer mini dylib template.

If your only interested in building the project to use with official winehq wine builds then you can use the prebuilt development then you can just grab WineskinWinery.app.tar.7z from the Winery folder. That is built using EngineRepacking2 branch it just reads from the linked GitHub for EngineList.txt etc

Gcenx avatar Nov 28 '18 19:11 Gcenx

I'm interested in this as a part of @foesmm to provide ability to create stable wineskins for supported gamebryo games, so building/packaging from source (including wine) is desirable

niveuseverto avatar Nov 28 '18 19:11 niveuseverto

I'm interested in this as a part of @foesmm to provide ability to create stable wineskins for supported gamebryo games, so building/packaging from source (including wine) is desirable

That makes sense then, just remember you need to use the Winery version from the project to make wrappers as the "official" one will fail due to the structure changes as I explained above.

Here is an updated Wrapper template , I did not shrink it down to a mini dylib subset as you may need some of those so I left them all in. That template will allow the use of doh123 engines / Winehq engines / PortingKit engines. Copy the WineskinLauncher into "Contents/MacOS" and Wineskin.app into the same location as the "drive_c" symlink. Also add in the compiled "ObjectiveC_Extension.framework" into the templates "Frameworks" folder ~~If you have any issues replace libfreetype.6.dylib from XQuartz 2.7.11~~ Updated the template with libfreetype.6.dylib from XQuartz 2.7.11

For compiling engines I have encountered some issues with custom built wine versions when using Clang, the only stable compiles have been cross-compiled using the Official Winehq build system, you can use Ubuntu Bionic as the system base. I have not have enough free-time to setup a docker image for this. It should possible to build using gcc6 or above on macOS, gcc5.2 and lower cause other problems for wine compiles.

Gcenx avatar Nov 29 '18 13:11 Gcenx