diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 3e759b7..0000000 --- a/.gitignore +++ /dev/null @@ -1,330 +0,0 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. -## -## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore - -# User-specific files -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ - -# Visual Studio 2015/2017 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# Visual Studio 2017 auto generated files -Generated\ Files/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUNIT -*.VisualState.xml -TestResult.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# Benchmark Results -BenchmarkDotNet.Artifacts/ - -# .NET Core -project.lock.json -project.fragment.lock.json -artifacts/ -**/Properties/launchSettings.json - -# StyleCop -StyleCopReport.xml - -# Files built by Visual Studio -*_i.c -*_p.c -*_i.h -*.ilk -*.meta -*.obj -*.iobj -*.pch -*.pdb -*.ipdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# Visual Studio Trace Files -*.e2e - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# JustCode is a .NET coding add-in -.JustCode - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# AxoCover is a Code Coverage Tool -.axoCover/* -!.axoCover/settings.json - -# Visual Studio code coverage results -*.coverage -*.coveragexml - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# Note: Comment the next line if you want to checkin your web deploy settings, -# but database connection strings (with potential passwords) will be unencrypted -*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/[Pp]ackages/* -# except build/, which is used as an MSBuild target. -!**/[Pp]ackages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/[Pp]ackages/repositories.config -# NuGet v3's project.json files produces more ignorable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt -*.appx - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -orleans.codegen.cs - -# Including strong name files can present a security risk -# (https://github.com/github/gitignore/pull/2483#issue-259490424) -#*.snk - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm -ServiceFabricBackup/ -*.rptproj.bak - -# SQL Server files -*.mdf -*.ldf -*.ndf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings -*.rptproj.rsuser - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat -node_modules/ - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) -*.vbw - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# JetBrains Rider -.idea/ -*.sln.iml - -# CodeRush -.cr/ - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc - -# Cake - Uncomment if you are using it -# tools/** -# !tools/packages.config - -# Tabs Studio -*.tss - -# Telerik's JustMock configuration file -*.jmconfig - -# BizTalk build output -*.btp.cs -*.btm.cs -*.odx.cs -*.xsd.cs - -# OpenCover UI analysis results -OpenCover/ - -# Azure Stream Analytics local run output -ASALocalRun/ - -# MSBuild Binary and Structured Log -*.binlog - -# NVidia Nsight GPU debugger configuration file -*.nvuser - -# MFractors (Xamarin productivity tool) working folder -.mfractor/ diff --git a/README.md b/README.md index 29f7ebd..41e66a5 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,8 @@ +# ripgrep-prebuilt -# Contributing +[ripgrep](https://github.com/BurntSushi/ripgrep) builds on multiple platforms, used by VS Code. + +## Contributing This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us diff --git a/build/build.sh b/build/build.sh new file mode 100755 index 0000000..b9b5795 --- /dev/null +++ b/build/build.sh @@ -0,0 +1,45 @@ +#!/bin/bash +# Adapted from https://github.com/BurntSushi/ripgrep/blob/master/ci/script.sh + +# build, test and generate docs in this phase + +set -ex + +. "$(dirname $0)/utils.sh" + +main() { + CARGO="$(builder)" + + # Test a normal debug build. + if is_arm || is_aarch64; then + "$CARGO" build --target "$TARGET" --release + else + # Technically, MUSL builds will force PCRE2 to get statically compiled, + # but we also want PCRE2 statically build for macOS binaries. + PCRE2_SYS_STATIC=1 "$CARGO" build --target "$TARGET" --release --features 'pcre2' + fi + + # Show the output of the most recent build.rs stderr. + set +x + stderr="$(find "target/$TARGET/release" -name stderr -print0 | xargs -0 ls -t | head -n1)" + if [ -s "$stderr" ]; then + echo "===== $stderr =====" + cat "$stderr" + echo "=====" + fi + set -x + + # sanity check the file type + file target/"$TARGET"/release/rg + + # Apparently tests don't work on arm, so just bail now. I guess we provide + # ARM releases on a best effort basis? + if is_arm || is_aarch64; then + return 0 + fi + + # Run tests for ripgrep and all sub-crates. + "$CARGO" test --target "$TARGET" --verbose --all --features 'pcre2' +} + +main \ No newline at end of file diff --git a/build/build_ppc.sh b/build/build_ppc.sh new file mode 100644 index 0000000..4458bc2 --- /dev/null +++ b/build/build_ppc.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +cd ~ +echo "git clone https://github.com/roblourens/ripgrep.git" +git clone https://github.com/roblourens/ripgrep.git +echo "cd ripgrep/" +cd ripgrep/ +echo "cargo build --release --target=powerpc64le-unknown-linux-gnu --features 'pcre2'" +cargo build --release --target=powerpc64le-unknown-linux-gnu --features 'pcre2' +echo "strip ./target/powerpc64le-unknown-linux-gnu/release/rg" +strip ./target/powerpc64le-unknown-linux-gnu/release/rg +echo "zip -j "ripgrep-linux-ppc64le.zip" ./target/powerpc64le-unknown-linux-gnu/release/rg" +zip -j "ripgrep-linux-ppc64le.zip" ./target/powerpc64le-unknown-linux-gnu/release/rg +echo "target/powerpc64le-unknown-linux-gnu/release/rg --version" +target/powerpc64le-unknown-linux-gnu/release/rg --version + diff --git a/build/install.sh b/build/install.sh new file mode 100755 index 0000000..28c4d3b --- /dev/null +++ b/build/install.sh @@ -0,0 +1,97 @@ +#!/bin/bash +# Adapted from https://github.com/BurntSushi/ripgrep/blob/master/ci/install.sh + +# install stuff needed for the `script` phase + +# Where rustup gets installed. +export PATH="$PATH:$HOME/.cargo/bin" + +set -ex + +. "$(dirname $0)/utils.sh" + +install_rustup() { + curl https://sh.rustup.rs -sSf \ + | sh -s -- -y --default-toolchain="$RUST_VERSION" + + # Linux + if [ -f /usr/local/cargo/env ]; then + source /usr/local/cargo/env + fi + + # Mac + if [ -f $HOME/.cargo/env ]; then + source $HOME/.cargo/env + fi + + rustup default $RUST_VERSION + rustc -V + cargo -V +} + +install_targets() { + if [ $(host) != "$TARGET" ]; then + rustup target add $TARGET + fi +} + +install_osx_dependencies() { + if ! is_osx; then + return + fi + + brew install asciidoc docbook-xsl +} + +install_linux_dependencies() { + if ! is_linux; then + return + fi + sudo apt-get update + sudo apt-get install -y musl-tools + + if is_arm; then + sudo apt-get install gcc-4.8-arm-linux-gnueabihf + sudo apt-get install gcc-arm-linux-gnueabihf + sudo apt-get install binutils-arm-linux-gnueabihf + sudo apt-get install libc6-armhf-cross + sudo apt-get install libc6-dev-armhf-cross + fi + + if is_aarch64; then + sudo apt-get install gcc-4.8-aarch64-linux-gnu + fi +} + +configure_cargo() { + local prefix=$(gcc_prefix) + if [ -n "${prefix}" ]; then + local gcc_suffix= + if [ -n "$GCC_VERSION" ]; then + gcc_suffix="-$GCC_VERSION" + fi + local gcc="${prefix}gcc${gcc_suffix}" + + # information about the cross compiler + "${gcc}" -v + + # tell cargo which linker to use for cross compilation + mkdir -p .cargo + cat >> .cargo/config <