mirror of
https://github.com/onionshare/onionshare.git
synced 2024-12-26 15:59:48 -05:00
1045 lines
40 KiB
YAML
1045 lines
40 KiB
YAML
version: 2.1
|
|
|
|
orbs:
|
|
win: circleci/windows@4.0.0
|
|
|
|
workflows:
|
|
version: 2
|
|
ci:
|
|
jobs:
|
|
- test-cli
|
|
# - test-gui
|
|
- build-tor-windows:
|
|
requires:
|
|
- test-cli
|
|
# - build-win64:
|
|
# requires:
|
|
# - test-cli
|
|
# # - test-gui
|
|
# - build-win32:
|
|
# requires:
|
|
# - test-cli
|
|
# # - test-gui
|
|
# - build-macos:
|
|
# requires:
|
|
# - test-cli
|
|
# # - test-gui
|
|
|
|
jobs:
|
|
test-cli:
|
|
docker:
|
|
- image: cimg/python:3.9
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: Install dependencies
|
|
command: |
|
|
sudo apt-get update
|
|
sudo apt-get -y install tor obfs4proxy
|
|
- restore_cache:
|
|
key: test-cli-poetry-deps-{{ .Environment.CACHE_VERSION }}-{{ checksum "~/project/cli/poetry.lock" }}
|
|
- run:
|
|
name: Install poetry dependencies
|
|
command: |
|
|
cd ~/project/cli
|
|
poetry install
|
|
- save_cache:
|
|
key: test-cli-poetry-deps-{{ .Environment.CACHE_VERSION }}-{{ checksum "~/project/cli/poetry.lock" }}
|
|
paths:
|
|
- /home/circleci/.cache/pypoetry/virtualenvs
|
|
- run:
|
|
name: Run tests
|
|
command: |
|
|
cd ~/project/cli
|
|
poetry run pytest -v ./tests
|
|
poetry run onionshare-cli --local-only ./tests --auto-stop-timer 2
|
|
poetry run onionshare-cli --local-only --receive --auto-stop-timer 2
|
|
poetry run onionshare-cli --local-only --website ../docs --auto-stop-timer 2
|
|
poetry run onionshare-cli --local-only --chat --auto-stop-timer 2
|
|
|
|
test-gui:
|
|
docker:
|
|
- image: cimg/python:3.9
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: Install dependencies
|
|
command: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y tor obfs4proxy gcc python3-dev python3-pyside2.qtcore python3-pyside2.qtwidgets python3-pyside2.qtgui
|
|
sudo apt-get install -y xvfb x11-utils libxkbcommon-x11-0 libxcb-randr0-dev libxcb-xtest0-dev libxcb-xinerama0-dev libxcb-shape0-dev libxcb-xkb-dev libxcb-render-util0 libxcb-icccm4 libxcb-keysyms1 libxcb-image0
|
|
- restore_cache:
|
|
key: test-desktop-poetry-deps-{{ checksum "~/project/desktop/poetry.lock" }}-{{ .Environment.CACHE_VERSION }}
|
|
- run:
|
|
name: Install poetry dependencies
|
|
command: |
|
|
cd ~/project/desktop
|
|
poetry install
|
|
- save_cache:
|
|
key: test-desktop-poetry-deps-{{ checksum "~/project/desktop/poetry.lock" }}-{{ .Environment.CACHE_VERSION }}
|
|
paths:
|
|
- /home/circleci/.cache/pypoetry/virtualenvs
|
|
- run:
|
|
name: Run tests
|
|
command: |
|
|
cd ~/project/desktop
|
|
QT_DEBUG_PLUGINS=1 xvfb-run poetry run pytest -v ./tests/test_gui_*.py
|
|
|
|
# Based off of https://github.com/ahf/tor-win32
|
|
build-tor-windows:
|
|
docker:
|
|
- image: cimg/python:3.9
|
|
environment:
|
|
# NOTE: change when upgrading openssl
|
|
OPENSSL_VERSION: "3.0.3"
|
|
# NOTE: change when upgrading libevent
|
|
LIBEVENT_TAG: release-2.1.12-stable
|
|
# NOTE: change when upgrading tor
|
|
TOR_TAG: tor-0.4.7.7
|
|
steps:
|
|
- run:
|
|
name: Install build dependencies
|
|
command: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y autoconf automake libtool
|
|
sudo apt-get install -y gcc-mingw-w64-i686 gcc-mingw-w64-x86-64 libz-mingw-w64-dev
|
|
|
|
- run:
|
|
name: Create folders
|
|
command: |
|
|
mkdir ~/build
|
|
mkdir ~/build/src
|
|
mkdir ~/build/dist
|
|
mkdir ~/build/prefix-openssl-x32
|
|
mkdir ~/build/prefix-openssl-x64
|
|
mkdir ~/build/prefix-libevent-x32
|
|
mkdir ~/build/prefix-libevent-x64
|
|
mkdir ~/build/prefix-tor-x32
|
|
mkdir ~/build/prefix-tor-x64
|
|
|
|
- restore_cache:
|
|
# NOTE: change when upgrading openssl
|
|
key: build-tor-windows-download-openssl-3.0.3-{{ .Environment.CACHE_VERSION }}
|
|
- run:
|
|
name: Download openssl
|
|
command: |
|
|
if [[ -f "/home/circleci/build/dist/openssl-$OPENSSL_VERSION.tar.gz" ]]; then
|
|
echo "openssl already downloaded, skipping"
|
|
exit 0
|
|
fi
|
|
|
|
cd ~/build/dist
|
|
|
|
# download
|
|
wget https://www.openssl.org/source/openssl-$OPENSSL_VERSION.tar.gz
|
|
echo "ee0078adcef1de5f003c62c80cc96527721609c6f3bb42b7795df31f8b558c0b openssl-$OPENSSL_VERSION.tar.gz" | sha256sum --check --status
|
|
if [ $? -ne 0 ]; then
|
|
echo "openssl checksum failed"
|
|
exit -1
|
|
fi
|
|
- save_cache:
|
|
# NOTE: change when upgrading openssl
|
|
key: build-tor-windows-download-openssl-3.0.3-{{ .Environment.CACHE_VERSION }}
|
|
paths:
|
|
- /home/circleci/build/dist/openssl-3.0.3.tar.gz
|
|
|
|
- restore_cache:
|
|
# NOTE: change when upgrading libevent
|
|
key: build-tor-windows-download-libevent-2.1.12-stable-{{ .Environment.CACHE_VERSION }}
|
|
- run:
|
|
name: Download libevent
|
|
command: |
|
|
if [[ -d "/home/circleci/build/dist/libevent" ]]; then
|
|
echo "livevent already downloaded, skipping"
|
|
exit 0
|
|
fi
|
|
|
|
# git clone
|
|
curl "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x9e3ac83a27974b84d1b3401db86086848ef8686d" | gpg --import
|
|
cd ~/build/dist
|
|
git clone https://github.com/libevent/libevent.git
|
|
cd libevent
|
|
git tag -v $LIBEVENT_TAG
|
|
if [ $? -ne 0 ]; then
|
|
echo "libevent tag doesn't verify"
|
|
exit -1
|
|
fi
|
|
git checkout $LIBEVENT_TAG
|
|
- save_cache:
|
|
# NOTE: change when upgrading libevent
|
|
key: build-tor-windows-download-libevent-2.1.12-stable-{{ .Environment.CACHE_VERSION }}
|
|
paths:
|
|
- /home/circleci/build/dist/libevent
|
|
|
|
- restore_cache:
|
|
# NOTE: change when upgrading tor
|
|
key: build-tor-windows-download-libevent-2.1.12-stable-{{ .Environment.CACHE_VERSION }}
|
|
- run:
|
|
name: Download tor
|
|
command: |
|
|
if [[ -d "/home/circleci/build/dist/tor" ]]; then
|
|
echo "tor already downloaded, skipping"
|
|
exit 0
|
|
fi
|
|
|
|
# git clone
|
|
curl https://keys.openpgp.org/vks/v1/by-fingerprint/B74417EDDF22AC9F9E90F49142E86A2A11F48D36 | gpg --import
|
|
cd ~/build/dist
|
|
git clone https://git.torproject.org/tor.git
|
|
cd tor
|
|
git tag -v $TOR_TAG
|
|
if [ $? -ne 0 ]; then
|
|
echo "tor tag doesn't verify"
|
|
exit -1
|
|
fi
|
|
git checkout $TOR_TAG
|
|
- save_cache:
|
|
# NOTE: change when upgrading tor
|
|
key: build-tor-windows-download-libevent-2.1.12-stable-{{ .Environment.CACHE_VERSION }}
|
|
paths:
|
|
- /home/circleci/build/dist/tor
|
|
|
|
- restore_cache:
|
|
# NOTE: change when upgrading openssl
|
|
key: build-tor-windows-openssl-x32-3.0.3-{{ .Environment.CACHE_VERSION }}
|
|
- run:
|
|
name: Build openssl (32-bit)
|
|
command: |
|
|
if [[ -f "/home/circleci/build/prefix-openssl-x32/bin/openssl.exe" ]]; then
|
|
echo "openssl (32-bit) already compiled, skipping"
|
|
exit 0
|
|
fi
|
|
|
|
# extract
|
|
tar zxfv ~/build/dist/openssl-$OPENSSL_VERSION.tar.gz -C ~/build/src/
|
|
mv ~/build/src/openssl-$OPENSSL_VERSION ~/build/src/openssl-x32
|
|
|
|
# build 32-bit
|
|
export MINGW=mingw
|
|
export HOST=i686-w64-mingw32
|
|
cd ~/build/src/openssl-x32
|
|
./Configure $MINGW shared --cross-compile-prefix=$HOST- --prefix=/home/circleci/build/prefix-openssl-x32
|
|
make -j$(nproc)
|
|
make install
|
|
- save_cache:
|
|
# NOTE: change when upgrading openssl
|
|
key: build-tor-windows-openssl-x32-3.0.3-{{ .Environment.CACHE_VERSION }}
|
|
paths:
|
|
- /home/circleci/build/prefix-openssl-x32
|
|
|
|
- restore_cache:
|
|
# NOTE: change when upgrading openssl
|
|
key: build-tor-windows-openssl-x64-3.0.3-{{ .Environment.CACHE_VERSION }}
|
|
- run:
|
|
name: Build openssl (64-bit)
|
|
command: |
|
|
if [[ -f "/home/circleci/build/prefix-openssl-x64/bin/openssl.exe" ]]; then
|
|
echo "openssl (64-bit) already compiled, skipping"
|
|
exit 0
|
|
fi
|
|
|
|
# extract
|
|
tar zxfv ~/build/dist/openssl-$OPENSSL_VERSION.tar.gz -C ~/build/src/
|
|
mv ~/build/src/openssl-$OPENSSL_VERSION ~/build/src/openssl-x64
|
|
|
|
# build 64-bit
|
|
export MINGW=mingw64
|
|
export HOST=x86_64-w64-mingw32
|
|
cd ~/build/src/openssl-x64
|
|
./Configure $MINGW shared --cross-compile-prefix=$HOST- --prefix=/home/circleci/build/prefix-openssl-x64
|
|
make -j$(nproc)
|
|
make install
|
|
- save_cache:
|
|
# NOTE: change when upgrading openssl
|
|
key: build-tor-windows-openssl-x64-3.0.3-{{ .Environment.CACHE_VERSION }}
|
|
paths:
|
|
- /home/circleci/build/prefix-openssl-x64
|
|
|
|
- restore_cache:
|
|
# NOTE: change when upgrading libevent
|
|
key: build-tor-windows-libevent-x32-2.1.12-stable-{{ .Environment.CACHE_VERSION }}
|
|
- run:
|
|
name: Build libevent (32-bit)
|
|
command: |
|
|
if [[ -d "/home/circleci/build/prefix-libevent-x32/lib" ]]; then
|
|
echo "libevent (32-bit) already compiled, skipping"
|
|
exit 0
|
|
fi
|
|
|
|
cp -r ~/build/dist/libevent ~/build/src/libevent-x32
|
|
|
|
# build 32-bit
|
|
export MINGW=mingw
|
|
export HOST=i686-w64-mingw32
|
|
cd ~/build/src/libevent-x32
|
|
./autogen.sh
|
|
./configure --host=$HOST --prefix=/home/circleci/build/prefix-libevent-x32 --disable-openssl
|
|
make -j$(nproc)
|
|
make install
|
|
- save_cache:
|
|
# NOTE: change when upgrading libevent
|
|
key: build-tor-windows-libevent-x32-2.1.12-stable-{{ .Environment.CACHE_VERSION }}
|
|
paths:
|
|
- /home/circleci/build/prefix-libevent-x32
|
|
|
|
- restore_cache:
|
|
# NOTE: change when upgrading libevent
|
|
key: build-tor-windows-libevent-x64-2.1.12-stable-{{ .Environment.CACHE_VERSION }}
|
|
- run:
|
|
name: Build libevent (64-bit)
|
|
command: |
|
|
if [[ -d "/home/circleci/build/prefix-libevent-x64/lib" ]]; then
|
|
echo "libevent (64-bit) already compiled, skipping"
|
|
exit 0
|
|
fi
|
|
|
|
cp -r ~/build/dist/libevent ~/build/src/libevent-x64
|
|
|
|
# build 64-bit
|
|
export MINGW=mingw64
|
|
export HOST=x86_64-w64-mingw32
|
|
cd ~/build/src/libevent-x64
|
|
./autogen.sh
|
|
./configure --host=$HOST --prefix=/home/circleci/build/prefix-libevent-x64 --disable-openssl
|
|
make -j$(nproc)
|
|
make install
|
|
- save_cache:
|
|
# NOTE: change when upgrading libevent
|
|
key: build-tor-windows-libevent-x64-2.1.12-stable-{{ .Environment.CACHE_VERSION }}
|
|
paths:
|
|
- /home/circleci/build/prefix-libevent-x64
|
|
|
|
- restore_cache:
|
|
# NOTE: change when upgrading tor
|
|
key: build-tor-windows-tor-x32-0.4.7.7-{{ .Environment.CACHE_VERSION }}
|
|
- run:
|
|
name: Build tor (32-bit)
|
|
command: |
|
|
if [[ -f "/home/circleci/build/prefix-tor-x32/bin/tor.exe" ]]; then
|
|
echo "tor (32-bit) already compiled, skipping"
|
|
exit 0
|
|
fi
|
|
|
|
cp -r ~/build/dist/tor ~/build/src/tor-x32
|
|
|
|
# build 32-bit
|
|
export MINGW=mingw
|
|
export HOST=i686-w64-mingw32
|
|
cd ~/build/src/tor-x32
|
|
./autogen.sh
|
|
./configure --host=$HOST \
|
|
--disable-asciidoc \
|
|
--disable-zstd \
|
|
--disable-lzma \
|
|
--enable-static-libevent \
|
|
--with-libevent-dir=/home/circleci/build/prefix-libevent-x32 \
|
|
--enable-static-openssl \
|
|
--with-openssl-dir=/home/circleci/build/prefix-openssl-x32 \
|
|
--disable-tool-name-check \
|
|
--enable-fatal-warnings \
|
|
--prefix=/home/circleci/build/prefix-tor-x32
|
|
make -j$(nproc)
|
|
make install
|
|
- save_cache:
|
|
# NOTE: change when upgrading tor
|
|
key: build-tor-windows-tor-x32-0.4.7.7-{{ .Environment.CACHE_VERSION }}
|
|
paths:
|
|
- /home/circleci/build/prefix-tor-x32
|
|
|
|
- restore_cache:
|
|
# NOTE: change when upgrading tor
|
|
key: build-tor-windows-tor-x64-0.4.7.7-{{ .Environment.CACHE_VERSION }}
|
|
- run:
|
|
name: Build tor (64-bit)
|
|
command: |
|
|
if [[ -f "/home/circleci/build/prefix-tor-x64/bin/tor.exe" ]]; then
|
|
echo "tor (64-bit) already compiled, skipping"
|
|
exit 0
|
|
fi
|
|
|
|
cp -r ~/build/dist/tor ~/build/src/tor-x64
|
|
|
|
# build 64-bit
|
|
export MINGW=mingw64
|
|
export HOST=x86_64-w64-mingw32
|
|
./autogen.sh
|
|
cd ~/build/src/tor-x64
|
|
./configure --host=$HOST \
|
|
--disable-asciidoc \
|
|
--disable-zstd \
|
|
--disable-lzma \
|
|
--enable-static-libevent \
|
|
--with-libevent-dir=/home/circleci/build/prefix-libevent-x64 \
|
|
--enable-static-openssl \
|
|
--with-openssl-dir=/home/circleci/build/prefix-openssl-x64 \
|
|
--disable-tool-name-check \
|
|
--enable-fatal-warnings \
|
|
--prefix=/home/circleci/build/prefix-tor-x64
|
|
make -j$(nproc)
|
|
make install
|
|
- save_cache:
|
|
# NOTE: change when upgrading tor
|
|
key: build-tor-windows-tor-x64-0.4.7.7-{{ .Environment.CACHE_VERSION }}
|
|
paths:
|
|
- /home/circleci/build/prefix-tor-x64
|
|
|
|
- persist_to_workspace:
|
|
root: ~/build/prefix
|
|
paths:
|
|
- prefix-tor-x32
|
|
- prefix-tor-x64
|
|
|
|
- restore_cache:
|
|
# NOTE: change when upgrading tor
|
|
key: build-tor-windows-tor-0.4.7.7-{{ .Environment.CACHE_VERSION }}
|
|
- run:
|
|
name: Build tor
|
|
command: |
|
|
if [[ -f "/home/circleci/build/prefix-tor-x32/bin/tor.exe" ]]; then
|
|
echo "tor already compiled, skipping"
|
|
exit 0
|
|
fi
|
|
|
|
# git clone
|
|
curl https://keys.openpgp.org/vks/v1/by-fingerprint/B74417EDDF22AC9F9E90F49142E86A2A11F48D36 | gpg --import
|
|
cd ~/build/src
|
|
git clone https://git.torproject.org/tor.git
|
|
cd tor
|
|
git tag -v $TOR_TAG
|
|
if [ $? -ne 0 ]; then
|
|
echo "tor tag doesn't verify"
|
|
exit -1
|
|
fi
|
|
git checkout $TOR_TAG
|
|
|
|
cd ~/build
|
|
mv ~/build/src/tor ~/build/src/tor-x32
|
|
cp -r ~/build/src/tor-x32 ~/build/src/tor-x64
|
|
|
|
# build 32-bit
|
|
export MINGW=mingw
|
|
export HOST=i686-w64-mingw32
|
|
cd ~/build/src/tor-x32
|
|
./autogen.sh
|
|
./configure --host=$HOST \
|
|
--disable-asciidoc \
|
|
--disable-zstd \
|
|
--disable-lzma \
|
|
--enable-static-libevent \
|
|
--with-libevent-dir=/home/circleci/build/prefix-libevent-x32 \
|
|
--enable-static-openssl \
|
|
--with-openssl-dir=/home/circleci/build/prefix-openssl-x32 \
|
|
--disable-tool-name-check \
|
|
--enable-fatal-warnings \
|
|
--prefix=/home/circleci/build/prefix-tor-x32
|
|
make -j$(nproc)
|
|
make install
|
|
|
|
# build 64-bit
|
|
export MINGW=mingw64
|
|
export HOST=x86_64-w64-mingw32
|
|
./autogen.sh
|
|
cd ~/build/src/tor-x64
|
|
./configure --host=$HOST \
|
|
--disable-asciidoc \
|
|
--disable-zstd \
|
|
--disable-lzma \
|
|
--enable-static-libevent \
|
|
--with-libevent-dir=/home/circleci/build/prefix-libevent-x64 \
|
|
--enable-static-openssl \
|
|
--with-openssl-dir=/home/circleci/build/prefix-openssl-x64 \
|
|
--disable-tool-name-check \
|
|
--enable-fatal-warnings \
|
|
--prefix=/home/circleci/build/prefix-tor-x64
|
|
make -j$(nproc)
|
|
make install
|
|
- save_cache:
|
|
# NOTE: change when upgrading tor
|
|
key: build-tor-windows-tor-0.4.7.7-{{ .Environment.CACHE_VERSION }}
|
|
paths:
|
|
- /home/circleci/build/prefix-tor-x32
|
|
- /home/circleci/build/prefix-tor-x64
|
|
|
|
- persist_to_workspace:
|
|
root: ~/build/prefix
|
|
paths:
|
|
- prefix-tor-x32
|
|
- prefix-tor-x64
|
|
|
|
build-win64:
|
|
executor:
|
|
name: win/default
|
|
shell: powershell.exe
|
|
environment:
|
|
# NOTE: change when upgrading libevent
|
|
LIBEVENT_TAG: release-2.1.12-stable
|
|
# NOTE: change when upgrading tor
|
|
TOR_TAG: tor-0.4.7.7
|
|
# NOTE: change when upgrading obfs4proxy
|
|
OBFS4PROXY_TAG: obfs4proxy-0.0.13
|
|
# NOTE: change when upgrading snowflake
|
|
SNOWFLAKE_TAG: v2.2.0
|
|
# NOTE: change when upgrading meek
|
|
MEEK_TAG: v0.37.0
|
|
steps:
|
|
- checkout
|
|
|
|
- run:
|
|
name: Install cygwin and required packages
|
|
shell: bash.exe --login -eo pipefail
|
|
command: |
|
|
curl -o setup-x86_64.exe https://cygwin.com/setup-x86_64.exe
|
|
curl -o setup-x86_64.exe.sig https://cygwin.com/setup-x86_64.exe.sig
|
|
curl -o pubring.asc https://cygwin.com/key/pubring.asc
|
|
|
|
gpg --import pubring.asc
|
|
gpg --verify setup-x86_64.exe.sig setup-x86_64.exe
|
|
if [ $? -ne 0 ]; then
|
|
echo "cygwin signature doesn't verify"
|
|
exit -1
|
|
fi
|
|
|
|
./setup-x86_64.exe -q -s https://mirrors.kernel.org/sourceware/cygwin/ \
|
|
-P libssl-devel,zlib-devel,git,gcc-core,make,autoconf,automake,libtool,gnupg
|
|
|
|
- restore_cache:
|
|
# NOTE: change when upgrading libevent
|
|
key: build-win64-libevent-2.1.12-stable-{{ .Environment.CACHE_VERSION }}
|
|
- run:
|
|
name: Build libevent
|
|
shell: C:\\cygwin64\\bin\\bash.exe --login -eo pipefail
|
|
command: |
|
|
if [[ -d "/cygdrive/c/Users/circleci/build/libevent" ]]; then
|
|
echo "libevent already compiled, skipping"
|
|
exit 0
|
|
fi
|
|
|
|
mkdir -p /cygdrive/c/Users/circleci/src
|
|
mkdir -p /cygdrive/c/Users/circleci/build
|
|
|
|
# Get source
|
|
curl "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x9e3ac83a27974b84d1b3401db86086848ef8686d" | gpg --import
|
|
cd /cygdrive/c/Users/circleci/src
|
|
git clone https://github.com/libevent/libevent.git
|
|
cd libevent
|
|
git tag -v $LIBEVENT_TAG
|
|
if [ $? -ne 0 ]; then
|
|
echo "libevent tag doesn't verify"
|
|
exit -1
|
|
fi
|
|
git checkout $LIBEVENT_TAG
|
|
|
|
# Build
|
|
./autogen.sh
|
|
./configure \
|
|
--prefix=/cygdrive/c/Users/circleci/build/libevent \
|
|
--with-pic
|
|
make -j$(nproc)
|
|
make install
|
|
- save_cache:
|
|
# NOTE: change when upgrading libevent
|
|
key: build-win64-libevent-2.1.12-stable-{{ .Environment.CACHE_VERSION }}
|
|
paths:
|
|
- C:\Users\circleci\build\libevent
|
|
|
|
- restore_cache:
|
|
# NOTE: change when upgrading tor
|
|
key: build-win64-tor-0.4.7.7-{{ .Environment.CACHE_VERSION }}
|
|
- run:
|
|
name: Build tor
|
|
shell: C:\\cygwin64\\bin\\bash.exe --login -eo pipefail
|
|
command: |
|
|
if [[ -d "/cygdrive/c/Users/circleci/build/tor" ]]; then
|
|
echo "tor already compiled, skipping"
|
|
exit 0
|
|
fi
|
|
|
|
mkdir -p /cygdrive/c/Users/circleci/src
|
|
mkdir -p /cygdrive/c/Users/circleci/build
|
|
|
|
# Get source
|
|
curl https://keys.openpgp.org/vks/v1/by-fingerprint/B74417EDDF22AC9F9E90F49142E86A2A11F48D36 | gpg --import
|
|
cd /cygdrive/c/Users/circleci/src
|
|
git clone https://git.torproject.org/tor.git
|
|
cd tor
|
|
git tag -v $TOR_TAG
|
|
if [ $? -ne 0 ]; then
|
|
echo "tor tag doesn't verify"
|
|
exit -1
|
|
fi
|
|
git checkout $TOR_TAG
|
|
|
|
# Build
|
|
./autogen.sh
|
|
./configure \
|
|
--prefix=/cygdrive/c/Users/circleci/build/tor \
|
|
--disable-asciidoc \
|
|
--enable-static-libevent \
|
|
--with-libevent-dir=/cygdrive/c/Users/circleci/build/libevent
|
|
make -j$(nproc)
|
|
make install
|
|
- save_cache:
|
|
# NOTE: change when upgrading tor
|
|
key: build-win64-tor-0.4.7.7-{{ .Environment.CACHE_VERSION }}
|
|
paths:
|
|
- C:\Users\circleci\build\tor
|
|
|
|
- run:
|
|
name: Copy tor binaries into project
|
|
command: |
|
|
New-Item -ItemType Directory -Force -Path C:\Users\circleci\project\desktop\onionshare\resources\tor
|
|
Copy-Item -Path C:\Users\circleci\build\tor\bin\tor.exe -Destination C:\Users\circleci\project\desktop\onionshare\resources\tor
|
|
Copy-Item -Path C:\Users\circleci\build\tor\share\tor\geoip -Destination C:\Users\circleci\project\desktop\onionshare\resources\tor
|
|
Copy-Item -Path C:\Users\circleci\build\tor\share\tor\geoip6 -Destination C:\Users\circleci\project\desktop\onionshare\resources\tor
|
|
|
|
- restore_cache:
|
|
# NOTE: change when upgrading obfs4proxy
|
|
key: build-win64-obfs4proxy-v0.0.13-{{ .Environment.CACHE_VERSION }}
|
|
- run:
|
|
name: Build obfs4proxy
|
|
command: |
|
|
if ((Test-Path -Path C:\Users\circleci\project\desktop\onionshare\resources\tor\obfs4proxy.exe) -eq $True) {
|
|
Write-Output "obfs4proxy already built"
|
|
} else {
|
|
# curl https://keys.openpgp.org/vks/v1/by-fingerprint/9EB1A490C73CC5D44DFB3E47BFBD1C7B8A6EC81A | gpg --import
|
|
New-Item -ItemType Directory -Force -Path C:\Users\circleci\src\obfs4proxy
|
|
cd C:\Users\circleci\src\obfs4proxy
|
|
git clone https://gitlab.com/yawning/obfs4
|
|
cd obfs4
|
|
# TODO: verify signature
|
|
git checkout $OBFS4PROXY_TAG
|
|
go build .\obfs4proxy
|
|
Move-Item -Path .\obfs4proxy.exe -Destination C:\Users\circleci\project\desktop\onionshare\resources\tor\obfs4proxy.exe
|
|
}
|
|
- save_cache:
|
|
# NOTE: change when upgrading obfs4proxy
|
|
key: build-win64-obfs4proxy-v0.0.13-{{ .Environment.CACHE_VERSION }}
|
|
paths:
|
|
- C:\Users\circleci\project\desktop\onionshare\resources\tor\obfs4proxy.exe
|
|
|
|
- restore_cache:
|
|
# NOTE: change when upgrading snowflake
|
|
key: build-win64-snowflake-v2.1.0-{{ .Environment.CACHE_VERSION }}
|
|
- run:
|
|
name: Build snowflake-client
|
|
command: |
|
|
if ((Test-Path -Path C:\Users\circleci\project\desktop\onionshare\resources\tor\snowflake-client.exe) -eq $True) {
|
|
Write-Output "snowflake already built"
|
|
} else {
|
|
New-Item -ItemType Directory -Force -Path C:\Users\circleci\src\obfs4proxy
|
|
cd C:\Users\circleci\src\obfs4proxy
|
|
git clone https://git.torproject.org/pluggable-transports/snowflake.git
|
|
cd snowflake
|
|
# TODO: verify signature
|
|
git checkout $SNOWFLAKE_TAG
|
|
go build .\client
|
|
Move-Item -Path .\client.exe -Destination C:\Users\circleci\project\desktop\onionshare\resources\tor\snowflake-client.exe
|
|
}
|
|
- save_cache:
|
|
# NOTE: change when upgrading snowflake
|
|
key: build-win64-snowflake-v2.1.0-{{ .Environment.CACHE_VERSION }}
|
|
paths:
|
|
- C:\Users\circleci\project\desktop\onionshare\resources\tor\snowflake-client.exe
|
|
|
|
- restore_cache:
|
|
# NOTE: change when upgrading meek
|
|
key: build-win64-meek-v0.37.0-{{ .Environment.CACHE_VERSION }}
|
|
- run:
|
|
name: Build meek-client
|
|
command: |
|
|
if ((Test-Path -Path C:\Users\circleci\project\desktop\onionshare\resources\tor\meek-client.exe) -eq $True) {
|
|
Write-Output "snowflake already built"
|
|
} else {
|
|
New-Item -ItemType Directory -Force -Path C:\Users\circleci\src\meek
|
|
cd C:\Users\circleci\src\meek
|
|
git clone https://git.torproject.org/pluggable-transports/meek.git
|
|
cd meek
|
|
# TODO: verify signature
|
|
git checkout $MEEK_TAG
|
|
go build .\meek-client
|
|
Move-Item -Path .\meek-client.exe -Destination C:\Users\circleci\project\desktop\onionshare\resources\tor\meek-client.exe
|
|
}
|
|
- save_cache:
|
|
# NOTE: change when upgrading meek
|
|
key: build-win64-meek-v0.37.0-{{ .Environment.CACHE_VERSION }}
|
|
paths:
|
|
- C:\Users\circleci\project\desktop\onionshare\resources\tor\Tor\meek-client.exe
|
|
|
|
- run:
|
|
name: Install Python 3.9.12
|
|
command: |
|
|
choco install python3 --version=3.9.12
|
|
|
|
- run:
|
|
name: Install poetry
|
|
command: (Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py -UseBasicParsing).Content | python -
|
|
|
|
- restore_cache:
|
|
key: build-win64-desktop-poetry-deps-{{ checksum "~/project/desktop/poetry.lock" }}-{{ .Environment.CACHE_VERSION }}
|
|
- run:
|
|
name: Install poetry dependencies
|
|
command: |
|
|
cd C:\Users\circleci\project\desktop
|
|
poetry install
|
|
- save_cache:
|
|
key: build-win64-desktop-poetry-deps-{{ checksum "~/project/desktop/poetry.lock" }}-{{ .Environment.CACHE_VERSION }}
|
|
paths:
|
|
- C:\Users\circleci\AppData\Local\pypoetry\Cache\virtualenvs
|
|
|
|
- run:
|
|
name: Build OnionShare
|
|
command: |
|
|
cd ~\project\desktop
|
|
poetry run python .\setup-freeze.py build
|
|
poetry run python .\scripts\build-windows.py cleanup-build
|
|
|
|
- run:
|
|
name: Compress
|
|
command: |
|
|
mv ~\project\desktop\build\exe.win-amd64-3.9\ ~\onionshare-win64
|
|
Compress-Archive -LiteralPath ~\onionshare-win64 -DestinationPath ~\onionshare-win64.zip
|
|
|
|
- store_artifacts:
|
|
path: ~\onionshare-win64.zip
|
|
|
|
build-win32:
|
|
executor:
|
|
name: win/default
|
|
shell: powershell.exe
|
|
environment:
|
|
# NOTE: change when upgrading tor
|
|
TOR_TAG: tor-0.4.7.7
|
|
# NOTE: change when upgrading obfs4proxy
|
|
OBFS4PROXY_TAG: obfs4proxy-0.0.13
|
|
# NOTE: change when upgrading snowflake
|
|
SNOWFLAKE_TAG: v2.2.0
|
|
# NOTE: change when upgrading meek
|
|
MEEK_TAG: v0.37.0
|
|
steps:
|
|
- checkout
|
|
|
|
- run:
|
|
name: Install cygwin (32-bit) and required packages
|
|
shell: bash.exe --login -eo pipefail
|
|
command: |
|
|
curl -o setup-x86.exe https://cygwin.com/setup-x86.exe
|
|
curl -o setup-x86.exe.sig https://cygwin.com/setup-x86.exe.sig
|
|
curl -o pubring.asc https://cygwin.com/key/pubring.asc
|
|
|
|
gpg --import pubring.asc
|
|
gpg --verify setup-x86.exe.sig setup-x86.exe
|
|
if [ $? -ne 0 ]; then
|
|
echo "cygwin signature doesn't verify"
|
|
exit -1
|
|
fi
|
|
|
|
./setup-x86.exe -q -s https://mirrors.kernel.org/sourceware/cygwin/ \
|
|
-P libssl-devel,libevent-devel,zlib-devel,git,gcc-core,make,autoconf,automake,libtool,gnupg
|
|
|
|
- restore_cache:
|
|
# NOTE: change when upgrading tor
|
|
key: build-win32-tor-0.4.7.7-{{ .Environment.CACHE_VERSION }}
|
|
- run:
|
|
name: Build tor
|
|
shell: C:\\cygwin\\bin\\bash.exe --login -eo pipefail
|
|
command: |
|
|
if [[ -d "/cygdrive/c/Users/circleci/build/tor" ]]; then
|
|
echo "tor already compiled, skipping"
|
|
exit 0
|
|
fi
|
|
|
|
mkdir -p /cygdrive/c/Users/circleci/src
|
|
mkdir -p /cygdrive/c/Users/circleci/build
|
|
|
|
# Get source
|
|
curl https://keys.openpgp.org/vks/v1/by-fingerprint/B74417EDDF22AC9F9E90F49142E86A2A11F48D36 | gpg --import
|
|
cd /cygdrive/c/Users/circleci/src
|
|
git clone https://git.torproject.org/tor.git
|
|
cd tor
|
|
git tag -v $TOR_TAG
|
|
if [ $? -ne 0 ]; then
|
|
echo "tor tag doesn't verify"
|
|
exit -1
|
|
fi
|
|
git checkout $TOR_TAG
|
|
|
|
# Build
|
|
./autogen.sh
|
|
./configure \
|
|
--prefix=/opt/tor-build \
|
|
--disable-asciidoc
|
|
make -j$(nproc)
|
|
make install
|
|
cp -r /opt/tor-build /cygdrive/c/Users/circleci/build/tor
|
|
- save_cache:
|
|
# NOTE: change when upgrading tor
|
|
key: build-win32-tor-0.4.7.7-{{ .Environment.CACHE_VERSION }}
|
|
paths:
|
|
- C:\Users\circleci\build\tor
|
|
|
|
- run:
|
|
name: Copy tor binaries into project
|
|
command: |
|
|
New-Item -ItemType Directory -Force -Path C:\Users\circleci\project\desktop\onionshare\resources\tor
|
|
Copy-Item -Path C:\Users\circleci\build\tor\bin\tor.exe -Destination C:\Users\circleci\project\desktop\onionshare\resources\tor
|
|
Copy-Item -Path C:\Users\circleci\build\tor\share\tor\geoip -Destination C:\Users\circleci\project\desktop\onionshare\resources\tor
|
|
Copy-Item -Path C:\Users\circleci\build\tor\share\tor\geoip6 -Destination C:\Users\circleci\project\desktop\onionshare\resources\tor
|
|
|
|
- run:
|
|
name: Install golang (32-bit)
|
|
command: |
|
|
cd ~\Downloads
|
|
Invoke-WebRequest -Uri https://go.dev/dl/go1.18.windows-386.msi -OutFile go1.18.windows-386.msi
|
|
msiexec.exe /i go1.18.windows-386.msi /quiet /L*V go-install.log
|
|
|
|
- restore_cache:
|
|
# NOTE: change when upgrading obfs4proxy
|
|
key: build-win32-obfs4proxy-v0.0.13-{{ .Environment.CACHE_VERSION }}
|
|
- run:
|
|
name: Build obfs4proxy (32-bit)
|
|
command: |
|
|
if ((Test-Path -Path C:\Users\circleci\project\desktop\onionshare\resources\tor\obfs4proxy.exe) -eq $True) {
|
|
Write-Output "obfs4proxy already built"
|
|
} else {
|
|
# curl https://keys.openpgp.org/vks/v1/by-fingerprint/9EB1A490C73CC5D44DFB3E47BFBD1C7B8A6EC81A | gpg --import
|
|
New-Item -ItemType Directory -Force -Path C:\Users\circleci\src\obfs4proxy
|
|
cd C:\Users\circleci\src\obfs4proxy
|
|
git clone https://gitlab.com/yawning/obfs4
|
|
cd obfs4
|
|
# TODO: verify signature
|
|
git checkout $OBFS4PROXY_TAG
|
|
"C:\Program Files (x86)\Go\bin\go" build .\obfs4proxy
|
|
Move-Item -Path .\obfs4proxy.exe -Destination C:\Users\circleci\project\desktop\onionshare\resources\tor\obfs4proxy.exe
|
|
}
|
|
- save_cache:
|
|
# NOTE: change when upgrading obfs4proxy
|
|
key: build-win32-obfs4proxy-v0.0.13-{{ .Environment.CACHE_VERSION }}
|
|
paths:
|
|
- C:\Users\circleci\project\desktop\onionshare\resources\tor\obfs4proxy.exe
|
|
|
|
- restore_cache:
|
|
# NOTE: change when upgrading snowflake
|
|
key: build-win32-snowflake-v2.1.0-{{ .Environment.CACHE_VERSION }}
|
|
- run:
|
|
name: Build snowflake-client (32-bit)
|
|
command: |
|
|
if ((Test-Path -Path C:\Users\circleci\project\desktop\onionshare\resources\tor\snowflake-client.exe) -eq $True) {
|
|
Write-Output "snowflake already built"
|
|
} else {
|
|
New-Item -ItemType Directory -Force -Path C:\Users\circleci\src\obfs4proxy
|
|
cd C:\Users\circleci\src\obfs4proxy
|
|
git clone https://git.torproject.org/pluggable-transports/snowflake.git
|
|
cd snowflake
|
|
# TODO: verify signature
|
|
git checkout $SNOWFLAKE_TAG
|
|
"C:\Program Files (x86)\Go\bin\go" build .\client
|
|
Move-Item -Path .\client.exe -Destination C:\Users\circleci\project\desktop\onionshare\resources\tor\snowflake-client.exe
|
|
}
|
|
- save_cache:
|
|
# NOTE: change when upgrading snowflake
|
|
key: build-win32-snowflake-v2.1.0-{{ .Environment.CACHE_VERSION }}
|
|
paths:
|
|
- C:\Users\circleci\project\desktop\onionshare\resources\tor\snowflake-client.exe
|
|
|
|
- restore_cache:
|
|
# NOTE: change when upgrading meek
|
|
key: build-win32-meek-v0.37.0-{{ .Environment.CACHE_VERSION }}
|
|
- run:
|
|
name: Build meek-client (32-bit)
|
|
command: |
|
|
if ((Test-Path -Path C:\Users\circleci\project\desktop\onionshare\resources\tor\meek-client.exe) -eq $True) {
|
|
Write-Output "snowflake already built"
|
|
} else {
|
|
New-Item -ItemType Directory -Force -Path C:\Users\circleci\src\meek
|
|
cd C:\Users\circleci\src\meek
|
|
git clone https://git.torproject.org/pluggable-transports/meek.git
|
|
cd meek
|
|
# TODO: verify signature
|
|
git checkout $MEEK_TAG
|
|
"C:\Program Files (x86)\Go\bin\go" build .\meek-client
|
|
Move-Item -Path .\meek-client.exe -Destination C:\Users\circleci\project\desktop\onionshare\resources\tor\meek-client.exe
|
|
}
|
|
- save_cache:
|
|
# NOTE: change when upgrading meek
|
|
key: build-win32-meek-v0.37.0-{{ .Environment.CACHE_VERSION }}
|
|
paths:
|
|
- C:\Users\circleci\project\desktop\onionshare\resources\tor\Tor\meek-client.exe
|
|
|
|
- run:
|
|
name: Install Python 3.9.12 (32-bit)
|
|
command: |
|
|
choco install python3 --params "/InstallDir32:C:\Python-32bit" --version=3.9.12
|
|
|
|
- run:
|
|
name: Install poetry (32-bit)
|
|
command: C:\Python-32bit\Scripts\pip install poetry
|
|
|
|
- restore_cache:
|
|
key: build-win32-desktop-poetry-deps-{{ checksum "~/project/desktop/poetry.lock" }}-{{ .Environment.CACHE_VERSION }}
|
|
- run:
|
|
name: Install poetry dependencies
|
|
command: |
|
|
cd ~\project\desktop
|
|
C:\Python-32bit\Scripts\poetry install
|
|
- save_cache:
|
|
key: build-win32-desktop-poetry-deps-{{ checksum "~/project/desktop/poetry.lock" }}-{{ .Environment.CACHE_VERSION }}
|
|
paths:
|
|
- C:\Users\circleci\AppData\Local\pypoetry\Cache\virtualenvs
|
|
|
|
- run:
|
|
name: Build OnionShare
|
|
command: |
|
|
cd ~\project\desktop
|
|
C:\Python-32bit\Scripts\poetry run python .\setup-freeze.py build
|
|
C:\Python-32bit\Scripts\poetry run python .\scripts\build-windows.py cleanup-build
|
|
|
|
- run:
|
|
name: Compress
|
|
command: |
|
|
mv ~\project\desktop\build\exe.win32-3.9\ ~\onionshare-win32
|
|
Compress-Archive -LiteralPath ~\onionshare-win32 -DestinationPath ~\onionshare-win32.zip
|
|
|
|
- store_artifacts:
|
|
path: ~\onionshare-win32.zip
|
|
|
|
build-macos:
|
|
macos:
|
|
xcode: 12.5.1
|
|
environment:
|
|
BINARY_DIR: /Users/distiller/bin
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
name: Install Homebrew dependencies
|
|
command: |
|
|
brew install wget
|
|
brew install go
|
|
- restore_cache:
|
|
key: build-libevent-2.1.12-tor-0.4.6.10
|
|
- run:
|
|
name: Build libevent and tor
|
|
command: |
|
|
mkdir -p $BINARY_DIR/tor
|
|
# Download and verify libevent
|
|
cd ~/Downloads
|
|
URL=https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz
|
|
FILENAME=libevent-2.1.12-stable.tar.gz
|
|
EXPECTED_SHA256=92e6de1be9ec176428fd2367677e61ceffc2ee1cb119035037a27d346b0403bb
|
|
wget $URL
|
|
SHA256=$(shasum -a 256 $FILENAME | cut -d" " -f1)
|
|
if [ "$SHA256" != "$EXPECTED_SHA256" ]; then echo "Failed" && exit -1; fi
|
|
tar -xvf $FILENAME
|
|
# Build libevent
|
|
cd libevent-2.1.12-stable
|
|
./configure --disable-openssl --prefix=$BINARY_DIR/tor
|
|
make
|
|
make install
|
|
# Download and verify tor
|
|
cd ~/Downloads
|
|
URL=https://dist.torproject.org/tor-0.4.6.10.tar.gz
|
|
FILENAME=tor-0.4.6.10.tar.gz
|
|
EXPECTED_SHA256=94ccd60e04e558f33be73032bc84ea241660f92f58cfb88789bda6893739e31c
|
|
wget $URL
|
|
SHA256=$(shasum -a 256 $FILENAME | cut -d" " -f1)
|
|
if [ "$SHA256" != "$EXPECTED_SHA256" ]; then echo "Failed" && exit -1; fi
|
|
tar -xvf $FILENAME
|
|
# Build tor
|
|
cd tor-0.4.6.10
|
|
./configure --prefix=$BINARY_DIR/tor
|
|
make
|
|
make install
|
|
- save_cache:
|
|
key: build-libevent-2.1.12-tor-0.4.6.10
|
|
paths:
|
|
- /Users/distiller/bin/tor
|
|
- restore_cache:
|
|
key: build-macos-obfs4proxy-v0.0.13
|
|
- run:
|
|
name: Build obfs4proxy
|
|
command: |
|
|
# Get source code
|
|
mkdir ~/Downloads/obfs4proxy
|
|
cd ~/Downloads/obfs4proxy
|
|
git clone https://gitlab.com/yawning/obfs4
|
|
cd obfs4
|
|
git checkout obfs4proxy-0.0.13
|
|
# Build
|
|
go build -o $BINARY_DIR/obfs4proxy ./obfs4proxy
|
|
- save_cache:
|
|
key: build-macos-obfs4proxy-v0.0.13
|
|
paths:
|
|
- /Users/distiller/bin/obfs4proxy
|
|
- restore_cache:
|
|
key: build-macos-snowflake-v2.1.0
|
|
- run:
|
|
name: Build snowflake-client
|
|
command: |
|
|
# Get source code
|
|
mkdir ~/Downloads/snowflake-client
|
|
cd ~/Downloads/snowflake-client
|
|
git clone https://git.torproject.org/pluggable-transports/snowflake.git
|
|
cd snowflake
|
|
git checkout v2.1.0
|
|
# Build
|
|
go build -o $BINARY_DIR/snowflake-client ./client
|
|
- save_cache:
|
|
key: build-macos-snowflake-v2.1.0
|
|
paths:
|
|
- /Users/distiller/bin/snowflake-client
|
|
- restore_cache:
|
|
key: build-macos-meek-v0.37.0
|
|
- run:
|
|
name: Build meek-client
|
|
command: |
|
|
# Get source code
|
|
mkdir ~/Downloads/meek-client
|
|
cd ~/Downloads/meek-client
|
|
git clone https://git.torproject.org/pluggable-transports/meek.git
|
|
cd meek
|
|
git checkout v0.37.0
|
|
# Build
|
|
go build -o $BINARY_DIR/meek-client ./meek-client
|
|
- save_cache:
|
|
key: build-macos-meek-v0.37.0
|
|
paths:
|
|
- /Users/distiller/bin/meek-client
|
|
- run:
|
|
name: Copy binaries into app
|
|
command: |
|
|
export DEST=~\project\desktop\onionshare\resources\tor
|
|
cp $BINARY_DIR/tor/bin/tor $DEST
|
|
cp $BINARY_DIR/tor/lib/libevent-2.1.7.dylib $DEST
|
|
cp $BINARY_DIR/tor/share/tor/geoip* $DEST
|
|
cp $BINARY_DIR/obfs4proxy $DEST
|
|
cp $BINARY_DIR/snowflake-client $DEST
|
|
cp $BINARY_DIR/meek-client $DEST
|
|
- run:
|
|
name: Install Python 3.9.12
|
|
command: |
|
|
wget https://www.python.org/ftp/python/3.9.12/python-3.9.12-macosx10.9.pkg -O ~/Downloads/python.pkg
|
|
sudo installer -pkg ~/Downloads/python.pkg -target /
|
|
- run:
|
|
name: Install poetry
|
|
command: |
|
|
pip3 install poetry
|
|
ln -s /Library/Frameworks/Python.framework/Versions/3.9/bin/poetry /usr/local/bin
|
|
- run:
|
|
name: Install poetry dependencies
|
|
command: |
|
|
cd ~/project/desktop
|
|
poetry install
|
|
- run:
|
|
name: Build OnionShare
|
|
command: |
|
|
cd ~/project/desktop
|
|
poetry run python ./setup-freeze.py build
|
|
poetry run python ./setup-freeze.py bdist_mac
|
|
poetry run python ./scripts/build-macos.py cleanup-build
|
|
- run:
|
|
name: Compress
|
|
command: |
|
|
cd ~/project/desktop/build
|
|
zip -r ~/onionshare-macos.zip OnionShare.app
|
|
- store_artifacts:
|
|
path: ~/onionshare-macos.zip
|