From 45d9cd601aaa8ca3eee91222fe5c3af1c5f9af43 Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Mon, 19 Jul 2021 21:20:27 +0200 Subject: [PATCH 01/90] create buildkit via CI --- .github/workflows/build.yml | 239 +++++---- {src/package => dist}/launcher-linux.sh | 0 {src/package => dist}/launcher-mac.sh | 0 {src/package => dist}/launcher-win.bat | 0 pom.xml | 157 ------ src/package/LICENSE.txt | 674 ------------------------ 6 files changed, 131 insertions(+), 939 deletions(-) rename {src/package => dist}/launcher-linux.sh (100%) rename {src/package => dist}/launcher-mac.sh (100%) rename {src/package => dist}/launcher-win.bat (100%) delete mode 100644 src/package/LICENSE.txt diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 21ef6aca2..af212e19e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,7 +4,7 @@ on: [push] jobs: - build: + test: name: Build and Test runs-on: ubuntu-latest if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')" @@ -13,7 +13,7 @@ jobs: - uses: actions/setup-java@v1 with: java-version: 16 - - uses: actions/cache@v1 + - uses: actions/cache@v2 with: path: ~/.m2/repository key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} @@ -30,120 +30,143 @@ jobs: env: CODACY_PROJECT_TOKEN: ${{ secrets.CODACY_PROJECT_TOKEN }} continue-on-error: true -### TODO: move to matrix build: - - name: Assemble buildkit-linux.zip - run: mvn -B clean package -DskipTests -Plinux - - name: Upload buildkit-linux.zip - uses: actions/upload-artifact@v1 - with: - name: buildkit-linux.zip - path: target/buildkit-linux.zip - - name: Assemble buildkit-mac.zip - run: mvn -B clean package -DskipTests -Pmac - - name: Upload buildkit-mac.zip - uses: actions/upload-artifact@v1 - with: - name: buildkit-mac.zip - path: target/buildkit-mac.zip - - name: Assemble buildkit-win.zip - run: mvn -B clean package -DskipTests -Pwindows - - name: Upload buildkit-win.zip - uses: actions/upload-artifact@v1 - with: - name: buildkit-win.zip - path: target/buildkit-win.zip - release: - name: Draft a Release on GitHub Releases - runs-on: ubuntu-latest - needs: build - if: startsWith(github.ref, 'refs/tags/') && github.repository == 'cryptomator/cryptomator' +# +# Buildkit +# + + buildkit: + name: Build buildkit-${{ matrix.profile }}.zip + needs: test + runs-on: ${{ matrix.os }} + strategy: + fail-fast: true + matrix: + include: + - os: ubuntu-latest + profile: linux + launcher: launcher-linux.sh + - os: windows-latest + profile: win + launcher: launcher-win.bat + - os: macOS-latest + profile: mac + launcher: launcher-mac.sh steps: - - uses: actions/checkout@v2 - - name: Download buildkit-linux.zip - uses: actions/download-artifact@v1 + - uses: actions/setup-java@v1 with: - name: buildkit-linux.zip - path: . - - name: Download buildkit-mac.zip - uses: actions/download-artifact@v1 + java-version: 16 + - uses: actions/cache@v2 with: - name: buildkit-mac.zip - path: . - - name: Download buildkit-win.zip - uses: actions/download-artifact@v1 + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven- + - name: Copy .jar files + run: mvn -B clean package -DskipTests -P${{ matrix.profile }} + shell: bash + - name: Archive buildkit-${{ matrix.profile }}.tar.gz + run: tar -czf buildkit-${{ matrix.profile }}.tar.gz libs mods ../LICENSE.txt ../dist/${{ matrix.launcher }} + shell: bash + working-directory: target + - name: Upload buildkit-${{ matrix.profile }}.tar.gz + uses: actions/upload-artifact@v2 with: - name: buildkit-win.zip - path: . - - name: Create tarball - run: git archive --prefix="cryptomator-${{ github.ref }}/" -o "cryptomator-${{ github.ref }}.tar.gz" ${{ github.ref }} - - name: Sign tarball with key 615D449FE6E6A235 - run: | - echo "${GPG_PRIVATE_KEY}" | gpg --batch --quiet --import - echo "${GPG_PASSPHRASE}" | gpg --batch --quiet --passphrase-fd 0 --pinentry-mode loopback -u 615D449FE6E6A235 --detach-sign -a "cryptomator-${{ github.ref }}.tar.gz" - env: - GPG_PRIVATE_KEY: ${{ secrets.RELEASES_GPG_PRIVATE_KEY }} - GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }} - - name: Create Release - id: create_release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ github.ref }} - release_name: ${{ github.ref }} - body: | - :construction: Work in Progress + name: buildkit-${{ matrix.profile }}.tar.gz + path: target/buildkit-${{ matrix.profile }}.tar.gz + if-no-files-found: error - TODO: - * [ ] add Linux appimage, zsync file and signature file - * [ ] add Windows installer and signature file - * [ ] add MacOs disk image and signature file + # release: + # name: Draft a Release on GitHub Releases + # runs-on: ubuntu-latest + # needs: test + # if: startsWith(github.ref, 'refs/tags/') && github.repository == 'cryptomator/cryptomator' + # steps: + # - uses: actions/checkout@v2 + # - name: Download buildkit-linux.zip + # uses: actions/download-artifact@v1 + # with: + # name: buildkit-linux.zip + # path: . + # - name: Download buildkit-mac.zip + # uses: actions/download-artifact@v1 + # with: + # name: buildkit-mac.zip + # path: . + # - name: Download buildkit-win.zip + # uses: actions/download-artifact@v1 + # with: + # name: buildkit-win.zip + # path: . + # - name: Create tarball + # run: git archive --prefix="cryptomator-${{ github.ref }}/" -o "cryptomator-${{ github.ref }}.tar.gz" ${{ github.ref }} + # - name: Sign tarball with key 615D449FE6E6A235 + # run: | + # echo "${GPG_PRIVATE_KEY}" | gpg --batch --quiet --import + # echo "${GPG_PASSPHRASE}" | gpg --batch --quiet --passphrase-fd 0 --pinentry-mode loopback -u 615D449FE6E6A235 --detach-sign -a "cryptomator-${{ github.ref }}.tar.gz" + # env: + # GPG_PRIVATE_KEY: ${{ secrets.RELEASES_GPG_PRIVATE_KEY }} + # GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }} + # - name: Create Release + # id: create_release + # uses: actions/create-release@v1 + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # with: + # tag_name: ${{ github.ref }} + # release_name: ${{ github.ref }} + # body: | + # :construction: Work in Progress - ## What's new + # TODO: + # * [ ] add Linux appimage, zsync file and signature file + # * [ ] add Windows installer and signature file + # * [ ] add MacOs disk image and signature file - ## Bugfixes + # ## What's new - ## Misc + # ## Bugfixes - --- + # ## Misc - :scroll: A complete list of closed issues is available [here](LINK) - draft: true - prerelease: false - - name: Upload buildkit-linux.zip to GitHub Releases - uses: actions/upload-release-asset@v1.0.1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: buildkit-linux.zip - asset_name: buildkit-linux.zip - asset_content_type: application/zip - - name: Upload buildkit-mac.zip to GitHub Releases - uses: actions/upload-release-asset@v1.0.1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: buildkit-mac.zip - asset_name: buildkit-mac.zip - asset_content_type: application/zip - - name: Upload buildkit-win.zip to GitHub Releases - uses: actions/upload-release-asset@v1.0.1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: buildkit-win.zip - asset_name: buildkit-win.zip - asset_content_type: application/zip - - name: Upload tarball signature to GitHub Releases - uses: actions/upload-release-asset@v1.0.1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: "cryptomator-${{ github.ref }}.tar.gz.asc" - asset_name: "cryptomator-${{ github.ref }}.tar.gz.asc" - asset_content_type: application/octet-stream + # --- + + # :scroll: A complete list of closed issues is available [here](LINK) + # draft: true + # prerelease: false + # - name: Upload buildkit-linux.zip to GitHub Releases + # uses: actions/upload-release-asset@v1.0.1 + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # with: + # upload_url: ${{ steps.create_release.outputs.upload_url }} + # asset_path: buildkit-linux.zip + # asset_name: buildkit-linux.zip + # asset_content_type: application/zip + # - name: Upload buildkit-mac.zip to GitHub Releases + # uses: actions/upload-release-asset@v1.0.1 + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # with: + # upload_url: ${{ steps.create_release.outputs.upload_url }} + # asset_path: buildkit-mac.zip + # asset_name: buildkit-mac.zip + # asset_content_type: application/zip + # - name: Upload buildkit-win.zip to GitHub Releases + # uses: actions/upload-release-asset@v1.0.1 + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # with: + # upload_url: ${{ steps.create_release.outputs.upload_url }} + # asset_path: buildkit-win.zip + # asset_name: buildkit-win.zip + # asset_content_type: application/zip + # - name: Upload tarball signature to GitHub Releases + # uses: actions/upload-release-asset@v1.0.1 + # env: + # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # with: + # upload_url: ${{ steps.create_release.outputs.upload_url }} + # asset_path: "cryptomator-${{ github.ref }}.tar.gz.asc" + # asset_name: "cryptomator-${{ github.ref }}.tar.gz.asc" + # asset_content_type: application/octet-stream diff --git a/src/package/launcher-linux.sh b/dist/launcher-linux.sh similarity index 100% rename from src/package/launcher-linux.sh rename to dist/launcher-linux.sh diff --git a/src/package/launcher-mac.sh b/dist/launcher-mac.sh similarity index 100% rename from src/package/launcher-mac.sh rename to dist/launcher-mac.sh diff --git a/src/package/launcher-win.bat b/dist/launcher-win.bat similarity index 100% rename from src/package/launcher-win.bat rename to dist/launcher-win.bat diff --git a/pom.xml b/pom.xml index 7b571effb..c2fef281d 100644 --- a/pom.xml +++ b/pom.xml @@ -307,36 +307,6 @@ org.apache.maven.plugins maven-surefire-plugin - - org.apache.maven.plugins - maven-resources-plugin - - - copy-resources - prepare-package - - copy-resources - - - ${project.build.directory} - - - ${project.basedir}/src/package - - version.txt - ffi-version.txt - launcher-mac.sh - launcher-linux.sh - launcher-win.bat - LICENSE.txt - - true - - - - - - org.apache.maven.plugins maven-dependency-plugin @@ -350,7 +320,6 @@ runtime ${project.build.directory}/mods - linux,mac,win ${nonModularGroupIds} @@ -474,48 +443,6 @@ ${cryptomator.integrations.mac.version} - - - - org.apache.maven.plugins - maven-assembly-plugin - - - assemble-mac - package - - single - - - - assembly-mac.xml - - false - buildkit-mac - - - - - - org.apache.maven.plugins - maven-dependency-plugin - - - copy-mac-libs - prepare-package - - copy-dependencies - - - ${project.build.directory}/mods - org.openjfx - mac - - - - - - @@ -536,48 +463,6 @@ ${cryptomator.integrations.linux.version} - - - - org.apache.maven.plugins - maven-assembly-plugin - - - assemble-linux - package - - single - - - - assembly-linux.xml - - false - buildkit-linux - - - - - - org.apache.maven.plugins - maven-dependency-plugin - - - copy-linux-libs - prepare-package - - copy-dependencies - - - ${project.build.directory}/mods - org.openjfx - linux - - - - - - @@ -597,48 +482,6 @@ ${cryptomator.integrations.win.version} - - - - org.apache.maven.plugins - maven-assembly-plugin - - - assemble-win - package - - single - - - - assembly-win.xml - - false - buildkit-win - - - - - - org.apache.maven.plugins - maven-dependency-plugin - - - copy-win-libs - prepare-package - - copy-dependencies - - - ${project.build.directory}/mods - org.openjfx - win - - - - - - diff --git a/src/package/LICENSE.txt b/src/package/LICENSE.txt deleted file mode 100644 index 20d40b6bc..000000000 --- a/src/package/LICENSE.txt +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - To protect your rights, we need to prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. You must make sure that they, too, receive -or can get the source code. And you must show them these terms so they -know their rights. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -. - - The GNU General Public License does not permit incorporating your program -into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with -the library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. But first, please read -. \ No newline at end of file From edc06898fb7a82916a28901078d11e334d9a0eb2 Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Mon, 19 Jul 2021 21:31:52 +0200 Subject: [PATCH 02/90] added missing checkout step --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index af212e19e..6bd6f7909 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -53,6 +53,7 @@ jobs: profile: mac launcher: launcher-mac.sh steps: + - uses: actions/checkout@v2 - uses: actions/setup-java@v1 with: java-version: 16 From f0cee47aeaace308d447f197a3fd029028f5048c Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Mon, 19 Jul 2021 21:50:07 +0200 Subject: [PATCH 03/90] let actions/upload-artifact assemble the buildkit --- .github/workflows/build.yml | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6bd6f7909..73f880cff 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -67,14 +67,20 @@ jobs: run: mvn -B clean package -DskipTests -P${{ matrix.profile }} shell: bash - name: Archive buildkit-${{ matrix.profile }}.tar.gz - run: tar -czf buildkit-${{ matrix.profile }}.tar.gz libs mods ../LICENSE.txt ../dist/${{ matrix.launcher }} + run: | + cp LICENSE.txt target + cp dist/${{ matrix.launcher }} target shell: bash - working-directory: target - - name: Upload buildkit-${{ matrix.profile }}.tar.gz + - name: Upload buildkit-${{ matrix.profile }} uses: actions/upload-artifact@v2 with: - name: buildkit-${{ matrix.profile }}.tar.gz - path: target/buildkit-${{ matrix.profile }}.tar.gz + name: buildkit-${{ matrix.profile }} + path: | + target/libs + target/mods + target/LICENSE.txt + target/${{ matrix.launcher }} + if-no-files-found: error if-no-files-found: error # release: From b7012d7b83f2ec3c52160f029155b8590da7ba5f Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Mon, 19 Jul 2021 21:53:12 +0200 Subject: [PATCH 04/90] removed duplicate key --- .github/workflows/build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 73f880cff..b222c81d0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -81,7 +81,6 @@ jobs: target/LICENSE.txt target/${{ matrix.launcher }} if-no-files-found: error - if-no-files-found: error # release: # name: Draft a Release on GitHub Releases From f1f55fc0ddd6fec8ba51aedb6084cc5acb4a620a Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Mon, 19 Jul 2021 22:03:20 +0200 Subject: [PATCH 05/90] include crytomator-*.jar in mods dir --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b222c81d0..3e7c03caf 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -70,6 +70,7 @@ jobs: run: | cp LICENSE.txt target cp dist/${{ matrix.launcher }} target + cp target/cryptomator-*.jar target/mods shell: bash - name: Upload buildkit-${{ matrix.profile }} uses: actions/upload-artifact@v2 From c79c7459c64c221224c28eb27639bf9cb4136714 Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Mon, 19 Jul 2021 23:10:28 +0200 Subject: [PATCH 06/90] create custom runtime image --- .github/workflows/build.yml | 74 ++++++++++++++++++++++++++++++++++--- 1 file changed, 69 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3e7c03caf..ef14da828 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -3,6 +3,14 @@ name: Build on: [push] +env: + JAVA_VERSION: 16 + ADDITIONAL_MODULES: jdk.crypto.ec,jdk.accessibility + +defaults: + run: + shell: bash + jobs: test: name: Build and Test @@ -12,7 +20,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-java@v1 with: - java-version: 16 + java-version: ${{ env.JAVA_VERSION }} - uses: actions/cache@v2 with: path: ~/.m2/repository @@ -36,7 +44,7 @@ jobs: # buildkit: - name: Build buildkit-${{ matrix.profile }}.zip + name: Build buildkit-${{ matrix.profile }} needs: test runs-on: ${{ matrix.os }} strategy: @@ -56,7 +64,7 @@ jobs: - uses: actions/checkout@v2 - uses: actions/setup-java@v1 with: - java-version: 16 + java-version: ${{ env.JAVA_VERSION }} - uses: actions/cache@v2 with: path: ~/.m2/repository @@ -65,13 +73,11 @@ jobs: ${{ runner.os }}-maven- - name: Copy .jar files run: mvn -B clean package -DskipTests -P${{ matrix.profile }} - shell: bash - name: Archive buildkit-${{ matrix.profile }}.tar.gz run: | cp LICENSE.txt target cp dist/${{ matrix.launcher }} target cp target/cryptomator-*.jar target/mods - shell: bash - name: Upload buildkit-${{ matrix.profile }} uses: actions/upload-artifact@v2 with: @@ -83,6 +89,64 @@ jobs: target/${{ matrix.launcher }} if-no-files-found: error +# +# jlink +# + + jlink: + name: Create runtime-${{ matrix.profile }} + needs: buildkit + runs-on: ${{ matrix.os }} + strategy: + fail-fast: true + matrix: + include: + - os: ubuntu-latest + profile: linux + - os: windows-latest + profile: win + - os: macOS-latest + profile: mac + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-java@v1 + with: + java-version: ${{ env.JAVA_VERSION }} + - name: Download buildkit-linux + uses: actions/download-artifact@v2 + with: + name: buildkit-${{ matrix.profile }} + path: buildkit + - name: Run jdeps + run: > + jmods=` + ${JAVA_HOME}/bin/jdeps --module-path buildkit/mods -R --multi-release ${{ env.JAVA_VERSION }} -s buildkit/mods/cryptomator-*.jar + | awk -F ' -> ' '{print $2}' + | grep -E '^java\.|^jdk\.' + | sort + | uniq + | tr '\n' ',' + ` + && echo "REQUIRED_MODULES=${jmods}" >> $GITHUB_ENV + working-directory: buildkit + - name: Create Runtime Image + run: > + ${JAVA_HOME}/bin/jlink + --verbose + --output runtime + --module-path "${JAVA_HOME/}/jmods" + --add-modules ${{ env.REQUIRED_MODULES }}${{ env.ADDITIONAL_MODULES }} + --no-header-files + --no-man-pages + --strip-debug + --compress=1 + - name: Upload runtime-${{ matrix.profile }} + uses: actions/upload-artifact@v2 + with: + name: runtime-${{ matrix.profile }} + path: runtime + if-no-files-found: error + # release: # name: Draft a Release on GitHub Releases # runs-on: ubuntu-latest From 039044ed1af61f4d26e264dcdd4929c5a7b35c39 Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Mon, 19 Jul 2021 23:17:20 +0200 Subject: [PATCH 07/90] hard code required modules for now --- .github/workflows/build.yml | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ef14da828..0bae886e4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -5,7 +5,6 @@ on: env: JAVA_VERSION: 16 - ADDITIONAL_MODULES: jdk.crypto.ec,jdk.accessibility defaults: run: @@ -95,7 +94,7 @@ jobs: jlink: name: Create runtime-${{ matrix.profile }} - needs: buildkit + needs: test runs-on: ${{ matrix.os }} strategy: fail-fast: true @@ -112,30 +111,13 @@ jobs: - uses: actions/setup-java@v1 with: java-version: ${{ env.JAVA_VERSION }} - - name: Download buildkit-linux - uses: actions/download-artifact@v2 - with: - name: buildkit-${{ matrix.profile }} - path: buildkit - - name: Run jdeps - run: > - jmods=` - ${JAVA_HOME}/bin/jdeps --module-path buildkit/mods -R --multi-release ${{ env.JAVA_VERSION }} -s buildkit/mods/cryptomator-*.jar - | awk -F ' -> ' '{print $2}' - | grep -E '^java\.|^jdk\.' - | sort - | uniq - | tr '\n' ',' - ` - && echo "REQUIRED_MODULES=${jmods}" >> $GITHUB_ENV - working-directory: buildkit - name: Create Runtime Image run: > ${JAVA_HOME}/bin/jlink --verbose --output runtime --module-path "${JAVA_HOME/}/jmods" - --add-modules ${{ env.REQUIRED_MODULES }}${{ env.ADDITIONAL_MODULES }} + --add-modules java.base,java.desktop,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,jdk.unsupported,jdk.crypto.ec,jdk.accessibility --no-header-files --no-man-pages --strip-debug From b8642677baa774a73ea952b530d54d0584698fc3 Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Mon, 19 Jul 2021 23:32:58 +0200 Subject: [PATCH 08/90] run jlink with default shell on each OS (bash on mac causes problems with variable substitution) --- .github/workflows/build.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0bae886e4..55bb194de 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -6,10 +6,6 @@ on: env: JAVA_VERSION: 16 -defaults: - run: - shell: bash - jobs: test: name: Build and Test @@ -59,6 +55,9 @@ jobs: - os: macOS-latest profile: mac launcher: launcher-mac.sh + defaults: + run: + shell: bash steps: - uses: actions/checkout@v2 - uses: actions/setup-java@v1 From 0b6529c75dae75a0618decc13e6657a0c14292fd Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Mon, 19 Jul 2021 23:39:12 +0200 Subject: [PATCH 09/90] next attempt to create a runtime image --- .github/workflows/build.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 55bb194de..c8bc7f5f2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -6,6 +6,10 @@ on: env: JAVA_VERSION: 16 +defaults: + run: + shell: bash + jobs: test: name: Build and Test @@ -55,9 +59,6 @@ jobs: - os: macOS-latest profile: mac launcher: launcher-mac.sh - defaults: - run: - shell: bash steps: - uses: actions/checkout@v2 - uses: actions/setup-java@v1 @@ -115,7 +116,7 @@ jobs: ${JAVA_HOME}/bin/jlink --verbose --output runtime - --module-path "${JAVA_HOME/}/jmods" + --module-path "${JAVA_HOME}/jmods" --add-modules java.base,java.desktop,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,jdk.unsupported,jdk.crypto.ec,jdk.accessibility --no-header-files --no-man-pages From 6a8f9759550e4e6e7c1fefe85717769089ef6e17 Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Mon, 19 Jul 2021 23:57:26 +0200 Subject: [PATCH 10/90] build appimage --- .github/workflows/build.yml | 78 ++++++++++++++++++ .../appimage/AppDir/bin/cryptomator.sh | 37 +++++++++ .../org.cryptomator.Cryptomator.desktop | 10 +++ .../apps/org.cryptomator.Cryptomator.png | Bin 0 -> 10950 bytes .../apps/org.cryptomator.Cryptomator.png | Bin 0 -> 23272 bytes .../apps/org.cryptomator.Cryptomator.svg | 1 + .../org.cryptomator.Cryptomator.appdata.xml | 69 ++++++++++++++++ 7 files changed, 195 insertions(+) create mode 100755 dist/appimage/resources/appimage/AppDir/bin/cryptomator.sh create mode 100644 dist/appimage/resources/appimage/AppDir/usr/share/applications/org.cryptomator.Cryptomator.desktop create mode 100644 dist/appimage/resources/appimage/AppDir/usr/share/icons/hicolor/256x256/apps/org.cryptomator.Cryptomator.png create mode 100644 dist/appimage/resources/appimage/AppDir/usr/share/icons/hicolor/512x512/apps/org.cryptomator.Cryptomator.png create mode 100644 dist/appimage/resources/appimage/AppDir/usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.svg create mode 100644 dist/appimage/resources/appimage/AppDir/usr/share/metainfo/org.cryptomator.Cryptomator.appdata.xml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c8bc7f5f2..fa34b3438 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -129,6 +129,84 @@ jobs: path: runtime if-no-files-found: error + + +# +# Linux AppImage +# + + linux-appimage: + name: Build AppDir + runs-on: ubuntu-latest + needs: [buildkit, jlink] + steps: + - uses: actions/checkout@v2 + - name: Set version + id: setversion + run: | + if [[ $GITHUB_REF == refs/tags/* ]]; then + echo "BUILD_VERSION=${GITHUB_REF##*/}" >> $GITHUB_ENV + else + echo "BUILD_VERSION=SNAPSHOT" >> $GITHUB_ENV + fi + - name: Download buildkit-linux + uses: actions/download-artifact@v2 + with: + name: buildkit-linux + path: Cryptomator.AppDir + - name: Download buildkit-linux + uses: actions/download-artifact@v2 + with: + name: buildkit-linux + path: Cryptomator.AppDir/runtime + - name: Extract libjffi.so # workaround for https://github.com/cryptomator/cryptomator-linux/issues/27 + run: | + JFFI_NATIVE_JAR=`ls libs/ | grep -e 'jffi-[1-9]\.[0-9]\{1,2\}.[0-9]\{1,2\}-native.jar'` + ${JAVA_HOME}/bin/jar -xf libs/${JFFI_NATIVE_JAR} /jni/x86_64-Linux/ + mv jni/x86_64-Linux/* libs/libjffi.so + working-directory: Cryptomator.AppDir + - name: Patch Cryptomator.AppDir + run: | + cp -r dist/appimage/resources/appimage/AppDir/* Cryptomator.AppDir/ + export REVISION_NO=`git rev-list --count HEAD` + envsubst '${REVISION_NO}' < dist/appimage/resources/appimage/AppDir/bin/cryptomator.sh > Cryptomator.AppDir/bin/cryptomator.sh + ln -s usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.svg Cryptomator.AppDir/org.cryptomator.Cryptomator.svg + ln -s usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.svg Cryptomator.AppDir/Cryptomator.svg + ln -s usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.svg Cryptomator.AppDir/.DirIcon + ln -s usr/share/applications/org.cryptomator.Cryptomator.desktop Cryptomator.AppDir/Cryptomator.desktop + ln -s bin/cryptomator.sh Cryptomator.AppDir/AppRun + - name: Download AppImageKit + run: | + curl -L https://github.com/AppImage/AppImageKit/releases/download/13/appimagetool-x86_64.AppImage -o appimagetool.AppImage + chmod +x appimagetool.AppImage + ./appimagetool.AppImage --appimage-extract + - name: Prepare GPG-Agent for signing with key 615D449FE6E6A235 + run: | + echo "${GPG_PRIVATE_KEY}" | gpg --batch --quiet --import + echo "${GPG_PASSPHRASE}" | gpg --batch --quiet --passphrase-fd 0 --pinentry-mode loopback -u 615D449FE6E6A235 --dry-run --sign appdir.tar.gz + env: + GPG_PRIVATE_KEY: ${{ secrets.RELEASES_GPG_PRIVATE_KEY }} + GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }} + - name: Build AppImage + run: > + ./squashfs-root/AppRun Cryptomator.AppDir cryptomator-${{ env.BUILD_VERSION }}-x86_64.AppImage + -u 'gh-releases-zsync|cryptomator|cryptomator|latest|cryptomator-*-x86_64.AppImage.zsync' + --sign --sign-key=615D449FE6E6A235 --sign-args="--batch --pinentry-mode loopback" + - name: Create Detached GPG Signature + run: | + gpg --batch --quiet --pinentry-mode loopback -u 615D449FE6E6A235 --detach-sign -a cryptomator-${{ env.BUILD_VERSION }}-x86_64.AppImage + gpg --batch --quiet --pinentry-mode loopback -u 615D449FE6E6A235 --detach-sign -a cryptomator-${{ env.BUILD_VERSION }}-x86_64.AppImage.zsync + - name: Upload AppImage + uses: actions/upload-artifact@v2 + with: + name: appimage + path: | + cryptomator-${{ env.BUILD_VERSION }}-x86_64.AppImage + cryptomator-${{ env.BUILD_VERSION }}-x86_64.AppImage.asc + cryptomator-${{ env.BUILD_VERSION }}-x86_64.AppImage.zsync + cryptomator-${{ env.BUILD_VERSION }}-x86_64.AppImage.zsync.asc + if-no-files-found: error + # release: # name: Draft a Release on GitHub Releases # runs-on: ubuntu-latest diff --git a/dist/appimage/resources/appimage/AppDir/bin/cryptomator.sh b/dist/appimage/resources/appimage/AppDir/bin/cryptomator.sh new file mode 100755 index 000000000..4a237c1b2 --- /dev/null +++ b/dist/appimage/resources/appimage/AppDir/bin/cryptomator.sh @@ -0,0 +1,37 @@ +#!/bin/sh +cd $(dirname $0) + +# determine GTK version +GTK2_PRESENT=1 # initially false +GTK3_PRESENT=0 # initially true +if command -v dpkg &> /dev/null; then # do stuff for debian based things + GTK2_PRESENT=`dpkg -l libgtk* | grep -e '\^ii' | grep -e 'libgtk2-*' &> /dev/null; echo $?` + GTK3_PRESENT=`dpkg -l libgtk* | grep -e '\^ii' | grep -e 'libgtk-3-*' &> /dev/null; echo $?` +elif command -v rpm &> /dev/null; then # do stuff for rpm based things (including yum/dnf) + GTK2_PRESENT=`rpm -qa | grep -e '\^gtk2-[0-9][0-9]*' &> /dev/null; echo $?` + GTK3_PRESENT=`rpm -qa | grep -e '\^gtk3-[0-9][0-9]*' &> /dev/null; echo $?` +elif command -v pacman &> /dev/null; then # don't forget arch + GTK2_PRESENT=`pacman -Qi gtk2 &> /dev/null; echo $?` + GTK3_PRESENT=`pacman -Qi gtk3 &> /dev/null; echo $?` +fi + +if [ "$GTK2_PRESENT" -eq 0 ] && [ "$GTK3_PRESENT" -ne 0 ]; then + GTK_FLAG="-Djdk.gtk.version=2" +fi + +# workaround for https://github.com/cryptomator/cryptomator-linux/issues/27 +export LD_PRELOAD=libs/libjffi.so + +# start Cryptomator +./runtime/bin/java \ + -p "mods" \ + -cp "libs/*" \ + -Dcryptomator.logDir="~/.local/share/Cryptomator/logs" \ + -Dcryptomator.mountPointsDir="~/.local/share/Cryptomator/mnt" \ + -Dcryptomator.settingsPath="~/.config/Cryptomator/settings.json:~/.Cryptomator/settings.json" \ + -Dcryptomator.ipcPortPath="~/.config/Cryptomator/ipcPort.bin:~/.Cryptomator/ipcPort.bin" \ + -Dcryptomator.buildNumber="appimage-${REVISION_NO}" \ + $GTK_FLAG \ + -Xss2m \ + -Xmx512m \ + -m org.cryptomator.desktop/org.cryptomator.launcher.Cryptomator diff --git a/dist/appimage/resources/appimage/AppDir/usr/share/applications/org.cryptomator.Cryptomator.desktop b/dist/appimage/resources/appimage/AppDir/usr/share/applications/org.cryptomator.Cryptomator.desktop new file mode 100644 index 000000000..3e1b34830 --- /dev/null +++ b/dist/appimage/resources/appimage/AppDir/usr/share/applications/org.cryptomator.Cryptomator.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Name=Cryptomator +Comment=Cloud Storage Encryption Utility +Exec=cryptomator %F +Icon=org.cryptomator.Cryptomator +Terminal=false +Type=Application +Categories=Utility;Security;FileTools; +StartupWMClass=org.cryptomator.launcher.Cryptomator +MimeType=application/vnd.cryptomator.encrypted;application/x-vnd.cryptomator.vault-metadata; diff --git a/dist/appimage/resources/appimage/AppDir/usr/share/icons/hicolor/256x256/apps/org.cryptomator.Cryptomator.png b/dist/appimage/resources/appimage/AppDir/usr/share/icons/hicolor/256x256/apps/org.cryptomator.Cryptomator.png new file mode 100644 index 0000000000000000000000000000000000000000..e356c35c6fe7928530de7e95be9c29ee9cf3597e GIT binary patch literal 10950 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 \ No newline at end of file diff --git a/dist/appimage/resources/appimage/AppDir/usr/share/metainfo/org.cryptomator.Cryptomator.appdata.xml b/dist/appimage/resources/appimage/AppDir/usr/share/metainfo/org.cryptomator.Cryptomator.appdata.xml new file mode 100644 index 000000000..ad4af6c70 --- /dev/null +++ b/dist/appimage/resources/appimage/AppDir/usr/share/metainfo/org.cryptomator.Cryptomator.appdata.xml @@ -0,0 +1,69 @@ + + + + org.cryptomator.Cryptomator + FSFAP + GPL-3.0-or-later + Cryptomator + Multi-platform client-side encryption tool optimized for cloud storages + +

