Giter Club home page Giter Club logo

Comments (29)

ron-murhammer avatar ron-murhammer commented on May 22, 2024

Maybe look into this as well: https://github.com/crotwell/gradle-macappbundle

from triplea.

gaborbernat avatar gaborbernat commented on May 22, 2024

An option, but that would mean Windows/Linux would need to be separately
maintained.

Bernát GÁBOR

On Sun, Aug 2, 2015 at 6:08 PM, Ron [email protected] wrote:

Maybe look into this as well:
https://github.com/crotwell/gradle-macappbundle


Reply to this email directly or view it on GitHub
#31 (comment)
.

from triplea.

ron-murhammer avatar ron-murhammer commented on May 22, 2024

True. It would be best if we can find something that generates all the OS releases so we can avoid maintaining multiple builds. I'm just not that familiar with it as most of my development is web development.

from triplea.

gaborbernat avatar gaborbernat commented on May 22, 2024

Neither am I,, hence the projects I've enumerated upper.

from triplea.

gaborbernat avatar gaborbernat commented on May 22, 2024

going with install builder for now.

from triplea.

DanVanAtta avatar DanVanAtta commented on May 22, 2024

I'd like to offer help on this effort. Let me know what I can do. I recently spent a year+ using a mac for development and also have access to one on weekends. My fingers are crossed install builder will auto-solve much of this problem for us.

from triplea.

gaborbernat avatar gaborbernat commented on May 22, 2024

will let you know, for now I'll try to create the installer it has a quite lengthy documentation, should have a initial version to test by end of week, can start out from there

from triplea.

DanVanAtta avatar DanVanAtta commented on May 22, 2024

Creating a mac DMG is difficult. Looks like one of the following are required: hdiutil or mkfs.hfsplus + dd (and sudo). hdiutil is a mac only tool. Travis for the moment only allows linux OS builds. Travis does not allow sudo, and the mkdfs.hfsplus looks to eventually require a mount command (which needs sudo). I checked out izpack: it looks like the DMG feature there relies on a person having hdiutil.

For mac releases, either install build is a silver bullet and can be used from Travis, alternatively we drop the DMG format, or last alternative we keep relying on having a Mac around to build the DMG package.

On other fronts, I've got Travis using gradle to build and push the windows installer and all platforms zip releases into github (https://github.com/DanVanAtta/triplea/releases). To get this working some authorization token work was needed, but was not too terrible to set up. Screenshot below of the releases screen:

test_releases

from triplea.

gaborbernat avatar gaborbernat commented on May 22, 2024

Making the packages, installers should be easier with the migration to the Installbuilder, see http://installbuilder.bitrock.com/docs/installbuilder-userguide.html. Already in progress this work at https://github.com/gaborbernat/triplea/commits/installer. With this needing multiple platforms for making build/installer should not be required anymore.

from triplea.

DanVanAtta avatar DanVanAtta commented on May 22, 2024

Bad news, we'll still need a mac even with install builder:

"If you are building a Mac OS X installer, its name will be sample-1.0-osx-installer.app. The Mac OS X > installer binary will need to be packaged inside an archive file or disk image."
(from: "http://installbuilder.bitrock.com/docs/installbuilder-userguide.html#_packaging_the_installer")

Install builder still has value, but creating a mac DMG is nothing but headaches. Until travis allows open source to user their OS-X VMs, we cannot do it. The DMGs are a pain for testing since we need all of a sudden a Mac OS (and isn't part of the point of java is that you don't need to do any most of this open source specific stuff).

I recently came off using mac at work for about 18 months, I very much miss my old beat up mac laptop right now. But with that experience, the options are:

  • rpm
  • tar.gz
  • dmg
  • pkg
  • zip

The dmg and pkg require a mac, the others are more advanced, leaving the plain old "zip". The zip takes maybe 30 seconds more work than a DMG. With a simple readme, nobody should be too stumped by the process.

So, I really wonder why we are taking so much cost and pain to support such a small convenience. I suggest we build a windows installer, and an all_platforms.zip only (with perhaps some variations, for all maps or minimal, and with JRE or without).

So rather than having to build to build 12 artifacts, we would be down to 6. Today we are not building the minimal map versions, and still have 5 or 6 artifacts (AFAIK we are skipping the Mac DMG plus bundled java artifact)

from triplea.

DanVanAtta avatar DanVanAtta commented on May 22, 2024

Good news, (except for testing) the only OS you do not need today is windows. We can make the windows installer on linux (and thus mac too).

If we get rid of the DMG files, we will have a unified build pipeline where each OS could build in the same way, and each would build the same as Travis.

from triplea.

DanVanAtta avatar DanVanAtta commented on May 22, 2024

