* [[MateuszPiotrowski/Ports/Workshops/201802|201802]] * [[MateuszPiotrowski/Ports/Workshops/Preparation|Preparation]] ====== FreBSD Ports workshops ====== ===== Documentation ===== * [[https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/book.html|FreeBSD Porter's Handbook]], especially: * [[https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/book.html#quick-porting|Chapter 3. Quick Porting]] * [[https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/book.html#makefile-master_sites-github|Porting software hosted on GitHub]] * [[https://web.archive.org/web/20180218130952/https://bitbucket.org/koobs/ports/src/d8b06010c54f2f7e9465f999ce8aa985f5fd3410/README.md|FreeBSD Ports: New Contributors 101 (by Kubilay Kocak) (archive.org alternative)]] * Submitting patches and new ports to [[https://bugs.freebsd.org/|FreeBSD Bugzilla]]: * [[Bugzilla/ThePerfectPortsIssue]] * [[Bugzilla/DosAndDonts]] ===== Outlines of suggested workflows ===== //General instructions on how you can start hacking on the %%FreeBSD%% Ports.// ==== Creating a new port ==== - Prepare your environment. - Create a new directory for your new port somewhere. For example in your home directory. mkdir ~/newport - Go to the ''%%newport%%'' directory and create a ''%%Makefile%%'' there. cd ~/newport touch Makefile - See [[https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/book.html#quick-porting|FreeBSD Porter's Handbook: Chapter 3. Quick Porting]] and try to work on your ''%%Makefile%%'' as much as you can. - Let's try to build and install the new port. Normally, it is done by running ''%%make install%%'' inside the port's directory. For development purposes it might be easier to run every command involved in the process manually. - Run make fetch Troubleshooting: * You might need to become a root to do this. By default, the archives with source code are downloaded to ''%%/usr/ports/distfiles/%%'', which can only be modified by root. Solution: ''%%sudo make fetch%%''. * If you've not created a ''%%distinfo%%'' file it might be a good moment to do it. Otherwise, ''%%make fetch%%'' will likely fail. See [[https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/book.html#porting-checksum|FreeBSD Porter's Handbook: 3.3. Creating the Checksum File]]. - Run make extract - Run make build * Make sure that at this point you've already created a ''%%pkg-plist%%'' file or defined a ''%%PLIST_FILES%%'' variable in ''%%Makefile%%''. See [[https://www.freebsd.org/doc/en_US.ISO8859-1/books/porters-handbook/book.html#porting-desc|FreeBSD Porter's Handbook: 3.2. Writing the Description Files]]. - Run make install * You might need to become a root to do this. Solution: ''%%sudo make install%%''. - At this point you've managed to build and install that new port on the system. It is time to clean up the files you've created and do some testing. - Run portlint Fix everything this tool complains about. * Install ''%%portlint%%'' first with ''%%pkg install portlint%%''. - Run port test Fix everything this tool complains about. * Install ''%%port%%'' first with ''%%pkg install porttools%%''. ==== Updating a port ==== :!: TODO ===== Simple tasks and issues for first timers ===== * Make sure //MASTER_SITES// aliases are being used instead of hard-coded URLs. * Make sure that optimized //CFLAGS// and //CPPFLAGS// use the same variable irregardless of a port. * [[Ports/LongtermTargets]] ==== Ideas for (potentially) fun ports contributions ==== ^ New ports ^^^ | [[http://abricotine.brrd.fr/|Abricotine]] | Open-source markdown editor built for desktop. | | | [[https://github.com/arescentral/antares|Antares]] | Tactical space combat game. | | | [[https://github.com/beakerbrowser/beaker|Beaker]] | Peer-to-peer Web browser. | | | [[https://github.com/communi/communi-desktop|Communi]] | IRC client for desktop environments. | | | [[https://github.com/chriswolfvision/eplot|eplot]] | Ruby script which allows to pipe data easily through gnuplot and create plots quickly, which can be saved in %%PostScript%%, PDF, PNG or EMF files. | | | [[https://github.com/Roger/escrotum|escrotum]] | Screen capture using pygtk, inspired by scrot. | | | [[https://github.com/sharkdp/hyperfine|hyperfine]] | Command-line benchmarking tool. | | | [[https://github.com/modernish/modernish|modernish]] | Cross-platform POSIX shell feature detection and language extension library. | | | [[https://github.com/PowerShell/PowerShell|PowerShell]] | Task-based command-line shell and scripting language built on the .NET Framework to help IT professionals control and automate the administration of MS-Windows and (now) other platforms. | | | [[https://web.archive.org/web/20180613031926/https://github.com/t6/progress|progress(1) from NetBSD (archive.org alternative)]] | Feed input to a command, displaying a progress bar. | | | [[http://pytorch.org/|PyTorch]] | Tensors and dynamic neural networks in Python with strong GPU acceleration. | :( The [[MateuszPiotrowski/Ports/Workshops/201802]] workshop participants started to work on this port but it turned out to be a little bit too big to fit in one workshop. | | ::: | Although CUDA is not supported on %%FreeBSD%% it might be nice to have at least some of the %%PyTorch%% functionalities available on %%FreeBSD%%. | ::: | | [[https://tools.suckless.org/quark/|quark]] | Extremely small and simple HTTP GET-only web server. It only serves static pages on a single host. | ;) The participants of the [[MateuszPiotrowski/Ports/Workshops/201802]] workshop have managed to successfully port this software. [[https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=226226|See the port submission on FreeBSD Bugzilla.]] | | [[https://github.com/radude/rentry|rentry]] | Markdown pastebin from command line. | | | [[http://git.codemadness.nl/saait/file/README.html|saait]] | Static site generator in C. | | | [[https://github.com/merrychap/shellen|shellen]] | Interactive shellcoding environment to easily craft shellcodes. | | | [[https://github.com/anordal/shellharden|shellharden]] | Corrective Bash syntax highlighter. | | | [[https://git.suckless.org/slstatus|slstatus]] | Suckless status monitor for window managers that use ''%%WM_NAME%%'' (e.g. [[https://www.freshports.org/x11-wm/dwm/|dwm]]) or stdin to fill the status bar. | | | [[http://st.suckless.org/|st]] | Simple terminal from [[https://suckless.org]]. | | | ::: | There already exists a port of st ([[https://www.freshports.org/x11/sterm/|x11/sterm]]) but its version is 0.7, which is the latest release. It'd be nice to have a port of the bleeding-edge version of st. | ::: | | ::: | When x11/sterm-devel is ready then the next goal might adding some of [[https://st.suckless.org/patches/|the community patches]] as port options. For example: [[https://st.suckless.org/patches/scrollback/|scrollback]], [[https://st.suckless.org/patches/right_click_to_plumb/|right click to plumb]]. | ::: | | [[https://github.com/magicalraccoon/tootstream|tootstream]] | Command line interface for interacting with Mastodon instances. | | | [[https://github.com/whohas/whohas|whohas]] | Command line tool that allows querying several package lists at once written in Perl. | | | [[https://github.com/cknadler/vim-anywhere|vim-anywhere]] | Integrate Vim editing capabilities into any text buffer | | | [[https://github.com/antonblanchard/will-it-scale|Will It Scale]] | Benchmark utility which takes a testcase and runs it from 1 through to n parallel copies to see if the testcase. | | | ::: | There is a %%NetBSD%% port, which might be helpful. Ping [[/MateuszPiotrowski|MateuszPiotrowski]] for details. | ::: | | ::: | [[/MateuszGuzik]] is using it for benchmarking. He might have some patches laying aroud. | ::: | | [[https://github.com/mchav/with|with]] | Command prefixing for continuous workflow using a single tool. | ;) The participants of the [[MateuszPiotrowski/Ports/Workshops/201802]] workshop have managed to successfully port this software. [[https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=226407|See the port submission on FreeBSD Bugzilla.]] | ^ New features and modifications ^^^ | [[https://www-user.tu-chemnitz.de/~fri/ding/|Ding]] | Dictionary lookup program. | | | ::: | Add [[https://github.com/jan-Lope/Toki_Pona_lessons_English/blob/gh-pages/toki-pona_english.txt|a toki pona dictionary]] to the existing [[https://www.freshports.org/german/ding|german/ding]] port. | ::: | | ::: | The license set in the german/ding Makefile is not 100% correct. Fix it. | ::: | | [[https://dwm.suckless.org/|dwm]] | It might be fun to make port options from [[https://dwm.suckless.org/patches/|some of the patches]]: [[https://dwm.suckless.org/patches/noborder/|noborder]], [[https://dwm.suckless.org/patches/fakefullscreen/|fakefullscreen]]. | | | [[https://www.freshports.org/graphics/intel-backlight/|intel-backlight]] | The task is to get interesting commits from the [[https://github.com/jcs/intel_backlight_fbsd|jcs's fork of intel-backlight]], send a PR with to [[https://github.com/FreeBSDDesktop/intel_backlight_fbsd|upstream]] and then submit an update to the intel-backlight port itself. | | | [[https://www.freshports.org/games/jfsw/|JonoF's Shadow Warrior]] | Jonathon Fowler's port of the 3D Realms game "Shadow Warrior". | <:( As of the [[MateuszPiotrowski/Ports/Workshops/201802]] workshop, the game does not start. It is probably related to the fact that you need to obtain a couple of extra files to run this game (namely, ''%%sw.grp%%'' and ''%%sw.rts%%'') | ==== Other ports-related TODO lists ==== * [[Ports/ToDo]] * [[https://portscout.freebsd.org/|portscout - FreeBSD Ports distfile Scanner]] * [[/WantedPorts]] * [[Ports/NewCategories/education|List of software that could be ported to help create an education category in Ports, which does not exist yet.]] ---- {{tag>Community HowTo Ports}}