+ Cryptomator offers multi-platform transparent client-side encryption of your files in the cloud. +

+

+ Features: +

    +
  • Works with Dropbox, Google Drive, OneDrive, ownCloud, Nextcloud and any other cloud storage service which synchronizes with a local directory
  • +
  • Open Source means: No backdoors, control is better than trust
  • +
  • Client-side: No accounts, no data shared with any online service
  • +
  • Totally transparent: Just work on the virtual drive as if it were a USB flash drive
  • +
  • AES encryption with 256-bit key length
  • +
  • File names get encrypted
  • +
  • Folder structure gets obfuscated
  • +
  • Use as many vaults in your Dropbox as you want, each having individual passwords
  • +
  • One thousand commits for the security of your data!! :tada:
  • +
+

+

+ Privacy: +

    +
  • 256-bit keys (unlimited strength policy bundled with native binaries)
  • +
  • Scrypt key derivation
  • +
  • Cryptographically secure random numbers for salts, IVs and the masterkey of course
  • +
  • Sensitive data is wiped from the heap asap
  • +
  • Lightweight: Complexity kills security
  • +
+

+

+ Consistency: +

    +
  • HMAC over file contents to recognize changed ciphertext before decryption
  • +
  • I/O operations are transactional and atomic, if the filesystems support it
  • +
  • Each file contains all information needed for decryption (except for the key of course), no common metadata means no Single Point of Failure
  • +