@gaborbernat The license file will need encryption. Travis has instructions on how to do that: http://docs.travis-ci.com/user/encrypting-files/

from triplea.

DanVanAtta avatar DanVanAtta commented on May 22, 2024

@gaborbernat , also please check out: https://github.com/DanVanAtta/triplea/tree/travis_artifact_build
In particular the travis.yaml file, the build scripts inside of .travis, and also the updates to gradlew to build the zip archive. It's quite clean enough for a pull request, but it functions to get artifacts pushed into github releases when you build a tag (tags are built on their own in Travis I learned recently).

One goal I've had with mucking with the build process is to create a folder called "artifacts." I place in this folder everything that needs to be updoaded, so in the before_deploy of travis, you can do a "ls artifacts" and know what should be listed for upload.

Which gets to another point, our artifacts have version names in them. I think what we will need to do is set a "GAME_VERSION" environment variable early in gradle, and try to use that everywhere else. So far I've found that $TRAVIS_TAG is available during the build and our tags match our version numbers exactly so far, which helps avoid putting the version number in a bunch of different places.

from triplea.

gaborbernat avatar gaborbernat commented on May 22, 2024

@DanVanAtta
From what I see here, http://installbuilder.bitrock.com/docs/installbuilder-userguide.html#_os_x_2, it's possible to create the dmg file :-?

from triplea.

DanVanAtta avatar DanVanAtta commented on May 22, 2024

Fantastic news then.
Sounds like we set: <createOsxBundleDmg>1</createOsxBundleDmg>, and we get a DMG file from any OS.

from triplea.

gaborbernat avatar gaborbernat commented on May 22, 2024

yup, tried it out :)

On 8/20/15, Dan Van Atta [email protected] wrote:

Fantastic news then.
Sounds like we set: <createOsxBundleDmg>1</createOsxBundleDmg>, and we
get a DMG file from any OS.


Reply to this email directly or view it on GitHub:
#31 (comment)

Bernát Gábor
Student - Budapest University of Technology and Economics - Computer
Engineering, M.Sc. - Budapest, Hungary
System Integrator - Gravity R&D | Rock Solid Recommendations - Budapest
office | 5-7 Expo ter | H-1101 | Budapest | Hungary

from triplea.

veqryn avatar veqryn commented on May 22, 2024

We need a mac to test it on, to make sure the dmg that is created does work.
But great news if it does!

from triplea.

gaborbernat avatar gaborbernat commented on May 22, 2024

My mac virtual image was accidentally removed, however will definitely
restore to try it out. The windows and Linux installs work fine for now,
those I've tried, built on Linux. Adding the other release types in the
meantime, as part of the Gradle.

Which IRC do we use?
On Aug 20, 2015 6:48 PM, "Chris Duncan" [email protected] wrote:

We need a mac to test it on, to make sure the dmg that is created does
work.
But great news if it does!


Reply to this email directly or view it on GitHub
#31 (comment)
.

from triplea.

gaborbernat avatar gaborbernat commented on May 22, 2024

So, also tried it on a Mac, and it seems to work (the installer packed as a dmg)

an instalattion in progress

