diff --git a/.gitignore b/.gitignore index d17f34632adb1768d2551edb1a9907862d6a8122..5f5db0d3a1379b2949b79c468de095de1a50ef41 100644 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,5 @@ /snowflake*.zip /snowflake*.pom /snowflake*.jar -/reference \ No newline at end of file +/reference +/output diff --git a/build-binary.py b/build-binary.py index 6dd281d5d69f3c8c5bd04d99124be7964fe6571c..3df8c54b7173ceb4c817f88a4adc953bcb061014 100755 --- a/build-binary.py +++ b/build-binary.py @@ -5,7 +5,8 @@ from subprocess import check_call from utils import get_build_versions, ex, get_sha256, zip_files, get_final_file_path, \ get_sources_file_path, get_pom_file_path, reset_time, get_version_number, check_go_version, \ - get_version_and_tool, get_output_dir, get_platform_output_dir, GO_PATH, GO_ROOT, NDK_DIR + get_version_and_tool, get_output_dir, get_platform_output_dir, get_ld_flags, \ + GO_PATH, GO_ROOT, NDK_DIR def main(): @@ -105,8 +106,7 @@ def build_android(tool, versions): def build_android_arch(tool, versions, env, clang_arch, ndk_arch, abi): - # TODO: Raise API level and upgrade NDK when we drop support for Android 4 - min_api = '21' if ndk_arch.endswith('64') else '16' + min_api = '21' clang = "%s/toolchains/llvm/prebuilt/linux-x86_64/bin/%s%s-clang" % (NDK_DIR, clang_arch, min_api) env['CC'] = os.path.abspath(clang) @@ -122,8 +122,9 @@ def build_android_arch(tool, versions, env, clang_arch, ndk_arch, abi): output_file = os.path.abspath(os.path.join(os.path.curdir, tool)) go_flags = ['-asmflags', '-trimpath', '-o', output_file] + ld_flags = ["-ldflags=-w -s -extldflags=-pie %s" % get_ld_flags(versions)] repo_dir = get_repo_dir(versions) - ex(['go', 'build', '-buildmode=pie', '-ldflags', '-w -s -extldflags=-pie'] + go_flags + + ex(['go', 'build', '-buildmode=pie'] + ld_flags + go_flags + [os.path.join('.', versions['build_path'])], env=env, cwd=repo_dir) shutil.copy(output_file, tool_path) @@ -165,8 +166,9 @@ def build_desktop_arch(tool, versions, platform, arch, goarch, goarm=None, outpu output_file = os.path.abspath(os.path.join(os.path.curdir, tool)) go_flags = ['-asmflags', '-trimpath', '-o', output_file] + ld_flags = ["-ldflags=-w -s %s" % get_ld_flags(versions)] repo_dir = get_repo_dir(versions) - ex(['go', 'build', '-ldflags', '-w -s'] + go_flags + [build_path], env=env, cwd=repo_dir) + ex(['go', 'build'] + ld_flags + go_flags + [build_path], env=env, cwd=repo_dir) shutil.copy(output_file, tool_path) diff --git a/template-lyrebird-android.pom b/template-lyrebird-android.pom new file mode 100644 index 0000000000000000000000000000000000000000..74eacc2f5f63b6c2520f2f427c1f871136644f99 --- /dev/null +++ b/template-lyrebird-android.pom @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project> + <modelVersion>4.0.0</modelVersion> + <groupId>org.briarproject</groupId> + <artifactId>lyrebird-android</artifactId> + <name>lyrebird-android</name> + <version>VERSION</version> + <url>https://torproject.org</url> + <description>Repo for building lyrebird for Android.</description> + <licenses> + <license> + <name>BSD-3-clause</name> + <url>https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/lyrebird/-/blob/main/LICENSE</url> + </license> + </licenses> + <developers> + <developer> + <id>yawning</id> + <name>Yawning Angel</name> + <email>yawning at schwanenlied dot me</email> + </developer> + <developer> + <id>torproject</id> + <name>Tor Project</name> + <email>frontdesk@rt.torproject.org</email> + </developer> + </developers> + <scm> + <connection>scm:https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/lyrebird.git</connection> + <developerConnection>scm:git@gitlab.torproject.org:tpo/anti-censorship/pluggable-transports/lyrebird.git</developerConnection> + <url>scm:https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/lyrebird.git</url> + </scm> +</project> diff --git a/template-lyrebird-linux.pom b/template-lyrebird-linux.pom new file mode 100644 index 0000000000000000000000000000000000000000..f010b110586031da78135d80821396c6bfc16e65 --- /dev/null +++ b/template-lyrebird-linux.pom @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project> + <modelVersion>4.0.0</modelVersion> + <groupId>org.briarproject</groupId> + <artifactId>lyrebird-linux</artifactId> + <name>lyrebird-linux</name> + <version>VERSION</version> + <url>https://torproject.org</url> + <description>Repo for building lyrebird for Linux.</description> + <licenses> + <license> + <name>BSD-3-clause</name> + <url>https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/lyrebird/-/blob/main/LICENSE</url> + </license> + </licenses> + <developers> + <developer> + <id>yawning</id> + <name>Yawning Angel</name> + <email>yawning at schwanenlied dot me</email> + </developer> + <developer> + <id>torproject</id> + <name>Tor Project</name> + <email>frontdesk@rt.torproject.org</email> + </developer> + </developers> + <scm> + <connection>scm:https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/lyrebird.git</connection> + <developerConnection>scm:git@gitlab.torproject.org:tpo/anti-censorship/pluggable-transports/lyrebird.git</developerConnection> + <url>scm:https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/lyrebird.git</url> + </scm> +</project> diff --git a/template-lyrebird-macos.pom b/template-lyrebird-macos.pom new file mode 100644 index 0000000000000000000000000000000000000000..467129034f58e1c4d7be30cd8b723a0d72037826 --- /dev/null +++ b/template-lyrebird-macos.pom @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project> + <modelVersion>4.0.0</modelVersion> + <groupId>org.briarproject</groupId> + <artifactId>lyrebird-macos</artifactId> + <name>lyrebird-macos</name> + <version>VERSION</version> + <url>https://torproject.org</url> + <description>Repo for building lyrebird for macOS.</description> + <licenses> + <license> + <name>BSD-3-clause</name> + <url>https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/lyrebird/-/blob/main/LICENSE</url> + </license> + </licenses> + <developers> + <developer> + <id>yawning</id> + <name>Yawning Angel</name> + <email>yawning at schwanenlied dot me</email> + </developer> + <developer> + <id>torproject</id> + <name>Tor Project</name> + <email>frontdesk@rt.torproject.org</email> + </developer> + </developers> + <scm> + <connection>scm:https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/lyrebird.git</connection> + <developerConnection>scm:git@gitlab.torproject.org:tpo/anti-censorship/pluggable-transports/lyrebird.git</developerConnection> + <url>scm:https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/lyrebird.git</url> + </scm> +</project> diff --git a/template-lyrebird-windows.pom b/template-lyrebird-windows.pom new file mode 100644 index 0000000000000000000000000000000000000000..ddee6435282398d23148424e7c19dbba9ad742b8 --- /dev/null +++ b/template-lyrebird-windows.pom @@ -0,0 +1,33 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project> + <modelVersion>4.0.0</modelVersion> + <groupId>org.briarproject</groupId> + <artifactId>lyrebird-windows</artifactId> + <name>lyrebird-windows</name> + <version>VERSION</version> + <url>https://torproject.org</url> + <description>Repo for building lyrebird for Windows.</description> + <licenses> + <license> + <name>BSD-3-clause</name> + <url>https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/lyrebird/-/blob/main/LICENSE</url> + </license> + </licenses> + <developers> + <developer> + <id>yawning</id> + <name>Yawning Angel</name> + <email>yawning at schwanenlied dot me</email> + </developer> + <developer> + <id>torproject</id> + <name>Tor Project</name> + <email>frontdesk@rt.torproject.org</email> + </developer> + </developers> + <scm> + <connection>scm:https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/lyrebird.git</connection> + <developerConnection>scm:git@gitlab.torproject.org:tpo/anti-censorship/pluggable-transports/lyrebird.git</developerConnection> + <url>scm:https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/lyrebird.git</url> + </scm> +</project> diff --git a/utils.py b/utils.py index c45e88dc4d28dbecad3622f9b6d8fa225fea6f3a..bf2740876ef95193b61b93465c425aee83ac2f57 100644 --- a/utils.py +++ b/utils.py @@ -31,6 +31,8 @@ def get_build_versions(tool, tag): versions[tool][tag]['tag'] = tag return tag, versions[tool][tag] +def get_ld_flags(versions): + return versions['ld_flags'] if 'ld_flags' in versions else '' def check_go_version(versions): # Check if proper Go version is installed (trailing space, because 'go1.10' in 'go1.10.1') diff --git a/versions.json b/versions.json index 998786096e7ce2bae060867c7d9d9aaa3df0903d..e58e847c5efd078d84c219447507b15990082810 100644 --- a/versions.json +++ b/versions.json @@ -1,4 +1,23 @@ { + "lyrebird": { + "0.5.0": { + "repo_url": "https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/lyrebird.git", + "revision": "297ae51866f56146f0523bcf2fd84e0b6ee8a88a", + "ld_flags": "-X main.lyrebirdVersion=0.5.0", + "build_path": "cmd/lyrebird", + "repo_dir": "lyrebird", + "go": { + "version": "go1.21.13", + "sha256": "71fb31606a1de48d129d591e8717a63e0c5565ffba09a24ea9f899a13214c34d" + }, + "ndk": { + "url": "https://dl.google.com/android/repository/android-ndk-r27c-linux.zip", + "revision": "27.2.12479018", + "sha256": "59c2f6dc96743b5daf5d1626684640b20a6bd2b1d85b13156b90333741bad5cc" + }, + "timestamp": "201001010000.00" + } + }, "obfs4proxy": { "0.0.14-tor2": { "repo_url": "https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/obfs4.git", @@ -177,4 +196,4 @@ "timestamp": "201001010000.00" } } -} \ No newline at end of file +}