+

+
+ + Office + Security + FileTools + Java + + http://cryptomator.org + https://github.com/cryptomator/cryptomator/issues + https://community.cryptomator.org/c/kb/faq + https://community.cryptomator.org/ + https://cryptomator.org/ + + none + none + none + none + mild + + Cryptomator + + cryptomator + + org.cryptomator.Cryptomator.desktop +
From 64fc11eb5f9d3844e6877dd6e180f8a95e349b2b Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Tue, 20 Jul 2021 00:01:42 +0200 Subject: [PATCH 11/90] fixing AppImage build --- .github/workflows/build.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fa34b3438..52088462c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -136,7 +136,7 @@ jobs: # linux-appimage: - name: Build AppDir + name: Build AppImage runs-on: ubuntu-latest needs: [buildkit, jlink] steps: @@ -168,6 +168,7 @@ jobs: - name: Patch Cryptomator.AppDir run: | cp -r dist/appimage/resources/appimage/AppDir/* Cryptomator.AppDir/ + chmod +x Cryptomator.AppDir/runtime/bin/java export REVISION_NO=`git rev-list --count HEAD` envsubst '${REVISION_NO}' < dist/appimage/resources/appimage/AppDir/bin/cryptomator.sh > Cryptomator.AppDir/bin/cryptomator.sh ln -s usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.svg Cryptomator.AppDir/org.cryptomator.Cryptomator.svg @@ -183,7 +184,7 @@ jobs: - name: Prepare GPG-Agent for signing with key 615D449FE6E6A235 run: | echo "${GPG_PRIVATE_KEY}" | gpg --batch --quiet --import - echo "${GPG_PASSPHRASE}" | gpg --batch --quiet --passphrase-fd 0 --pinentry-mode loopback -u 615D449FE6E6A235 --dry-run --sign appdir.tar.gz + echo "${GPG_PASSPHRASE}" | gpg --batch --quiet --passphrase-fd 0 --pinentry-mode loopback -u 615D449FE6E6A235 --dry-run --sign Cryptomator.AppDir/AppRun env: GPG_PRIVATE_KEY: ${{ secrets.RELEASES_GPG_PRIVATE_KEY }} GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }} From 0a421ab9db6fdcc3f53506cfc36dfb35245d48fc Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Tue, 20 Jul 2021 00:06:20 +0200 Subject: [PATCH 12/90] download runtime to AppDir/runtime --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 52088462c..2c447af77 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -154,10 +154,10 @@ jobs: with: name: buildkit-linux path: Cryptomator.AppDir - - name: Download buildkit-linux + - name: Download runtime-linux uses: actions/download-artifact@v2 with: - name: buildkit-linux + name: runtime-linux path: Cryptomator.AppDir/runtime - name: Extract libjffi.so # workaround for https://github.com/cryptomator/cryptomator-linux/issues/27 run: | From 01a3d16007ccd0844fdf470936b6c38fa7d2d804 Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Tue, 20 Jul 2021 00:23:40 +0200 Subject: [PATCH 13/90] adjust launcher sh --- dist/appimage/resources/appimage/AppDir/bin/cryptomator.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dist/appimage/resources/appimage/AppDir/bin/cryptomator.sh b/dist/appimage/resources/appimage/AppDir/bin/cryptomator.sh index 4a237c1b2..69a1b16cd 100755 --- a/dist/appimage/resources/appimage/AppDir/bin/cryptomator.sh +++ b/dist/appimage/resources/appimage/AppDir/bin/cryptomator.sh @@ -29,7 +29,7 @@ export LD_PRELOAD=libs/libjffi.so -Dcryptomator.logDir="~/.local/share/Cryptomator/logs" \ -Dcryptomator.mountPointsDir="~/.local/share/Cryptomator/mnt" \ -Dcryptomator.settingsPath="~/.config/Cryptomator/settings.json:~/.Cryptomator/settings.json" \ - -Dcryptomator.ipcPortPath="~/.config/Cryptomator/ipcPort.bin:~/.Cryptomator/ipcPort.bin" \ + -Dcryptomator.ipcSocketPath="~/.config/Cryptomator/ipc.socket" \ -Dcryptomator.buildNumber="appimage-${REVISION_NO}" \ $GTK_FLAG \ -Xss2m \ From be44dcd56928aa22f1efa84201beda8f27b86664 Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Tue, 20 Jul 2021 10:47:42 +0200 Subject: [PATCH 14/90] added standalone build.sh for manually building AppImages --- .github/workflows/build.yml | 10 ++-- dist/appimage/build.sh | 53 ++++++++++++++++++ .../{appimage => }/AppDir/bin/cryptomator.sh | 0 .../org.cryptomator.Cryptomator.desktop | 0 .../apps/org.cryptomator.Cryptomator.png | Bin .../apps/org.cryptomator.Cryptomator.png | Bin .../apps/org.cryptomator.Cryptomator.svg | 0 .../org.cryptomator.Cryptomator.appdata.xml | 0 dist/{ => buildkit}/launcher-linux.sh | 0 dist/{ => buildkit}/launcher-mac.sh | 0 dist/{ => buildkit}/launcher-win.bat | 0 11 files changed, 57 insertions(+), 6 deletions(-) create mode 100755 dist/appimage/build.sh rename dist/appimage/resources/{appimage => }/AppDir/bin/cryptomator.sh (100%) rename dist/appimage/resources/{appimage => }/AppDir/usr/share/applications/org.cryptomator.Cryptomator.desktop (100%) rename dist/appimage/resources/{appimage => }/AppDir/usr/share/icons/hicolor/256x256/apps/org.cryptomator.Cryptomator.png (100%) rename dist/appimage/resources/{appimage => }/AppDir/usr/share/icons/hicolor/512x512/apps/org.cryptomator.Cryptomator.png (100%) rename dist/appimage/resources/{appimage => }/AppDir/usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.svg (100%) rename dist/appimage/resources/{appimage => }/AppDir/usr/share/metainfo/org.cryptomator.Cryptomator.appdata.xml (100%) rename dist/{ => buildkit}/launcher-linux.sh (100%) mode change 100644 => 100755 rename dist/{ => buildkit}/launcher-mac.sh (100%) mode change 100644 => 100755 rename dist/{ => buildkit}/launcher-win.bat (100%) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2c447af77..023e78938 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,7 +12,7 @@ defaults: jobs: test: - name: Build and Test + name: Compile and Test runs-on: ubuntu-latest if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')" steps: @@ -75,7 +75,7 @@ jobs: - name: Archive buildkit-${{ matrix.profile }}.tar.gz run: | cp LICENSE.txt target - cp dist/${{ matrix.launcher }} target + cp dist/buildkit/${{ matrix.launcher }} target cp target/cryptomator-*.jar target/mods - name: Upload buildkit-${{ matrix.profile }} uses: actions/upload-artifact@v2 @@ -129,8 +129,6 @@ jobs: path: runtime if-no-files-found: error - - # # Linux AppImage # @@ -167,10 +165,10 @@ jobs: working-directory: Cryptomator.AppDir - name: Patch Cryptomator.AppDir run: | - cp -r dist/appimage/resources/appimage/AppDir/* Cryptomator.AppDir/ + cp -r dist/appimage/resources/AppDir/* Cryptomator.AppDir/ chmod +x Cryptomator.AppDir/runtime/bin/java export REVISION_NO=`git rev-list --count HEAD` - envsubst '${REVISION_NO}' < dist/appimage/resources/appimage/AppDir/bin/cryptomator.sh > Cryptomator.AppDir/bin/cryptomator.sh + envsubst '${REVISION_NO}' < dist/appimage/resources/AppDir/bin/cryptomator.sh > Cryptomator.AppDir/bin/cryptomator.sh ln -s usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.svg Cryptomator.AppDir/org.cryptomator.Cryptomator.svg ln -s usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.svg Cryptomator.AppDir/Cryptomator.svg ln -s usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.svg Cryptomator.AppDir/.DirIcon diff --git a/dist/appimage/build.sh b/dist/appimage/build.sh new file mode 100755 index 000000000..a5f73a48b --- /dev/null +++ b/dist/appimage/build.sh @@ -0,0 +1,53 @@ +#!/bin/bash + +BASEDIR=$(dirname $0)/../.. +REVISION_NO=`git rev-list --count HEAD` + +# check preconditions +if [ -z "${JAVA_HOME}" ]; then echo "JAVA_HOME not set. Run using JAVA_HOME=/path/to/jdk ./build.sh"; exit 1; fi +command -v mvn >/dev/null 2>&1 || { echo >&2 "mvn not found."; exit 1; } +command -v curl >/dev/null 2>&1 || { echo >&2 "curl not found."; exit 1; } + +# compile +mvn -B -f${BASEDIR}/pom.xml clean package -DskipTests -Plinux + +# prepare AppDir +mkdir ${BASEDIR}/target/Cryptomator.AppDir +mv ${BASEDIR}/target/libs ${BASEDIR}/target/Cryptomator.AppDir +mv ${BASEDIR}/target/mods ${BASEDIR}/target/Cryptomator.AppDir +mv ${BASEDIR}/LICENSE.txt ${BASEDIR}/target/Cryptomator.AppDir +cd ${BASEDIR}/target/Cryptomator.AppDir + +# add runtime +${JAVA_HOME}/bin/jlink + --output runtime + --module-path "${JAVA_HOME}/jmods" + --add-modules java.base,java.desktop,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,jdk.unsupported,jdk.crypto.ec,jdk.accessibility + --no-header-files + --no-man-pages + --strip-debug + --compress=1 + +# extract jffi +JFFI_NATIVE_JAR=`ls libs | grep -e 'jffi-[1-9]\.[0-9]\{1,2\}.[0-9]\{1,2\}-native.jar'` +${JAVA_HOME}/bin/jar -xf libs/${JFFI_NATIVE_JAR} /jni/x86_64-Linux/ +mv jni/x86_64-Linux/* libs/libjffi.so +rm -r jni/x86_64-Linux + +# finalize AppDir +envsubst '${REVISION_NO}' < ${BASEDIR}/dist/appimage/resources/AppDir/bin/cryptomator.sh > Cryptomator.AppDir/bin/cryptomator.sh +ln -s usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.svg Cryptomator.AppDir/org.cryptomator.Cryptomator.svg +ln -s usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.svg Cryptomator.AppDir/Cryptomator.svg +ln -s usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.svg Cryptomator.AppDir/.DirIcon +ln -s usr/share/applications/org.cryptomator.Cryptomator.desktop Cryptomator.AppDir/Cryptomator.desktop +ln -s bin/cryptomator.sh Cryptomator.AppDir/AppRun + +# load AppImageTool +curl -L https://github.com/AppImage/AppImageKit/releases/download/13/appimagetool-x86_64.AppImage -o /tmp/appimagetool.AppImage +chmod +x /tmp/appimagetool.AppImage + +# create AppImage +/tmp/appimagetool.AppImage \ + ${BASEDIR}/target/Cryptomator.AppDir \ + cryptomator-SNAPSHOT-x86_64.AppImage \ + -u 'gh-releases-zsync|cryptomator|cryptomator|latest|cryptomator-*-x86_64.AppImage.zsync' \ No newline at end of file diff --git a/dist/appimage/resources/appimage/AppDir/bin/cryptomator.sh b/dist/appimage/resources/AppDir/bin/cryptomator.sh similarity index 100% rename from dist/appimage/resources/appimage/AppDir/bin/cryptomator.sh rename to dist/appimage/resources/AppDir/bin/cryptomator.sh diff --git a/dist/appimage/resources/appimage/AppDir/usr/share/applications/org.cryptomator.Cryptomator.desktop b/dist/appimage/resources/AppDir/usr/share/applications/org.cryptomator.Cryptomator.desktop similarity index 100% rename from dist/appimage/resources/appimage/AppDir/usr/share/applications/org.cryptomator.Cryptomator.desktop rename to dist/appimage/resources/AppDir/usr/share/applications/org.cryptomator.Cryptomator.desktop diff --git a/dist/appimage/resources/appimage/AppDir/usr/share/icons/hicolor/256x256/apps/org.cryptomator.Cryptomator.png b/dist/appimage/resources/AppDir/usr/share/icons/hicolor/256x256/apps/org.cryptomator.Cryptomator.png similarity index 100% rename from dist/appimage/resources/appimage/AppDir/usr/share/icons/hicolor/256x256/apps/org.cryptomator.Cryptomator.png rename to dist/appimage/resources/AppDir/usr/share/icons/hicolor/256x256/apps/org.cryptomator.Cryptomator.png diff --git a/dist/appimage/resources/appimage/AppDir/usr/share/icons/hicolor/512x512/apps/org.cryptomator.Cryptomator.png b/dist/appimage/resources/AppDir/usr/share/icons/hicolor/512x512/apps/org.cryptomator.Cryptomator.png similarity index 100% rename from dist/appimage/resources/appimage/AppDir/usr/share/icons/hicolor/512x512/apps/org.cryptomator.Cryptomator.png rename to dist/appimage/resources/AppDir/usr/share/icons/hicolor/512x512/apps/org.cryptomator.Cryptomator.png diff --git a/dist/appimage/resources/appimage/AppDir/usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.svg b/dist/appimage/resources/AppDir/usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.svg similarity index 100% rename from dist/appimage/resources/appimage/AppDir/usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.svg rename to dist/appimage/resources/AppDir/usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.svg diff --git a/dist/appimage/resources/appimage/AppDir/usr/share/metainfo/org.cryptomator.Cryptomator.appdata.xml b/dist/appimage/resources/AppDir/usr/share/metainfo/org.cryptomator.Cryptomator.appdata.xml similarity index 100% rename from dist/appimage/resources/appimage/AppDir/usr/share/metainfo/org.cryptomator.Cryptomator.appdata.xml rename to dist/appimage/resources/AppDir/usr/share/metainfo/org.cryptomator.Cryptomator.appdata.xml diff --git a/dist/launcher-linux.sh b/dist/buildkit/launcher-linux.sh old mode 100644 new mode 100755 similarity index 100% rename from dist/launcher-linux.sh rename to dist/buildkit/launcher-linux.sh diff --git a/dist/launcher-mac.sh b/dist/buildkit/launcher-mac.sh old mode 100644 new mode 100755 similarity index 100% rename from dist/launcher-mac.sh rename to dist/buildkit/launcher-mac.sh diff --git a/dist/launcher-win.bat b/dist/buildkit/launcher-win.bat similarity index 100% rename from dist/launcher-win.bat rename to dist/buildkit/launcher-win.bat From 8d17042456e2485794ac01a4f12344de33a4c32f Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Tue, 20 Jul 2021 12:33:35 +0200 Subject: [PATCH 15/90] updated standalone build.sh [ci skip] --- dist/appimage/.gitignore | 4 ++++ dist/appimage/build.sh | 25 ++++++++++++------------- 2 files changed, 16 insertions(+), 13 deletions(-) create mode 100644 dist/appimage/.gitignore diff --git a/dist/appimage/.gitignore b/dist/appimage/.gitignore new file mode 100644 index 000000000..1ed40c771 --- /dev/null +++ b/dist/appimage/.gitignore @@ -0,0 +1,4 @@ +# created during build +Cryptomator.AppDir +*.AppImage +*.AppImage.zsync \ No newline at end of file diff --git a/dist/appimage/build.sh b/dist/appimage/build.sh index a5f73a48b..5ad764464 100755 --- a/dist/appimage/build.sh +++ b/dist/appimage/build.sh @@ -1,6 +1,6 @@ #!/bin/bash -BASEDIR=$(dirname $0)/../.. +cd $(dirname $0) REVISION_NO=`git rev-list --count HEAD` # check preconditions @@ -9,18 +9,17 @@ command -v mvn >/dev/null 2>&1 || { echo >&2 "mvn not found."; exit 1; } command -v curl >/dev/null 2>&1 || { echo >&2 "curl not found."; exit 1; } # compile -mvn -B -f${BASEDIR}/pom.xml clean package -DskipTests -Plinux +mvn -B -f../../pom.xml clean package -DskipTests -Plinux # prepare AppDir -mkdir ${BASEDIR}/target/Cryptomator.AppDir -mv ${BASEDIR}/target/libs ${BASEDIR}/target/Cryptomator.AppDir -mv ${BASEDIR}/target/mods ${BASEDIR}/target/Cryptomator.AppDir -mv ${BASEDIR}/LICENSE.txt ${BASEDIR}/target/Cryptomator.AppDir -cd ${BASEDIR}/target/Cryptomator.AppDir +mkdir Cryptomator.AppDir +mv ../../target/libs Cryptomator.AppDir +mv ../../target/mods Cryptomator.AppDir +cp ../../LICENSE.txt Cryptomator.AppDir # add runtime ${JAVA_HOME}/bin/jlink - --output runtime + --output Cryptomator.AppDir/runtime --module-path "${JAVA_HOME}/jmods" --add-modules java.base,java.desktop,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,jdk.unsupported,jdk.crypto.ec,jdk.accessibility --no-header-files @@ -29,13 +28,13 @@ ${JAVA_HOME}/bin/jlink --compress=1 # extract jffi -JFFI_NATIVE_JAR=`ls libs | grep -e 'jffi-[1-9]\.[0-9]\{1,2\}.[0-9]\{1,2\}-native.jar'` -${JAVA_HOME}/bin/jar -xf libs/${JFFI_NATIVE_JAR} /jni/x86_64-Linux/ -mv jni/x86_64-Linux/* libs/libjffi.so +JFFI_NATIVE_JAR=`ls Cryptomator.AppDir/libs | grep -e 'jffi-[1-9]\.[0-9]\{1,2\}.[0-9]\{1,2\}-native.jar'` +${JAVA_HOME}/bin/jar -xf Cryptomator.AppDir/libs/${JFFI_NATIVE_JAR} /jni/x86_64-Linux/ +mv jni/x86_64-Linux/* Cryptomator.AppDir/libs/libjffi.so rm -r jni/x86_64-Linux # finalize AppDir -envsubst '${REVISION_NO}' < ${BASEDIR}/dist/appimage/resources/AppDir/bin/cryptomator.sh > Cryptomator.AppDir/bin/cryptomator.sh +envsubst '${REVISION_NO}' < resources/AppDir/bin/cryptomator.sh > Cryptomator.AppDir/bin/cryptomator.sh ln -s usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.svg Cryptomator.AppDir/org.cryptomator.Cryptomator.svg ln -s usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.svg Cryptomator.AppDir/Cryptomator.svg ln -s usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.svg Cryptomator.AppDir/.DirIcon @@ -48,6 +47,6 @@ chmod +x /tmp/appimagetool.AppImage # create AppImage /tmp/appimagetool.AppImage \ - ${BASEDIR}/target/Cryptomator.AppDir \ + Cryptomator.AppDir \ cryptomator-SNAPSHOT-x86_64.AppImage \ -u 'gh-releases-zsync|cryptomator|cryptomator|latest|cryptomator-*-x86_64.AppImage.zsync' \ No newline at end of file From 18305ca2d61684c78177b927ae5e763cbe612d1d Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Tue, 20 Jul 2021 13:51:03 +0200 Subject: [PATCH 16/90] build windows app dir --- .github/workflows/build.yml | 72 +++++++++++++++++++- dist/msi/resources/app/Cryptomator.ico | Bin 0 -> 162342 bytes dist/msi/resources/app/dlls/dokan1.dll | Bin 0 -> 524800 bytes dist/msi/resources/app/dlls/jnidispatch.dll | Bin 0 -> 246272 bytes 4 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 dist/msi/resources/app/Cryptomator.ico create mode 100755 dist/msi/resources/app/dlls/dokan1.dll create mode 100644 dist/msi/resources/app/dlls/jnidispatch.dll diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 023e78938..0908007f5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -147,6 +147,7 @@ jobs: else echo "BUILD_VERSION=SNAPSHOT" >> $GITHUB_ENV fi + echo "REVISION_NO=`git rev-list --count HEAD`" >> $GITHUB_ENV - name: Download buildkit-linux uses: actions/download-artifact@v2 with: @@ -167,13 +168,14 @@ jobs: run: | cp -r dist/appimage/resources/AppDir/* Cryptomator.AppDir/ chmod +x Cryptomator.AppDir/runtime/bin/java - export REVISION_NO=`git rev-list --count HEAD` envsubst '${REVISION_NO}' < dist/appimage/resources/AppDir/bin/cryptomator.sh > Cryptomator.AppDir/bin/cryptomator.sh ln -s usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.svg Cryptomator.AppDir/org.cryptomator.Cryptomator.svg ln -s usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.svg Cryptomator.AppDir/Cryptomator.svg ln -s usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.svg Cryptomator.AppDir/.DirIcon ln -s usr/share/applications/org.cryptomator.Cryptomator.desktop Cryptomator.AppDir/Cryptomator.desktop ln -s bin/cryptomator.sh Cryptomator.AppDir/AppRun + env: + REVISION_NO: ${{ env.REVISION_NO }} - name: Download AppImageKit run: | curl -L https://github.com/AppImage/AppImageKit/releases/download/13/appimagetool-x86_64.AppImage -o appimagetool.AppImage @@ -206,6 +208,74 @@ jobs: cryptomator-${{ env.BUILD_VERSION }}-x86_64.AppImage.zsync.asc if-no-files-found: error +# +# Windows App Dir +# + + windows-appdir: + name: Build App Directory + runs-on: windows-latest + needs: [buildkit, jlink] + steps: + - uses: actions/checkout@v2 + - name: Set version + id: setversion + run: | + if [[ $GITHUB_REF == refs/tags/* ]]; then + echo "BUILD_VERSION=${GITHUB_REF##*/}" >> $GITHUB_ENV + echo "NUMERIC_VERSION=${GITHUB_REF##*/}" >> $GITHUB_ENV + else + echo "BUILD_VERSION=SNAPSHOT" >> $GITHUB_ENV + echo "NUMERIC_VERSION=99.0.0" >> $GITHUB_ENV + fi + echo "REVISION_NO=`git rev-list --count HEAD`" >> $GITHUB_ENV + - name: Download buildkit-win + uses: actions/download-artifact@v2 + with: + name: buildkit-win + path: buildkit + - name: Download runtime-win + uses: actions/download-artifact@v2 + with: + name: runtime-win + path: runtime + - name: Create app directory + run: > + "${JAVA_HOME}\bin\jpackage" + --verbose + --type app-image + --runtime-image runtime + --input buildkit/libs + --module-path buildkit/mods + --dest app + --name Cryptomator + --vendor "Skymatic GmbH" + --copyright "(C) 2016 - 2021 Skymatic GmbH" + --app-version "${{ env.NUMERIC_VERSION }}.${{ env.REVISION_NO }}" + --icon dist/msi/resources/app/Cryptomator.ico + --java-options "-Dfile.encoding=`"utf-8`"" + --java-options "-Dcryptomator.logDir=`"~/AppData/Roaming/Cryptomator`"" + --java-options "-Dcryptomator.settingsPath=`"~/AppData/Roaming/Cryptomator/settings.json`"" + --java-options "-Dcryptomator.ipcPortPath=`"~/AppData/Roaming/Cryptomator/ipcPort.bin`"" + --java-options "-Dcryptomator.keychainPath=`"~/AppData/Roaming/Cryptomator/keychain.json`"" + --java-options "-Dcryptomator.mountPointsDir=`"~/Cryptomator`"" + --java-options "-Dcryptomator.showTrayIcon=true" + --java-options "-Dcryptomator.buildNumber=`"msi-${{ env.REVISION_NO }}`"" + --java-options "-Xss2m" + --java-options "-Xmx256m" + --module org.cryptomator.desktop/org.cryptomator.launcher.Cryptomator + shell: bash + - name: Patch app directory + run: | + cp dist/msi/resources/app/dlls/* app/Cryptomator/ + shell: bash + - name: Upload app directory + uses: actions/upload-artifact@v2 + with: + name: win-appdir + path: app/Cryptomator + if-no-files-found: error + # release: # name: Draft a Release on GitHub Releases # runs-on: ubuntu-latest diff --git a/dist/msi/resources/app/Cryptomator.ico b/dist/msi/resources/app/Cryptomator.ico new file mode 100644 index 0000000000000000000000000000000000000000..7d1d8be880abb6680387d2a67b814a0bd38368c4 GIT binary patch literal 162342 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 literal 0 HcmV?d00001 diff --git a/dist/msi/resources/app/dlls/dokan1.dll b/dist/msi/resources/app/dlls/dokan1.dll new file mode 100755 index 0000000000000000000000000000000000000000..badc12b2ad424a7045097df3a5ed25df72b1f135 GIT binary patch literal 524800 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

K`W! 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