Now just need to make sure every file is installed as it should be, adding an optional Java component is also another hurdle to tackle (http://installbuilder.bitrock.com/java/). But at the moment all what we aim for seems doable.

from triplea.

gaborbernat avatar gaborbernat commented on May 22, 2024

final

What do you guys think about starting to provide Java 8 as the bundled Java version? given that Java 7 is at its end of life.

from triplea.

veqryn avatar veqryn commented on May 22, 2024

Yes that is fine. I normally upgrade the bundled java during an unstable release, to whatever is the most recent.

from triplea.

BashfulBits avatar BashfulBits commented on May 22, 2024

FYI, I'm glad to see movement on bundling Java 8, or at least making the .app bundle more compatible with it. The current mac dmg release from sourceforge gives the problematic 'To open "TripleA" you need to install the legacy Jave SE 6 runtime.' error even though I have Java 8 installed. Running the .jar manually from the all platforms release works fine.

from triplea.

gaborbernat avatar gaborbernat commented on May 22, 2024

Yup, 👍 in the meantime I'm also evaluating install4j, http://www.ej-technologies.com/download/install4j/files, another propriety install builder, however also offer open source licenses. It seem to have a better integration with Java, and some part of it seem to be more straight forward.

from triplea.

gaborbernat avatar gaborbernat commented on May 22, 2024

I've been playing around some more, and decided to go for install4j. It has a better bundling and MAC support, plus it's easier to maintain and run. Written to them requesting a license and got it too. Tried out the new installer, started a game, made some moves, on MAC, Linux, Windows. In all those places worked flawlessly, just have one more glitch, on Windows the icon seems invalid. Added Gradle integration.

Now it's possible to generate all releases (3 installers - windows and Mac have JRE bundled, Linux uses the system Java - and zips) in like under 6 minutes from scratch. With the new install system, the initial Gradle patch works flawlessly, no issues, fyi. Will probably polish it just a little more and make the pull request next week sometime. We are not that far away 👍

from triplea.

DanVanAtta avatar DanVanAtta commented on May 22, 2024

@gaborbernat How's the install4j stuff going? A move is very disruptive, but it did seem like you were very close.

from triplea.

gaborbernat avatar gaborbernat commented on May 22, 2024

Hello,

Yes we're quite close. Managed to settle in at the new place. This Sunday
I'll have time to work with this. Sorry for the delays but bear with me a
little more.

Bernát GÁBOR

On Tue, Sep 22, 2015 at 3:58 AM, Dan Van Atta [email protected]
wrote:

@gaborbernat https://github.com/gaborbernat How's the install4j stuff
going? A move is very disruptive, but it did seem like you were very close.


Reply to this email directly or view it on GitHub
#31 (comment)
.

from triplea.

DanVanAtta avatar DanVanAtta commented on May 22, 2024

Some good news and progress made on the other fronts for an automated build and release. The .travis.yml updates needed to automatically push artifacts is well known, #214 has an example and some next steps for setting up a shadow jar deployment. After that we'll need to add a second script command to execute the install4j stuff (and/or install any install4j binaries, .travis.yml supports installation of many apt pacakges). Then last .travis.yml update will be to specify the name of the artifact files to upload.

So modifying the examle in #214, the final .travis.yml should look something like this:

language: java
jdk:
- oraclejdk8
addons:
  apt:
    packages:
      - install4j (?)
install: true
script:
- ./gradlew shadowJar
 - install4j <args>
before_deploy:
- git config --global user.email "[email protected]"
- git config --global user.name "tripleabuilderbot"
- export MAP_TAGGED_VERSION="$MAP_VERSION.$TRAVIS_BUILD_NUMBER"
- git tag $MAP_TAGGED_VERSION -a -m "$MAP_TAGGED_VERSION"
- git push -q https://[email protected]/triplea-maps/$REPO_NAME --tags
deploy:
  provider: releases
  api_key:
    secure: sTJxC1pAb5Q+hMTQAAr7BmdDHuUryGil+qgEr6rZkxmOPGqMQzsSemcwmzflR6+IWw6HQvcwJBUwXsItlhuHIGheolW9gKZY4mSc9LqH0z7xF/+YwG74h/2fv7EttQ19f5TLwF25AzgoSexbbuZcWPk4w/Qaewdg4s5qPkHpw8DXmIzjrIcZg+zIUoCJRDDidJ02AlXm4bgDI8upiD34ckjJMIO4z5tkiASvuADpxyqlBmcLinlNnq2gAOQt7gBbBOakz91bUSFxS0V+NtekZauRLel356EibCqe2VHb+PsZ1cblAJ5XhqSpz4NN8ZupRS/kxM0s3ZNP0imX4630cqqZnX20/ZoeADtiRwsau6FZj60uF3WQlqUM5ZzggRTW9oGjwCreaIjyvYbzBsEOrZKiT8vYPrUTufAHEH1LOJlFvKlwBy3Gm/Rk4CSllZ2dj88MNT3GtzdNmNK6IEqBjyZKtrmy9fUxaCihVDrNI2xpAXFDlZMpXrktbEIIL8oYgjl6wj+tWJHKMvhQxKnVRMZoJ9BOrh6rx4b+GYehXWS9/j+ZZl9gt6enE30rTn4K4UmtQ+8Jw1fb3Dx4cyLxw4ummS9nowAZGUx0J/8qasnyy50BxpdqLse9afZHivjqVnTk4kdqeDw2ClKZ9CO6hpf+AkIOefR0H5zxAzgsWX4=
  file: "$REPO_NAME.zip"
  skip_cleanup: true
  prerelease: true
  on:
    tags: false
    all_branches: true

from triplea.

DanVanAtta avatar DanVanAtta commented on May 22, 2024

@gaborbernat , shall we close this issue in favor of the PR that is open?

from triplea.

gaborbernat avatar gaborbernat commented on May 22, 2024

Yes.

Bernát GÁBOR

On Wed, Oct 28, 2015 at 11:34 PM, Dan Van Atta [email protected]
wrote:

@gaborbernat https://github.com/gaborbernat , shall we close this issue
in favor of the PR that is open?


Reply to this email directly or view it on GitHub
#31 (comment)
.

from triplea.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.